{"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":"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":"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."},{"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; the email must be verified before references can be submitted."},{"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, transcript segments, and recordings for a meeting session."},{"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.\n\n- **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.\n- **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.\n- **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.\n- **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.\n- **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\nPossible 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.\n\nThis 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:\n\n* `referenceId` - The reference ID returned when the OTP was initially triggered\n* `brandId` - Query parameter for portal users to look up OTP status by Brand ID\n\nThe 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.\n\nDuplicate 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\nvetting provider. If the vetting provider confirms validity of the record, it will be\nsaved 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.\n\nThis 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.\n\nThe response includes delivery status, verification dates, and detailed delivery information.\n\n**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.\n\n**Important Notes:**\n\n* Only allowed for Sole Proprietor (`SOLE_PROPRIETOR`) brands\n* Triggers generation of a one-time password sent to the `mobilePhone` number in the brand's profile\n* Campaigns cannot be created until OTP verification is complete\n* US/CA numbers only for real OTPs; mock brands can use non-US/CA numbers for testing\n* Returns a `referenceId` that can be used to check OTP status via the GET `/10dlc/brand/smsOtp/{referenceId}` endpoint\n\n**Use Cases:**\n\n* Initial OTP trigger after Sole Proprietor brand creation\n* 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\nPossible 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_2","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_2","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_2","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\n\nThis endpoint is currently limited to only returning shared campaigns that Telnyx\nhas accepted. In other words, shared but pending campaigns are currently omitted\nfrom 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.\n\nThis 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"}}}},"500":{"description":"Error searching for phone numbers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsDataErrorMessage"}}}},"4XX":{"$ref":"#/components/responses/10dlc_GenericErrorResponse_ca4eb0ad6f"}},"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.<br/><br/>\nIf <code>sim_card_group_id</code> is provided, the eSIMs will be associated with that group. Otherwise, the default group for the current user will be used.<br/><br/>\n","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.<br/><br/>\nIf <code>sim_card_group_id</code> is provided, the SIM cards will be associated with that group. Otherwise, the default group for the current user will be used.<br/><br/>\n","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.","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","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Address"}}}}}},"422":{"description":"Bad request"}}}},"/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":{"description":"Bad request"}}}},"/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":{"description":"Bad request"}}},"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":{"description":"Bad request"}}}},"/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`.\n\nThe 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.\n\nEach 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":"ListTestSuiteRuns","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":"TriggerTestSuiteRuns","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":"ListTestRuns","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`.\n\nBy 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.\n\nPass `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.\n\nDeletion 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}}}},"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."}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"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.","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.\n\nRemoves all canary deploy configurations for the specified assistant.","operationId":"DeleteCanaryDeploy","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.\n\nRetrieves the current canary deploy configuration with all version IDs and their\ntraffic 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.\n\nCreates a new canary deploy configuration with multiple version IDs and their traffic\npercentages for A/B testing or gradual rollouts of assistant versions.","operationId":"CreateCanaryDeploy","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":"UpdateCanaryDeploy","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:\n1. Validates that `from` is a WhatsApp number on your account whose messaging profile has this assistant configured\n2. Creates a new `whatsapp_chat` conversation with the provided metadata\n3. Asks the assistant to pick one of its approved WhatsApp templates and fill its variables from `content`\n4. Sends the template from `from` to `to`\n5. Returns the conversation ID and the message ID\n\nWhen 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_w_1byyum7","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__d_1juqh7o","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.\n\nOptionally 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.\n\nThe enhancement focuses on tool-calling reliability, clarity and precision, completeness and error handling, tool schema alignment, and conversation flow structure.\n\nThe 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__assist_14cwph5","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.\n\nThe 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":"TestAssistantTool","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","operationId":"ListAssistantVersions","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":"DeleteAssistantVersion","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":"GetAssistantVersion","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":"UpdateAssistantVersion","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":"PromoteAssistantVersion","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/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":"GetClusterImage","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.\n\n**How it works:**\n1. The query text is embedded into a 1024-dimensional vector using the multilingual-e5-large model.\n2. The vector is compared against indexed record chunks using semantic similarity search.\n3. When no region is specified, all regions are queried in parallel (fan-out) and results are merged by score.\n4. Results are ranked by similarity score (descending) and paginated via `page[number]` / `page[size]`.\n\n**Authentication:** Requires a Telnyx API key via `Authorization: Bearer <key>`. Results are automatically scoped to the caller's organization — `organization_id` is injected from the auth token and cannot be overridden.\n\n**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.\n\n**Filtering:** Use `filter[field][operator]=value` query parameters to narrow results before vector search.\n\nTop-level filterable fields: `user_id`, `region`, `record_id`, `record_created_at`, `ingested_at`, `retention`\n\nNote: `retention` is filter-only — it can be used to narrow results but is not returned in the response body.\n\nMetadata fields: any field not in the list above is resolved to `data.metadata.<field>` (e.g., `filter[language]=en` → `data.metadata.language`).\n\nSupported filter operators:\n- `eq` — exact match (default when no operator specified)\n- `in` — match any of comma-separated values\n- `gte`, `gt`, `lte`, `lt` — range comparisons (useful for date filtering)\n- `contains` — wildcard substring match\n\n**Examples:**\n- `GET /v2/ai/conversation_histories?q=billing+issue&page[size]=10`\n- `GET /v2/ai/conversation_histories?q=setup+guide&region=USA&min_score=0.5`\n- `GET /v2/ai/conversation_histories?q=refund&filter[record_created_at][gte]=2026-01-01T00:00:00Z`\n- `GET /v2/ai/conversation_histories?q=outage&filter[region][in]=USA,DEU`\n- `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,"maximum":1,"default":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->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.\n\nCommon fields used for over-time charts:\n- `score` — Group by the insight's score value (e.g. for Agent Instruction Following, User Satisfaction).\n- `metadata.assistant_id` — Group by the assistant that handled the conversation.\n- `metadata.assistant_version_id` — Group by the assistant version, useful for comparing performance across versions in the portal's 'Insights Over Time' chart.\n- `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.\n\nCommon fields used for over-time charts:\n- `score` — Group by the insight's score value (e.g. for Agent Instruction Following, User Satisfaction).\n- `metadata.assistant_id` — Group by the assistant that handled the conversation.\n- `metadata.assistant_version_id` — Group by the assistant version, useful for comparing performance across versions in the portal's 'Insights Over Time' chart.\n- `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.<key>' 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.<key>' 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.<day_start>` and `created_at=lt.<next_day_start>`.","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.<day_start>` and `created_at=lt.<next_day_start>`."},{"name":"metadata.assistant_id","in":"query","required":false,"schema":{"type":"string","description":"Filter by assistant ID (e.g., `metadata.assistant_id=eq.<assistant_id>`). 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.<assistant_id>`). 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\nthe 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/)\nThis 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":"DeleteEmbeddingBucket","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.\nYou 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:\n- `queued` - Task is waiting to be picked up by a worker\n- `processing` - The embedding task is running\n- `success` - Task completed successfully and the bucket is embedded\n- `failure` - Task failed and no files were embedded successfully\n- `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":"GetUserIntegration","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.\n\n**How it works:**\n1. The `query` text is embedded into a 1024-dimensional vector using the multilingual-e5-large model.\n2. 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.\n3. Results are ranked by `score` (descending) and paginated via `page[number]` / `page[size]`.\n\n**Authentication:** Requires a Telnyx API key via `Authorization: Bearer <key>`. Results are automatically scoped to your organization and cannot be overridden.\n\n**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.<field>`.\n\n**Examples:**\n- `GET /v2/ai/knowledge/collections/my-collection/documents?query=billing+issue&top_k=10`\n- `GET /v2/ai/knowledge/collections/my-collection/documents?query=refund&sources=voice,message`\n- `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.<field>` 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":{"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":["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"}}]}}}},"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"}]}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelnyxErrors"},"example":{"errors":[{"code":"upstream_error","detail":"the memory dataplane is unavailable"}]}}}}},"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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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}/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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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"}]}}}}},"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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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"}}]}}}},"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"}]}}}},"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"}]}}}}}},"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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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.\n\nA 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\n\n- Prefers Slack over email.\n- 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"}}]}}}},"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"}]}}}},"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}/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"}}]}}}},"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"}]}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelnyxErrors"},"example":{"errors":[{"code":"upstream_error","detail":"the memory dataplane is unavailable"}]}}}}}},"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.\n\nInstructions 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"}}]}}}},"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"}]}}}},"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"}]}}}}}}},"/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":"DeleteMissionKnowledgeBase","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":"GetMissionKnowledgeBase","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":"PutMissionKnowledgeBase","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":"DeleteMissionMcpServer","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":"GetMissionMcpServer","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":"PutMissionMcpServer","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":"GetMissionRunEvent","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":"GetMissionRunStep","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":"UpdateMissionRunStep","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":"ListMissionRunAgents","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":"CreateMissionRunAgent","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":"DeleteMissionRunAgent","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.\n\nReturns 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`.\n\nModel 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.\n\nEach 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`.\n\nModel 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`.\n\nThe `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.\n\nIf `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.\n\nYou 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.\n\nEvaluate 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.\n\nThe 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.\n\nUse 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":0.00003529133987660637,"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 <code>-</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>name</code>: sorts the result by the\n    <code>name</code> field in ascending order.\n  </li>\n  <li>\n    <code>-name</code>: sorts the result by the\n    <code>name</code> field in descending order.\n  </li>\n</ul><br/>If not given, results are sorted by <code>created_at</code> 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.\n\n**Note**: Only one `filter[occurred_at]` can be passed.\n","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.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n","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"},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorResponse"},"503":{"$ref":"#/components/responses/ServiceUnavailableResponse"},"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"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"},"default":{"$ref":"#/components/responses/call-control_GenericErrorResponse"}}}},"/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.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n","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.\n\nTo 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.\n\nSet 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.\n\n**Expected Webhooks:**\n\n- `call.answered`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n","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.\n\n**Expected Webhooks:**\n\n- `call.bridged` for Leg A\n- `call.bridged` for Leg B\n","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.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n","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"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"},"default":{"$ref":"#/components/responses/call-control_GenericErrorResponse"}}}},"/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"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"},"default":{"$ref":"#/components/responses/call-control_GenericErrorResponse"}}}},"/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.\n\n**Expected Webhooks:**\n\n- `call.fork.stopped`\n","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.\n\nYou can pass a list of valid digits. The `Answer` command must be issued before the `gather` command.\n\n**Expected Webhooks:**\n\n- `call.dtmf.received` (you may receive many of these webhooks)\n- `call.gather.ended`\n","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.\n\n**Expected Webhooks:**\n\n- `call.gather.ended`\n","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.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.\n\nYou 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.\n\n**Expected Webhooks:**\n\n- `call.playback.started`\n- `call.playback.ended`\n- `call.dtmf.received` (you may receive many of these webhooks)\n- `call.gather.ended`\n","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.\n\nYou 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.\n\n**Expected Webhooks:**\n\n- `call.dtmf.received` (you may receive many of these webhooks)\n- `call.gather.ended`\n","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.\n\n**Expected Webhooks:**\n\n- `call.hangup`\n- `call.recording.saved`\n","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.\n\nWhen `payment_token` is supplied, the DTMF collection steps are skipped and the existing token is sent to the connector.\n\n**Expected Webhooks:**\n\n- `call.payment.progress`\n- `call.payment.completed`\n\n**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,\nthe audio files will be placed in a queue awaiting playback.\n\n*Notes:*\n\n- When `overlay` is enabled, `target_legs` is limited to `self`.\n- A customer cannot Play Audio with `overlay=true` unless there is a Play Audio with `overlay=false` actively playing.\n\n**Expected Webhooks:**\n\n- `call.playback.started`\n- `call.playback.ended`\n","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.\n\n**Expected Webhooks:**\n\n- `call.playback.ended` or `call.speak.ended`\n","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.\n\n**Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n","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.\n\n**Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n","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.\n\n**Expected Webhooks:**\n\n- `call.recording.saved`\n- `call.recording.transcription.saved`\n- `call.recording.error`\n","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.\n\n**Expected Webhooks:**\n\n- `call.recording.saved`\n","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.\n\n**Expected Webhooks:**\n\n- `call.refer.started`\n- `call.refer.completed`\n- `call.refer.failed`\n","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.\n\n**Expected Webhooks:**\n\n- `call.hangup`\n","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.\n\n**Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n","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.\n\n**Expected Webhooks:**\n\n- `call.sip_info.received` (to be received on the target call leg)\n","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.\n\n**Expected Webhooks:**\n\n- `siprec.stopped`\n","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.\n\n**Expected Webhooks:**\n\n- `call.speak.started`\n- `call.speak.ended`\n","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.\n\nPlease 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.\n\n**Expected Webhooks:**\n\n- `streaming.stopped`\n","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.\n\n**Expected Webhooks:**\n\n- `call.transcription`\n","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.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.bridged` to Leg B\n- `call.answered` or `call.hangup`\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n","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 <a href=\"https://support.telnyx.com/en/articles/8428806-global-channel-billing\">Telnyx Support Articles</a> 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.\n\nThe 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.\n\n**Expected Webhooks:**\n\n- `conference.created`\n- `conference.participant.joined`\n- `conference.participant.left`\n- `conference.ended`\n- `conference.recording.saved`\n- `conference.floor.changed`\n","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.\n\n**Expected Webhooks:**\n\n- `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.\n\n**Expected Webhooks:**\n\n- `conference.recording.saved`\n","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.\n","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."},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}},"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"}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}},"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"}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}},"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"}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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. <br/>Example: filter[status]=delivered. <br/>Required: filter[record_type] must be specified. <br/>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. <br/>Example: sort=-created_at <br/>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"}},"/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.\n\nAuthorizations 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.\n\nWhen `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.\n\nReturns `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.\n\nWhen `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.\n\nReturns `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"},{"name":"status","in":"query","required":false,"description":"Filter by phone-number status.","schema":{"$ref":"#/components/schemas/PhoneNumberStatus"}}],"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.\n\n**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.\n\nReturns 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.\n\nThe DIR's authorizer email must be verified first (see the email-verification endpoint). Until it is, this returns `409` and no references are stored.\n\nThe 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.\n\nReplacing a reference is allowed only while the DIR itself is still editable, the same window in which a single reference may be updated; once the DIR has been submitted for vetting this returns `400`. 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.\n\nThe response always echoes the stored references in the same shape as the GET.\n\nWho 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.\n\nCosmetic 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.\n\nReturns `400` from `submitted`/`in_review`/`permanently_rejected`. Returns `400` if the DIR's business and financial references have not been submitted. Returns `409` 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.\n\nThe 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 /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.\n\nFor 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.<br /><br />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/UnprocessableEntity"},"default":{"$ref":"#/components/responses/documents_GenericErrorResponse"}}}},"/documents/{id}":{"delete":{"summary":"Delete a document","description":"Delete a document.<br /><br />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/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/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/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/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/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/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/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/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/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`.\nCaller-supplied `reason` / `source` are **ignored**; `scope` is\n**derived** server-side from `domain_id` / `from` and is never\ntrusted. Idempotent: if a matching row already exists (NULL-safe\ndedupe key: account_id, scope, to, reason, domain_id, from),\nreturns the existing record with `200` (no new audit event).\n\n`bounce_category`, `dsn_code`, `meta`, and `group_id` are **not\naccepted** on the public surface. Use the unsubscribe-group\nsuppression endpoint or the internal create surface for those.\n","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":{"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"}}}}},"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"}}}}},"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\ncursor; never materialized). Content-type `text/csv`, header\n`Content-Disposition: attachment; filename=\"email_blocks_export.csv\"`.\n\nFilters (`filter[reason]`, `filter[domain_id]`,\n`filter[created_after]`, `filter[created_before]`) are the only\nparams that affect output. `sort` and `page[*]` are **parsed**\n(bad values still produce `400`) but **ignored** — rows stream\n`ORDER BY created_at ASC, id ASC` with no pagination.\n\nCSV columns: `id,to,from,reason,source,scope,status,domain_id,\ncreated_at,updated_at,expires_at,group_id,bounce_category,dsn_code,\nmeta` (15 columns). The first 12 columns are the stable native\nsignature; `bounce_category`, `dsn_code`, and `meta` are optional\nbackup fields (empty when unset). The CSV carries the `group_id`\ncolumn so group-scoped suppressions' group link survives the\nexport (empty for account-scope rows).\n","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\nworker (`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\nor > 250 000 rows) returns `10015` with `source.pointer /file`.\nThe multipart parser raises `RequestTooLargeError` when the\nencoded body exceeds 26 MiB — that's a framework error rendered\nwith body `code: \"413\"` (matches the HTTP status).\n","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).\nNullable fields are omitted until terminal: `provider`/`completed_at`\nwhen nil; `processed_rows`/`created_count`/`existing_count`/\n`skipped_count`/`error_count` only when `status == completed`;\n`errors` only when non-empty; `failure_reason` only on terminal\nfailure.\n","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`\naudit event is appended unless the block was already `removed`\n(idempotent — returns the existing row with `200` and no new event).\nMutates `updated_at`.\n","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]`\ndefault **50**, max 100). No `sort`, no `filter`, no cursor —\nordering is fixed `desc occurred_at, desc id`. Verifies the block\nbelongs to the account first (cross-account → 404).\n","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"]}},{"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 `<selector>._domainkey.<domain>` 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.\n","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.\n","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"}}}},"403":{"description":"Forbidden — shared domains are read-only for non-owner accounts (error code 10008).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsErrorResponse"}}}},"404":{"$ref":"#/components/responses/email_NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"500":{"$ref":"#/components/responses/InternalServerError"}},"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.\n","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.\n","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"}}}},"403":{"description":"Forbidden — shared domains are read-only for non-owner accounts (error code 10008).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsErrorResponse"}}}},"404":{"$ref":"#/components/responses/email_NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"500":{"$ref":"#/components/responses/InternalServerError"}},"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"}}}},"403":{"description":"Forbidden — shared domains are read-only for non-owner accounts (error code 10008).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsErrorResponse"}}}},"404":{"$ref":"#/components/responses/email_NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"500":{"$ref":"#/components/responses/InternalServerError"}},"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\nquery parameters (e.g. event_type=delivered&event_type=bounced).\nUnknown values return no matches.\n\nDual-name compatibility: values are accepted\nbare or `email.`-prefixed. A legacy value keeps matching the\nrows it matched pre-rename — no widening: `failed` also\nmatches the rows that now store the canonical names of the\noutcomes it covered (`gw_reject`, `injection_timeout`,\n`expired`); `bounced` matches stored `bounced` rows only\n(recipient-scoped Expirations stored `failed` pre-rename and\nnever matched `bounced`, so `expired` is deliberately not a\n`bounced` expansion). A canonical value matches its own rows\nplus legacy rows whose recorded payload evidence proves that\noutcome (`expired` also surfaces legacy `bounced` rows with\n`bounce_category: transient`). The additive\n`canonical_event_type` field in each response row names the\ncanonical outcome.\n","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\nallocates the account's shared inbound subdomain so the inbox is immediately usable\nwithout customer DNS setup. When `username` is omitted, a unique username is generated.\n","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\nto the authenticated account and the given inbox.\n","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\nwork-in-progress and may be saved incomplete. Send-time requirements (sender,\nsubject, at least one recipient) are enforced when the draft is sent, not when\nit is created.\n\nDrafts are unbillable and emit no Email Detail Records until they are sent.\n","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\ncannot be deleted; sent drafts are retained for audit.\n","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\nexact content that was sent stays auditable.\n","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\nserver-owned and ignored if present in the body, so a draft can never be moved\nbetween accounts or inboxes.\n\nA draft that is being sent or has already been sent is immutable and returns\n422 — modifying it would race with delivery or rewrite the record of what was\nactually sent.\n","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,\nsuppression, reputation, daily-quota, persistence and Detail Record behaviour as\n`POST /v2/email_messages`. The response body is the created email message.\n\nIf the draft has no explicit `from_email`, the inbox address is used.\n\nThe draft is marked `sent` only after the send is accepted; a send rejected for\nsuppression, quota or reputation leaves the draft editable so it can be fixed and\nretried. A draft that is already `sent` returns 422 rather than sending twice.\n","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\nidempotent: removing an entry that is not present still returns the current\nfilter lists.\n","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\nto lowercase. A blocklist match takes precedence over an allowlist match;\nwhen both lists are empty, all senders are accepted.\n","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\nidempotent set union: entries already present remain unchanged.\n","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\nthat list. Use `POST` or `DELETE` for incremental changes.\n","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\naccount. `filter[search]` performs PostgreSQL full-text search over the subject,\nplain-text body, and HTML body. Filters compose with stable cursor pagination.\n","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":"<message@example.com>","in_reply_to":"<earlier@example.com>","references":["<earlier@example.com>"],"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`\nto `true` to mark the message read at the server's current time, to an ISO 8601\ntimestamp to use that timestamp, or to `null` to mark the message unread. Repeating\nthe same update is idempotent.\n","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":"<message-id@example.com>"},"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\nTo, Cc, and Bcc recipients. `to` must contain at least one recipient. Optional `text` and\n`html` are prepended to a forwarded-message block containing the original metadata and\navailable body content. The subject is prefixed with `Fwd:` unless it already has that prefix.\n\nThreading headers are derived from the original message: `In-Reply-To` is set to its\nRFC Message-ID, and `References` contains the original References values plus that\nMessage-ID, de-duplicated and limited to the most recent 20 values.\n","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\nthe original `Reply-To`, falling back to `From`; original Cc recipients are not included.\nThe subject is prefixed with `Re:` unless it already has that prefix.\n\nThreading headers are derived from the original message: `In-Reply-To` is set to its\nRFC Message-ID, and `References` contains the original References values plus that\nMessage-ID, de-duplicated and limited to the most recent 20 values.\n","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":"<p>Thanks for the update.</p>"}}}}}},"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\nwith the original `Reply-To` (or `From`) and includes original To recipients; the Cc list\nincludes original Cc recipients. The inbox address is excluded, and recipients are\nde-duplicated case-insensitively across To and Cc. Bcc is always empty. The subject is\nprefixed with `Re:` unless it already has that prefix.\n\nThreading headers are derived from the original message: `In-Reply-To` is set to its\nRFC Message-ID, and `References` contains the original References values plus that\nMessage-ID, de-duplicated and limited to the most recent 20 values.\n","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":"<p>Everyone, please review.</p>"}}}}}},"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\n`/actions/reply` endpoint, which sends immediately, this stores a draft that can\nbe reviewed and edited before sending.\n\n`reply_to_message_id` and `thread_id` are inherited from the parent message and\ncannot be set by the caller. The recipient, `Re:` subject and\n`In-Reply-To`/`References` headers are pre-filled from the parent using the same\nrules as a live reply, so sending the draft threads identically. Supplying `to`\nor `subject` explicitly overrides the pre-filled value.\n","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\nlabel the message does not carry is a no-op and still returns 200.\nRemoval is case-sensitive.\n","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\nworkflow state such as `spam`, `needs_review`, or `processed`.\n\nLabels are **not** the same as the send-time `tags` on outbound\nmessages: `tags` are immutable and propagate to Email Detail Records\nand Mission Control for billing attribution, while labels are mailbox\nstate that never reaches the reporting contract.\n\nThe operation is an idempotent set union — adding a label the message\nalready carries is a no-op and still returns 200. Labels are\ncase-sensitive, and message labels are independent of thread labels.\n","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":"<message@example.com>","in_reply_to":"<earlier@example.com>","references":["<earlier@example.com>"],"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\nthe thread does not carry is a no-op and still returns 200.\n","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\nwhole conversation (for example `needs_review`) without labelling each\nmessage individually.\n\nThread labels are independent of message labels: labelling a thread\ndoes not label its messages, and labelling a message does not label its\nthread. Idempotent and case-sensitive.\n","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\nsupplied address, including retained events whose parent message has expired.\nEvents and durable recipients are deleted immediately with each message. The\noperation never searches or reports matches in another account. The legacy\n`/v2/emails` DELETE route is a backward-compatible alias.\n","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.\n","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\nis a backward-compatible alias for this operation.\n\n`subject` is required unless `template_id` is supplied. When using `template_id`, do not\nalso provide `subject`, `html_body`, or `text_body`; the template is rendered with\n`template_variables`.\n\nNote: 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":"<h1>Welcome!</h1>"}},"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"},"409":{"$ref":"#/components/responses/IdempotencyConflictResponse"},"413":{"$ref":"#/components/responses/PayloadTooLargeResponse"},"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."}]}}}},"429":{"$ref":"#/components/responses/EmailSendTooManyRequestsResponse"},"503":{"$ref":"#/components/responses/email_ServiceUnavailableResponse"}},"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"},"409":{"$ref":"#/components/responses/IdempotencyConflictResponse"},"413":{"$ref":"#/components/responses/PayloadTooLargeResponse"},"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."}]}}}},"429":{"$ref":"#/components/responses/EmailSendTooManyRequestsResponse"},"503":{"$ref":"#/components/responses/email_ServiceUnavailableResponse"}},"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`.\nThe legacy `/v2/emails/{id}/events` GET route is a backward-compatible alias.\n\nFor compatibility, each event carries the legacy\ncustomer-visible `event_type` (`email.`-prefixed), the additive\n`canonical_event_type` (`email.`-prefixed), and the deprecated\n`type` duplicate — whose value keeps the exact legacy format:\nthe bare stored event name, never `email.`-prefixed. Gateway\nrejections render `email.failed` + canonical `email.gw_reject`; MTA\nexpirations render `email.bounced` + canonical `email.expired`;\nevery unchanged outcome carries identical `event_type` and\n`canonical_event_type` values (and `type` keeps the stored name).\n","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.\nEach recipient has an independent status, billable flag, and lifecycle timestamps.\nBCC recipient addresses are redacted (returned as null) to protect BCC privacy.\nDefault page size is 25, maximum is 100.\n","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,\nbillable flag, SMTP detail, and lifecycle timestamps.\nBCC recipient addresses are redacted (returned as null).\n","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\nrecipients, and unshared attachment objects. Returns 404 when the message does\nnot exist in the authenticated account. The legacy `/v2/emails/{id}` DELETE\nroute is a backward-compatible alias.\n","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`.","parameters":[{"$ref":"#/components/parameters/email_PageSize"},{"$ref":"#/components/parameters/PageCursor"}],"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"],"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"}}}}},"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":"<h1>Hello {{ first_name }}</h1>","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"}}},"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"},"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"}}]}}}},"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"],"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"],"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"],"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 `{}`.\n\nWhen 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"],"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\ncursor pagination. An agent operating many inboxes gets every\nconversation in one call instead of one call per inbox. Each thread\ncarries its own `inbox_id` so a reply can be routed back to the right\ninbox. Use `filter[inbox_id]` (repeatable) to narrow the result to\nspecific inboxes. Because a thread ID can be delivered to multiple\ninboxes, each result is identified by its `(inbox_id, id)` pair.\n","parameters":[{"name":"filter[inbox_id]","in":"query","required":false,"description":"Restrict results to one or more inboxes. Repeat the parameter\n(`filter[inbox_id][]=...&filter[inbox_id][]=...`) or pass a\ncomma-separated list. Omit to list every inbox in the account.\nInboxes outside the account are silently excluded. If the filter\nis present, it must contain at least one non-empty UUID.\n","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,\ninterleaved in chronological order. The `inbox_id` returned by the list\nendpoint is required because a thread ID can occur in multiple inboxes.\nOnly messages matching that `(inbox_id, thread_id)` pair are returned. Threads outside the account\nreturn an opaque 404.\n","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":"<message@example.com>","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]`\ndefault 25, max 100). No `sort`/`filter`/cursor — ordering fixed\n`desc created_at, desc id`. Uses the shared `QueryParser.parse_offset/1`\n— a malformed `page` (e.g. flat `?page=1` instead of\n`?page[number]=1`) returns `400` (code `10015`), consistent with\n`GET /v2/email_blocks`. `meta` includes `total_pages`.\n","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\n`force=true`, soft-deletes all active suppressions first (status →\n`removed`, `group_id` cleared, `removed` audit event per block) in a\nsingle transaction, then hard-deletes the group. Without `force`\nand active suppressions present → `409`. Audit trail is preserved.\n`force` only accepts the string `\"true\"` or boolean `true`; all other\nvalues are false.\n","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]`\ndefault 1, `page[size]` default 25, max 100). No `sort`/`filter`/\ncursor — ordering fixed `desc created_at, desc id`. Uses the shared\n`QueryParser.parse_offset/1` — a malformed `page` returns `400`\n(code `10015`), consistent with `GET /v2/email_blocks`. `meta`\nincludes `total_pages`. Rows reuse the standard suppression shape\n(`group_id` set to this group).\n","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`,\n`group_id: <this group>`. All other body fields are ignored; only\n`to` is read. Idempotent (same dedupe key → `200`, no new event).\n","operationId":"addGroupSuppression","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddGroupSuppressionRequest"},"example":{"to":"user@example.com"}}}},"responses":{"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"}}}}},"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"}}}}},"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\nemail) — one `removed` audit event per block (`actor: manual`).\nThe `email` path segment is normalized (trim + lower-case) before\nmatching. Idempotent on already-removed rows (returns `404` since\nthey're no longer `active`).\n\nTwo distinct `404` cases: a missing/cross-account **group** returns\n`10001 \"The requested unsubscribe group was not found\"`; a group that\nexists but has **no active suppression** for that email returns\n`10001 \"The requested group suppression was not found\"`.\n","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"},"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."}]}}}},"503":{"$ref":"#/components/responses/email_ServiceUnavailableResponse"}},"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"},"409":{"$ref":"#/components/responses/IdempotencyConflictResponse"},"413":{"$ref":"#/components/responses/PayloadTooLargeResponse"},"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"},"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.\n\nThe 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.\n\nCommon failure modes:\n- `422` - a required field is missing or malformed (the response `errors[].source.pointer` names the field).\n- `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.\n\nFailure modes:\n- `400` - the enterprise still has dependent resources in a non-deletable state. Remove those first; the response `detail` identifies what is blocking the delete.\n- `409` - the enterprise has a dependent resource with an unresolved claim. Resolve it before deleting.\n- `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`).\n\nFor 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.\n\nIf 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:\n- First call: marks the enterprise as activated and begins onboarding it with the Branded Calling platform asynchronously. Returns `200` with `branded_calling_enabled: true`.\n- Re-call after success: no-op, returns the same enterprise body.\n- Re-call after a prior failure: re-queues onboarding, returns `200`.\n\nPrerequisite: 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`.\n\nFailure modes:\n- `400` - the account has no available credit. Add funds and retry.\n- `400` - the enterprise is not in the United States. Branded Calling is currently available only to US enterprises.\n- `403` - Branded Calling Terms of Service not accepted.\n- `404` - enterprise does not exist or does not belong to your account.\n\n**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]=<now>` + `filter[expiring_at][lte]=<now+N>`. 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.\n\n**Field rules**\n- `display_name`: 1–35 characters, no emoji or whitespace-only strings; this is the name shown to recipients.\n- `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`.\n- `logo_url`: HTTPS URL (max 128 chars) to a 256×256 BMP (max 1 MB). The image is downloaded and hashed at submission time.\n- `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.\n- `certify_brand_is_accurate`, `certify_no_shaft_content`, `certify_ip_ownership` MUST all be `true`.\n\n**Failure modes**\n- `422` - validation error; `errors[].source.pointer` names the offending field.\n- `403` - Branded Calling not activated on this enterprise (see `POST /enterprises/{id}/branded_calling`).\n- `404` - enterprise does not exist or does not belong to your account.","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.\n\nReturns `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`.\n\n**Prerequisite**: the calling user must have agreed to the Phone Number Reputation Terms of Service (`POST /terms_of_service/number_reputation/agree`).\n\nFailure modes:\n- `403` - Phone Number Reputation Terms of Service not accepted.\n- `404` - enterprise does not exist or does not belong to your account.\n- `400` - reputation already enabled for this enterprise.\n- `422` - `loa_document_id` missing or `check_frequency` invalid.\n\n**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/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.\n\nThe 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"}}],"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) and belong to your Telnyx phone-number inventory.\n\n**Prerequisite**: reputation must already be enabled on this enterprise (see `POST .../reputation`).\n\n**Pricing:** This is a billable action. See https://telnyx.com/pricing/numbers for current pricing.","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"}}}},"/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.\n\n**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/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.\n\nEach 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}/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.\n\nA 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.\n\nThe 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.\n\nFor 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.\n\n**Supported file formats:**\n\n- PDF (`application/pdf`)\n- TIFF (`application/tiff`, `image/tiff`)\n- JPEG (`image/jpeg`)\n- PNG (`image/png`)\n- Microsoft Word `.doc` (`application/msword`)\n- Microsoft Word `.docx` (`application/vnd.openxmlformats-officedocument.wordprocessingml.document`)\n- Rich Text Format `.rtf` (`application/rtf`)\n- Plain text `.txt` (`text/plain`)\n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `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/UnprocessableEntity"},"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_2","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/UnprocessableEntity"},"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/UnprocessableEntity"},"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 <a href=\"https://support.telnyx.com/en/articles/8428806-global-channel-billing\">Telnyx Support Articles</a> 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.\n\nOnly `pending` and `contested` claims accept new evidence. A `resolved` claim returns `400`.\n\nFailure modes:\n- `400` - the claim is `resolved` (terminal); cannot be contested further.\n- `404` - the claim does not exist or is not against a DIR you own.\n- `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_2","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_2","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_2","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_2","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":{"application/json":{"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":{"application/json":{"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":{"application/json":{"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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","requestBody":{"description":"MDR detail request data","content":{"application/json":{"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_2","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_2","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_2","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_2","requestBody":{"description":"Telco data usage request data","content":{"application/json":{"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_2","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_2","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_2","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_2","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_2","requestBody":{"description":"Cdr detail request data","content":{"application/json":{"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_2","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_2","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"}}}},"/machine-payments/account-credit":{"post":{"summary":"Create a machine payment account credit","description":"Creates an account credit using the Machine Payment Protocol (MPP), an HTTP-402 payment flow for machines and agents.\n\nThe flow has two steps. First, send an authenticated request with the `amount_usd` to credit; the response is `402 Payment Required` with one or more payment challenges (for example separate Tempo and Stripe challenges) in the `WWW-Authenticate` header. Second, retry the request with an `Authorization: Payment ...` credential constructed from the challenge; on success the response includes the credited transaction and a `Payment-Receipt` header.\n\nThe credited account is never chosen by the request body: the initial request credits the account of the authenticated user, and a paid retry credits the account bound to the verified payment credential. The amount must be within the configured bounds (by default between 5.00 and 500.00 USD).\n\nSuccessful paid retries are idempotent — when Rails reaches its duplicate-transaction lookup for an already-recorded payment, it returns the existing transaction with `created: false` instead of crediting the account again. This deduplication applies to successful fulfillment: re-sending the same Stripe credential may instead be rejected by the upstream provider as an idempotent replay and return `402 Payment Required` rather than the existing transaction.\n\n> **Warning: the payment credential is bound to a specific Telnyx account ID.** A payment is captured before the bound account is validated. If the credential names an account that is missing, suspended, blocked, cancelled, dormant, or ineligible for the tier, the payment is captured but **no account is credited**. If the credential names a different but eligible account, that account is credited — 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":{"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"}}}}},"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"}}}}},"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"}}}}}},"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."}]}}}},"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"}}},"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":[]}}}}}},"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"}}}},"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"}]}}}},"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). Supports bring-your-own-key (BYOK) configuration. 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.","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"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/meeting-sessions_UnprocessableEntity"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"409":{"$ref":"#/components/responses/meeting-sessions_Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"409":{"$ref":"#/components/responses/meeting-sessions_Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"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"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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 (or avatar) 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`.","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"},"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"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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.","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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"409":{"$ref":"#/components/responses/meeting-sessions_Conflict"},"422":{"$ref":"#/components/responses/meeting-sessions_UnprocessableEntity"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"409":{"$ref":"#/components/responses/meeting-sessions_Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"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; provider deletion failures return 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"},"404":{"$ref":"#/components/responses/RecordingMediaResourceNotFound"},"409":{"$ref":"#/components/responses/RecordingMediaInvalidState"},"422":{"$ref":"#/components/responses/RecordingMediaUnsupportedCapability"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/meeting-sessions_InternalServerError"},"502":{"$ref":"#/components/responses/RecordingMediaProviderError"},"503":{"$ref":"#/components/responses/RecordingMediaAuthenticationUnavailable"}}}},"/meeting_sessions/{id}/recordings":{"get":{"operationId":"listMeetingSessionRecordings","tags":["Meeting Session Data"],"summary":"List meeting session recordings","description":"Returns recordings for a meeting session.","parameters":[{"$ref":"#/components/parameters/MeetingSessionId"}],"responses":{"200":{"description":"Successful response with a list of meeting session recordings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingSessionRecordingListResponse"},"example":{"data":[{"type":"video_mixed","url":"https://cdn.telnyx.com/recordings/mtgsess_9b2f.../video_mixed.mp4","expires_at":"2026-06-17T09:00:42Z"}]}}}},"401":{"$ref":"#/components/responses/meeting-sessions_Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/meeting-sessions_InternalServerError"},"502":{"$ref":"#/components/responses/MeetingRecordingLookupProviderError"},"503":{"$ref":"#/components/responses/MeetingReadAuthUnavailable"}}}},"/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"},"404":{"$ref":"#/components/responses/meeting-sessions_NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/meeting-sessions_InternalServerError"},"503":{"$ref":"#/components/responses/MeetingReadAuthUnavailable"}}}},"/messages":{"post":{"summary":"Send a message","description":"Send a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool.\n\nThis endpoint allows you to send a message with any messaging resource.\nCurrent messaging resources include: long-code, short-code, number-pool, and\nalphanumeric-sender-id.\n","operationId":"SendMessage","tags":["Messages"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messages/alphanumeric/sender/id":{"post":{"summary":"Send a message using an alphanumeric sender ID","description":"Send an SMS message using an alphanumeric sender ID. This is SMS only.","operationId":"SendAlphanumericSenderIdMessage","tags":["Messages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["from","to","text","messaging_profile_id"],"properties":{"from":{"type":"string","description":"A valid alphanumeric sender ID on the user's account.","example":"MyCompany"},"to":{"description":"Receiving address (+E.164 formatted phone number).","$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"The message body."},"messaging_profile_id":{"type":"string","format":"uuid","description":"The messaging profile ID to use."},"webhook_url":{"type":["string","null"],"format":"url","description":"Callback URL for delivery status updates."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"Failover callback URL for delivery status updates."},"use_profile_webhooks":{"type":"boolean","description":"If true, use the messaging profile's webhook settings."}}}}}},"responses":{"200":{"description":"Successful response with the sent message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundMessageResponse"}}}},"400":{"$ref":"#/components/responses/messaging_BadRequestResponse"},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse"},"422":{"$ref":"#/components/responses/messaging_UnprocessableEntityResponse"}},"x-latency-category":"responsive"}},"/messages/alphanumeric_sender_id":{"post":{"summary":"Send a message using an alphanumeric sender ID","description":"Send an SMS message using an alphanumeric sender ID. This is SMS only.","operationId":"SendAlphanumericSenderIdMessage_2","tags":["Messages"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["from","to","text","messaging_profile_id"],"properties":{"from":{"type":"string","description":"A valid alphanumeric sender ID on the user's account.","example":"MyCompany"},"to":{"description":"Receiving address (+E.164 formatted phone number).","$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"The message body."},"messaging_profile_id":{"type":"string","format":"uuid","description":"The messaging profile ID to use."},"webhook_url":{"type":["string","null"],"format":"url","description":"Callback URL for delivery status updates."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"Failover callback URL for delivery status updates."},"use_profile_webhooks":{"type":"boolean","description":"If true, use the messaging profile's webhook settings."}}}}}},"responses":{"200":{"description":"Successful response with the sent message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_OutboundMessageResponse"}}}},"400":{"$ref":"#/components/responses/messaging_BadRequestResponse_0b38e7044b"},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse_0b38e7044b"},"422":{"$ref":"#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b"}}}},"/messages/group/{message_id}":{"get":{"summary":"Retrieve group MMS messages","description":"Retrieve all messages in a group MMS conversation by the group message ID.","operationId":"GetGroupMmsMessages","tags":["Messages"],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The group message ID."}],"responses":{"200":{"description":"Successful response with group MMS messages.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}}},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse_0b38e7044b"},"404":{"$ref":"#/components/responses/messaging_NotFoundResponse_0b38e7044b"}}}},"/messages/group_mms":{"post":{"summary":"Send a group MMS message","operationId":"CreateGroupMmsMessage","tags":["Messages"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupMMSMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Queues an MMS addressed to multiple recipients as a group conversation. Delivery events are reported asynchronously through messaging webhooks."}},"/messages/long_code":{"post":{"summary":"Send a long code message","operationId":"CreateLongCodeMessage","tags":["Messages"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLongCodeMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Queues an outbound SMS or MMS using a long-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks."}},"/messages/number_pool":{"post":{"summary":"Send a message using number pool","operationId":"CreateNumberPoolMessage","tags":["Messages"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNumberPoolMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Queues an outbound message using a number pool. Telnyx selects an eligible sender from the pool according to its messaging profile configuration."}},"/messages/rcs":{"post":{"tags":["RCS"],"summary":"Send an RCS message","operationId":"SendRCSMessage","requestBody":{"description":"RCS message body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSMessage"}}},"required":true},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Queues an outbound RCS message through the selected RCS agent. Check recipient capabilities before sending features that require RCS support."}},"/messages/rcs/deeplinks/{agent_id}":{"get":{"summary":"Generate RCS deeplink","description":"Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.","operationId":"GenerateRCSDeeplink","tags":["RCS"],"parameters":[{"name":"agent_id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}},{"name":"phone_number","in":"query","description":"Phone number in E164 format (URL encoded)","required":false,"schema":{"type":"string"},"example":"%2B18445550001"},{"name":"body","in":"query","description":"Pre-filled message body (URL encoded)","required":false,"schema":{"type":"string"},"example":"hello%20world"}],"responses":{"200":{"description":"Successful response with deeplink URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSDeeplinkResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messages/rcs_deeplinks/{agent_id}":{"get":{"summary":"Generate RCS deeplink","description":"Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.","operationId":"GenerateRCSDeeplink_2","tags":["RCS"],"parameters":[{"name":"agent_id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}},{"name":"phone_number","in":"query","description":"Phone number in E164 format (URL encoded)","required":false,"schema":{"type":"string"},"example":"%2B18445550001"},{"name":"body","in":"query","description":"Pre-filled message body (URL encoded)","required":false,"schema":{"type":"string"},"example":"hello%20world"}],"responses":{"200":{"description":"Successful response with deeplink URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSDeeplinkResponse"}}}},"4XX":{"$ref":"#/components/responses/rcs_messaging_GenericErrorResponse"}},"x-latency-category":"responsive"}},"/messages/schedule":{"post":{"summary":"Schedule a message","description":"Schedule a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool.\n\nThis endpoint allows you to schedule a message with any messaging resource.\nCurrent messaging resources include: long-code, short-code, number-pool, and\nalphanumeric-sender-id.\n","operationId":"ScheduleMessage","tags":["Messages"],"requestBody":{"description":"Message payload with send_at set","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScheduledMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messages/short_code":{"post":{"summary":"Send a short code message","operationId":"CreateShortCodeMessage","tags":["Messages"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateShortCodeMessageRequest"}}}},"responses":{"200":{"description":"Successful response with details about a message.","content":{"application/json":{"schema":{"type":"object","title":"Message Response","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Queues an outbound SMS or MMS using a short-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks."}},"/messages/whatsapp":{"post":{"tags":["Whatsapp messaging"],"summary":"Send a Whatsapp message","description":"Sends a WhatsApp message using a Telnyx WhatsApp-enabled number. The message body, interactive elements, media, location, and reaction content are specified in the `whatsapp_message` field. Delivery progress and final disposition are reported asynchronously through messaging webhooks.","operationId":"SendWhatsappMessage","requestBody":{"description":"Whatsapp message body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappMessage"}}},"required":true},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messages/{id}":{"delete":{"summary":"Cancel a scheduled message","description":"Cancel a scheduled message that has not yet been sent. Only messages with `status=scheduled` and `send_at` more than a minute from now can be cancelled.","operationId":"CancelMessage","tags":["Messages"],"parameters":[{"name":"id","in":"path","description":"The id of the message to cancel","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_OutboundMessagePayloadCancelled"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}},"get":{"summary":"Retrieve a message","description":"Note: This API endpoint can only retrieve messages that are no older than 10 days since their creation. If you require messages older than this, please generate an [MDR report.](https://developers.telnyx.com/api-reference/mdr-usage-reports/create-mdr-usage-report)","operationId":"GetMessage","tags":["Messages"],"parameters":[{"name":"id","in":"path","description":"The id of the message","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response with details of a message.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"},{"$ref":"#/components/schemas/MessagingInboundMessagePayload"}]}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messaging/hosted/numbers":{"get":{"summary":"List messaging hosted numbers","description":"List all hosted numbers associated with the authenticated user.","operationId":"ListMessagingHostedNumbers","tags":["Messaging"],"parameters":[{"name":"filter[messaging_profile_id]","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Filter by messaging profile ID."},{"name":"filter[phone_number]","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by exact phone number."},{"name":"filter[phone_number][contains]","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by phone number substring."},{"name":"sort[phone_number]","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"]},"description":"Sort by phone number."},{"name":"page[number]","in":"query","description":"Page number to retrieve (1-based).","required":false,"schema":{"type":"integer","default":1}},{"name":"page[size]","in":"query","description":"Number of items to return per page.","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Successful response with a list of hosted numbers.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberWithMessagingSettings"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse"}},"x-latency-category":"responsive"}},"/messaging/profiles/{id}/actions/regenerate/secret":{"post":{"summary":"Regenerate messaging profile secret","description":"Regenerate the v1 secret for a messaging profile.","operationId":"RegenerateMessagingProfileSecret","tags":["Messaging"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The identifier of the messaging profile."}],"responses":{"200":{"description":"Successful response with details about a messaging profile.","content":{"application/json":{"schema":{"type":"object","title":"Messaging Profile Response","properties":{"data":{"$ref":"#/components/schemas/MessagingProfile"}}}}}},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/profiles_messaging_NotFoundResponse"}},"x-latency-category":"responsive"}},"/messaging/profiles/{id}/alphanumeric/sender/ids":{"get":{"summary":"List alphanumeric sender IDs for a messaging profile","description":"List all alphanumeric sender IDs associated with a specific messaging profile.","operationId":"ListProfileAlphanumericSenderIds","tags":["Messaging"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The identifier of the messaging profile."},{"name":"page[number]","in":"query","description":"Page number to retrieve (1-based).","required":false,"schema":{"type":"integer","default":1}},{"name":"page[size]","in":"query","description":"Number of items to return per page.","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Successful response with a list of alphanumeric sender IDs.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AlphanumericSenderId"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/profiles_messaging_NotFoundResponse"}},"x-latency-category":"responsive"}},"/messaging/profiles/{id}/metrics":{"get":{"summary":"Get detailed messaging profile metrics","description":"Get detailed metrics for a specific messaging profile, broken down by time interval.","operationId":"GetDetailedProfileMetrics","tags":["Messaging"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The identifier of the messaging profile."},{"name":"time_frame","in":"query","required":false,"schema":{"$ref":"#/components/schemas/MessagingMetricsTimeFrame"},"description":"The time frame for metrics."}],"responses":{"200":{"description":"Successful response with detailed profile metrics.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ProfileMetrics"}}},"example":{}}}},"400":{"$ref":"#/components/responses/messaging_BadRequestResponse"},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/profiles_messaging_NotFoundResponse"}},"x-latency-category":"responsive"}},"/messaging/rcs/agents":{"get":{"summary":"List all RCS agents","operationId":"ListRCSAgents","tags":["RCS"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful reponse with the list of RCS agents","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_RCSAgentsResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns RCS agents available to the authenticated account."}},"/messaging/rcs/agents/{id}":{"get":{"summary":"Retrieve an RCS agent","operationId":"GetRCSAgentById","tags":["RCS"],"parameters":[{"name":"id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with the RCS agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSAgentResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the configuration and current state of the specified RCS agent."},"patch":{"summary":"Modify an RCS agent","operationId":"UpdateRCSAgentById","tags":["RCS"],"parameters":[{"name":"id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSAgentUpdate"}}}},"responses":{"200":{"description":"Successful response with the updated RCS agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSAgentResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Updates the supplied configuration fields on the specified RCS agent."}},"/messaging/rcs/bulk_capabilities":{"post":{"summary":"Check RCS capabilities (batch)","operationId":"ListRCSCapabilitiesOfAPhoneNumbersBatch","tags":["RCS"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSCapabilityListRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSCapabilitiesBulk"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns RCS capability information for multiple recipients in one request."}},"/messaging/rcs/capabilities/{agent_id}/{phone_number}":{"get":{"summary":"Check RCS capabilities","operationId":"ListRCSCapabilitiesOfAPhoneNumber","tags":["RCS"],"parameters":[{"name":"agent_id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}},{"name":"phone_number","in":"path","description":"Phone number in E164 format","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSCapabilitiesSingle"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the RCS features supported by the specified recipient for the selected agent."}},"/messaging/rcs/test_number_invite/{id}/{phone_number}":{"put":{"summary":"Add RCS test number","description":"Adds a test phone number to an RCS agent for testing purposes.","operationId":"InviteATestNumberToRCS","tags":["RCS"],"parameters":[{"name":"id","in":"path","description":"RCS agent ID","required":true,"schema":{"type":"string"}},{"name":"phone_number","in":"path","description":"Phone number in E164 format to invite for testing","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Test number successfully invited to RCS agent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RCSTestNumberInviteResponse"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messaging/tollfree/verification/requests/{id}/status/history":{"get":{"tags":["Verification Requests"],"summary":"Get Verification Request Status History","description":"Get the history of status changes for a verification request.\n\nReturns a paginated list of historical status changes including the reason for each change and when it occurred.","operationId":"GetVerificationStatusHistory","parameters":[{"required":true,"schema":{"title":"Id","type":"string","format":"uuid"},"name":"id","in":"path","description":"Unique identifier of the resource."},{"required":true,"schema":{"title":"Page Number","minimum":1,"type":"integer"},"name":"page[number]","in":"query","description":"Page number to retrieve (1-based)."},{"required":true,"schema":{"title":"Page Size","minimum":1,"type":"integer","description":"Request this many records per page. This value is automatically clamped if the provided value is too large."},"name":"page[size]","in":"query","description":"Number of items to return per page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_VerificationStatusHistoryEntry_"}}}},"4XX":{"$ref":"#/components/responses/toll-free-verification_GenericErrorResponse"}},"x-latency-category":"responsive"}},"/messaging_hosted_number_orders":{"get":{"summary":"List messaging hosted number orders","operationId":"ListMessagingHostedNumberOrders","tags":["Hosted Numbers"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of messaging hosted number orders.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Hosted Number Order Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessagingHostedNumberOrder"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns hosted-messaging orders for the authenticated account. Apply the documented filters and pagination parameters to narrow the result set."},"post":{"summary":"Create a messaging hosted number order","operationId":"CreateMessagingHostedNumberOrder","tags":["Hosted Numbers"],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMessagingHostedNumberOrderRequest"}}}},"responses":{"200":{"description":"Successful response with details about a messaging hosted number order.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Hosted Number Order Response","properties":{"data":{"$ref":"#/components/schemas/MessagingHostedNumberOrder"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Creates an order to enable Telnyx messaging on phone numbers whose voice service remains with another carrier."}},"/messaging_hosted_number_orders/eligibility_numbers_check":{"post":{"summary":"Check hosted messaging eligibility","operationId":"CheckEligibilityNumbers","tags":["Hosted Numbers"],"requestBody":{"description":"Phone numbers to check eligibility","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityNumbersRequest"},"example":{"phone_numbers":["string"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityNumbersResponse"},"example":{"phone_numbers":[{"detail":"string","phone_number":"string","eligible":false,"eligible_status":"NUMBER_CAN_NOT_BE_REPEATED"}]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}}}},"description":"Checks whether the supplied phone numbers are eligible for hosted messaging before an order is created."}},"/messaging_hosted_number_orders/{id}":{"delete":{"summary":"Delete a messaging hosted number order","description":"Delete a messaging hosted number order and all associated phone numbers.","operationId":"DeleteMessagingHostedNumberOrder","tags":["Hosted Numbers"],"parameters":[{"name":"id","in":"path","description":"Identifies the messaging hosted number order to delete.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a messaging hosted number order.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Hosted Number Order Response","properties":{"data":{"$ref":"#/components/schemas/MessagingHostedNumberOrder"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}},"get":{"summary":"Retrieve a messaging hosted number order","operationId":"GetMessagingHostedNumberOrder","tags":["Hosted Numbers"],"parameters":[{"name":"id","in":"path","description":"Identifies the type of resource.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a messaging hosted number order.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Hosted Number Order Response","properties":{"data":{"$ref":"#/components/schemas/MessagingHostedNumberOrder"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the current state, phone numbers, and required actions for the specified hosted-messaging order."}},"/messaging_hosted_number_orders/{id}/actions/file_upload":{"post":{"summary":"Upload hosted number document","operationId":"UploadMessagingHostedNumberOrderFile","tags":["Hosted Numbers"],"parameters":[{"name":"id","in":"path","description":"Identifies the type of resource.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Message payload","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadFileMessagingHostedNumberOrderRequest"},"encoding":{"loa":{"contentType":"application/pdf"},"bill":{"contentType":"application/pdf"}}}}},"responses":{"200":{"description":"Successful response with details about a messaging hosted number order.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Hosted Number Order Response","properties":{"data":{"$ref":"#/components/schemas/MessagingHostedNumberOrder"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Uploads a supporting document to the specified hosted-messaging order."}},"/messaging_hosted_number_orders/{id}/validation_codes":{"post":{"summary":"Validate hosted number codes","description":"Validate the verification codes sent to the numbers of the hosted order. The verification codes must be created in the verification codes endpoint.","operationId":"ValidateVerificationCodesForMessagingHostedNumberOrder","tags":["Hosted Numbers"],"parameters":[{"name":"id","in":"path","description":"Order ID related to the validation codes.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationCodesRequest"},"example":{"verification_codes":[{"phone_number":"string","code":"string"}]}}}},"responses":{"200":{"description":"Successful response with the phone numbers and their respective status of the validation codes.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Hosted Number Response","properties":{"data":{"$ref":"#/components/schemas/ValidationCodes"}}},"example":{"data":{"phone_numbers":[{"phone_number":"string","status":"verified"}],"order_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messaging_hosted_number_orders/{id}/verification_codes":{"post":{"summary":"Create hosted number verification codes","description":"Create verification codes to validate numbers of the hosted order. The verification codes will be sent to the numbers of the hosted order.","operationId":"CreateVerificationCodesForMessagingHostedNumberOrder","tags":["Hosted Numbers"],"parameters":[{"name":"id","in":"path","description":"Order ID to have a verification code created.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Message payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationCodesRequest"},"example":{"phone_numbers":["string"],"verification_method":"sms"}}}},"responses":{"200":{"description":"Verification codes created and sent to the phone numbers of the hosted order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedVerificationCodesResponse"},"example":{"data":[{"phone_number":"string","verification_code_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","type":"sms","error":"string"}]}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/messaging_hosted_numbers":{"get":{"summary":"List messaging hosted numbers","description":"List all hosted numbers associated with the authenticated user.","operationId":"ListMessagingHostedNumbers_2","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_2","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_2","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_2","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_2","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_2","tags":["Messaging"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The identifier of the messaging profile."},{"name":"time_frame","in":"query","required":false,"schema":{"$ref":"#/components/schemas/MessagingMetricsTimeFrame"},"description":"The time frame for metrics."}],"responses":{"200":{"description":"Successful response with detailed profile metrics.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ProfileMetrics"}}},"example":{}}}},"400":{"$ref":"#/components/responses/messaging_BadRequestResponse_0b38e7044b"},"401":{"$ref":"#/components/responses/messaging_UnauthorizedResponse_0b38e7044b"},"404":{"$ref":"#/components/responses/messaging_NotFoundResponse_0b38e7044b"}}}},"/messaging_profiles/{id}/phone_numbers":{"get":{"summary":"List phone numbers associated with a messaging profile","operationId":"ListProfilePhoneNumbers","tags":["Profiles"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/MessagingProfileId"},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of messaging profile phone numbers.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Profile Phone Numbers Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberWithMessagingSettings"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the phone numbers currently associated with the specified messaging profile."}},"/messaging_profiles/{id}/short_codes":{"get":{"summary":"List short codes associated with a messaging profile","operationId":"ListProfileShortCodes","tags":["Profiles"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/MessagingProfileId"},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of messaging profile short codes.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Profile Short Codes Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ShortCode"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the short codes currently associated with the specified messaging profile."}},"/messaging_profiles/{profile_id}/autoresp_configs":{"get":{"tags":["Opt-Out Management"],"summary":"List Auto-Response Settings","operationId":"GetAutorespConfigs","parameters":[{"required":true,"schema":{"title":"Profile Id","type":"string","format":"uuid"},"name":"profile_id","in":"path","description":"Unique identifier of the profile."},{"required":false,"schema":{"title":"Country Code","type":"string"},"name":"country_code","in":"query","description":"Filter results by country code."},{"name":"created_at","in":"query","style":"deepObject","explode":true,"description":"Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]","schema":{"type":"object","properties":{"gte":{"title":"Created At[Gte]","type":"string"},"lte":{"title":"Created At[Lte]","type":"string"}}}},{"name":"updated_at","in":"query","style":"deepObject","explode":true,"description":"Consolidated updated_at parameter (deepObject style). Originally: updated_at[gte], updated_at[lte]","schema":{"type":"object","properties":{"gte":{"title":"Updated At[Gte]","type":"string"},"lte":{"title":"Updated At[Lte]","type":"string"}}}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_AutorespConfigsResponseSchema"},"example":{"data":[{"op":"start","keywords":["START","BEGIN"],"resp_text":"Thank you for subscribing US customer.","country_code":"US","id":"677ec1cb-949e-4aeb-a1c3-6d9ddffc1409","created_at":"2023-03-21T23:37:45.858535+00:00","updated_at":"2023-03-21T23:37:45.858535+00:00"},{"op":"stop","keywords":["END","STOP"],"resp_text":"You have unsubscribed.","country_code":"US","id":"54b7e19f-98a8-416f-81d1-a2782eade48b","created_at":"2023-03-10T21:54:46.293380+00:00","updated_at":"2023-03-10T21:54:46.293380+00:00"},{"op":"start","keywords":["START"],"resp_text":"Thank you for subscribing.","country_code":"*","id":"cfe07be1-2369-433f-be00-eb176008e834","created_at":"2023-03-14T14:46:21.097735+00:00","updated_at":"2023-03-14T14:46:21.097735+00:00"}],"meta":{"page_number":1,"page_size":5,"total_pages":1,"total_results":3}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the auto-response rules configured for the specified messaging profile."},"post":{"tags":["Opt-Out Management"],"summary":"Create auto-response setting","operationId":"CreateAutorespConfig","parameters":[{"required":true,"schema":{"title":"Profile Id","type":"string"},"name":"profile_id","in":"path","description":"Unique identifier of the profile."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRespConfigCreateSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutorespConfigResponseSchema"},"example":{"data":{"op":"start","keywords":["START"],"resp_text":"Hello there!","country_code":"US","id":"c2298f86-a4dc-4cac-b6b6-4a3d01c290fa","created_at":"2023-03-22T00:06:49.068817+00:00","updated_at":"2023-03-22T00:06:49.068817+00:00"}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Creates an auto-response rule on the specified messaging profile. Matching inbound messages trigger the configured response."}},"/messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}":{"delete":{"tags":["Opt-Out Management"],"summary":"Delete Auto-Response Setting","operationId":"DeleteAutorespConfig","parameters":[{"required":true,"schema":{"title":"Profile Id","type":"string","format":"uuid"},"name":"profile_id","in":"path","description":"Unique identifier of the profile."},{"required":true,"schema":{"title":"Autoresp Cfg Id","type":"string","format":"uuid"},"name":"autoresp_cfg_id","in":"path","description":"Unique identifier of the autoresp cfg."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","example":"OK"}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Deletes the specified auto-response rule from the messaging profile."},"get":{"tags":["Opt-Out Management"],"summary":"Get Auto-Response Setting","operationId":"GetAutorespConfig","parameters":[{"required":true,"schema":{"title":"Profile Id","type":"string","format":"uuid"},"name":"profile_id","in":"path","description":"Unique identifier of the profile."},{"required":true,"schema":{"title":"Autoresp Cfg Id","type":"string","format":"uuid"},"name":"autoresp_cfg_id","in":"path","description":"Unique identifier of the autoresp cfg."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutorespConfigResponseSchema"},"example":{"data":{"op":"start","keywords":["UNSTOP"],"resp_text":"Hello there!","country_code":"US","id":"adc37adf-d110-4355-9e9a-262847e68e89","created_at":"2023-03-13T17:51:03.826453+00:00","updated_at":"2023-03-13T17:51:03.826453+00:00"}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the matching criteria and response content for the specified auto-response rule."},"put":{"tags":["Opt-Out Management"],"summary":"Update Auto-Response Setting","operationId":"UpdateAutoRespConfig","parameters":[{"required":true,"schema":{"title":"Profile Id","type":"string","format":"uuid"},"name":"profile_id","in":"path","description":"Unique identifier of the profile."},{"required":true,"schema":{"title":"Autoresp Cfg Id","type":"string","format":"uuid"},"name":"autoresp_cfg_id","in":"path","description":"Unique identifier of the autoresp cfg."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRespConfigCreateSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutorespConfigResponseSchema"},"example":{"data":{"op":"start","keywords":["START","BEGIN"],"resp_text":"Hello there!","country_code":"*","id":"54b7e19f-98a8-416f-81d1-a2782eade48b","created_at":"2023-03-10T21:54:46.293380+00:00","updated_at":"2023-03-10T21:54:46.293380+00:00"}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Replaces the configuration of the specified auto-response rule."}},"/messaging_tollfree/verification/requests":{"get":{"tags":["Verification Requests"],"summary":"List Verification Requests","description":"Get a list of previously-submitted tollfree verification requests","operationId":"ListVerificationRequests","parameters":[{"required":true,"schema":{"title":"Page","minimum":1,"type":"integer"},"name":"page","in":"query","description":"Page number to retrieve (1-based)."},{"description":"\n        Request this many records per page\n\n        This value is automatically clamped if the provided value is too large.\n        ","required":true,"schema":{"title":"Page Size","minimum":1,"type":"integer","description":"\n        Request this many records per page\n\n        This value is automatically clamped if the provided value is too large.\n        "},"name":"page_size","in":"query"},{"required":false,"schema":{"title":"Date Start","type":"string","format":"date-time"},"name":"date_start","in":"query","description":"Start of the date range filter (inclusive, ISO 8601)."},{"required":false,"schema":{"title":"Date End","type":"string","format":"date-time"},"name":"date_end","in":"query","description":"End of the date range filter (inclusive, ISO 8601)."},{"required":false,"schema":{"$ref":"#/components/schemas/TFVerificationStatus"},"name":"status","in":"query","description":"Filter results by status."},{"required":false,"schema":{"title":"Phone Number","type":"string"},"name":"phone_number","in":"query","description":"Filter results by phone number."},{"required":false,"schema":{"title":"Business Name","type":"string"},"name":"business_name","in":"query","description":"Filter verification requests by business name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_VerificationRequestStatus_"}}}},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}},"post":{"tags":["Verification Requests"],"summary":"Submit Verification Request","description":"Submit a new tollfree verification request","operationId":"SubmitVerificationRequest","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_toll_free_verification_TFVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress"}}}},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}}},"/messaging_tollfree/verification/requests/{id}":{"delete":{"tags":["Verification Requests"],"summary":"Delete Verification Request","description":"Delete a verification request\n\nA request may only be deleted when when the request is in the \"rejected\" state.\n\n* `HTTP 200`: request successfully deleted\n* `HTTP 400`: request exists but can't be deleted (i.e. not rejected)\n* `HTTP 404`: request unknown or already deleted","operationId":"DeleteVerificationRequest","parameters":[{"required":true,"schema":{"title":"Id","type":"string","format":"uuid"},"name":"id","in":"path","description":"Unique identifier of the resource."}],"responses":{"200":{"description":"Successful deleted"},"404":{"description":"Not Found","$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}},"get":{"summary":"Get Verification Request","description":"Get a single verification request by its ID.","operationId":"GetVerificationRequest","tags":["Verification Requests"],"parameters":[{"required":true,"schema":{"title":"Id","type":"string","format":"uuid"},"name":"id","in":"path","description":"Unique identifier of the resource."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_toll_free_verification_VerificationRequestStatus"}}}},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}},"patch":{"tags":["Verification Requests"],"summary":"Update Verification Request","description":"Update an existing tollfree verification request. This is particularly useful when there are pending customer actions to be taken.","operationId":"UpdateVerificationRequest","parameters":[{"required":true,"schema":{"title":"Id","type":"string","format":"uuid"},"name":"id","in":"path","description":"Unique identifier of the resource."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_toll_free_verification_TFVerificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress"}}}},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}}},"/messaging_tollfree/verification/requests/{id}/status_history":{"get":{"tags":["Verification Requests"],"summary":"Get Verification Request Status History","description":"Get the history of status changes for a verification request.\n\nReturns a paginated list of historical status changes including the reason for each change and when it occurred.","operationId":"GetVerificationStatusHistory_2","parameters":[{"required":true,"schema":{"title":"Id","type":"string","format":"uuid"},"name":"id","in":"path","description":"Unique identifier of the resource."},{"required":true,"schema":{"title":"Page Number","minimum":1,"type":"integer"},"name":"page[number]","in":"query","description":"Page number to retrieve (1-based)."},{"required":true,"schema":{"title":"Page Size","minimum":1,"type":"integer","description":"Request this many records per page. This value is automatically clamped if the provided value is too large."},"name":"page[size]","in":"query","description":"Number of items to return per page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paginated_VerificationStatusHistoryEntry_"}}}},"4XX":{"$ref":"#/components/responses/messaging_toll_free_verification_GenericErrorResponse"}}}},"/messaging_url_domains":{"get":{"summary":"List messaging URL domains","operationId":"ListMessagingUrlDomains","tags":["Messaging URL Domains"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with details about a messaging URL domain.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Profile Url Domains Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessagingUrlDomain"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the URL domains available to the authenticated account for message URL shortening."}},"/mobile_network_operators":{"get":{"summary":"List mobile network operators","description":"Telnyx has a set of GSM mobile operators partners that are available through our mobile network roaming. This resource is entirely managed by Telnyx and may change over time. That means that this resource won't allow any write operations for it. Still, it's available so it can be used as a support resource that can be related to other resources or become a configuration option.","operationId":"GetMobileNetworkOperators","tags":["Mobile Network Operators"],"parameters":[{"$ref":"#/components/parameters/FilterMobileNetworkOperatorsConsolidated"},{"$ref":"#/components/parameters/wireless_PageConsolidated_c5290d5308"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MobileNetworkOperator"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/mobile_phone_numbers/messaging":{"get":{"summary":"List mobile phone numbers with messaging settings","operationId":"ListMobilePhoneNumbersWithMessagingSettings","tags":["Mobile Number Settings"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of mobile phone numbers with messaging settings.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Settings Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MobilePhoneNumberWithMessagingSettings"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns mobile phone numbers with their current messaging configuration."}},"/mobile_phone_numbers/{id}/messaging":{"get":{"summary":"Retrieve a mobile phone number with messaging settings","operationId":"GetMobilePhoneNumberMessagingSettings","tags":["Mobile Number Settings"],"parameters":[{"name":"id","in":"path","description":"Identifies the type of resource.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a mobile phone number.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Mobile Messaging Settings Response","properties":{"data":{"$ref":"#/components/schemas/MobilePhoneNumberWithMessagingSettings"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the messaging configuration for the specified mobile phone number."}},"/mobile_push_credentials":{"get":{"tags":["Push Credentials"],"summary":"List mobile push credentials","description":"Returns a paginated list of the mobile push credentials on your account, with support for filtering.","operationId":"ListPushCredentials","parameters":[{"$ref":"#/components/parameters/push-notifications_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[type], filter[alias]","schema":{"type":"object","properties":{"type":{"type":"string","enum":["ios","android"],"example":"ios","description":"type of mobile push credentials"},"alias":{"type":"string","example":"LucyCredential","description":"Unique mobile push credential alias"}}}}],"responses":{"200":{"description":"Mobile mobile push credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPushCredentialsResponse"}}}},"401":{"description":"Unauthorized request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}}},"post":{"tags":["Push Credentials"],"summary":"Creates a new mobile push credential","description":"Creates a new mobile push credential for delivering push notifications to iOS or Android apps, and returns the created credential.","operationId":"CreatePushCredential","parameters":[],"requestBody":{"description":"Mobile push credential parameters that need to be sent in the request","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CreateIosPushCredentialRequest"},{"$ref":"#/components/schemas/CreateAndroidPushCredentialRequest"}]}}},"required":true},"responses":{"200":{"description":"Mobile push credential created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushCredentialResponse"}}}},"401":{"description":"Unauthorized request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Unable to process request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}}}},"/mobile_push_credentials/{push_credential_id}":{"delete":{"tags":["Push Credentials"],"summary":"Deletes a mobile push credential","description":"Deletes a mobile push credential based on the given `push_credential_id`","operationId":"DeletePushCredentialById","parameters":[{"name":"push_credential_id","in":"path","description":"The unique identifier of a mobile push credential","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b76-4df3-4bca-a05a-3da1ecc389f0"}}],"responses":{"204":{"description":"The mobile push credential was deleted successfully"},"401":{"description":"Unauthorized request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Unable to process request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}}},"get":{"tags":["Push Credentials"],"summary":"Retrieves a mobile push credential","description":"Retrieves mobile push credential based on the given `push_credential_id`","operationId":"GetPushCredentialById","parameters":[{"name":"push_credential_id","in":"path","description":"The unique identifier of a mobile push credential","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b76-4df3-4bca-a05a-3da1ecc389f0"}}],"responses":{"200":{"description":"Successful get mobile push credential response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushCredentialResponse"}}}},"401":{"description":"Unauthorized request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Unable to process request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}}}},"/network_coverage":{"get":{"summary":"List network coverage locations","description":"List all locations and the interfaces that region supports","operationId":"ListNetworkCoverage","tags":["Coverage"],"parameters":[{"name":"filters","in":"query","style":"deepObject","explode":true,"description":"Consolidated filters parameter (deepObject style). Originally: filters[available_services][contains]","schema":{"type":"object","properties":{"available_services":{"oneOf":[{"$ref":"#/components/schemas/AvailableService","description":"Filter by exact available service match"},{"type":"object","properties":{"contains":{"$ref":"#/components/schemas/AvailableService","description":"Filter by available services containing the specified service"}},"additionalProperties":false,"description":"Available service filtering operations"}]}},"additionalProperties":false}},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[location.region], filter[location.site], filter[location.pop], filter[location.code]","schema":{"type":"object","properties":{"location.region":{"type":"string","example":"AMER","description":"The region of associated location to filter on."},"location.site":{"type":"string","example":"SJC","description":"The site of associated location to filter on."},"location.pop":{"type":"string","example":"SV1","description":"The POP of associated location to filter on."},"location.code":{"type":"string","example":"silicon_valley-ca","description":"The code of associated location to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NetworkCoverage"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/networks":{"get":{"summary":"List all Networks","description":"Returns a paginated list of the private networks on your account, with support for filtering.","operationId":"ListNetworks","tags":["Networks"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[name]","schema":{"type":"object","properties":{"name":{"type":"string","example":"test network","description":"The network name to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Network"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a Network","description":"Creates a new private network, the container that links your WireGuard interfaces, gateways, and cross connects.","operationId":"CreateNetwork","tags":["Networks"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkCreate"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Network"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/networks/{id}":{"delete":{"summary":"Delete a Network","description":"Permanently deletes the specified network from your account.","operationId":"DeleteNetwork","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Network"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"get":{"summary":"Retrieve a Network","description":"Returns the details of a single network by its identifier.","operationId":"GetNetwork","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Network"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"patch":{"summary":"Update a Network","description":"Updates the specified network's attributes and returns the updated network.","operationId":"UpdateNetwork","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkCreate"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Network"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/networks/{id}/default_gateway":{"delete":{"summary":"Delete Default Gateway.","description":"Removes the default gateway from the specified network.","operationId":"DeleteDefaultGateway","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DefaultGateway"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"get":{"summary":"Get Default Gateway status.","description":"Returns the status of the default gateway configured on the specified network.","operationId":"GetDefaultGateway","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DefaultGateway"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create Default Gateway.","description":"Creates a default gateway on the specified network, directing the network's outbound traffic through the chosen gateway.","operationId":"CreateDefaultGateway","tags":["Networks"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultGateway"}}},"required":true},"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DefaultGateway"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/networks/{id}/network_interfaces":{"get":{"summary":"List all Interfaces for a Network.","description":"Returns a paginated list of the interfaces attached to the specified network, with support for filtering.","operationId":"ListNetworkInterfaces","tags":["Networks"],"parameters":[{"$ref":"#/components/parameters/ResourceId"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status]","schema":{"type":"object","properties":{"name":{"type":"string","example":"test interface","description":"The interface name to filter on."},"type":{"type":"string","example":"wireguard_interface","description":"The interface type to filter on."},"status":{"$ref":"#/components/schemas/InterfaceStatus","description":"The interface status to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NetworkInterface"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/noise_suppression_engines":{"get":{"summary":"List available noise suppression engines","description":"Returns all noise suppression engines available to the authenticated user. Engines gated behind a feature flag are included only when the flag is enabled for the user's account. Results are not paginated; the number of engines is expected to remain small.","operationId":"listNoiseSuppressionEngines","tags":["Noise Suppression Engines"],"x-endpoint-cost":"light","x-latency-category":"responsive","responses":{"200":{"description":"A list of noise suppression engines available to the authenticated user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoiseSuppressionEnginesListResponse"},"example":{"data":[{"value":"denoiser","label":"Denoiser","default_attenuation_level":0},{"value":"deep_filter_net","label":"DeepFilterNet","default_attenuation_level":80}]}}}},"401":{"description":"Unauthorized — the request did not carry valid Telnyx API credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}}}}},"/notification_channels":{"get":{"description":"Returns a paginated list of your notification channels, the destinations that receive notifications.","summary":"List notification channels","operationId":"ListNotificationChannels","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"$ref":"#/components/parameters/notifications_FilterConsolidated"}],"responses":{"200":{"description":"Returns a list of notification channels.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationChannel"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"post":{"description":"Creates a new notification channel defining where notifications are delivered, and returns the created channel.","summary":"Create a notification channel","operationId":"CreateNotificationChannels","tags":["Notifications"],"requestBody":{"description":"Add a Notification Channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannel"}}}},"responses":{"200":{"description":"A Notification Channel response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationChannel"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_channels/{id}":{"delete":{"description":"Deletes the specified notification channel so notifications are no longer delivered to it.","summary":"Delete a notification channel","operationId":"DeleteNotificationChannel","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Channel response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationChannel"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"get":{"description":"Returns the details of a single notification channel by its identifier.","summary":"Get a notification channel","operationId":"GetNotificationChannel","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Channel response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationChannel"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"404":{"$ref":"#/components/responses/notifications_NotFoundResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"patch":{"description":"Updates the specified notification channel and returns the updated channel.","summary":"Update a notification channel","operationId":"UpdateNotificationChannel","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"requestBody":{"description":"Update notification channel object","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannel"}}}},"responses":{"200":{"description":"A Notification Channel response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationChannel"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_event_conditions":{"get":{"description":"Returns a list of your notifications events conditions.","summary":"List all Notifications Events Conditions","operationId":"FindNotificationsEventsConditions","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"$ref":"#/components/parameters/notifications_FilterConsolidated"}],"responses":{"200":{"description":"Returns a list of notification event conditions available.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationEventCondition"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_events":{"get":{"description":"Returns a list of your notifications events.","summary":"List all Notifications Events","operationId":"FindNotificationsEvents","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Returns a list of notification events available.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationEvent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_profiles":{"get":{"description":"Returns a list of your notifications profiles.","summary":"List all Notifications Profiles","operationId":"FindNotificationsProfiles","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Returns a list of notification profiles.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationProfile"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"post":{"description":"Creates a new notification profile, a named grouping used to organize notification settings, and returns it.","summary":"Create a notification profile","operationId":"CreateNotificationProfile","tags":["Notifications"],"requestBody":{"description":"Add a Notification Profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationProfile"}}}},"responses":{"200":{"description":"A Notification Profile response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationProfile"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_profiles/{id}":{"delete":{"description":"Deletes the specified notification profile from your account.","summary":"Delete a notification profile","operationId":"DeleteNotificationProfile","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Profile response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationProfile"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"get":{"description":"Returns the details of a single notification profile by its identifier.","operationId":"GetNotificationProfile","summary":"Get a notification profile","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Profile response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationProfile"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"404":{"$ref":"#/components/responses/notifications_NotFoundResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"patch":{"description":"Updates the specified notification profile and returns the updated profile.","operationId":"UpdateNotificationProfile","summary":"Update a notification profile","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"requestBody":{"description":"Update notification profile object","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationProfile"}}}},"responses":{"200":{"description":"A Notification Profile response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationProfile"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_settings":{"get":{"description":"Returns a paginated list of your notification settings, which map notification event types to profiles and channels.","summary":"List notification settings","operationId":"ListNotificationSettings","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"$ref":"#/components/parameters/notifications_FilterConsolidated"}],"responses":{"200":{"description":"Returns a list of notification settings.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NotificationSetting"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"post":{"description":"Adds a notification setting that enables delivery of a notification event type to a notification profile.","summary":"Add a Notification Setting","operationId":"CreateNotificationSetting","tags":["Notifications"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSetting"}}}},"responses":{"200":{"description":"A Notification Setting response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationSetting"}}}}}},"201":{"description":"A Notification Setting response - async","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationSetting"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/notification_settings/{id}":{"delete":{"description":"Deletes the specified notification setting, disabling that notification delivery.","summary":"Delete a notification setting","operationId":"DeleteNotificationSetting","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Setting response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationSetting"}}}}}},"201":{"description":"A Notification Setting response - async","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationSetting"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}},"get":{"description":"Returns the details of a single notification setting by its identifier.","summary":"Get a notification setting","operationId":"GetNotificationSetting","tags":["Notifications"],"parameters":[{"$ref":"#/components/parameters/notifications_Id"}],"responses":{"200":{"description":"A Notification Setting response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationSetting"}}}}}},"400":{"$ref":"#/components/responses/notifications_BadRequestResponse"},"404":{"$ref":"#/components/responses/notifications_NotFoundResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"500":{"$ref":"#/components/responses/notifications_GenericErrorResponse"}}}},"/number_block_orders":{"get":{"summary":"List number block orders","description":"Get a paginated list of number block orders.","operationId":"ListNumberBlockOrders","tags":["Phone Number Block Orders"],"parameters":[{"$ref":"#/components/parameters/numbers_PageConsolidated_73c9788e53"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.starting_number]","schema":{"type":"object","properties":{"status":{"type":"string","example":"pending","description":"Filter number block orders by status."},"created_at":{"type":"object","description":"Filter number block orders by date range.","properties":{"gt":{"type":"string","example":"2018-01-01T00:00:00.000000Z","description":"Filter number block orders later than this value."},"lt":{"type":"string","example":"2018-01-01T00:00:00.000000Z","description":"Filter number block orders earlier than this value."}},"additionalProperties":false},"phone_numbers.starting_number":{"type":"string","example":"+19705555000","description":"Filter number block  orders having these phone numbers."}}}}],"responses":{"200":{"description":"Successful response with a list of number block orders.","content":{"application/json":{"schema":{"type":"object","title":"List Number Block Orders Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NumberBlockOrder"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a number block order","description":"Creates an order for a block of consecutive phone numbers and returns the created order. Track fulfillment through the order's status.","operationId":"CreateNumberBlockOrder","tags":["Phone Number Block Orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNumberBlockOrderRequest"}}}},"responses":{"200":{"description":"Successful response with details about a number block order.","content":{"application/json":{"schema":{"type":"object","title":"Number Block Order Response","properties":{"data":{"$ref":"#/components/schemas/NumberBlockOrder"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_block_orders/{number_block_order_id}":{"get":{"summary":"Retrieve a number block order","description":"Get an existing phone number block order.","operationId":"RetrieveNumberBlockOrder","tags":["Phone Number Block Orders"],"parameters":[{"name":"number_block_order_id","in":"path","description":"The number block order ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a number block order.","content":{"application/json":{"schema":{"type":"object","title":"Number Block Order Response","properties":{"data":{"$ref":"#/components/schemas/NumberBlockOrder"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_lookup/{phone_number}":{"get":{"summary":"Lookup phone number data","description":"Returns information about the provided phone number.","operationId":"LookupNumber","tags":["Number Lookup"],"parameters":[{"$ref":"#/components/parameters/PhoneNumber"},{"$ref":"#/components/parameters/NumberLookupType"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Number Lookup Response","properties":{"data":{"$ref":"#/components/schemas/NumberLookupRecord"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/number-lookup_GenericErrorResponse"}}}},"/number_order_phone_numbers":{"get":{"summary":"Retrieve a list of phone numbers associated to orders","description":"Get a list of phone numbers associated to orders.","operationId":"RetrieveOrderPhoneNumbers","tags":["Phone Number Orders"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[country_code]","schema":{"type":"object","properties":{"country_code":{"type":"string","example":"US","description":"Country code of the order phone number."}}}}],"responses":{"200":{"description":"Successful response with a list of number order phone numbers.","content":{"application/json":{"schema":{"type":"object","title":"List Number Order Phone Numbers Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NumberOrderPhoneNumber"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_order_phone_numbers/{id}/requirement_group":{"post":{"summary":"Update requirement group for a phone number order","operationId":"updateNumberOrderPhoneNumberRequirementGroup","tags":["Requirement Groups"],"parameters":[{"name":"id","in":"path","required":true,"description":"The unique identifier of the number order phone number","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["requirement_group_id"],"properties":{"requirement_group_id":{"type":"string","format":"uuid","description":"The ID of the requirement group to associate"}}},"example":{"requirement_group_id":"a4b201f9-8646-4e54-a7d2-b2e403eeaf8c"}}}},"responses":{"200":{"description":"Successful response with updated phone number order details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NumberOrderPhoneNumberRequirementGroupResponse"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Associates an existing requirement group with a phone number in a number order. The response contains the updated number-order phone-number details."}},"/number_order_phone_numbers/{number_order_phone_number_id}":{"get":{"summary":"Retrieve a single phone number within a number order.","description":"Get an existing phone number in number order.","operationId":"GetNumberOrderPhoneNumber","tags":["Phone Number Orders"],"parameters":[{"name":"number_order_phone_number_id","in":"path","description":"The number order phone number ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a number order phone number.","content":{"application/json":{"schema":{"type":"object","title":"Number Order Phone Number Response","properties":{"data":{"$ref":"#/components/schemas/NumberOrderPhoneNumber"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"patch":{"summary":"Update requirements for a single phone number within a number order.","description":"Updates requirements for a single phone number within a number order.","operationId":"UpdateNumberOrderPhoneNumber","tags":["Phone Number Orders"],"parameters":[{"name":"number_order_phone_number_id","in":"path","description":"The number order phone number ID.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNumberOrderPhoneNumberRequest"}}}},"responses":{"200":{"description":"Successful response with details about a number order phone number.","content":{"application/json":{"schema":{"type":"object","title":"Number Order Phone Number Response","properties":{"data":{"$ref":"#/components/schemas/NumberOrderPhoneNumber"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_orders":{"get":{"summary":"List number orders","description":"Returns a paginated list of your phone number orders, with support for filtering.","operationId":"ListNumberOrders","tags":["Phone Number Orders"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/numbers_PageConsolidated_73c9788e53"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers_count], filter[customer_reference], filter[requirements_met]","schema":{"type":"object","properties":{"status":{"type":"string","description":"Filter number orders by status."},"created_at":{"type":"object","description":"Filter number orders by date range.","properties":{"gt":{"type":"string","description":"Filter number orders later than this value."},"lt":{"type":"string","description":"Filter number orders earlier than this value."}},"additionalProperties":false},"phone_numbers_count":{"type":"string","description":"Filter number order with this amount of numbers"},"customer_reference":{"type":"string","description":"Filter number orders via the customer reference set."},"requirements_met":{"type":"boolean","description":"Filter number orders by requirements met."}}}}],"responses":{"200":{"description":"Successful response with a list of number orders.","content":{"application/json":{"schema":{"type":"object","title":"List Number Orders Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NumberOrder"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a number order","description":"Creates an order to purchase the specified phone numbers and returns the created order. Track fulfillment through the order's status.","operationId":"CreateNumberOrder","tags":["Phone Number Orders"],"x-endpoint-cost":"heavy","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNumberOrderRequest"}}}},"responses":{"200":{"description":"Successful response with details about a number order.","content":{"application/json":{"schema":{"type":"object","title":"Number Order Response","properties":{"data":{"$ref":"#/components/schemas/NumberOrderWithPhoneNumbers"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_orders/{number_order_id}":{"get":{"summary":"Retrieve a number order","description":"Returns the details of an existing phone number order, including its status and the numbers included.","operationId":"RetrieveNumberOrder","tags":["Phone Number Orders"],"parameters":[{"name":"number_order_id","in":"path","description":"The number order ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a number order.","content":{"application/json":{"schema":{"type":"object","title":"Number Order Response","properties":{"data":{"$ref":"#/components/schemas/NumberOrderWithPhoneNumbers"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"patch":{"summary":"Update a number order","description":"Updates an existing phone number order, for example to satisfy regulatory requirements attached to the order, and returns the updated order.","operationId":"UpdateNumberOrder","tags":["Phone Number Orders"],"parameters":[{"name":"number_order_id","in":"path","description":"The number order ID.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNumberOrderRequest"}}}},"responses":{"200":{"description":"Successful response with details about a number order.","content":{"application/json":{"schema":{"type":"object","title":"Number Order Response","properties":{"data":{"$ref":"#/components/schemas/NumberOrderWithPhoneNumbers"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_reservations":{"get":{"summary":"List number reservations","description":"Gets a paginated list of phone number reservations.","operationId":"ListNumberReservations","tags":["Phone Number Reservations"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/numbers_PageConsolidated_73c9788e53"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.phone_number], filter[customer_reference]","schema":{"type":"object","properties":{"status":{"type":"string","description":"Filter number reservations by status."},"created_at":{"type":"object","description":"Filter number reservations by date range.","properties":{"gt":{"type":"string","description":"Filter number reservations later than this value."},"lt":{"type":"string","description":"Filter number reservations earlier than this value."}},"additionalProperties":false},"phone_numbers.phone_number":{"type":"string","description":"Filter number reservations having these phone numbers."},"customer_reference":{"type":"string","description":"Filter number reservations via the customer reference set."}}}}],"responses":{"200":{"description":"Successful response with a list of number reservations.","content":{"application/json":{"schema":{"type":"object","title":"List Number Reservations Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NumberReservation"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a number reservation","description":"Creates a Phone Number Reservation for multiple numbers.","operationId":"CreateNumberReservation","tags":["Phone Number Reservations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNumberReservationRequest"}}}},"responses":{"200":{"description":"Successful response with details about a number reservation.","content":{"application/json":{"schema":{"type":"object","title":"Number Reservation Response","properties":{"data":{"$ref":"#/components/schemas/NumberReservation"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_reservations/{number_reservation_id}":{"get":{"summary":"Retrieve a number reservation","description":"Returns the details of a single phone number reservation, including its status and the reserved numbers.","operationId":"RetrieveNumberReservation","tags":["Phone Number Reservations"],"parameters":[{"name":"number_reservation_id","in":"path","description":"The number reservation ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a number reservation.","content":{"application/json":{"schema":{"type":"object","title":"Number Reservation Response","properties":{"data":{"$ref":"#/components/schemas/NumberReservation"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/number_reservations/{number_reservation_id}/actions/extend":{"post":{"summary":"Extend a number reservation","description":"Extends reservation expiry time on all phone numbers.","operationId":"ExtendNumberReservationExpiryTime","tags":["Phone Number Reservations"],"parameters":[{"name":"number_reservation_id","in":"path","description":"The number reservation ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a number reservation.","content":{"application/json":{"schema":{"type":"object","title":"Number Reservation Response","properties":{"data":{"$ref":"#/components/schemas/NumberReservation"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/numbers_features":{"post":{"summary":"Retrieve the features for a list of numbers","description":"Retrieve the features for a list of numbers","operationId":"PostNumbersFeatures","tags":["numbers features"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone_numbers":{"type":"array","items":{"type":"string"}}},"required":["phone_numbers"]},"example":{"phone_numbers":["+19705555098"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string"},"features":{"type":"array","items":{"type":"string"}}},"required":["phone_number","features"]}}}},"example":{"data":[{"phone_number":"string","features":["string"]}]}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/oauth/authorize":{"get":{"operationId":"AuthorizeOAuth","tags":["OAuth Protocol"],"summary":"OAuth authorization endpoint","description":"OAuth 2.0 authorization endpoint for the authorization code flow","security":[],"parameters":[{"name":"response_type","in":"query","required":true,"schema":{"type":"string","enum":["code"]},"description":"OAuth response type"},{"name":"client_id","in":"query","required":true,"schema":{"type":"string"},"description":"OAuth client identifier"},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"Redirect URI"},{"name":"scope","in":"query","schema":{"type":"string"},"description":"Space-separated list of requested scopes","example":"admin"},{"name":"state","in":"query","schema":{"type":"string"},"description":"State parameter for CSRF protection"},{"name":"code_challenge","in":"query","schema":{"type":"string"},"description":"PKCE code challenge"},{"name":"code_challenge_method","in":"query","schema":{"type":"string","enum":["plain","S256"]},"description":"PKCE code challenge method"}],"responses":{"200":{"description":"Consent page displayed (when consent UI is embedded)","content":{"text/html":{"schema":{"type":"string"},"example":"<!DOCTYPE html><html><head><title>Authorize application</title></head><body><h1>Authorize My App</h1><p>My App is requesting access to your Telnyx account.</p><button>Allow</button> <button>Deny</button></body></html>"}}},"302":{"description":"Redirect to consent page or client with authorization code/error"},"400":{"description":"Invalid request","content":{"text/html":{"schema":{"type":"string"},"example":"<html><body>Authorization consent page</body></html>"}}},"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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","tags":["OAuth Grants"],"summary":"Get OAuth grant","description":"Returns the details of a single OAuth grant on your account by its ID.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"OAuth grant ID"}],"responses":{"200":{"description":"OAuth grant details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OAuthGrant"}}},"example":{"data":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","record_type":"oauth_grant","client_id":"string","scopes":["string"],"created_at":"2024-01-23T18:10:02.574Z"}}}}},"404":{"description":"OAuth grant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/oauth_oauth_Error"}}}}}}},"/operator_connect/actions/refresh":{"post":{"summary":"Refresh Operator Connect integration","description":"This endpoint will make an asynchronous request to refresh the Operator Connect integration with Microsoft Teams for the current user. This will create new external connections on the user's account if needed, and/or report the integration results as [log messages](https://developers.telnyx.com/api-reference/external-connections/list-all-log-messages#list-all-log-messages).","operationId":"OperatorConnectRefresh","tags":["External Connections"],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Operator Connect Refresh Response","properties":{"success":{"type":"boolean","description":"Describes wether or not the operation was successful","example":true},"message":{"type":"string","description":"A message describing the result of the operation","example":"Operator connect refresh already in progress"}}}}}},"202":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Operator Connect Refresh Response","properties":{"success":{"type":"boolean","description":"Describes wether or not the operation was successful","example":true},"message":{"type":"string","description":"A message describing the result of the operation","example":"Operator connect refresh started"}}}}}},"401":{"description":"Unauthorized"}}}},"/organizations/users":{"get":{"description":"Returns a list of the users in your organization.","summary":"List organization users","operationId":"ListOrganizationUsers","tags":["Organization Users"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/users_PageNumber"},{"$ref":"#/components/parameters/users_PageSize"},{"$ref":"#/components/parameters/FilterOrganizationUserStatus"},{"$ref":"#/components/parameters/FilterOrganizationUserEmail"},{"$ref":"#/components/parameters/IncludeGroups"}],"responses":{"200":{"description":"Successful response with a list of organization users.","content":{"application/json":{"schema":{"type":"object","title":"List Organization Users Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUser"}},"meta":{"$ref":"#/components/schemas/users_PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/users_BadRequestResponse"},"401":{"$ref":"#/components/responses/UnauthenticatedResponse"},"403":{"$ref":"#/components/responses/users_UnauthorizedResponse"}}}},"/organizations/users/users_groups_report":{"get":{"description":"Returns a report of all users in your organization with their group memberships. This endpoint returns all users without pagination and always includes group information. The report can be retrieved in JSON or CSV format by sending specific content-type headers.","summary":"Get organization users groups report","operationId":"GetOrganizationUsersGroupsReport","tags":["Organization Users"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"name":"Accept","in":"header","description":"Specify the response format. Use 'application/json' for JSON format or 'text/csv' for CSV format.","required":false,"schema":{"type":"string","enum":["application/json","text/csv"],"default":"application/json"}}],"responses":{"200":{"description":"Successful response with a list of organization users and their group memberships.","content":{"application/json":{"schema":{"type":"object","title":"Users Groups Report Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationUserWithGroups"}}}},"example":{"data":[{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"organization_sub_user","email":"user@example.com","user_status":"enabled","organization_user_bypasses_sso":false,"created_at":"2018-02-02T22:25:27.521Z","last_sign_in_at":"2018-02-02T22:25:27.521Z","groups":[{"id":"7b09cdc3-8948-47f0-aa62-74ac943d6c59","name":"Engineering"},{"id":"8c09cdc3-8948-47f0-aa62-74ac943d6c60","name":"Sales"}]},{"id":"9d09cdc3-8948-47f0-aa62-74ac943d6c61","record_type":"organization_owner","email":"owner@example.com","user_status":"enabled","organization_user_bypasses_sso":false,"created_at":"2018-01-01T00:00:00.000Z","last_sign_in_at":"2018-02-02T22:25:27.521Z","groups":[]}]}},"text/csv":{"schema":{"type":"string","description":"CSV formatted report of users and their groups. Columns: id, email, user_status, created_at, last_sign_in_at, groups (comma-separated list of group names)."},"example":"id,email,user_status,created_at,last_sign_in_at,groups\n6a09cdc3-8948-47f0-aa62-74ac943d6c58,user@example.com,enabled,2018-02-02T22:25:27.521Z,2018-02-02T22:25:27.521Z,\"Engineering, Sales\""}}},"401":{"$ref":"#/components/responses/UnauthenticatedResponse"},"403":{"$ref":"#/components/responses/users_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/users_NotFoundResponse"}}}},"/organizations/users/{id}":{"get":{"description":"Returns the details of a user in your organization, optionally including the groups the user belongs to.","summary":"Get organization user","operationId":"GetOrganizationUser","tags":["Organization Users"],"parameters":[{"name":"id","in":"path","description":"Organization User ID","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/IncludeGroups"}],"x-group-parameters":"true","x-endpoint-cost":"medium","responses":{"200":{"description":"Successful response with details about an Organization User.","content":{"application/json":{"schema":{"type":"object","title":"Organization User Response","properties":{"data":{"$ref":"#/components/schemas/OrganizationUser"}}}}}},"400":{"$ref":"#/components/responses/users_BadRequestResponse"},"401":{"$ref":"#/components/responses/UnauthenticatedResponse"},"403":{"$ref":"#/components/responses/users_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/users_NotFoundResponse"}}}},"/organizations/users/{id}/actions/remove":{"post":{"description":"Removes the specified user from your organization and returns the result of the removal.","summary":"Delete organization user","operationId":"DeleteOrganizationUser","tags":["Organization Users"],"parameters":[{"name":"id","in":"path","description":"Organization User ID","required":true,"schema":{"type":"string"}}],"x-group-parameters":"true","x-endpoint-cost":"medium","responses":{"200":{"description":"Successful response with details about an Organization User.","content":{"application/json":{"schema":{"type":"object","title":"Organization User Response","properties":{"data":{"$ref":"#/components/schemas/OrganizationUser"}}}}}},"400":{"$ref":"#/components/responses/users_BadRequestResponse"},"401":{"$ref":"#/components/responses/UnauthenticatedResponse"},"403":{"$ref":"#/components/responses/users_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/users_NotFoundResponse"}}}},"/ota_updates":{"get":{"summary":"List OTA updates","operationId":"ListOtaUpdates","tags":["OTA updates"],"parameters":[{"$ref":"#/components/parameters/FilterOTAUpdatesConsolidated"},{"$ref":"#/components/parameters/wireless_PageConsolidated_c5290d5308"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SimplifiedOTAUpdate"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"description":"Retrieve a paginated list of over-the-air (OTA) update operations for your SIM cards."}},"/ota_updates/{id}":{"get":{"summary":"Get OTA update","description":"This API returns the details of an Over the Air (OTA) update.","operationId":"GetOtaUpdate","tags":["OTA updates"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CompleteOTAUpdate"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/outbound_voice_profiles":{"get":{"description":"Get all outbound voice profiles belonging to the user that match the given filters.","summary":"Get all outbound voice profiles","operationId":"ListOutboundVoiceProfiles","tags":["Outbound Voice Profiles"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/outbound-voice-profiles_PageConsolidated"},{"$ref":"#/components/parameters/outbound-voice-profiles_FilterConsolidated"},{"$ref":"#/components/parameters/SortOutboundVoiceProfile"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"List Outbound Voice Profiles Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OutboundVoiceProfile"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Bad request"}}},"post":{"description":"Creates a new outbound voice profile defining calling permissions, destinations, and limits for outbound calls, and returns the created profile.","summary":"Create an outbound voice profile","operationId":"CreateVoiceProfile","tags":["Outbound Voice Profiles"],"requestBody":{"description":"Parameters that can be defined when creating an outbound voice profile","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOutboundVoiceProfileRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Outbound Voice Profile Response","properties":{"data":{"$ref":"#/components/schemas/OutboundVoiceProfile"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}}},"/outbound_voice_profiles/{id}":{"delete":{"description":"Deletes an existing outbound voice profile.","summary":"Delete an outbound voice profile","operationId":"DeleteOutboundVoiceProfile","tags":["Outbound Voice Profiles"],"parameters":[{"$ref":"#/components/parameters/id"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Outbound Voice Profile Response","properties":{"data":{"$ref":"#/components/schemas/OutboundVoiceProfile"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}},"get":{"description":"Retrieves the details of an existing outbound voice profile.","summary":"Retrieve an outbound voice profile","operationId":"GetOutboundVoiceProfile","tags":["Outbound Voice Profiles"],"parameters":[{"$ref":"#/components/parameters/id"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Outbound Voice Profile Response","properties":{"data":{"$ref":"#/components/schemas/OutboundVoiceProfile"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}},"patch":{"description":"Updates an existing outbound voice profile.","summary":"Updates an existing outbound voice profile.","operationId":"UpdateOutboundVoiceProfile","tags":["Outbound Voice Profiles"],"requestBody":{"description":"Parameters that can be updated on an outbound voice profile","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOutboundVoiceProfileRequest"}}}},"parameters":[{"$ref":"#/components/parameters/id"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","title":"Outbound Voice Profile Response","properties":{"data":{"$ref":"#/components/schemas/OutboundVoiceProfile"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"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."}]}}}},"422":{"description":"Bad request"}}}},"/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."}}}}],"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][]","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."},"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/PhoneNumbersJob"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"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"}}]}}}}}},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns background jobs that operate on phone numbers. Filter by job type, target phone numbers, or job status, 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/PhoneNumbersJob"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"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"}}}}},"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/PhoneNumbersJob"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"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"}}]}}}}}},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/phone_numbers/jobs/update_phone_numbers":{"post":{"x-latency-category":"background","summary":"Update a batch of numbers","description":"Creates a new background job to update a batch of numbers. At most one thousand numbers can be updated per API call. At least one of the updateable fields must be submitted. IMPORTANT: You must either specify filters (using the filter parameters) or specific phone numbers (using the phone_numbers parameter in the request body). If you specify filters, ALL phone numbers that match the given filters (up to 1000 at a time) will be updated. If you want to update only specific numbers, you must use the phone_numbers parameter in the request body. When using the phone_numbers parameter, ensure you follow the correct format as shown in the example (either phone number IDs or phone numbers in E164 format).","operationId":"CreateUpdatePhoneNumbersJob","tags":["Bulk Phone Number Operations"],"x-group-parameters":"true","parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[has_bundle], filter[tag], filter[connection_id], filter[phone_number], filter[status], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference]","schema":{"type":"object","properties":{"has_bundle":{"type":"string","description":"Filter by phone number that have bundles."},"tag":{"type":"string","description":"Filter by phone number tags."},"connection_id":{"type":"string","example":"1521916448077776306","description":"Filter by connection_id."},"phone_number":{"type":"string","description":"Filter by phone number. Requires at least three digits.\n             Non-numerical characters will result in no values being returned."},"status":{"type":"string","enum":["purchase-pending","purchase-failed","port-pending","active","deleted","port-failed","emergency-only","ported-out","port-out-pending"],"example":"active","description":"Filter by phone number status."},"voice.connection_name":{"type":"object","description":"Filter by voice connection name pattern matching.","properties":{"contains":{"type":"string","example":"test","description":"Filter contains connection name. Requires at least three characters."},"starts_with":{"type":"string","example":"test","description":"Filter starts with connection name. Requires at least three characters."},"ends_with":{"type":"string","example":"test","description":"Filter ends with connection name. Requires at least three characters."},"eq":{"type":"string","example":"test","description":"Filter by connection name."}},"additionalProperties":false},"voice.usage_payment_method":{"type":"string","enum":["pay-per-minute","channel"],"example":"channel","description":"Filter by usage_payment_method."},"billing_group_id":{"type":"string","example":"62e4bf2e-c278-4282-b524-488d9c9c43b2","description":"Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'."},"emergency_address_id":{"type":"string","example":"9102160989215728032","description":"Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'."},"customer_reference":{"type":"string","description":"Filter numbers via the customer_reference set."}}}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumbersJobUpdatePhoneNumbersRequest"}}}},"responses":{"202":{"description":"Update job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with the job id until it completes.","content":{"application/json":{"schema":{"type":"object","title":"Phone Numbers Job Update Phone Numbers","properties":{"data":{"$ref":"#/components/schemas/PhoneNumbersJob"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"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"}}}}},"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/PhoneNumbersJob"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"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"}}]}}}}}},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns the status and details of the phone-number background job identified by `id`."}},"/phone_numbers/messaging":{"get":{"summary":"List phone numbers with messaging settings","operationId":"ListPhoneNumbersWithMessagingSettings","tags":["Number Settings"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"name":"filter[messaging_profile_id]","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Filter by messaging profile ID."},{"name":"filter[phone_number]","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by exact phone number (supports comma-separated list)."},{"name":"filter[phone_number][contains]","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by phone number substring."},{"name":"filter[type]","in":"query","required":false,"schema":{"type":"string","enum":["tollfree","longcode","shortcode"]},"description":"Filter by phone number type."},{"name":"sort[phone_number]","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"]},"description":"Sort by phone number."}],"responses":{"200":{"description":"Successful response with a list of phone numbers with messaging settings.","content":{"application/json":{"schema":{"type":"object","title":"List Messaging Settings Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberWithMessagingSettings"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns phone numbers with their current messaging product and messaging-profile assignments."}},"/phone_numbers/regulatory_requirements":{"get":{"summary":"Retrieve regulatory requirements for a list of phone numbers","operationId":"ListRegulatoryRequirementsPhoneNumbers","tags":["Regulatory Requirements"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[phone_number]","schema":{"type":"object","properties":{"phone_number":{"type":"string","example":"+41215470622,+41215470633","description":"Record type phone number/ phone numbers"}}}}],"responses":{"200":{"description":"An array of Regulatory Requirements Responses","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegulatoryRequirementsPhoneNumbers"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity"},"500":{"$ref":"#/components/responses/numbers_GenericErrorResponse"}},"x-latency-category":"responsive","description":"Retrieve the regulatory requirements that apply to a list of phone numbers."}},"/phone_numbers/slim":{"get":{"summary":"Slim List phone numbers","description":"List phone numbers, This endpoint is a lighter version of the /phone_numbers endpoint having higher performance and rate limit.","operationId":"SlimListPhoneNumbers","tags":["Phone Number Configurations"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/numbers_PageConsolidated_73c9788e53"},{"name":"include_connection","in":"query","description":"Include the connection associated with the phone number.","required":false,"schema":{"type":"boolean","default":false}},{"name":"include_tags","in":"query","description":"Include the tags associated with the phone number.","required":false,"schema":{"type":"boolean","default":false}},{"name":"sort","in":"query","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order.","required":false,"schema":{"type":"string","enum":["purchased_at","phone_number","connection_name","usage_payment_method"],"example":"connection_name"}},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status], filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]","schema":{"type":"object","properties":{"tag":{"type":"string","description":"Filter by phone number tags. (This requires the include_tags param)"},"phone_number":{"type":"string","description":"Filter by phone number. Requires at least three digits.\n             Non-numerical characters will result in no values being returned."},"status":{"type":"string","enum":["purchase-pending","purchase-failed","port_pending","active","deleted","port-failed","emergency-only","ported-out","port-out-pending"],"example":"active","description":"Filter by phone number status."},"country_iso_alpha2":{"oneOf":[{"type":"string","example":"US"},{"type":"array","items":{"type":"string"},"example":["US","CA"]}],"description":"Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values."},"connection_id":{"type":"string","example":"1521916448077776306","description":"Filter by connection_id."},"voice.connection_name":{"type":"object","description":"Filter by voice connection name pattern matching (requires include_connection param).","properties":{"contains":{"type":"string","example":"test","description":"Filter contains connection name. Requires at least three characters and the include_connection param."},"starts_with":{"type":"string","example":"test","description":"Filter starts with connection name. Requires at least three characters and the include_connection param."},"ends_with":{"type":"string","example":"test","description":"Filter ends with connection name. Requires at least three characters and the include_connection param."},"eq":{"type":"string","example":"test","description":"Filter by connection name."}},"additionalProperties":false},"voice.usage_payment_method":{"type":"string","enum":["pay-per-minute","channel"],"example":"channel","description":"Filter by usage_payment_method."},"billing_group_id":{"type":"string","example":"62e4bf2e-c278-4282-b524-488d9c9c43b2","description":"Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that have no billing group associated them, set the value of this filter to the string 'null'."},"emergency_address_id":{"type":"string","example":"9102160989215728032","description":"Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers that have no emergency address associated with them, set the value of this filter to the string 'null'."},"customer_reference":{"type":"string","description":"Filter numbers via the customer_reference set."},"number_type":{"type":"object","description":"Filter phone numbers by phone number type.","properties":{"eq":{"type":"string","enum":["local","national","toll_free","mobile","shared_cost"],"description":"Filter phone numbers by phone number type."}},"additionalProperties":false},"source":{"type":"string","enum":["ported","purchased"],"description":"Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased' for numbers bought directly from Telnyx."}}}}],"responses":{"200":{"description":"Successful response with a list of phone numbers.","content":{"application/json":{"schema":{"type":"object","title":"List Phone Numbers Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/numbers_SlimPhoneNumberDetailed"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/phone_numbers/voice":{"get":{"summary":"List phone numbers with voice settings","operationId":"ListPhoneNumbersWithVoiceSettings","tags":["Phone Number Configurations"],"x-group-parameters":"true","x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/numbers_PageConsolidated_73c9788e53"},{"name":"sort","in":"query","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order.","required":false,"schema":{"type":"string","enum":["purchased_at","phone_number","connection_name","usage_payment_method"],"example":"connection_name"}},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[connection_name], filter[customer_reference], filter[voice.usage_payment_method]","schema":{"type":"object","properties":{"phone_number":{"type":"string","description":"Filter by phone number. Requires at least three digits.\n             Non-numerical characters will result in no values being returned."},"connection_name":{"type":"object","description":"Filter by connection name pattern matching.","properties":{"contains":{"type":"string","example":"test","description":"Filter contains connection name. Requires at least three characters."}},"additionalProperties":false},"customer_reference":{"type":"string","description":"Filter numbers via the customer_reference set."},"voice.usage_payment_method":{"type":"string","enum":["pay-per-minute","channel"],"example":"channel","description":"Filter by usage_payment_method."}}}}],"responses":{"200":{"description":"Successful response with a list of phone numbers with voice settings.","content":{"application/json":{"schema":{"type":"object","title":"List Phone Numbers With Voice Settings Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns account phone numbers together with their voice settings. Results support pagination, sorting, and filters for number, connection name, customer reference, and voice usage payment method."}},"/phone_numbers/{id}":{"delete":{"summary":"Delete a phone number","operationId":"DeletePhoneNumber","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"responses":{"200":{"description":"Successful response with details about a phone number.","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Response","properties":{"data":{"$ref":"#/components/schemas/numbers_PhoneNumberDeletedDetailed"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Deletes the specified phone number from the account. The response contains the phone number's final deleted representation."},"get":{"summary":"Retrieve a phone number","operationId":"RetrievePhoneNumber","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"responses":{"200":{"description":"Successful response with details about a phone number.","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Response","properties":{"data":{"$ref":"#/components/schemas/numbers_PhoneNumberDetailed"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns the detailed configuration and current state of the phone number identified by `id`."},"patch":{"summary":"Update a phone number","operationId":"UpdatePhoneNumber","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"requestBody":{"description":"Updated settings for the phone number.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhoneNumberRequest"}}}},"responses":{"200":{"description":"Successful response with details about a phone number.","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Response","properties":{"data":{"$ref":"#/components/schemas/numbers_PhoneNumberDetailed"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Updates the configurable settings of the specified phone number. The response contains the complete updated phone-number representation."}},"/phone_numbers/{id}/actions/bundle_status_change":{"patch":{"summary":"Change the bundle status for a phone number (set to being in a bundle or remove from a bundle)","operationId":"PhoneNumberBundleStatusChange","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumberBundleStatusChangeRequest"}}}},"responses":{"200":{"description":"Phone number bundle status change success","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Bundle Status Change","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Adds the specified phone number to a bundle or removes it from a bundle according to the requested status change. The response contains the phone number with its updated bundle state."}},"/phone_numbers/{id}/actions/enable_emergency":{"post":{"summary":"Enable emergency for a phone number","operationId":"EnablePhoneNumberEmergency","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumberEnableEmergencyRequest"}}}},"responses":{"200":{"description":"Phone number emergency enabled.","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Enable Emergency","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}}}}}},"202":{"description":"Phone number emergency requested.","content":{"application/json":{"schema":{"type":"object","title":"Phone Number Enable Emergency","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Associates emergency-service settings with the specified phone number. The operation returns the updated phone-number configuration when completed immediately or an accepted state when processing continues asynchronously."}},"/phone_numbers/{id}/messaging":{"get":{"summary":"Retrieve a phone number with messaging settings","operationId":"GetPhoneNumberMessagingSettings","tags":["Number Settings"],"parameters":[{"name":"id","in":"path","description":"Identifies the type of resource.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a phone number including messaging settings.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Settings Response","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithMessagingSettings"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the messaging product and messaging-profile assignment for the specified phone number."},"patch":{"summary":"Update the messaging profile and/or messaging product of a phone number","operationId":"UpdatePhoneNumberMessagingSettings","tags":["Number Settings"],"parameters":[{"name":"id","in":"path","description":"The phone number to update.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"The new configuration to set for this phone number.\n\nTo avoid modifying a value, either omit the field or set its value to `null`.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhoneNumberMessagingSettingsRequest"}}}},"responses":{"200":{"description":"Successful response with details about a phone number including messaging settings.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Messaging Settings Response","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithMessagingSettings"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Updates the messaging product, messaging profile, or both for the specified phone number."}},"/phone_numbers/{id}/voice":{"get":{"summary":"Retrieve a phone number with voice settings","operationId":"GetPhoneNumberVoiceSettings","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"responses":{"200":{"description":"Successful response with details about a phone number including voice settings.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Phone Number Voice Response","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns the specified phone number together with its current voice configuration."},"patch":{"summary":"Update a phone number with voice settings","operationId":"UpdatePhoneNumberVoiceSettings","tags":["Phone Number Configurations"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/IntId"}],"requestBody":{"description":"Updated voice settings for the phone number.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest"}}}},"responses":{"200":{"description":"Successful response with details about a phone number including voice settings.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Phone Number Voice Response","properties":{"data":{"$ref":"#/components/schemas/PhoneNumberWithVoiceSettings"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Updates the voice configuration for the specified phone number. The response contains the phone number with its updated voice settings."}},"/phone_numbers/{phone_number_id}/voicemail":{"get":{"description":"Returns the voicemail settings for a phone number","summary":"Get voicemail","operationId":"GetVoicemail","tags":["Voicemail"],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VoicemailPrefResponse"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}},"parameters":[{"name":"phone_number_id","in":"path","description":"The ID of the phone number.","example":"123455678900","required":true,"schema":{"type":"string"}}],"patch":{"description":"Update voicemail settings for a phone number. You can also configure a custom greeting by setting the `greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded through the Media Storage API, or `mode` `default` to use the standard system greeting.","summary":"Update voicemail","operationId":"UpdateVoicemail","tags":["Voicemail"],"requestBody":{"description":"Details to update","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VoicemailPrefResponse"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}},"post":{"description":"Create voicemail settings for a phone number. You can also configure a custom greeting by setting the `greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded through the Media Storage API, or `mode` `default` to use the standard system greeting.","summary":"Create voicemail","operationId":"CreateVoicemail","tags":["Voicemail"],"requestBody":{"description":"Details to create","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicemailRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VoicemailPrefResponse"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}}},"/phone_numbers_regulatory_requirements":{"get":{"summary":"Retrieve regulatory requirements for a list of phone numbers","operationId":"ListRegulatoryRequirementsPhoneNumbers_2","tags":["Regulatory Requirements"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[phone_number]","schema":{"type":"object","properties":{"phone_number":{"type":"string","example":"+41215470622,+41215470633","description":"Record type phone number/ phone numbers"}}}}],"responses":{"200":{"description":"An array of Regulatory Requirements Responses","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RegulatoryRequirementsPhoneNumbers"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Returns the regulatory requirements that apply to the supplied comma-separated phone numbers. The response includes the matching requirement records and pagination metadata."}},"/portability_checks":{"post":{"summary":"Run a portability check","tags":["Phone Number Porting"],"description":"Runs a portability check, returning the results immediately.","operationId":"PostPortabilityCheck","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone_numbers":{"type":"array","items":{"type":"string"},"description":"The list of +E.164 formatted phone numbers to check for portability","example":["+13035550000","+13035550001","+13035550002"]}}}}}},"responses":{"201":{"description":"PortabilityCheck Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortabilityCheckDetails"}}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting/events":{"get":{"summary":"List all porting events","tags":["Porting Orders"],"description":"Returns a paginated list of porting-related events on your account, such as status changes on porting orders. Supports filtering and is useful for auditing or reconciling webhook deliveries.","operationId":"listPortingEvents","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[type], filter[porting_order_id], filter[created_at][gte], filter[created_at][lte]","schema":{"type":"object","properties":{"type":{"type":"string","enum":["porting_order.deleted","porting_order.loa_updated","porting_order.messaging_changed","porting_order.status_changed","porting_order.sharing_token_expired","porting_order.new_comment","porting_order.split"],"example":"porting_order.deleted","description":"Filter by event type."},"porting_order_id":{"type":"string","format":"uuid","example":"34dc46a9-53ed-4e01-9454-26227ea13326","description":"Filter by porting order ID."},"created_at":{"type":"object","properties":{"gte":{"type":"string","format":"date-time","description":"Filter by created at greater than or equal to.","example":"2021-01-01T00:00:00Z"},"lte":{"type":"string","format":"date-time","description":"Filter by created at less than or equal to.","example":"2021-01-01T00:00:00Z"}},"description":"Created at date range filtering operations"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingEvent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"description":"Unprocessable entity. Check the 'detail' field in response for details."},"500":{"description":"Internal server error"}}}},"/porting/events/{id}":{"get":{"summary":"Show a porting event","tags":["Porting Orders"],"description":"Returns the details of a single porting event, including its type and payload.","operationId":"showPortingEvent","parameters":[{"name":"id","description":"Identifies the porting event.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingEvent"}}}}}},"404":{"description":"Not found"},"500":{"description":"Internal server error"}}}},"/porting/events/{id}/republish":{"post":{"summary":"Republish a porting event","tags":["Porting Orders"],"description":"Republishes the specified porting event, triggering re-delivery of the corresponding webhook to your account.","operationId":"republishPortingEvent","parameters":[{"name":"id","description":"Identifies the porting event.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"404":{"description":"Not found"},"500":{"description":"Internal server error"}}}},"/porting/loa_configurations":{"get":{"tags":["Porting Orders"],"summary":"List LOA configurations","description":"Returns a paginated list of your LOA (Letter of Authorization) configurations. LOA configurations customize the company details and branding used on generated LOA documents.","operationId":"ListLoaConfigurations","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingLOAConfiguration"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}},"post":{"tags":["Porting Orders"],"summary":"Create a LOA configuration","description":"Creates a new LOA configuration with your company details and branding for use when generating LOA documents for porting orders.","operationId":"CreateLoaConfiguration","requestBody":{"$ref":"#/components/requestBodies/CreatePortingLOAConfiguration"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingLOAConfiguration"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting/loa_configurations/preview":{"post":{"tags":["Porting Orders"],"summary":"Preview the LOA configuration parameters","description":"Preview the LOA template that would be generated without need to create LOA configuration.","operationId":"PreviewLoaConfigurationParams","requestBody":{"$ref":"#/components/requestBodies/CreatePortingLOAConfiguration"},"responses":{"200":{"description":"Successful response","content":{"application/pdf":{"schema":{"type":"string","format":"binary","example":"%PDF-1.4..."}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting/loa_configurations/{id}":{"delete":{"tags":["Porting Orders"],"summary":"Delete a LOA configuration","description":"Permanently deletes the specified LOA configuration so it can no longer be used when generating LOA documents.","operationId":"DeleteLoaConfiguration","parameters":[{"name":"id","description":"Identifies a LOA configuration.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"404":{"description":"Resource not found"},"500":{"description":"Internal server error"}}},"get":{"tags":["Porting Orders"],"summary":"Retrieve a LOA configuration","description":"Returns the details of a single LOA (Letter of Authorization) configuration by its identifier.","operationId":"GetLoaConfiguration","parameters":[{"name":"id","description":"Identifies a LOA configuration.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingLOAConfiguration"}}}}}},"404":{"description":"Resource not found"},"500":{"description":"Internal server error"}}},"patch":{"tags":["Porting Orders"],"summary":"Update a LOA configuration","description":"Updates the specified LOA configuration with the provided fields and returns the updated configuration.","operationId":"UpdateLoaConfiguration","parameters":[{"name":"id","description":"Identifies a LOA configuration.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"$ref":"#/components/requestBodies/CreatePortingLOAConfiguration"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingLOAConfiguration"}}}}}},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting/loa_configurations/{id}/preview":{"get":{"tags":["Porting Orders"],"summary":"Preview a LOA configuration","description":"Renders a preview of the LOA document produced by this configuration so you can verify company details and branding before using it on porting orders.","operationId":"PreviewLoaConfiguration","parameters":[{"name":"id","description":"Identifies a LOA configuration.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/pdf":{"schema":{"type":"string","format":"binary","example":"%PDF-1.4..."}}}},"404":{"description":"Resource not found"},"500":{"description":"Internal server error"}}}},"/porting/reports":{"get":{"tags":["Porting Orders"],"summary":"List porting related reports","description":"List the reports generated about porting operations.","operationId":"ListPortingReports","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]","schema":{"type":"object","properties":{"report_type":{"type":"string","enum":["export_porting_orders_csv"],"example":"export_porting_orders_csv","description":"Filter reports of a specific type"},"status":{"type":"string","enum":["pending","completed"],"example":"completed","description":"Filter reports of a specific status"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingReport"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}},"post":{"tags":["Porting Orders"],"summary":"Create a porting related report","description":"Generate reports about porting operations.","operationId":"CreatePortingReport","requestBody":{"$ref":"#/components/requestBodies/CreatePortingReport"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingReport"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting/reports/{id}":{"get":{"tags":["Porting Orders"],"summary":"Retrieve a report","description":"Returns the details of a previously requested porting report, including its status and parameters.","operationId":"GetPortingReport","parameters":[{"name":"id","description":"Identifies a report.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingReport"}}}}}},"404":{"description":"Resource not found"},"500":{"description":"Internal server error"}}}},"/porting/uk_carriers":{"get":{"summary":"List available carriers in the UK","tags":["Porting Orders"],"description":"Returns the list of UK carriers available for porting, for use when preparing porting orders for UK numbers.","operationId":"listPortingUKCarriers","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingUKCarrier"}}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting_orders":{"get":{"summary":"List all porting orders","tags":["Porting Orders"],"description":"Returns a paginated list of your porting orders. Supports filtering and sorting, and can optionally include the phone numbers attached to each order.","operationId":"ListPortingOrders","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"$ref":"#/components/parameters/QueryIncludePhoneNumbers"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[customer_reference], filter[customer_group_reference], filter[parent_support_key], filter[phone_numbers.country_code], filter[phone_numbers.carrier_name], filter[misc.type], filter[end_user.admin.entity_name], filter[end_user.admin.auth_person_name], filter[activation_settings.fast_port_eligible], filter[activation_settings.foc_datetime_requested][gt], filter[activation_settings.foc_datetime_requested][lt], filter[phone_numbers.phone_number][contains]","schema":{"type":"object","properties":{"customer_reference":{"type":"string","description":"Filter results by customer_reference"},"customer_group_reference":{"type":"string","description":"Filter results by customer_group_reference"},"parent_support_key":{"type":"string","description":"Filter results by parent_support_key"},"phone_numbers":{"type":"object","properties":{"country_code":{"type":"string","description":"Filter results by country ISO 3166-1 alpha-2 code"},"carrier_name":{"type":"string","description":"Filter results by old service provider"},"phone_number":{"type":"object","properties":{"contains":{"type":"string","description":"Filter results by full or partial phone_number"}},"description":"Phone number pattern filtering operations"}}},"misc":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/PortingOrderType","description":"Filter results by porting order type"}}},"end_user":{"type":"object","properties":{"admin":{"type":"object","properties":{"entity_name":{"type":"string","description":"Filter results by person or company name"},"auth_person_name":{"type":"string","description":"Filter results by authorized person"}}}}},"activation_settings":{"type":"object","properties":{"fast_port_eligible":{"type":"boolean","description":"Filter results by fast port eligible"},"foc_datetime_requested":{"type":"object","properties":{"gt":{"type":"string","description":"Filter results by foc date later than this value","example":"2021-03-25T10:00:00.000Z"},"lt":{"type":"string","description":"Filter results by foc date earlier than this value","example":"2021-03-25T10:00:00.000Z"}},"description":"FOC datetime range filtering operations"}}}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["created_at","-created_at","activation_settings.foc_datetime_requested","-activation_settings.foc_datetime_requested"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order."}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrder"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a porting order","tags":["Porting Orders"],"description":"Creates a new porting order to bring phone numbers from another carrier to Telnyx. Complete the order's requirements and then confirm it to submit the port.","operationId":"CreatePortingOrder","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortingOrder"}}}},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrder"}}},"example":{"data":[{"activation_settings":{"activation_status":null,"fast_port_eligible":true,"foc_datetime_actual":null,"foc_datetime_requested":null},"created_at":"2022-03-17T18:01:01Z","customer_reference":null,"customer_group_reference":null,"description":"FP Telnyx","documents":{"loa":null,"invoice":null},"end_user":{"admin":{"account_number":null,"auth_person_name":null,"billing_phone_number":null,"business_identifier":null,"entity_name":null,"pin_passcode":null,"tax_identifier":null},"location":{"administrative_area":null,"country_code":null,"extended_address":null,"locality":null,"postal_code":null,"street_address":null}},"id":"b0ea6d6f-de31-4079-a536-992e0c98b037","misc":null,"old_service_provider_ocn":"Unreal Communications","parent_support_key":null,"phone_number_configuration":{"billing_group_id":null,"connection_id":null,"emergency_address_id":null,"messaging_profile_id":null,"tags":[]},"phone_number_type":"local","phone_numbers":[{"activation_status":"Activate RDY","phone_number":"{e.164 TN}","phone_number_type":"local","portability_status":"confirmed","porting_order_id":"b0ea6d6f-de31-4079-a536-992e0c98b037","porting_order_status":"draft","record_type":"porting_phone_number","requirements_status":"requirement-info-pending","support_key":"sr_10b316"}],"porting_phone_numbers_count":1,"record_type":"porting_order","requirements":[],"requirements_met":false,"status":{"details":[],"value":"draft"},"support_key":null,"updated_at":"2022-03-17T18:01:01Z","user_feedback":{"user_comment":null,"user_rating":null},"messaging":{"messaging_capable":true,"enable_messaging":false,"messaging_port_status":"not_applicable","messaging_port_completed":false},"user_id":"40d68ba2-0847-4df2-be9c-b0e0cb673e75","webhook_url":null}]}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/exception_types":{"get":{"summary":"List all exception types","tags":["Porting Orders"],"description":"Returns a list of all possible exception types for a porting order.","operationId":"ListExceptionTypes","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrdersExceptionType"}}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/phone_number_configurations":{"get":{"summary":"List all phone number configurations","tags":["Porting Orders"],"description":"Returns a list of phone number configurations paginated.","operationId":"ListPhoneNumberConfigurations","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[porting_order.status][in][], filter[porting_phone_number][in][], filter[user_bundle_id][in][]","schema":{"type":"object","properties":{"porting_order":{"type":"object","properties":{"status":{"type":"array","items":{"type":"string","example":"in-process","enum":["activation-in-progress","cancel-pending","cancelled","draft","exception","foc-date-confirmed","in-process","ported","submitted"]},"description":"Filter results by specific porting order statuses"}}},"porting_phone_number":{"type":"array","items":{"type":"string","format":"uuid","example":"5d6f7ede-1961-4717-bfb5-db392c5efc2d"},"description":"Filter results by a list of porting phone number IDs"},"user_bundle_id":{"type":"array","items":{"type":"string","format":"uuid","example":"5d6f7ede-1961-4717-bfb5-db392c5efc2d"},"description":"Filter results by a list of user bundle IDs"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["created_at","-created_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order."}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingPhoneNumberConfiguration"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a list of phone number configurations","tags":["Porting Orders"],"description":"Creates a list of phone number configurations.","operationId":"CreatePhoneNumberConfigurations","requestBody":{"$ref":"#/components/requestBodies/CreatePortingPhoneNumberConfigurations"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingPhoneNumberConfiguration"}}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}":{"delete":{"summary":"Delete a porting order","tags":["Porting Orders"],"description":"Deletes an existing porting order. This operation is restrict to porting orders in draft state.","operationId":"DeletePortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"get":{"summary":"Retrieve a porting order","tags":["Porting Orders"],"description":"Retrieves the details of an existing porting order.","operationId":"GetPortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/QueryIncludePhoneNumbers"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrder"},"meta":{"type":"object","properties":{"phone_numbers_url":{"type":"string","description":"Link to list all phone numbers","example":"/v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222"}}}}}}}},"401":{"description":"Unauthorized"}}},"patch":{"summary":"Edit a porting order","tags":["Porting Orders"],"description":"Edits the details of an existing porting order.\n\nAny or all of a porting orders attributes may be included in the resource object included in a PATCH request.\n\nIf a request does not include all of the attributes for a resource, the system will interpret the missing attributes as if they were included with their current values. To explicitly set something to null, it must be included in the request with a null value.","operationId":"UpdatePortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePortingOrder"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrder"},"meta":{"type":"object","properties":{"phone_numbers_url":{"type":"string","description":"Link to list all phone numbers"}}}},"example":{"data":{"activation_settings":{"activation_status":null,"fast_port_eligible":true,"foc_datetime_actual":null,"foc_datetime_requested":"2022-04-08T15:00:00Z"},"created_at":"2022-03-24T14:22:28Z","customer_reference":"Test1234","customer_group_reference":"Group-789","description":"FP Telnyx","documents":{"loa":null,"invoice":null},"end_user":{"admin":{"account_number":"123abc","auth_person_name":"Porter McPortersen II","billing_phone_number":"+13035551234","business_identifier":"abc123","entity_name":"Porter McPortersen","pin_passcode":"1234","tax_identifier":"1234abcd"},"location":{"administrative_area":"TX","country_code":"US","extended_address":"14th Floor","locality":"Austin","postal_code":"78701","street_address":"600 Congress Avenue"}},"id":"eef10fb8-f3df-4c67-97c5-e18179723222","misc":{"new_billing_phone_number":null,"remaining_numbers_action":null,"type":"full"},"old_service_provider_ocn":"Unreal Communications","parent_support_key":null,"phone_number_configuration":{"billing_group_id":null,"connection_id":"1752379429071357070","emergency_address_id":null,"messaging_profile_id":null,"tags":[]},"phone_number_type":"local","porting_phone_numbers_count":1,"record_type":"porting_order","requirements":[],"requirements_met":false,"status":{"details":[],"value":"draft"},"support_key":null,"updated_at":"2022-03-24T14:26:53Z","user_feedback":{"user_comment":null,"user_rating":null},"messaging":{"messaging_capable":true,"enable_messaging":true,"messaging_port_status":"pending","messaging_port_completed":false},"user_id":"40d68ba2-0847-4df2-be9c-b0e0cb673e75","webhook_url":"https://example.com/porting_webhooks"},"meta":{"phone_numbers_url":"/v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/actions/activate":{"post":{"summary":"Activate every number in a porting order asynchronously.","tags":["Porting Orders"],"description":"Activate each number in a porting order asynchronously. This operation is limited to US FastPort orders only.","operationId":"ActivatePortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"202":{"description":"Activation request accepted. Track it via GET /porting_orders/{id}/activation_jobs/{activationJobId} using the returned activation job id.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrdersActivationJob"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/actions/cancel":{"post":{"summary":"Cancel a porting order","tags":["Porting Orders"],"description":"Requests cancellation of the porting order and returns the updated order.","operationId":"CancelPortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrder"},"meta":{"type":"object","properties":{"phone_numbers_url":{"type":"string","description":"Link to list all phone numbers"}}}},"example":{"data":{"activation_settings":{"activation_status":null,"fast_port_eligible":true,"foc_datetime_actual":null,"foc_datetime_requested":"2022-04-08T15:00:00Z"},"created_at":"2022-03-24T14:22:28Z","customer_reference":"Test1234","customer_group_reference":"Group-789","description":"FP Telnyx","documents":{"loa":"3a5b98a0-5049-47c3-96e1-aa6c8d119117","invoice":"3a5b98a0-5049-47c3-96e1-aa6c8d119117"},"end_user":{"admin":{"account_number":"123abc","auth_person_name":"Porter McPortersen II","billing_phone_number":"+13035551234","business_identifier":"abc123","entity_name":"Porter McPortersen","pin_passcode":"1234","tax_identifier":"1234abcd"},"location":{"administrative_area":"TX","country_code":"US","extended_address":"14th Floor","locality":"Austin","postal_code":"78701","street_address":"600 Congress Avenue"}},"id":"eef10fb8-f3df-4c67-97c5-e18179723222","misc":{"new_billing_phone_number":null,"remaining_numbers_action":null,"type":"full"},"old_service_provider_ocn":"Unreal Communications","parent_support_key":"pr_4bec1a","phone_number_configuration":{"billing_group_id":null,"connection_id":"1752379429071357070","emergency_address_id":null,"messaging_profile_id":null,"tags":[]},"phone_number_type":"local","porting_phone_numbers_count":1,"record_type":"porting_order","requirements":[],"requirements_met":true,"status":{"details":[],"value":"cancel-pending"},"support_key":"sr_10b316","updated_at":"2022-03-24T16:43:35Z","user_feedback":{"user_comment":null,"user_rating":null},"user_id":"40d68ba2-0847-4df2-be9c-b0e0cb673e75","webhook_url":"https://example.com/porting_webhooks"},"meta":{"phone_numbers_url":"/v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/actions/confirm":{"post":{"summary":"Submit a porting order.","tags":["Porting Orders"],"description":"Confirms the porting order and submits it for processing. Make sure all required information and documents are attached before confirming.","operationId":"ConfirmPortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrder"},"meta":{"type":"object","properties":{"phone_numbers_url":{"type":"string","description":"Link to list all phone numbers"}}}},"example":{"data":{"activation_settings":{"activation_status":null,"fast_port_eligible":true,"foc_datetime_actual":null,"foc_datetime_requested":"2022-04-08T15:00:00Z"},"created_at":"2022-03-24T14:22:28Z","customer_reference":"Test1234","customer_group_reference":"Group-789","description":"FP Telnyx","documents":{"loa":"3a5b98a0-5049-47c3-96e1-aa6c8d119117","invoice":"3a5b98a0-5049-47c3-96e1-aa6c8d119117"},"end_user":{"admin":{"account_number":"123abc","auth_person_name":"Porter McPortersen II","billing_phone_number":"+13035551234","business_identifier":"abc123","entity_name":"Porter McPortersen","pin_passcode":"1234","tax_identifier":"1234abcd"},"location":{"administrative_area":"TX","country_code":"US","extended_address":"14th Floor","locality":"Austin","postal_code":"78701","street_address":"600 Congress Avenue"}},"id":"eef10fb8-f3df-4c67-97c5-e18179723222","misc":{"new_billing_phone_number":null,"remaining_numbers_action":null,"type":"full"},"old_service_provider_ocn":"Unreal Communications","parent_support_key":"pr_4bec1a","phone_number_configuration":{"billing_group_id":null,"connection_id":"1752379429071357070","emergency_address_id":null,"messaging_profile_id":null,"tags":[]},"phone_number_type":"local","porting_phone_numbers_count":1,"record_type":"porting_order","requirements":[],"requirements_met":true,"status":{"details":[],"value":"in-process"},"support_key":"sr_10b316","updated_at":"2022-03-24T16:42:43Z","user_feedback":{"user_comment":null,"user_rating":null},"messaging":{"messaging_capable":true,"enable_messaging":false,"messaging_port_status":"not_applicable","messaging_port_completed":false},"user_id":"40d68ba2-0847-4df2-be9c-b0e0cb673e75","webhook_url":"https://example.com/porting_webhooks"},"meta":{"phone_numbers_url":"/v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/actions/share":{"post":{"summary":"Share a porting order","tags":["Porting Orders"],"description":"Creates a sharing token for a porting order. The token can be used to share the porting order with non-Telnyx users.","operationId":"SharePortingOrder","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"requestBody":{"$ref":"#/components/requestBodies/SharePortingOrder"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrderSharingToken"}}},"example":{"data":{"id":"03a35311-ad92-46b3-95d7-8ad6dccf2d7c","porting_order_id":"fd4b86c8-497d-4c6d-9609-a789e4e14cfe","expires_in_seconds":3600,"permissions":["porting_order.document.read","porting_order.document.update"],"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc","record_type":"porting_order_sharing_token","expires_at":"2023-07-20T23:11:17Z","created_at":"2023-07-20T22:11:17.292573Z"}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Porting Order not found"}}}},"/porting_orders/{id}/activation_jobs":{"get":{"summary":"List all porting activation jobs","tags":["Porting Orders"],"description":"Returns a list of your porting activation jobs.","operationId":"ListPortingOrderActivationJobs","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrdersActivationJob"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/activation_jobs/{activationJobId}":{"get":{"summary":"Retrieve a porting activation job","tags":["Porting Orders"],"description":"Returns the details of a single activation job for the porting order, including its current status.","operationId":"GetPortingOrdersActivationJob","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/PathPortingOrdersActivationJobID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrdersActivationJob"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"patch":{"summary":"Update a porting activation job","tags":["Porting Orders"],"description":"Updates the activation time of a porting activation job.","operationId":"UpdatePortingOrdersActivationJob","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/PathPortingOrdersActivationJobID"}],"requestBody":{"$ref":"#/components/requestBodies/UpdatePortingOrdersActivationJob"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrdersActivationJob"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/additional_documents":{"get":{"summary":"List additional documents","tags":["Porting Orders"],"description":"Returns a list of additional documents for a porting order.","operationId":"ListAdditionalDocuments","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[document_type]","schema":{"type":"object","properties":{"document_type":{"type":"array","items":{"type":"string","enum":["loa","invoice","csr","other"],"example":"loa"},"description":"Filter additional documents by a list of document types"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["created_at","-created_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order."}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingAdditionalDocument"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"example":{"data":[{"id":"2acd1061-33cb-49b8-8014-beb6dc3fedbf","document_id":"40bc547a-7f96-4cd5-926a-da4842671e88","document_type":"loa","porting_order_id":"9d7b3b8e-4e67-4837-9c44-d110cd2c82a1","record_type":"porting_additional_document","created_at":"2023-06-01T10:00:00.00000Z","updated_at":"2023-06-01T10:00:00.00000Z"}],"meta":{"total_pages":1,"total_results":1,"page_number":1,"page_size":25}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}},"post":{"summary":"Create a list of additional documents","tags":["Porting Orders"],"description":"Creates a list of additional documents for a porting order.","operationId":"CreateAdditionalDocuments","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"requestBody":{"$ref":"#/components/requestBodies/CreatePortingAdditionalDocuments"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingAdditionalDocument"}}},"example":{"data":[{"id":"2acd1061-33cb-49b8-8014-beb6dc3fedbf","document_id":"40bc547a-7f96-4cd5-926a-da4842671e88","document_type":"loa","porting_order_id":"9d7b3b8e-4e67-4837-9c44-d110cd2c82a1","record_type":"porting_additional_document","created_at":"2023-06-01T10:00:00.00000Z","updated_at":"2023-06-01T10:00:00.00000Z"}]}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/additional_documents/{additional_document_id}":{"delete":{"summary":"Delete an additional document","tags":["Porting Orders"],"description":"Deletes an additional document for a porting order.","operationId":"DeleteAdditionalDocument","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"name":"additional_document_id","description":"Additional document identification.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}}},"/porting_orders/{id}/allowed_foc_windows":{"get":{"summary":"List allowed FOC dates","tags":["Porting Orders"],"description":"Returns a list of allowed FOC dates for a porting order.","operationId":"ListAllowedFocWindows","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrdersAllowedFocWindow"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"}}}},"/porting_orders/{id}/comments":{"get":{"summary":"List all comments of a porting order","tags":["Porting Orders"],"description":"Returns a list of all comments of a porting order.","operationId":"ListPortingOrderComments","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrdersComment"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a comment for a porting order","tags":["Porting Orders"],"parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"description":"Creates a new comment for a porting order.","operationId":"CreatePortingOrderComment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePortingOrderComment"}}}},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingOrdersComment"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/loa_template":{"get":{"summary":"Download a porting order loa template","tags":["Porting Orders"],"description":"Downloads the Letter of Authorization (LOA) template document for this porting order, optionally rendered with a specific LOA configuration.","operationId":"GetPortingOrderLoaTemplate","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"name":"loa_configuration_id","in":"query","description":"The identifier of the LOA configuration to use for the template. If not provided, the default LOA configuration will be used.","example":"a36c2277-446b-4d11-b4ea-322e02a5c08d","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/pdf":{"schema":{"type":"string","format":"binary","example":"%PDF-1.4..."}}}},"401":{"description":"Unauthorized"}}}},"/porting_orders/{id}/requirements":{"get":{"summary":"List porting order requirements","tags":["Porting Orders"],"description":"Returns a list of all requirements based on country/number type for this porting order.","operationId":"ListPortingOrderRequirements","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrderRequirementDetail"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/sub_request":{"get":{"summary":"Retrieve the associated V1 sub_request_id and port_request_id","tags":["Porting Orders"],"description":"Retrieve the associated V1 sub_request_id and port_request_id","operationId":"GetPortingOrderSubRequest","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/GetSubRequestByPortingOrder"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Porting Order not found"}}}},"/porting_orders/{id}/verification_codes":{"get":{"summary":"List verification codes","tags":["Porting Orders"],"description":"Returns a list of verification codes for a porting order.","operationId":"ListVerificationCodes","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[verified]","schema":{"type":"object","properties":{"verified":{"type":"boolean","example":true,"description":"Filter verification codes that have been verified or not"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["created_at","-created_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order."}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingVerificationCode"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"example":{"data":[{"id":"52090326-6533-4421-bcf4-bd0117cf3954","phone_number":"+61424000001","verified":true,"porting_order_id":"f28e6ecc-29a8-430b-bd0b-d93055f70604","created_at":"2020-10-22T15:00:00.000Z","updated_at":"2020-10-22T15:00:00.000Z"},{"id":"cf076b8e-645b-4040-8209-543c5909775f","phone_number":"+61424000002","verified":false,"porting_order_id":"f28e6ecc-29a8-430b-bd0b-d93055f70604","created_at":"2020-10-22T15:00:00.000Z","updated_at":"2020-10-22T15:00:00.000Z"}],"meta":{"total_pages":1,"total_results":2,"page_number":1,"page_size":2}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}}},"/porting_orders/{id}/verification_codes/send":{"post":{"summary":"Send the verification codes","description":"Send the verification code for all porting phone numbers.","tags":["Porting Orders"],"operationId":"SendPortingVerificationCodes","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"requestBody":{"$ref":"#/components/requestBodies/SendPortingVerificationCodes"},"responses":{"204":{"description":"No content"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{id}/verification_codes/verify":{"post":{"summary":"Verify the verification code for a list of phone numbers","description":"Verifies the verification code for a list of phone numbers.","tags":["Porting Orders"],"operationId":"VerifyPortingVerificationCodes","parameters":[{"$ref":"#/components/parameters/PathPortingOrderID"}],"requestBody":{"$ref":"#/components/requestBodies/VerifyPortingVerificationCodes"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingVerificationCode"}}},"example":{"data":[{"id":"52090326-6533-4421-bcf4-bd0117cf3954","phone_number":"+61424000001","verified":true,"porting_order_id":"f28e6ecc-29a8-430b-bd0b-d93055f70604","created_at":"2020-10-22T15:00:00.000Z","updated_at":"2020-10-22T15:00:00.000Z"},{"id":"cf076b8e-645b-4040-8209-543c5909775f","phone_number":"+61424000002","verified":false,"porting_order_id":"f28e6ecc-29a8-430b-bd0b-d93055f70604","created_at":"2020-10-22T15:00:00.000Z","updated_at":"2020-10-22T15:00:00.000Z"}]}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/action_requirements":{"get":{"summary":"List action requirements for a porting order","tags":["Porting Orders"],"description":"Returns a list of action requirements for a specific porting order.","operationId":"listPortingActionRequirements","parameters":[{"name":"porting_order_id","in":"path","description":"The ID of the porting order","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[id][in][], filter[requirement_type_id], filter[action_type], filter[status]","schema":{"type":"object","properties":{"id":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter action requirements by a list of IDs"},"requirement_type_id":{"type":"string","format":"uuid","description":"Filter action requirements by requirement type ID"},"action_type":{"type":"string","enum":["au_id_verification"],"description":"Filter action requirements by action type"},"status":{"type":"string","enum":["created","pending","completed","cancelled","failed"],"description":"Filter action requirements by status"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["created_at","-created_at","updated_at","-updated_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order."}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingActionRequirement"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Porting order not found"},"500":{"description":"Internal server error"}}}},"/porting_orders/{porting_order_id}/action_requirements/{id}/initiate":{"post":{"summary":"Initiate an action requirement","tags":["Porting Orders"],"description":"Initiates a specific action requirement for a porting order.","operationId":"initiatePortingActionRequirement","parameters":[{"name":"porting_order_id","in":"path","description":"The ID of the porting order","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"The ID of the action requirement","required":true,"schema":{"type":"string"}}],"requestBody":{"$ref":"#/components/requestBodies/InitiatePortingActionRequirement"},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingActionRequirement"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Porting order or action requirement not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/porting_orders/{porting_order_id}/associated_phone_numbers":{"get":{"summary":"List all associated phone numbers","tags":["Porting Orders"],"description":"Returns a list of all associated phone numbers for a porting order. Associated phone numbers are used for partial porting in GB to specify which phone numbers should be kept or disconnected.","operationId":"listPortingAssociatedPhoneNumbers","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone numbers","required":true,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[action]","schema":{"type":"object","properties":{"phone_number":{"type":"string","example":"+441234567890","description":"Filter results by a phone number. It should be in E.164 format."},"action":{"type":"string","enum":["keep","disconnect"],"example":"keep","description":"Filter results by action type"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["-created_at","created_at"],"example":"-created_at","default":"-created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingAssociatedPhoneNumber"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create an associated phone number","tags":["Porting Orders"],"description":"Creates a new associated phone number for a porting order. This is used for partial porting in GB to specify which phone numbers should be kept or disconnected.","operationId":"createPortingAssociatedPhoneNumber","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"$ref":"#/components/requestBodies/CreatePortingAssociatedPhoneNumber"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingAssociatedPhoneNumber"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/associated_phone_numbers/{id}":{"delete":{"summary":"Delete an associated phone number","tags":["Porting Orders"],"description":"Deletes an associated phone number from a porting order.","operationId":"deletePortingAssociatedPhoneNumber","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","description":"Identifies the associated phone number to be deleted","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingAssociatedPhoneNumber"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/phone_number_blocks":{"get":{"summary":"List all phone number blocks","tags":["Porting Orders"],"description":"Returns a list of all phone number blocks of a porting order.","operationId":"listPortingPhoneNumberBlocks","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number blocks","required":true,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/porting-order_FilterConsolidated"},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["-created_at","created_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingPhoneNumberBlock"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a phone number block","tags":["Porting Orders"],"description":"Creates a phone number block on the porting order, representing a contiguous range of phone numbers to be ported together.","operationId":"createPortingPhoneNumberBlock","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number block","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"$ref":"#/components/requestBodies/CreatePortingPhoneNumberBlock"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingPhoneNumberBlock"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/phone_number_blocks/{id}":{"delete":{"summary":"Delete a phone number block","tags":["Porting Orders"],"description":"Deletes the specified phone number block from the porting order.","operationId":"deletePortingPhoneNumberBlock","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number block","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","description":"Identifies the phone number block to be deleted","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingPhoneNumberBlock"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/phone_number_extensions":{"get":{"summary":"List all phone number extensions","tags":["Porting Orders"],"description":"Returns a list of all phone number extensions of a porting order.","operationId":"listPortingPhoneNumberExtensions","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number extensions","required":true,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[porting_phone_number_id]","schema":{"type":"object","properties":{"porting_phone_number_id":{"type":"string","format":"uuid","example":"04f8f1b9-310c-4a3c-963e-7dfc54765140","description":"Filter results by porting phone number id"}}}},{"name":"sort","in":"query","style":"deepObject","explode":true,"description":"Consolidated sort parameter (deepObject style). Originally: sort[value]","schema":{"type":"object","properties":{"value":{"type":"string","enum":["-created_at","created_at"],"example":"created_at","description":"Specifies the sort order for results. If not given, results are sorted by created_at in descending order"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingPhoneNumberExtension"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a phone number extension","tags":["Porting Orders"],"description":"Creates a phone number extension on the porting order, mapping extension ranges to one of the order's phone numbers.","operationId":"createPortingPhoneNumberExtension","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number extension","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"$ref":"#/components/requestBodies/CreatePortingPhoneNumberExtension"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingPhoneNumberExtension"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_orders/{porting_order_id}/phone_number_extensions/{id}":{"delete":{"summary":"Delete a phone number extension","tags":["Porting Orders"],"description":"Deletes the specified phone number extension from the porting order.","operationId":"deletePortingPhoneNumberExtension","parameters":[{"name":"porting_order_id","in":"path","description":"Identifies the Porting Order associated with the phone number extension","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","description":"Identifies the phone number extension to be deleted","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortingPhoneNumberExtension"}}}}}},"404":{"description":"Not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/porting_phone_numbers":{"get":{"summary":"List all porting phone numbers","tags":["Porting Orders"],"description":"Returns a list of your porting phone numbers.","operationId":"ListPortingPhoneNumbers","parameters":[{"$ref":"#/components/parameters/porting-order_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[porting_order_status]","schema":{"type":"object","properties":{"porting_order_status":{"type":"string","enum":["draft","in-process","submitted","exception","foc-date-confirmed","cancel-pending","ported","cancelled"],"example":"in-process","description":"Filter results by porting order status"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortingPhoneNumber"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}},"text/csv":{"schema":{"type":"string","example":"phone_number,phone_number_type,porting_order_id,support_key,porting_order_status\r\n+12003155566,local,5f940c35-ef28-4408-bb95-af73b047d589,sr_a12345,draft\r\n"}}}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/portouts":{"get":{"summary":"List portout requests","description":"Returns the portout requests according to filters","operationId":"ListPortoutRequest","tags":["Number Portout"],"parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[carrier_name], filter[country_code], filter[country_code_in], filter[foc_date], filter[inserted_at], filter[phone_number], filter[pon], filter[ported_out_at], filter[spid], filter[status], filter[status_in], filter[support_key]","schema":{"type":"object","properties":{"carrier_name":{"type":"string","description":"Filter by new carrier name."},"pon":{"type":"string","description":"Filter by Port Order Number (PON)."},"spid":{"type":"string","description":"Filter by new carrier spid."},"status":{"type":"string","enum":["pending","authorized","ported","rejected","rejected-pending","canceled"],"description":"Filter by portout status."},"status_in":{"type":"array","items":{"type":"string","enum":["pending","authorized","ported","rejected","rejected-pending","canceled"]},"description":"Filter by a list of portout statuses"},"country_code":{"type":"string","description":"Filter by 2-letter country code","example":"US"},"country_code_in":{"type":"array","items":{"type":"string"},"example":["CA","US"],"description":"Filter by a list of 2-letter country codes"},"ported_out_at":{"type":"object","description":"Filter by ported_out_at date range using nested operations","properties":{"gte":{"type":"string","format":"date-time","example":"2024-09-04T00:00:00.000Z","description":"Filter by ported_out_at date greater than or equal."},"lte":{"type":"string","format":"date-time","example":"2024-09-04T00:00:00.000Z","description":"Filter by ported_out_at date less than or equal."}}},"inserted_at":{"type":"object","description":"Filter by inserted_at date range using nested operations","properties":{"gte":{"type":"string","format":"date-time","example":"2024-09-04T00:00:00.000Z","description":"Filter by inserted_at date greater than or equal."},"lte":{"type":"string","format":"date-time","example":"2024-09-04T00:00:00.000Z","description":"Filter by inserted_at date less than or equal."}}},"foc_date":{"type":"string","format":"date-time","example":"2024-09-04T00:00:00.000Z","description":"Filter by foc_date. Matches all portouts with the same date"},"phone_number":{"type":"string","example":"+13035551212","description":"Filter by a phone number on the portout. Matches all portouts with the phone number"},"support_key":{"type":"string","example":"PO_abc123","description":"Filter by the portout's support_key"}}}}],"responses":{"200":{"description":"Portout Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortoutDetails"}},"meta":{"$ref":"#/components/schemas/Metadata"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/portouts/events":{"get":{"summary":"List all port-out events","tags":["Number Portout"],"description":"Returns a paginated list of port-out events on your account, such as status changes on port-out requests, with support for filtering.","operationId":"listPortoutEvents","parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[event_type], filter[portout_id], filter[created_at]","schema":{"type":"object","properties":{"event_type":{"type":"string","enum":["portout.status_changed","portout.new_comment","portout.foc_date_changed"],"example":"portout.status_changed","description":"Filter by event type."},"portout_id":{"type":"string","format":"uuid","example":"34dc46a9-53ed-4e01-9454-26227ea13326","description":"Filter by port-out order ID."},"created_at":{"type":"object","description":"Filter by created_at date range using nested operations","properties":{"gte":{"type":"string","format":"date-time","example":"2021-01-01T00:00:00Z","description":"Filter by created at greater than or equal to."},"lte":{"type":"string","format":"date-time","example":"2021-01-01T00:00:00Z","description":"Filter by created at less than or equal to."}}}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortoutEvent"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/portouts/events/{id}":{"get":{"summary":"Show a port-out event","tags":["Number Portout"],"description":"Returns the details of a single port-out event, including its type and payload.","operationId":"showPortoutEvent","parameters":[{"name":"id","description":"Identifies the port-out event.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutEvent"}}}}}},"404":{"description":"Not found"},"500":{"description":"Internal server error"}}}},"/portouts/events/{id}/republish":{"post":{"summary":"Republish a port-out event","tags":["Number Portout"],"description":"Republishes the specified port-out event, triggering re-delivery of the corresponding webhook to your account.","operationId":"republishPortoutEvent","parameters":[{"name":"id","description":"Identifies the port-out event.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No content"},"404":{"description":"Not found"},"500":{"description":"Internal server error"}}}},"/portouts/rejections/{portout_id}":{"get":{"tags":["Number Portout"],"summary":"List eligible port-out rejection codes for a specific order","description":"Given a port-out ID, list rejection codes that are eligible for that port-out","operationId":"ListPortoutRejections","parameters":[{"name":"portout_id","description":"Identifies a port out order.","in":"path","required":true,"schema":{"type":"string","example":"329d6658-8f93-405d-862f-648776e8afd7"}},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[code], filter[code][in]","schema":{"type":"object","properties":{"code":{"oneOf":[{"type":"integer","example":1002,"description":"Filter rejections of a specific code"},{"type":"array","items":{"type":"integer"},"example":[1002,1003],"description":"Filter rejections in a list of codes"}]}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortoutRejection"}}}}}}},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/portouts/reports":{"get":{"tags":["Number Portout"],"summary":"List port-out related reports","description":"List the reports generated about port-out operations.","operationId":"ListPortoutReports","parameters":[{"$ref":"#/components/parameters/PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]","schema":{"type":"object","properties":{"report_type":{"type":"string","enum":["export_portouts_csv"],"example":"export_portouts_csv","description":"Filter reports of a specific type"},"status":{"type":"string","enum":["pending","completed"],"example":"completed","description":"Filter reports of a specific status"}}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortoutReport"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}},"post":{"tags":["Number Portout"],"summary":"Create a port-out related report","description":"Generate reports about port-out operations.","operationId":"CreatePortoutReport","requestBody":{"$ref":"#/components/requestBodies/CreatePortoutReport"},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutReport"}}}}}},"422":{"description":"Unprocessable entity. Check message field in response for details."},"500":{"description":"Internal server error"}}}},"/portouts/reports/{id}":{"get":{"tags":["Number Portout"],"summary":"Retrieve a report","description":"Returns the details of a previously requested port-out report, including its status and parameters.","operationId":"GetPortoutReport","parameters":[{"name":"id","description":"Identifies a report.","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutReport"}}}}}},"404":{"description":"Resource not found"},"500":{"description":"Internal server error"}}}},"/portouts/{id}":{"get":{"summary":"Get a portout request","description":"Returns the portout request based on the ID provided","operationId":"FindPortoutRequest","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Portout Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutDetails"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/portouts/{id}/comments":{"get":{"summary":"List all comments for a portout request","description":"Returns a list of comments for a portout request.","operationId":"FindPortoutComments","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Portout Comments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortoutComment"}},"meta":{"$ref":"#/components/schemas/Metadata"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}},"post":{"summary":"Create a comment on a portout request","description":"Creates a comment on the specified port-out request and returns the created comment.","operationId":"PostPortRequestComment","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","description":"Comment to post on this portout request"}}},"example":{"body":"string"}}}},"responses":{"201":{"description":"Portout Comment Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutComment"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/portouts/{id}/supporting_documents":{"get":{"summary":"List supporting documents on a portout request","description":"List every supporting documents for a portout request.","operationId":"GetPortRequestSupportingDocuments","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"Portout Supporting Documents","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortOutSupportingDocument"}}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}},"post":{"summary":"Create a list of supporting documents on a portout request","description":"Creates a list of supporting documents on a portout request.","operationId":"PostPortRequestSupportingDocuments","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","description":"List of supporting documents parameters","minItems":1,"maxItems":10,"items":{"type":"object","required":["type","document_id"],"properties":{"type":{"type":"string","enum":["loa","invoice"],"description":"Identifies the type of the document","example":"loa"},"document_id":{"format":"uuid","type":"string","description":"Identifies the associated document","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}}}}}}}},"responses":{"201":{"description":"Portout Supporting Documents","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PortOutSupportingDocument"}}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/portouts/{id}/{status}":{"patch":{"summary":"Update Status","description":"Updates the status of the specified port-out request, using the status path segment to authorize or reject the port-out.","operationId":"UpdatePortoutStatus","tags":["Number Portout"],"parameters":[{"name":"id","in":"path","description":"Portout id","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"status","description":"Updated portout status","in":"path","required":true,"schema":{"type":"string","enum":["authorized","rejected-pending"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reason"],"properties":{"reason":{"description":"Provide a reason if rejecting the port out request","type":"string","example":"I do not recognize this transaction"},"host_messaging":{"description":"Indicates whether messaging services should be maintained with Telnyx after the port out completes","type":"boolean","default":false,"example":false}}}}}},"responses":{"200":{"description":"Portout Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PortoutDetails"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Unprocessable entity. Check message field in response for details."}}}},"/pricing/products":{"get":{"summary":"List products","description":"Returns the full product catalog with pagination. Each entry contains a slug, display name, and description. Use the slug to fetch per-product pricing via GET /pricing/products/{slug}.","operationId":"listPricingProducts","tags":["Pricing"],"parameters":[{"name":"page[number]","in":"query","description":"Page number (1-based).","required":false,"schema":{"type":"integer","minimum":1,"title":"Page Number","default":1}},{"name":"page[size]","in":"query","description":"Number of items per page (max 100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"title":"Page Size","default":20}}],"responses":{"200":{"description":"Product catalog listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingProductListResponse"},"example":{"data":[{"slug":"string","name":"string","description":"string"}],"meta":{"page_number":0,"page_size":0,"total_pages":0,"total_results":0}}}}},"400":{"description":"Invalid pagination parameters"}},"x-latency-category":"responsive","security":[]}},"/pricing/products/{slug}":{"get":{"summary":"Get product pricing","description":"Returns pricing entries for a single product. Most products return standard rate entries with fields like rate, unit, country_iso, direction, and tiers. Inference products return model-specific fields (model, input_rate, output_rate, cached_input_rate) with tiered pricing. Some products use rate decks (pricing_type: rate_deck) where rates are determined dynamically.","operationId":"getProductPricing","tags":["Pricing"],"parameters":[{"name":"slug","in":"path","description":"Product slug from the catalog listing.","required":true,"schema":{"type":"string"}},{"name":"page[number]","in":"query","description":"Page number (1-based).","required":false,"schema":{"type":"integer","minimum":1,"title":"Page Number","default":1}},{"name":"page[size]","in":"query","description":"Number of items per page (max 100).","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"title":"Page Size","default":20}},{"name":"filter[country_iso]","description":"Two-letter ISO 3166-1 alpha-2 country code (uppercase, e.g. US) to filter pricing to a single country.","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$"},{"type":"null"}],"title":"Filter[Country Iso]"}}],"responses":{"200":{"description":"Product pricing entries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingEntryListResponse"},"example":{"data":[{"name":"string","rate":0,"unit":"string","currency":"string","type":"string","tiers":[{"min":0,"rate":0,"max":1000000}],"model":"string","input_rate":"string","cached_input_rate":"string","output_rate":"string","input_tiers":[{"min":0,"rate":0,"max":1000000}],"cached_input_tiers":[{"min":0,"rate":0,"max":1000000}],"output_tiers":[{"min":0,"rate":0,"max":1000000}]}],"meta":{"page_number":0,"page_size":0,"total_pages":0,"total_results":0}}}}},"404":{"description":"Product not found"}},"x-latency-category":"responsive","security":[]}},"/private_wireless_gateways":{"get":{"summary":"Get all Private Wireless Gateways","description":"Get all Private Wireless Gateways belonging to the user.","operationId":"GetPrivateWirelessGateways","tags":["Private Wireless Gateways"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"},{"name":"filter[name]","description":"The name of the Private Wireless Gateway.","in":"query","required":false,"schema":{"type":"string"},"example":"my private gateway"},{"name":"filter[ip_range]","description":"The IP address range of the Private Wireless Gateway.","in":"query","required":false,"schema":{"type":"string"},"example":"192.168.0.0/24"},{"name":"filter[region_code]","description":"The name of the region where the Private Wireless Gateway is deployed.","in":"query","required":false,"schema":{"type":"string"},"example":"dc2"},{"name":"filter[created_at]","description":"Private Wireless Gateway resource creation date.","in":"query","required":false,"schema":{"type":"string"},"example":"2018-02-02T22:25:27.521Z"},{"name":"filter[updated_at]","description":"When the Private Wireless Gateway was last updated.","in":"query","required":false,"schema":{"type":"string"},"example":"2018-02-02T22:25:27.521Z"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/wireless_PrivateWirelessGateway"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"post":{"x-latency-category":"background","summary":"Create a Private Wireless Gateway","description":"Asynchronously create a Private Wireless Gateway for SIM cards for a previously created network. This operation may take several minutes so you can check the Private Wireless Gateway status at the section Get a Private Wireless Gateway.","operationId":"CreatePrivateWirelessGateway","tags":["Private Wireless Gateways"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"network_id":{"description":"The identification of the related network resource.","format":"uuid","type":"string","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"name":{"description":"The private wireless gateway name.","type":"string","example":"My private wireless gateway"},"region_code":{"description":"The code of the region where the private wireless gateway will be assigned. A list of available regions can be found at the regions endpoint","type":"string","example":"dc2"},"address_mode":{"description":"Determines how IP addresses are assigned to SIM cards using this gateway. With static, each SIM card gets a fixed IP address from the gateway's IP range that is preserved across sessions. With dynamic, an IP address is assigned by the network at attach time and may change between sessions. If omitted, the gateway is created with the default address mode, dynamic.","type":"string","enum":["static","dynamic"],"default":"dynamic","example":"static"}},"required":["network_id","name"]}}}},"responses":{"202":{"description":"Creation request accepted. Provisioning is asynchronous; poll GET /private_wireless_gateways/{id} with the returned id to check status.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_PrivateWirelessGateway"}},"example":{"data":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","network_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"private_wireless_gateway","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","name":"My private wireless gateway","address_mode":"dynamic","region_code":"dc2","status":{"value":"provisioning","error_description":null,"error_code":null},"ip_range":"100.64.1.0/24","assigned_resources":[{"record_type":"sim_card_group","count":1}]}}}}}},"422":{"$ref":"#/components/responses/wireless_UnprocessableEntity_c5290d5308"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/private_wireless_gateways/{id}":{"delete":{"summary":"Delete a Private Wireless Gateway","description":"Permanently deletes the specified Private Wireless Gateway from your account.","operationId":"DeleteWirelessGateway","tags":["Private Wireless Gateways"],"parameters":[{"$ref":"#/components/parameters/PrivateWirelessGatewayId"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_PrivateWirelessGateway"}}}}}},"404":{"$ref":"#/components/responses/ResourceNotFound"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"get":{"summary":"Get a Private Wireless Gateway","description":"Retrieve information about a Private Wireless Gateway.","operationId":"GetPrivateWirelessGateway","tags":["Private Wireless Gateways"],"parameters":[{"$ref":"#/components/parameters/PrivateWirelessGatewayId"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_PrivateWirelessGateway"}}}}}},"404":{"$ref":"#/components/responses/ResourceNotFound"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/pronunciation_dicts":{"get":{"summary":"List pronunciation dictionaries","description":"List all pronunciation dictionaries for the authenticated organization. Results are paginated using offset-based pagination.","operationId":"ListPronunciationDicts","tags":["Pronunciation Dictionaries"],"parameters":[{"name":"page[number]","in":"query","required":false,"description":"Page number (1-based). Defaults to 1.","schema":{"type":"integer","minimum":1,"default":1}},{"name":"page[size]","in":"query","required":false,"description":"Number of results per page. Defaults to 20, maximum 250.","schema":{"type":"integer","minimum":1,"maximum":250,"default":20}}],"responses":{"200":{"description":"A paginated list of pronunciation dictionaries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictListResponse"}}}},"400":{"description":"Invalid pagination parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"}}}},"401":{"description":"Unauthorized. Invalid or missing API key."}}},"post":{"summary":"Create a pronunciation dictionary","description":"Create a new pronunciation dictionary for the authenticated organization. Each dictionary contains a list of items that control how specific words are spoken. Items can be alias type (text replacement) or phoneme type (IPA pronunciation notation).\n\nAs an alternative to providing items directly as JSON, you can upload a dictionary file (PLS/XML or plain text format, max 1MB) using multipart/form-data. PLS files use the standard W3C Pronunciation Lexicon Specification XML format. Text files use a line-based format: `word=alias` for aliases, `word:/phoneme/` for IPA phonemes.\n\nLimits:\n- Maximum 50 dictionaries per organization\n- Maximum 100 items per dictionary\n- Text: max 200 characters\n- Alias/phoneme value: max 500 characters\n- File upload: max 1MB (1,048,576 bytes)","operationId":"CreatePronunciationDict","tags":["Pronunciation Dictionaries"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePronunciationDictRequest"}},"multipart/form-data":{"schema":{"type":"object","required":["name","file"],"properties":{"name":{"type":"string","description":"Human-readable name. Must be unique within the organization.","minLength":1,"maxLength":255,"example":"Brand Names"},"file":{"type":"string","format":"binary","description":"Dictionary file to upload. Supported formats: PLS/XML (.pls, .xml) and plain text (.txt). Max size: 1MB (1,048,576 bytes)."}}}}}},"responses":{"201":{"description":"Pronunciation dictionary created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictResponse"}}}},"401":{"description":"Unauthorized. Invalid or missing API key."},"422":{"description":"Validation error or organization limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"},"examples":{"validation_error":{"summary":"Validation failed","value":{"errors":[{"code":"90202","title":"Validation failed","detail":"items must have at least one item","source":{"pointer":"/items"}}]}},"limit_exceeded":{"summary":"Organization limit exceeded","value":{"errors":[{"code":"90203","title":"Limit exceeded","detail":"Maximum number of pronunciation dictionaries (50) reached","source":{"pointer":"/"}}]}},"duplicate_name":{"summary":"Duplicate dictionary name","value":{"errors":[{"code":"90202","title":"Validation failed","detail":"organization_id, name a dictionary with this name already exists","source":{"pointer":"/organization_id, name"}}]}}}}}}}}},"/pronunciation_dicts/{id}":{"delete":{"summary":"Delete a pronunciation dictionary","description":"Permanently delete a pronunciation dictionary.","operationId":"DeletePronunciationDict","tags":["Pronunciation Dictionaries"],"parameters":[{"$ref":"#/components/parameters/pronunciation_dict_id"}],"responses":{"204":{"description":"Dictionary deleted successfully. No content returned."},"401":{"description":"Unauthorized. Invalid or missing API key."},"404":{"description":"Pronunciation dictionary not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"}}}}}},"get":{"summary":"Get a pronunciation dictionary","description":"Retrieve a single pronunciation dictionary by ID.","operationId":"GetPronunciationDict","tags":["Pronunciation Dictionaries"],"parameters":[{"$ref":"#/components/parameters/pronunciation_dict_id"}],"responses":{"200":{"description":"The requested pronunciation dictionary.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictResponse"}}}},"401":{"description":"Unauthorized. Invalid or missing API key."},"404":{"description":"Pronunciation dictionary not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"},"example":{"errors":[{"code":"90201","title":"Pronunciation dictionary not found","detail":"The requested pronunciation dictionary does not exist"}]}}}}}},"patch":{"summary":"Update a pronunciation dictionary","description":"Update the name and/or items of an existing pronunciation dictionary. Uses optimistic locking — if the dictionary was modified concurrently, the request returns 409 Conflict.","operationId":"UpdatePronunciationDict","tags":["Pronunciation Dictionaries"],"parameters":[{"$ref":"#/components/parameters/pronunciation_dict_id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePronunciationDictRequest"}}}},"responses":{"200":{"description":"Pronunciation dictionary updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationDictResponse"}}}},"401":{"description":"Unauthorized. Invalid or missing API key."},"404":{"description":"Pronunciation dictionary not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"}}}},"409":{"description":"Conflict. The dictionary was modified concurrently. Re-fetch and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"},"example":{"errors":[{"code":"90200","title":"Pronunciation dictionary error","detail":"Dictionary was modified concurrently, please retry"}]}}}},"422":{"description":"Validation error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorResponse"}}}}}}},"/public_internet_gateways":{"get":{"summary":"List all Public Internet Gateways","description":"Returns a paginated list of the public internet gateways on your account, with support for filtering.","operationId":"ListPublicInternetGateways","tags":["Public Internet Gateways"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[network_id]","schema":{"type":"object","properties":{"network_id":{"type":"string","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","description":"The associated network id to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicInternetGatewayRead"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a Public Internet Gateway","description":"Requests creation of a public internet gateway on the specified network, giving the network internet egress. Creation is asynchronous, so the request is accepted and completes in the background.","operationId":"CreatePublicInternetGateway","tags":["Public Internet Gateways"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInternetGatewayCreate"}}},"required":true},"responses":{"202":{"description":"Creation request accepted. Provisioning is asynchronous; poll GET /public_internet_gateways/{id} with the returned id to check status.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicInternetGatewayRead"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/public_internet_gateways/{id}":{"delete":{"summary":"Delete a Public Internet Gateway","description":"Deletes the specified public internet gateway, removing internet egress through it.","operationId":"DeletePublicInternetGateway","tags":["Public Internet Gateways"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicInternetGatewayRead"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"get":{"summary":"Retrieve a Public Internet Gateway","description":"Returns the details of a single public internet gateway by its identifier.","operationId":"GetPublicInternetGateway","tags":["Public Internet Gateways"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicInternetGatewayRead"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/queues":{"get":{"summary":"List queues","description":"List all queues for the authenticated user.","operationId":"ListQueues","tags":["Queue Commands"],"parameters":[{"name":"page[number]","in":"query","description":"The page number to load","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"page[size]","in":"query","description":"The size of the page","required":false,"schema":{"type":"integer","minimum":1,"maximum":250,"default":20}}],"responses":{"200":{"description":"Successful response with a list of queues.","content":{"application/json":{"schema":{"type":"object","title":"List Queues Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Queue"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"}}},"post":{"summary":"Create a queue","description":"Creates a new call queue with the provided configuration and returns the created queue.","operationId":"CreateQueue","tags":["Queue Commands"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQueueRequest"}}}},"responses":{"200":{"description":"Successful response with details about a queue.","content":{"application/json":{"schema":{"type":"object","title":"Queue Response","properties":{"data":{"$ref":"#/components/schemas/Queue"}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"}}}},"/queues/{queue_name}":{"delete":{"summary":"Delete a queue","description":"Permanently deletes the specified call queue from your account.","operationId":"DeleteQueue","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Queue deleted successfully."},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"404":{"$ref":"#/components/responses/NotFoundResponse"}}},"get":{"summary":"Retrieve a call queue","description":"Returns the details of an existing call queue, including its current configuration.","operationId":"RetrieveCallQueue","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a queue.","content":{"application/json":{"schema":{"type":"object","title":"Queue Response","properties":{"data":{"$ref":"#/components/schemas/Queue"}}}}}},"404":{"$ref":"#/components/responses/NotFoundResponse"}}},"post":{"summary":"Update a queue","description":"Update properties of an existing call queue.","operationId":"UpdateQueue","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQueueRequest"}}}},"responses":{"200":{"description":"Successful response with details about a queue.","content":{"application/json":{"schema":{"type":"object","title":"Queue Response","properties":{"data":{"$ref":"#/components/schemas/Queue"}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"404":{"$ref":"#/components/responses/NotFoundResponse"},"422":{"$ref":"#/components/responses/UnprocessableEntityResponse"}}}},"/queues/{queue_name}/calls":{"get":{"summary":"Retrieve calls from a queue","description":"Retrieve the list of calls in an existing queue","operationId":"ListQueueCalls","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/call-control_PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of calls in a queue.","content":{"application/json":{"schema":{"type":"object","title":"List Queue Calls Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/QueueCall"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"404":{"$ref":"#/components/responses/NotFoundResponse"}}}},"/queues/{queue_name}/calls/{call_control_id}":{"delete":{"summary":"Force remove a call from a queue","description":"Removes an inactive call from a queue. If the call is no longer active, use this command to remove it from the queue.","operationId":"RemoveQueueCall","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/CallControlId"}],"responses":{"204":{"description":"Call successfully removed from the queue"},"404":{"$ref":"#/components/responses/NotFoundResponse"}}},"get":{"summary":"Retrieve a call from a queue","description":"Retrieve an existing call from an existing queue","operationId":"RetrieveCallFromQueue","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/CallControlId"}],"responses":{"200":{"description":"Successful response with details about a call in a queue.","content":{"application/json":{"schema":{"type":"object","title":"Queue Call Response","properties":{"data":{"$ref":"#/components/schemas/QueueCall"}}}}}},"404":{"$ref":"#/components/responses/NotFoundResponse"}}},"patch":{"summary":"Update queued call","description":"Update queued call's keep_after_hangup flag","operationId":"UpdateCallInQueue","tags":["Queue Commands"],"parameters":[{"name":"queue_name","description":"Uniquely identifies the queue by name","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/CallControlId"}],"requestBody":{"description":"Update queued call request.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQueuedCallRequest"}}}},"responses":{"204":{"description":"Call has been successfully updated."},"404":{"$ref":"#/components/responses/NotFoundResponse"}}}},"/rcs/agents":{"get":{"tags":["RCS Agents"],"summary":"List RCS agents","description":"Lists RCS agents owned by the authenticated organization, optionally filtered by brand.","operationId":"ListRcsAgents","parameters":[{"name":"brand_id","in":"query","required":false,"description":"Only return agents belonging to this brand.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"RCS agents owned by the organization.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AgentResponse"}}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"422":{"$ref":"#/components/responses/ValidationError"}}},"post":{"tags":["RCS Agents"],"summary":"Create an RCS agent","description":"Creates an editable RCS agent draft under a brand. The `Idempotency-Key` is scoped to the authenticated organization. Reusing the key with the same request returns the original agent, while reusing it with a different request returns a conflict.","operationId":"CreateRcsAgent","parameters":[{"$ref":"#/components/parameters/rcs-registration_IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCreateRequest"}}}},"responses":{"201":{"description":"The agent draft was created or replayed from the idempotency record.","headers":{"Idempotent-Replayed":{"description":"Present with value `true` when a successful response was replayed for the supplied idempotency key.","schema":{"type":"boolean"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"400":{"$ref":"#/components/responses/rcs-registration_BadRequest"},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"},"503":{"$ref":"#/components/responses/DependencyUnavailable"}}}},"/rcs/agents/{id}":{"get":{"tags":["RCS Agents"],"summary":"Retrieve an RCS agent","description":"Retrieves an RCS agent, section statuses, test devices, carrier approvals, and provider capabilities.","operationId":"RetrieveRcsAgent","parameters":[{"$ref":"#/components/parameters/AgentId"}],"responses":{"200":{"description":"The requested RCS agent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"}}},"patch":{"tags":["RCS Agents"],"summary":"Update an RCS agent","description":"Updates one or more fields on an agent while its status is `CREATED`. Submitted agents cannot be changed through this endpoint.","operationId":"UpdateRcsAgent","parameters":[{"$ref":"#/components/parameters/AgentId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUpdateRequest"}}}},"responses":{"200":{"description":"The updated RCS agent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"},"503":{"$ref":"#/components/responses/DependencyUnavailable"}}}},"/rcs/agents/{id}/carrier_approvals":{"get":{"tags":["RCS Agents"],"summary":"List RCS agent carrier approvals","description":"Lists carrier approval records for an RCS agent. The provider may expose per-carrier, hub-level, or bot-level approval status.","operationId":"ListRcsAgentCarrierApprovals","parameters":[{"$ref":"#/components/parameters/AgentId"}],"responses":{"200":{"description":"Carrier approval records for the agent.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CarrierApprovalResponse"}}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"}}}},"/rcs/agents/{id}/launch":{"post":{"tags":["RCS Agents"],"summary":"Submit an RCS agent for launch","description":"Adds the campaign and testing configuration, then starts asynchronous carrier launch. Agent basics must already be submitted. Repeating a launch that is already in progress returns the current agent without creating new work.","operationId":"LaunchRcsAgent","parameters":[{"$ref":"#/components/parameters/AgentId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentLaunchRequest"}}}},"responses":{"202":{"description":"The launch submission was accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"}}}},"/rcs/agents/{id}/submit":{"post":{"tags":["RCS Agents"],"summary":"Submit RCS agent basics","description":"Starts asynchronous provider provisioning and submits the agent's basic configuration. The brand must be `VERIFIED`. Repeating this request for an in-progress agent returns its current state without creating new work.","operationId":"SubmitRcsAgent","parameters":[{"$ref":"#/components/parameters/AgentId"}],"responses":{"202":{"description":"The basic agent submission was accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"}}}},"/rcs/agents/{id}/test_devices":{"get":{"tags":["RCS Agents"],"summary":"List RCS agent test devices","description":"Lists test devices attached to an RCS agent.","operationId":"ListRcsAgentTestDevices","parameters":[{"$ref":"#/components/parameters/AgentId"}],"responses":{"200":{"description":"Test devices attached to the agent.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TestDeviceResponse"}}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"}}},"post":{"tags":["RCS Agents"],"summary":"Add an RCS agent test device","description":"Adds an RCS-capable test number after provider agent creation. Repeating the request for a number already attached to the agent returns the existing test device.","operationId":"AddRcsAgentTestDevice","parameters":[{"$ref":"#/components/parameters/AgentId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestDeviceCreateRequest"}}}},"responses":{"201":{"description":"The test device was added or already existed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestDeviceResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"},"502":{"$ref":"#/components/responses/ProviderError"}}}},"/rcs/agents/{id}/test_devices/{test_device_id}":{"delete":{"tags":["RCS Agents"],"summary":"Remove an RCS agent test device","description":"Removes a test device from an RCS agent and its provider registration.","operationId":"RemoveRcsAgentTestDevice","parameters":[{"$ref":"#/components/parameters/AgentId"},{"$ref":"#/components/parameters/TestDeviceId"}],"responses":{"204":{"description":"The test device was removed."},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"502":{"$ref":"#/components/responses/ProviderError"}}}},"/rcs/brands":{"get":{"tags":["RCS Brands"],"summary":"List RCS brands","description":"Lists RCS brands owned by the authenticated organization.","operationId":"ListRcsBrands","responses":{"200":{"description":"RCS brands owned by the organization.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BrandResponse"}}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"}}},"post":{"tags":["RCS Brands"],"summary":"Create an RCS brand","description":"Creates an editable RCS brand draft. Creating the draft does not begin external review.","operationId":"CreateRcsBrand","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandCreateRequest"}}}},"responses":{"201":{"description":"The brand draft was created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"},"503":{"$ref":"#/components/responses/DependencyUnavailable"}}}},"/rcs/brands/{id}":{"get":{"tags":["RCS Brands"],"summary":"Retrieve an RCS brand","description":"Retrieves an RCS brand and its current lifecycle status.","operationId":"RetrieveRcsBrand","parameters":[{"$ref":"#/components/parameters/BrandId"}],"responses":{"200":{"description":"The requested RCS brand.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"}}},"patch":{"tags":["RCS Brands"],"summary":"Update an RCS brand","description":"Updates one or more fields on a brand while its status is `CREATED`. Submitted brands cannot be changed.","operationId":"UpdateRcsBrand","parameters":[{"$ref":"#/components/parameters/BrandId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandUpdateRequest"}}}},"responses":{"200":{"description":"The updated RCS brand.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"},"422":{"$ref":"#/components/responses/ValidationError"},"503":{"$ref":"#/components/responses/DependencyUnavailable"}}}},"/rcs/brands/{id}/submit":{"post":{"tags":["RCS Brands"],"summary":"Submit an RCS brand","description":"Starts asynchronous provider provisioning and external review for a brand. Repeating this request for an in-progress brand returns its current state without creating new work.","operationId":"SubmitRcsBrand","parameters":[{"$ref":"#/components/parameters/BrandId"}],"responses":{"202":{"description":"The brand submission was accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandResponse"}}}},"401":{"$ref":"#/components/responses/rcs-registration_Unauthorized"},"404":{"$ref":"#/components/responses/rcs-registration_NotFound"},"409":{"$ref":"#/components/responses/rcs-registration_Conflict"}}}},"/recording_transcriptions":{"get":{"summary":"List all recording transcriptions","description":"Returns a list of your recording transcriptions.","operationId":"getRecordingTranscriptions","tags":["Call Recordings"],"parameters":[{"$ref":"#/components/parameters/call-recordings_PageConsolidated"},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Filter recording transcriptions by various attributes.","schema":{"type":"object","properties":{"recording_id":{"type":"string","format":"uuid","example":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","description":"If present, transcriptions will be filtered to those associated with the given recording."},"created_at":{"type":"object","additionalProperties":false,"properties":{"gte":{"type":"string","example":"2019-03-29T11:10:00Z","description":"Returns only transcriptions created later than or at given ISO 8601 datetime."},"lte":{"type":"string","example":"2019-03-29T11:10:00Z","description":"Returns only transcriptions created earlier than or at given ISO 8601 datetime."}}}}}}],"responses":{"200":{"description":"A response listing multiple recording transcriptions.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RecordingTranscription"}},"meta":{"$ref":"#/components/schemas/call-recordings_CursorPaginationMeta"}}}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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"}}}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}},"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"}}}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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"}}}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"403":{"$ref":"#/components/responses/ForbiddenResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"500":{"$ref":"#/components/responses/call-recordings_InternalServerErrorResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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"}}}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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"}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}},"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"}}}},"401":{"$ref":"#/components/responses/call-recordings_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/call-recordings_NotFoundResponse"},"default":{"$ref":"#/components/responses/call-recordings_GenericErrorResponse"}}}},"/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":{"application/json":{"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"}}],"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"}}}}}},"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."}]}}}},"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/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"}}}},"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."}]}}}},"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."}]}}}},"default":{"$ref":"#/components/responses/documents_GenericErrorResponse"}}}},"/room_compositions":{"get":{"summary":"View a list of room compositions.","description":"Returns a paginated list of room compositions. Filter compositions by creation date, room session, or processing status.","operationId":"ListRoomCompositions","x-endpoint-cost":"medium","tags":["Room Compositions"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[session_id], filter[status]","schema":{"type":"object","properties":{"date_created_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room compositions created on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room compositions created on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room compositions created on or before that date."}}},"session_id":{"type":"string","format":"uuid","example":"92e7d459-bcc5-4386-9f5f-6dd14a82588d","description":"The session_id for filtering room compositions."},"status":{"type":"string","example":"completed","enum":["completed","processing","enqueued"],"description":"The status for filtering room compositions."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"200":{"description":"List room compositions response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RoomComposition"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}},"post":{"summary":"Create a room composition.","description":"Asynchronously create a room composition.","operationId":"CreateRoomComposition","tags":["Room Compositions"],"x-endpoint-cost":"heavy","requestBody":{"description":"Parameters that can be defined during room composition creation.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoomCompositionRequest"}}}},"responses":{"202":{"description":"Composition request accepted. Poll GET /room_compositions/{room_composition_id} with the returned id until the composition completes.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RoomComposition"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"}}}},"/room_compositions/{room_composition_id}":{"delete":{"summary":"Delete a room composition.","description":"Synchronously delete a room composition.","operationId":"DeleteRoomComposition","tags":["Room Compositions"],"x-endpoint-cost":"medium","parameters":[{"name":"room_composition_id","in":"path","description":"The unique identifier of a room composition.","required":true,"schema":{"type":"string","format":"uuid","example":"5219b3af-87c6-4c08-9b58-5a533d893e21"}}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}}},"get":{"summary":"View a room composition.","operationId":"ViewRoomComposition","tags":["Room Compositions"],"x-endpoint-cost":"light","parameters":[{"name":"room_composition_id","in":"path","description":"The unique identifier of a room composition.","required":true,"schema":{"type":"string","format":"uuid","example":"5219b3af-87c6-4c08-9b58-5a533d893e21"}}],"responses":{"200":{"description":"Get room composition response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RoomComposition"}}}}}},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}},"description":"Returns the composition identified by `room_composition_id`, including its room and session, processing status, media details, video layout, lifecycle timestamps, and download URL."}},"/room_participants":{"get":{"summary":"View a list of room participants.","description":"Returns a paginated list of room participants across sessions. Filter participants by session, join, update, or leave date and by participant context.","operationId":"ListRoomParticipants","x-endpoint-cost":"medium","tags":["Room Participants"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte], filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context], filter[session_id]","schema":{"type":"object","properties":{"date_joined_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on or before that date."}}},"date_updated_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on or before that date."}}},"date_left_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on or before that date."}}},"context":{"type":"string","example":"Alice","description":"Filter room participants based on the context."},"session_id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Session_id for filtering room participants."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"200":{"description":"List room participants response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RoomParticipant"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_participants/{room_participant_id}":{"get":{"summary":"View a room participant.","operationId":"ViewRoomParticipant","tags":["Room Participants"],"x-endpoint-cost":"light","parameters":[{"name":"room_participant_id","in":"path","description":"The unique identifier of a room participant.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"responses":{"200":{"description":"Get room participant response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RoomParticipant"}}}}}},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}},"description":"Returns the participant identified by `room_participant_id`, including its session, context, and join, update, and leave timestamps."}},"/room_recordings":{"delete":{"summary":"Delete several room recordings in a bulk.","description":"Deletes the room recordings that match the supplied filters and returns the number of recordings affected. Filters support room, session, participant, recording type, status, duration, and start or end dates.","operationId":"DeleteRoomRecordings","x-endpoint-cost":"heavy","tags":["Room Recordings"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte], filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]","schema":{"type":"object","properties":{"date_ended_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on or before that date."}}},"date_started_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on or before that date."}}},"room_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"room_id for filtering room recordings."},"participant_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"participant_id for filtering room recordings."},"session_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"session_id for filtering room recordings."},"status":{"type":"string","example":"completed","description":"status for filtering room recordings."},"type":{"type":"string","example":"audio","description":"type for filtering room recordings."},"duration_secs":{"type":"integer","example":20,"description":"duration_secs greater or equal for filtering room recordings."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"201":{"description":"Successful response for Bulk Delete Room recordings requests","content":{"application/json":{"schema":{"type":"object","title":"Bulk Room Recordings Delete Response","properties":{"data":{"type":"object","properties":{"room_recordings":{"type":"integer","description":"Amount of room recordings affected","example":5}}}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"}}},"get":{"summary":"View a list of room recordings.","description":"Returns a paginated list of room recordings. Filter recordings by room, session, participant, recording type, status, duration, or start and end dates.","operationId":"ListRoomRecordings","x-endpoint-cost":"medium","tags":["Room Recordings"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte], filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]","schema":{"type":"object","properties":{"date_ended_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings ended on or before that date."}}},"date_started_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room recordings started on or before that date."}}},"room_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"room_id for filtering room recordings."},"participant_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"participant_id for filtering room recordings."},"session_id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"session_id for filtering room recordings."},"status":{"type":"string","example":"completed","description":"status for filtering room recordings."},"type":{"type":"string","example":"audio","description":"type for filtering room recordings."},"duration_secs":{"type":"integer","example":20,"description":"duration_secs greater or equal for filtering room recordings."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"200":{"description":"List room recordings response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RoomRecording"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_recordings/{room_recording_id}":{"delete":{"summary":"Delete a room recording.","description":"Synchronously deletes the specified video room recording. The recording's media is removed permanently.","operationId":"DeleteRoomRecording","tags":["Room Recordings"],"x-endpoint-cost":"medium","parameters":[{"name":"room_recording_id","in":"path","description":"The unique identifier of a room recording.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}}},"get":{"summary":"View a room recording.","operationId":"ViewRoomRecording","tags":["Room Recordings"],"x-endpoint-cost":"light","parameters":[{"name":"room_recording_id","in":"path","description":"The unique identifier of a room recording.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"responses":{"200":{"description":"Get room recording response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RoomRecording"}}}}}},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}},"description":"Returns the recording identified by `room_recording_id`, including its room, session, participant, status, media details, lifecycle timestamps, and download URL."}},"/room_sessions":{"get":{"summary":"View a list of room sessions.","description":"Returns a paginated list of room sessions across the account. Filter sessions by room, creation, update, or end date and active status, and use `include_participants` to include participant records.","operationId":"ListRoomSessions","x-endpoint-cost":"medium","tags":["Room Sessions"],"parameters":[{"name":"include_participants","in":"query","description":"To decide if room participants should be included in the response.","schema":{"type":"boolean","example":true}},{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[room_id], filter[active]","schema":{"type":"object","properties":{"date_created_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions created on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions created on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions created on or before that date."}}},"date_updated_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions updated on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions updated on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions updated on or before that date."}}},"date_ended_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions ended on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions ended on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room sessions ended on or before that date."}}},"room_id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Room_id for filtering room sessions."},"active":{"type":"boolean","example":true,"description":"Filter active or inactive room sessions."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"200":{"description":"List room sessions response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RoomSession"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_sessions/{room_session_id}":{"get":{"summary":"View a room session.","operationId":"ViewRoomSession","tags":["Room Sessions"],"x-endpoint-cost":"light","parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}},{"name":"include_participants","in":"query","description":"To decide if room participants should be included in the response.","schema":{"type":"boolean","example":true}}],"responses":{"200":{"description":"Get room session response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RoomSession"}}}}}},"404":{"$ref":"#/components/responses/video_ResourceNotFound"}},"description":"Returns the room session identified by `room_session_id`, including its room, active status, and lifecycle timestamps. Use `include_participants` to include its participant records."}},"/room_sessions/{room_session_id}/actions/end":{"post":{"summary":"End a room session.","description":"Note: this will also kick all participants currently present in the room","operationId":"EndSession","x-endpoint-cost":"medium","tags":["Room Sessions"],"security":[],"parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"responses":{"200":{"description":"Success Action Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"result":{"type":"string","example":"ok"}}}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_sessions/{room_session_id}/actions/kick":{"post":{"summary":"Kick participants from a room session.","description":"Removes the selected participants from the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action.","operationId":"KickParticipantInSession","x-endpoint-cost":"medium","tags":["Room Sessions"],"security":[],"parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"requestBody":{"description":"Parameters that can be defined during Kick action.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionsParticipantsRequest"}}}},"responses":{"200":{"description":"Success Action Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"result":{"type":"string","example":"ok"}}}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_sessions/{room_session_id}/actions/mute":{"post":{"summary":"Mute participants in room session.","description":"Mutes the selected participants in the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action.","operationId":"MuteParticipantInSession","x-endpoint-cost":"medium","tags":["Room Sessions"],"security":[],"parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"requestBody":{"description":"Parameters that can be defined during Mute action.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionsParticipantsRequest"}}}},"responses":{"200":{"description":"Success Action Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"result":{"type":"string","example":"ok"}}}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_sessions/{room_session_id}/actions/unmute":{"post":{"summary":"Unmute participants in room session.","description":"Unmutes the selected participants in the specified room session. Apply the action to a list of participant IDs or to `all`, with optional participant IDs excluded from the action.","operationId":"UnmuteParticipantInSession","x-endpoint-cost":"medium","tags":["Room Sessions"],"security":[],"parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}}],"requestBody":{"description":"Parameters that can be defined during Unmute action.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionsParticipantsRequest"}}}},"responses":{"200":{"description":"Success Action Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"result":{"type":"string","example":"ok"}}}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/room_sessions/{room_session_id}/participants":{"get":{"summary":"View a list of room participants.","description":"Returns a paginated list of participants for the specified room session. Filter participants by join, update, or leave date and by participant context.","operationId":"RetrieveListRoomParticipants","x-endpoint-cost":"medium","tags":["Room Sessions"],"parameters":[{"name":"room_session_id","in":"path","description":"The unique identifier of a room session.","required":true,"schema":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"}},{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte], filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte], filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context]","schema":{"type":"object","properties":{"date_joined_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that joined on or before that date."}}},"date_updated_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants updated on or before that date."}}},"date_left_at":{"type":"object","properties":{"eq":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on that date."},"gte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on or after that date."},"lte":{"type":"string","format":"date","example":"2021-04-25","description":"ISO 8601 date for filtering room participants that left on or before that date."}}},"context":{"type":"string","example":"Alice","description":"Filter room participants based on the context."}}}},{"$ref":"#/components/parameters/video_PageConsolidated"}],"responses":{"200":{"description":"List room participants response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RoomParticipant"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"4XX":{"$ref":"#/components/responses/video_GenericErrorResponse"}}}},"/rooms":{"get":{"summary":"View a list of rooms.","description":"Returns a paginated list of rooms. Filter the results by creation or update date and unique name, and use `include_sessions` to include each room’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/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":{}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}}}}},"/session_analysis/metadata/{record_type}":{"get":{"tags":["Session Analysis"],"summary":"Get record type metadata","description":"Returns detailed metadata for a specific record type, including relationships and examples.","operationId":"GetSessionAnalysisRecordTypeMetadata","parameters":[{"name":"record_type","in":"path","required":true,"description":"The record type identifier (e.g. \"call-control\").","schema":{"type":"string"}}],"responses":{"200":{"description":"Record type metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordTypeMetadataResponse"},"example":{"record_type":"call-control","aliases":["call_control"],"product":"Voice","event":"call.hangup","child_relationships":[],"parent_relationships":[],"examples":{"event_id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"meta":{"total_children":0,"total_siblings":0,"total_parents":0,"max_recommended_depth":1}}}}},"404":{"description":"Record type not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}}}}},"/session_analysis/{record_type}/{event_id}":{"get":{"tags":["Session Analysis"],"summary":"Get session analysis","description":"Retrieves a full session analysis tree for a given event, including costs, child events, and product linkages.","operationId":"GetSessionAnalysis","parameters":[{"name":"record_type","in":"path","required":true,"description":"The record type identifier.","schema":{"type":"string"}},{"name":"event_id","in":"path","required":true,"description":"The event identifier (UUID).","schema":{"type":"string","format":"uuid"}},{"name":"include_children","in":"query","required":false,"description":"Whether to include child events in the response.","schema":{"type":"boolean","default":true}},{"name":"max_depth","in":"query","required":false,"description":"Maximum traversal depth for the event tree.","schema":{"type":"integer","minimum":1,"maximum":5,"default":2}},{"name":"expand","in":"query","required":false,"description":"Controls what data to expand on each event node.","schema":{"type":"string","enum":["record","none"],"default":"record"}},{"name":"date_time","in":"query","required":false,"description":"ISO 8601 timestamp or date to narrow index selection for faster lookups. Accepts full datetime (e.g., 2026-03-17T10:00:00Z) or date-only format (e.g., 2026-03-17).","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Session analysis result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisResponse"},"example":{"session_id":"call-123","cost":{"total":"0.056800","currency":"USD"},"root":{"id":"call-123","product":"callcontrol-cdrs","event_name":"callcontrol-cdrs","relationship":null,"cost":{"event_cost":"0.001800","cumulative_cost":"0.056800","currency":"USD"},"links":{"self":"/v2/session_analysis/callcontrol-cdrs/call-123","records":"/v2/detail_records?record_type=callcontrol-cdrs&id=call-123"},"record":{},"children":[]},"meta":{"event_count":3,"products":["ai-voice-assistant","callcontrol-cdrs","inference"]}}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}},"404":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionAnalysisErrorResponse"}}}}}}},"/seti/black_box_test_results":{"get":{"summary":"Retrieve Black Box Test Results","description":"Returns the results of the various black box tests","operationId":"GetBlackBoxTestResults","tags":["SETI Observability"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"required":false,"description":"Consolidated filter parameter (deepObject style). Originally: filter[product]","schema":{"type":"object","properties":{"product":{"type":"string","description":"Filter results for a specific product."}}}}],"responses":{"200":{"description":"A list of black box test results.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlackBoxTestResultSet"}}}}}}},"401":{"description":"Unauthorized"}}}},"/short_codes":{"get":{"summary":"List short codes","operationId":"ListShortCodes","tags":["Short Codes"],"x-group-parameters":"true","parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id]","schema":{"type":"object","properties":{"messaging_profile_id":{"type":"string","description":"Filter by Messaging Profile ID. Use the string `null` for phone numbers without assigned profiles. A synonym for the `/messaging_profiles/{id}/short_codes` endpoint when querying about an extant profile."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response with a list of short codes.","content":{"application/json":{"schema":{"type":"object","title":"List Short Codes Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ShortCode"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns short codes owned by the authenticated account. Apply the documented filters and pagination parameters to narrow the result set."}},"/short_codes/{id}":{"get":{"summary":"Retrieve a short code","operationId":"RetrieveShortCode","tags":["Short Codes"],"parameters":[{"$ref":"#/components/parameters/ShortCodeId"}],"responses":{"200":{"description":"Successful response with details about a short code.","content":{"application/json":{"schema":{"type":"object","title":"Short Code Response","properties":{"data":{"$ref":"#/components/schemas/ShortCode"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}},"description":"Returns the messaging configuration and assignment details for the specified short code."},"patch":{"summary":"Update short code","operationId":"UpdateShortCode","description":"Update the settings for a specific short code. To unbind a short code from a profile, set the `messaging_profile_id` to `null` or an empty string.\nTo add or update tags, include the tags field as an array of strings.","tags":["Short Codes"],"parameters":[{"$ref":"#/components/parameters/ShortCodeId"}],"requestBody":{"description":"Short code update","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateShortCodeRequest"}}}},"responses":{"200":{"description":"Successful response with details about a short code.","content":{"application/json":{"schema":{"type":"object","title":"Short Code Response","properties":{"data":{"$ref":"#/components/schemas/ShortCode"}}}}}},"4XX":{"$ref":"#/components/responses/messaging_GenericErrorResponse_0b38e7044b"}}}},"/sim_card_actions":{"get":{"operationId":"ListSimCardActions","summary":"List SIM card actions","description":"This API lists a paginated collection of SIM card actions. It enables exploring a collection of existing asynchronous operations using specific filters.","tags":["SIM Card Actions"],"parameters":[{"$ref":"#/components/parameters/FilterSIMCardActionsConsolidated"},{"$ref":"#/components/parameters/wireless_PageConsolidated_c5290d5308"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/wireless_SIMCardAction"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_actions/{id}":{"get":{"operationId":"GetSimCardAction","summary":"Get SIM card action details","description":"This API fetches detailed information about a SIM card action to follow-up on an existing asynchronous operation.","tags":["SIM Card Actions"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_SIMCardAction"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_data_usage_notifications":{"get":{"x-latency-category":"background","operationId":"ListDataUsageNotifications","summary":"List SIM card data usage notifications","description":"Lists a paginated collection of SIM card data usage notifications. It enables exploring the collection using specific filters.","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"},{"$ref":"#/components/parameters/FilterSIMCardId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"post":{"operationId":"PostSimCardDataUsageNotification","summary":"Create a new SIM card data usage notification","description":"Creates a new SIM card data usage notification.","tags":["SIM Cards"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sim_card_id":{"type":"string","format":"uuid","description":"The identification UUID of the related SIM card resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"threshold":{"type":"object","description":"Data usage threshold that will trigger the notification.","properties":{"amount":{"type":"string","example":"2048.1"},"unit":{"type":"string","example":"MB","enum":["MB","GB"]}}}},"required":["sim_card_id","threshold"]}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_data_usage_notifications/{id}":{"delete":{"operationId":"DeleteSimCardDataUsageNotifications","summary":"Delete SIM card data usage notifications","description":"Delete the SIM Card Data Usage Notification.","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"get":{"x-latency-category":"background","operationId":"GetSimCardDataUsageNotification","summary":"Get a single SIM card data usage notification","description":"Get a single SIM Card Data Usage Notification.","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}}}}}},"404":{"$ref":"#/components/responses/ResourceNotFound"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"patch":{"operationId":"PatchSimCardDataUsageNotification","summary":"Updates information for a SIM Card Data Usage Notification","description":"Updates information for a SIM Card Data Usage Notification.","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SimCardDataUsageNotification"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_group_actions":{"get":{"operationId":"GetSimCardGroupActions","summary":"List SIM card group actions","description":"This API allows listing a paginated collection a SIM card group actions. It allows to explore a collection of existing asynchronous operation using specific filters.","tags":["SIM Card Group Actions"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"},{"$ref":"#/components/parameters/FilterSIMCardGroupId"},{"$ref":"#/components/parameters/FilterBasicStatusLifecycle"},{"name":"filter[type]","description":"Filter by action type.","in":"query","required":false,"schema":{"type":"string","enum":["set_private_wireless_gateway","remove_private_wireless_gateway","set_wireless_blocklist","remove_wireless_blocklist"],"example":"set_private_wireless_gateway"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SIMCardGroupAction"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_group_actions/{id}":{"get":{"operationId":"GetSimCardGroupAction","summary":"Get SIM card group action details","description":"This API allows fetching detailed information about a SIM card group action resource to make follow-ups in an existing asynchronous operation.","tags":["SIM Card Group Actions"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroupAction"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_groups":{"get":{"tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"},{"name":"filter[name]","description":"A valid SIM card group name.","schema":{"type":"string","example":"My Test Group"},"in":"query"},{"name":"filter[private_wireless_gateway_id]","description":"A Private Wireless Gateway ID associated with the group.","schema":{"format":"uuid","type":"string","example":"7606c6d3-ff7c-49c1-943d-68879e9d584d"},"in":"query"},{"name":"filter[wireless_blocklist_id]","description":"A Wireless Blocklist ID associated with the group.","schema":{"format":"uuid","type":"string","example":"0f3f490e-c4d3-4cf5-838a-9970f10ee259"},"in":"query"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SearchedSIMCardGroup"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"operationId":"GetAllSimCardGroups","summary":"Get all SIM card groups","description":"Get all SIM card groups belonging to the user that match the given filters."},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardGroupCreate"}}},"required":true},"tags":["SIM Card Groups"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroup"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"operationId":"CreateSimCardGroup","summary":"Create a SIM card group","description":"Creates a new SIM card group and returns it. Groups let you apply shared settings to a set of SIM cards."}},"/sim_card_groups/{id}":{"delete":{"tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/SIMCardGroupId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroup"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"operationId":"DeleteSimCardGroup","summary":"Delete a SIM card group","description":"Permanently deletes the specified SIM card group from your account."},"get":{"tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/SIMCardGroupId"},{"$ref":"#/components/parameters/IncludeICCIDs"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroup"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"operationId":"GetSimCardGroup","summary":"Get SIM card group","description":"Returns the details regarding a specific SIM card group"},"patch":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardGroupPatch"}}},"required":true},"tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/SIMCardGroupId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroup"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}},"operationId":"UpdateSimCardGroup","summary":"Update a SIM card group","description":"Updates the specified SIM card group's attributes and returns the updated group."}},"/sim_card_groups/{id}/actions/remove_private_wireless_gateway":{"post":{"x-latency-category":"background","summary":"Request Private Wireless Gateway removal from SIM card group","description":"This action will asynchronously remove an existing Private Wireless Gateway definition from a SIM card group. Completing this operation defines that all SIM cards in the SIM card group will get their traffic handled by Telnyx's default mobile network configuration.","operationId":"RemoveSimCardGroupPrivateWirelessGateway","tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/SIMCardGroupId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroupAction"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_card_groups/{id}/actions/remove_wireless_blocklist":{"post":{"x-latency-category":"background","summary":"Request Wireless Blocklist removal from SIM card group","description":"This action asynchronously removes the Wireless Blocklist assigned to a SIM Card Group. The request returns `404` when the SIM Card Group does not exist and `422` when no Wireless Blocklist is assigned.","operationId":"RemoveWirelessBlocklistForSimCardGroup","tags":["SIM Card Groups"],"parameters":[{"$ref":"#/components/parameters/SIMCardGroupId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardGroupAction"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"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."}]}}}}}},"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"},"401":{"description":"Unauthorized"},"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."}]}}}}}},"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.<br/>\nFor each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n\nThe overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions) API.\n","operationId":"DisableVoiceBulk","tags":["SIM Cards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sim_card_group_id"],"properties":{"sim_card_group_id":{"type":"string","example":"6b14e151-8493-4fa1-8664-1cc4e6d14158"}}}}}},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BulkSIMCardAction"}}}}},"description":"Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track progress."},"422":{"$ref":"#/components/responses/wireless_UnprocessableEntity_c5290d5308"}}}},"/sim_cards/actions/bulk_enable_voice":{"post":{"x-latency-category":"background","summary":"Request bulk enabling voice on SIM cards.","description":"This API triggers an asynchronous operation to enable voice on SIM cards belonging to a specified SIM Card Group.<br/>\nFor each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n\nThe overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions) API.\n","operationId":"EnableVoiceBulk","tags":["SIM Cards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sim_card_group_id"],"properties":{"sim_card_group_id":{"type":"string","example":"6b14e151-8493-4fa1-8664-1cc4e6d14158"},"connection_id":{"type":"string","description":"The identifier of the Mobile Voice Connection to associate with the SIM cards. The connection must be owned by the same user and of type <code>mobile_voice</code>. 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."},"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":{"$ref":"#/components/responses/wireless_UnprocessableEntity_c5290d5308"}}}},"/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.<br/>\nFor each SIM Card a SIM Card Action will be generated. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"SetPublicIPsBulk","tags":["SIM Cards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sim_card_ids"],"properties":{"sim_card_ids":{"type":"array","items":{"$ref":"#/components/schemas/wireless_Id_c5290d5308"},"example":["6b14e151-8493-4fa1-8664-1cc4e6d14158"]}}}}}},"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BulkSIMCardAction"}}}}},"description":"Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track progress."},"422":{"$ref":"#/components/responses/wireless_UnprocessableEntity_c5290d5308"}}}},"/sim_cards/actions/validate_registration_codes":{"post":{"summary":"Validate SIM cards registration codes","tags":["SIM Cards"],"description":"It validates whether SIM card registration codes are valid or not.","operationId":"ValidateRegistrationCodes","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"registration_codes":{"type":"array","items":{"type":"string"}}},"description":"The object containing the Array of SIM card registration codes.","example":{"registration_codes":["123456780","1231231230"]}}}}},"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SIMCardRegistrationCodeValidations"}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}":{"delete":{"summary":"Deletes a SIM card","description":"The SIM card will be decommissioned, removed from your account and you will stop being charged.<br />The SIM card won't be able to connect to the network after the deletion is completed, thus making it impossible to consume data.<br/>\nTransitioning to the disabled state may take a period of time.\nUntil the transition is completed, the SIM card status will be disabling <code>disabling</code>.<br />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.<br/>\nThe API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the disabled state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"DisableSimCard","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_SIMCardAction"}}}}},"description":"Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress."},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/actions/disable_voice":{"post":{"x-latency-category":"background","summary":"Request disabling voice on a SIM card","description":"This API disables voice calling on a SIM card. The SIM card will no longer be able to make or receive calls.<br/>\nThe API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"DisableVoiceSimCard","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_SIMCardAction"}}}}},"description":"Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"SIM card not found":{"value":{"errors":[{"code":"404","title":"Resource not found","detail":"The SIM card was not found.","source":{"pointer":"/id"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/404"}}]}}}}},"description":"Unprocessable Entity"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/actions/enable":{"post":{"x-latency-category":"background","summary":"Request a SIM card enable","description":"This API enables a SIM card, connecting it to the network and making it possible to consume data.<br/>\nTo enable a SIM card, it must be associated with a SIM card group.<br/>\nThe API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the enabled state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"EnableSimCard","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_SIMCardAction"}}}}},"description":"Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress."},"422":{"$ref":"#/components/responses/wireless_UnprocessableEntity_c5290d5308"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/actions/enable_voice":{"post":{"x-latency-category":"background","summary":"Request enabling voice on a SIM card","description":"This API enables voice calling on a SIM card. When a <code>connection_id</code> is provided, the SIM is associated with the specified Mobile Voice Connection. The connection must be owned by the same user and of type <code>mobile_voice</code>.<br/>\nThe API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"EnableVoiceSimCard","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"connection_id":{"type":"string","description":"The identifier of the Mobile Voice Connection to associate with this SIM card. The connection must be owned by the same user and of type <code>mobile_voice</code>. 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. <br/><br/>\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. <br/><br/>\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. <br/><br/>\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.<br/>\nTo set a SIM card to standby, it must be associated with SIM card group.<br/>\nThe API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the standby state may take a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.\n","operationId":"SetSimCardStandby","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/wireless_SIMCardAction"}}}}},"description":"Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the action id to track progress."},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/activation_code":{"get":{"summary":"Get activation code for an eSIM","description":"It returns the activation code for an eSIM.<br/><br/>\n This API is only available for eSIMs. If the given SIM is a physical SIM card, or has already been installed, an error will be returned.\n","operationId":"GetSimCardActivationCode","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardActivationCode"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/device_details":{"get":{"summary":"Get SIM card device details","description":"It returns the device details where a SIM card is currently being used.\n","operationId":"GetSimCardDeviceDetails","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardDeviceDetails"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/public_ip":{"get":{"summary":"Get SIM card public IP definition","description":"It returns the public IP requested for a SIM card.\n","operationId":"GetSimCardPublicIp","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SIMCardPublicIP"}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/sim_cards/{id}/wireless_connectivity_logs":{"get":{"operationId":"GetWirelessConnectivityLogs","summary":"List wireless connectivity logs","description":"This API allows listing a paginated collection of Wireless Connectivity Logs associated with a SIM Card, for troubleshooting purposes.","tags":["SIM Cards"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"},{"$ref":"#/components/parameters/SIMCardId"}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WirelessConnectivityLog"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}},"description":"Successful Response"},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}}},"/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 <API_KEY>` header.\n\nSupported engines: `Azure`, `Deepgram`, `Google`, `Telnyx`, `xAI`, `Speechmatics`, `Soniox`, `Parakeet`, `Humain`, `Reson8`, `Cohere`.\n\n**Connection flow:**\n1. Open WebSocket with query parameters specifying engine, input format, and language.\n2. Send binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`).\n3. Receive JSON transcript frames with `transcript`, `is_final`, and `confidence` fields.\n4. Close connection when done.","operationId":"TranscriptionOverWs","servers":[{"url":"wss://api.telnyx.com/v2","description":"Telnyx API v2 (WebSocket)"}],"tags":["Speech To Text over WebSockets"],"parameters":[{"$ref":"#/components/parameters/transcription_engine"},{"$ref":"#/components/parameters/input_format"},{"$ref":"#/components/parameters/sample_rate"},{"$ref":"#/components/parameters/language"},{"$ref":"#/components/parameters/interim_results"},{"$ref":"#/components/parameters/model"},{"$ref":"#/components/parameters/endpointing"},{"$ref":"#/components/parameters/redact"},{"$ref":"#/components/parameters/keyterm"},{"$ref":"#/components/parameters/keywords"}],"requestBody":{"description":"Client sends binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`) over the WebSocket. See `SttClientEvent` schema.","content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/SttClientEvent"}}}},"responses":{"101":{"description":"WebSocket connection established. Communication proceeds via binary audio frames (client) and JSON transcript frames (server).\n\n**Client → Server:** Binary audio data (mp3, wav, linear16, or linear32, per `input_format`).\n**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":{"200":{"description":"Key updated"},"201":{"description":"Key created"},"400":{"description":"Bad request — invalid `id`, key name, or request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"KV namespace not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"409":{"description":"Conflict — the namespace is not ready (`status` is not `provision_ok`), or `ttl_secs` was set on a namespace without TTL support","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"413":{"description":"Payload too large — the value exceeds 1 MiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Unprocessable entity — `ttl_secs` is not a positive integer within range, or the unsupported `ttl` parameter was used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}}}}},"/storage/migration_source_coverage":{"get":{"summary":"List Migration Source coverage","deprecated":false,"description":"List the external storage providers and regions supported as migration sources.","operationId":"ListMigrationSourceCoverage","tags":["Data Migration"],"parameters":[],"responses":{"200":{"description":"List Migrations Source Coverage Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MigrationSourceCoverageParams"}},"meta":{"$ref":"#/components/schemas/PaginationMetaSimple"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable Entity"}}}},"/storage/migration_sources":{"get":{"summary":"List all Migration Sources","deprecated":false,"description":"List the migration sources configured on your account. A migration source is an external storage bucket from which data can be migrated into Telnyx Cloud Storage.","operationId":"ListMigrationSources","tags":["Data Migration"],"parameters":[],"responses":{"200":{"description":"List Migration Sources Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MigrationSourceParams"}},"meta":{"$ref":"#/components/schemas/PaginationMetaSimple"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable Entity"}}},"post":{"summary":"Create a Migration Source","deprecated":false,"description":"Create a source from which data can be migrated from.","operationId":"CreateMigrationSource","tags":["Data Migration"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationSourceParams"},"example":{"provider":"aws","source_region":"string","provider_auth":{"access_key":"string","secret_access_key":"string"},"bucket_name":"string"}}}},"responses":{"200":{"description":"Create Migration Source Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationSourceParams"}}},"example":{"data":{"id":"string","provider":"aws","source_region":"string","provider_auth":{"access_key":"string","secret_access_key":"string"},"bucket_name":"string"}}}},"headers":{}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable Entity"}}}},"/storage/migration_sources/{id}":{"delete":{"summary":"Delete a Migration Source","deprecated":false,"description":"Delete a migration source configuration.","operationId":"DeleteMigrationSource","tags":["Data Migration"],"parameters":[{"name":"id","in":"path","description":"Unique identifier for the data migration source.","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Create Migration Source Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationSourceParams"}}},"example":{"data":{"id":"string","provider":"aws","source_region":"string","provider_auth":{"access_key":"string","secret_access_key":"string"},"bucket_name":"string"}}}},"headers":{}},"401":{"description":"Unauthorized"},"404":{"description":"Migration source not found"},"422":{"description":"Unprocessable Entity"}}},"get":{"summary":"Get a Migration Source","deprecated":false,"description":"Retrieve the details of a specific migration source.","operationId":"GetMigrationSource","tags":["Data Migration"],"parameters":[{"name":"id","in":"path","description":"Unique identifier for the data migration source.","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Create Migration Source Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationSourceParams"}}},"example":{"data":{"id":"string","provider":"aws","source_region":"string","provider_auth":{"access_key":"string","secret_access_key":"string"},"bucket_name":"string"}}}},"headers":{}},"401":{"description":"Unauthorized"},"404":{"description":"Migration source not found"},"422":{"description":"Unprocessable Entity"}}}},"/storage/migrations":{"get":{"summary":"List all Migrations","deprecated":false,"description":"Retrieve a list of the storage migrations on your account.","operationId":"ListMigrations","tags":["Data Migration"],"parameters":[],"responses":{"200":{"description":"List Migrations Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MigrationParams"}},"meta":{"$ref":"#/components/schemas/PaginationMetaSimple"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable Entity"}}},"post":{"summary":"Create a Migration","deprecated":false,"description":"Initiate a migration of data from an external provider into Telnyx Cloud Storage. Currently, only S3 is supported.","operationId":"CreateMigration","tags":["Data Migration"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationParams"}}}},"responses":{"200":{"description":"Create Migration Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationParams"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"422":{"description":"Unprocessable Entity"}}}},"/storage/migrations/{id}":{"get":{"summary":"Get a Migration","deprecated":false,"description":"Retrieve the details and status of a specific storage migration.","operationId":"GetMigration","tags":["Data Migration"],"parameters":[{"name":"id","in":"path","description":"Unique identifier for the data migration.","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Create Migration Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationParams"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"404":{"description":"Migration not found"},"422":{"description":"Unprocessable Entity"}}}},"/storage/migrations/{id}/actions/stop":{"post":{"summary":"Stop a Migration","deprecated":false,"description":"Stops the specified in-progress storage migration and returns the updated migration.","operationId":"StopMigration","tags":["Data Migration"],"parameters":[{"name":"id","in":"path","description":"Unique identifier for the data migration.","required":true,"example":"","schema":{"type":"string"}}],"responses":{"200":{"description":"Create Migration Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MigrationParams"}}}}},"headers":{}},"401":{"description":"Unauthorized"},"404":{"description":"Migration not found"},"422":{"description":"Unprocessable Entity"}}}},"/storage/sqldbs":{"get":{"description":"Lists the SQL databases for the authenticated user's organization. Results use page-based pagination (`page[number]`/`page[size]`) and can be filtered and sorted.","tags":["sql databases"],"summary":"List SQL databases","operationId":"ListSqlDatabases","parameters":[{"description":"The page number to load.","name":"page[number]","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"description":"The size of the page. Values above 250 are treated as 250.","name":"page[size]","in":"query","schema":{"type":"integer","minimum":1,"maximum":250,"default":20}},{"description":"Filter by exact name match.","name":"filter[name]","in":"query","schema":{"type":"string"}},{"description":"Filter by provisioning status.","name":"filter[status]","in":"query","schema":{"type":"string","enum":["pending","provision_ok","provision_failed","deleting","delete_failed"]}},{"description":"Sort field; prefix with `-` for descending order.","name":"sort","in":"query","schema":{"type":"string","enum":["name","-name","status","-status","created_at","-created_at"],"default":"-created_at"}}],"responses":{"200":{"description":"SQL databases retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlDatabaseListResponseWrapper"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Validation error — an unsupported `sort` or `filter` value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}}}},"post":{"description":"Creates a new SQL database. Provisioning is asynchronous: the database is returned with status `pending` and becomes usable once it reaches `provision_ok`.","tags":["sql databases"],"summary":"Create a SQL database","operationId":"CreateSqlDatabase","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSqlDatabaseRequest"}}},"description":"SQL database creation request","required":true},"responses":{"201":{"description":"SQL database created successfully (status `pending`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlDatabaseResponseWrapper"}}}},"400":{"description":"Bad request — the request body is malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"409":{"description":"Conflict — a database with this name already exists for your organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Validation error — `name` is missing or not a valid database name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}}}}},"/storage/sqldbs/{id}":{"delete":{"description":"Deletes a SQL database and all of the data it holds. Deletion is asynchronous and returns `202` with an empty body — the record is not removed synchronously. Poll `GET /storage/sqldbs/{id}`, which returns `404` once the database has been purged; there is no durable `deleted` state. A database still bound by a function is refused with `409` unless `force=true`.","tags":["sql databases"],"summary":"Delete a SQL database","operationId":"DeleteSqlDatabase","parameters":[{"description":"SQL database ID","name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"description":"Delete the database even when functions still bind it. Their bindings stop resolving.","name":"force","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"202":{"description":"Accepted — deletion runs asynchronously. The body is empty; poll `GET /storage/sqldbs/{id}` until it returns `404`."},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"SQL database not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"409":{"description":"Conflict — the database is already being deleted, or is still bound by one or more functions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Validation error — `id` is not a valid identifier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}},"503":{"description":"Cannot verify whether the database is still in use; retry, or pass `force=true`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}}}},"get":{"description":"Retrieves a SQL database by its ID, including its provisioning status.","tags":["sql databases"],"summary":"Get a SQL database","operationId":"GetSqlDatabase","parameters":[{"description":"SQL database ID","name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"SQL database retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlDatabaseResponseWrapper"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"SQL database not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Validation error — `id` is not a valid identifier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}}}}},"/storage/sqldbs/{id}/actions/query":{"post":{"description":"Runs SQL against the database and returns the resulting rows — empty for statements that return none, such as DDL. Bind positional `?` placeholders with `params` rather than interpolating values into the SQL string.","tags":["sql databases"],"summary":"Run SQL against a SQL database","operationId":"QuerySqlDatabase","parameters":[{"description":"SQL database ID","name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlDatabaseQueryRequest"}}},"description":"The SQL to run, and any positional bind parameters","required":true},"responses":{"200":{"description":"The SQL result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlDatabaseQueryResponseWrapper"}}}},"400":{"description":"Bad request — the request body is malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"404":{"description":"SQL database not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"409":{"description":"Conflict — the database is not ready yet. This is transient; retry once it reaches `provision_ok`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"413":{"description":"The SQL body exceeds the maximum size (8 MiB)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"422":{"description":"Validation error — an invalid `id`, empty `sql`, an unsupported bind parameter, the wrong number of bind parameters for the placeholders in `sql`, or a SQL error raised by the database. Also returned for a script over roughly 4 MiB, whose detail ends in `stream too large`: that transport ceiling is reached before the 8 MiB `413`, so ~4 MiB is the size to plan against","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericErrorResponse"}}}}}}},"/sub_number_orders":{"get":{"summary":"List sub number orders","description":"Get a paginated list of sub number orders.","operationId":"ListSubNumberOrders","tags":["Phone Number Orders"],"x-group-parameters":"true","parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[status], filter[order_request_id], filter[country_code], filter[phone_number_type], filter[phone_numbers_count], filter[include_phone_numbers]","schema":{"type":"object","properties":{"status":{"type":"string","description":"Filter sub number orders by status."},"order_request_id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c293","description":"ID of the number order the sub number order belongs to"},"country_code":{"type":"string","example":"US","description":"ISO alpha-2 country code."},"phone_number_type":{"type":"string","example":"local","description":"Phone Number Type"},"phone_numbers_count":{"type":"integer","example":1,"description":"Amount of numbers in the sub number order"},"include_phone_numbers":{"type":"boolean","default":false,"description":"Include the first 50 phone number objects in the results, including their per-number regulatory requirement statuses"}}}}],"responses":{"200":{"description":"Successful response with a list of sub number orders.","content":{"application/json":{"schema":{"type":"object","title":"List Sub Number Orders Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/numbers_SubNumberOrder"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/sub_number_orders/report":{"post":{"summary":"Create a sub number orders report","description":"Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded once complete.","operationId":"CreateSubNumberOrdersReport","tags":["Phone Number Orders"],"x-endpoint-cost":"medium","x-latency-category":"background","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubNumberOrdersReportRequest"}}}},"responses":{"202":{"description":"Report generation accepted. Poll GET /sub_number_orders/report/{report_id} with the returned report id until the report is ready.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubNumberOrdersReport"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity"},"500":{"$ref":"#/components/responses/numbers_GenericErrorResponse"}}}},"/sub_number_orders/report/{report_id}":{"get":{"summary":"Retrieve a sub number orders report","description":"Get the status and details of a sub number orders report.","operationId":"GetSubNumberOrdersReport","tags":["Phone Number Orders"],"x-endpoint-cost":"light","parameters":[{"in":"path","name":"report_id","schema":{"type":"string","format":"uuid"},"required":true,"description":"The unique identifier of the sub number orders report","example":"12ade33a-21c0-473b-b055-b3c836e1c293"}],"responses":{"200":{"description":"Sub number orders report response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SubNumberOrdersReport"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity"},"500":{"$ref":"#/components/responses/numbers_GenericErrorResponse"}},"x-latency-category":"responsive"}},"/sub_number_orders/report/{report_id}/download":{"get":{"summary":"Download a sub number orders report","description":"Download the CSV file for a completed sub number orders report. The report status must be 'success' before the file can be downloaded.","operationId":"DownloadSubNumberOrdersReport","tags":["Phone Number Orders"],"x-endpoint-cost":"light","x-latency-category":"background","parameters":[{"in":"path","name":"report_id","schema":{"type":"string","format":"uuid"},"required":true,"description":"The unique identifier of the sub number orders report","example":"12ade33a-21c0-473b-b055-b3c836e1c293"}],"responses":{"200":{"description":"CSV file download","content":{"text/csv":{"schema":{"type":"string","format":"binary"},"example":"id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at\n1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23 14:33:12.376686,2025-05-23 14:33:15.624916"}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity"},"500":{"$ref":"#/components/responses/numbers_GenericErrorResponse"}}}},"/sub_number_orders/{id}/requirement_group":{"post":{"summary":"Update requirement group for a sub number order","operationId":"updateSubNumberOrderRequirementGroup","tags":["Requirement Groups"],"parameters":[{"name":"id","in":"path","description":"The ID of the sub number order","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["requirement_group_id"],"properties":{"requirement_group_id":{"type":"string","format":"uuid","description":"The ID of the requirement group to associate"}}},"example":{"requirement_group_id":"a4b201f9-8646-4e54-a7d2-b2e403eeaf8c"}}}},"responses":{"200":{"description":"Sub number order requirement group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubNumberOrderRequirementGroupResponse"}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}},"description":"Associates an existing requirement group with the specified sub number order. The response contains the updated sub number order requirement-group relationship."}},"/sub_number_orders/{sub_number_order_id}":{"get":{"summary":"Retrieve a sub number order","description":"Returns the details of an existing sub number order, with support for filtering.","operationId":"GetSubNumberOrder","tags":["Phone Number Orders"],"parameters":[{"name":"sub_number_order_id","in":"path","description":"The sub number order ID.","required":true,"schema":{"type":"string"}},{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[include_phone_numbers]","schema":{"type":"object","properties":{"include_phone_numbers":{"type":"boolean","default":false,"description":"Include the first 50 phone number objects in the results"}}}}],"responses":{"200":{"description":"Successful response with details about a sub number order.","content":{"application/json":{"schema":{"type":"object","title":"Sub Number Order Response","properties":{"data":{"$ref":"#/components/schemas/numbers_SubNumberOrder"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}},"patch":{"summary":"Update a sub number order's requirements","description":"Updates the requirements of an existing sub number order and returns the updated order.","operationId":"UpdateSubNumberOrder","tags":["Phone Number Orders"],"parameters":[{"name":"sub_number_order_id","in":"path","description":"The sub number order ID.","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSubNumberOrderRequest"}}}},"responses":{"200":{"description":"Successful response with details about a sub number order.","content":{"application/json":{"schema":{"type":"object","title":"Sub Number Order Response","properties":{"data":{"$ref":"#/components/schemas/numbers_SubNumberOrder"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/sub_number_orders/{sub_number_order_id}/cancel":{"patch":{"summary":"Cancel a sub number order","description":"Allows you to cancel a sub number order in 'pending' status.","operationId":"CancelSubNumberOrder","tags":["Phone Number Orders"],"parameters":[{"name":"sub_number_order_id","in":"path","description":"The ID of the sub number order.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a sub number order.","content":{"application/json":{"schema":{"type":"object","title":"Sub Number Order Response","properties":{"data":{"$ref":"#/components/schemas/numbers_SubNumberOrder"}}}}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/sub_number_orders_report":{"post":{"summary":"Create a sub number orders report","description":"Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded once complete.","operationId":"CreateSubNumberOrdersReport_2","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_2","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_2","tags":["Phone Number Orders"],"x-endpoint-cost":"light","x-latency-category":"background","parameters":[{"in":"path","name":"report_id","schema":{"type":"string","format":"uuid"},"required":true,"description":"The unique identifier of the sub number orders report","example":"12ade33a-21c0-473b-b055-b3c836e1c293"}],"responses":{"200":{"description":"CSV file download","content":{"text/csv":{"schema":{"type":"string","format":"binary"},"example":"id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at\n1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23 14:33:12.376686,2025-05-23 14:33:15.624916"}}},"400":{"$ref":"#/components/responses/numbers_BadRequestResponse_73c9788e53"},"401":{"$ref":"#/components/responses/numbers_UnauthorizedResponse_73c9788e53"},"404":{"$ref":"#/components/responses/numbers_NotFoundResponse_73c9788e53"},"422":{"$ref":"#/components/responses/numbers_UnprocessableEntity_73c9788e53"},"500":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/telephony_credentials":{"get":{"description":"Returns a paginated list of the on-demand telephony credentials on your account, with support for filtering.","summary":"List all credentials","operationId":"FindTelephonyCredentials","tags":["Credentials"],"x-group-parameters":"true","parameters":[{"$ref":"#/components/parameters/telephony-credentials_PageConsolidated"},{"$ref":"#/components/parameters/telephony-credentials_FilterConsolidated"}],"responses":{"200":{"description":"Successful response with multiple credentials","content":{"application/json":{"schema":{"type":"object","title":"Get All Telephony Credential Response","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TelephonyCredential"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}},"post":{"description":"Creates a new on-demand telephony credential for the specified connection. The credential can then be used to generate access tokens for SIP or WebRTC clients.","summary":"Create a credential","operationId":"CreateTelephonyCredential","tags":["Credentials"],"parameters":[],"requestBody":{"description":"Parameters that can be defined during credential creation","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelephonyCredentialCreateRequest"}}}},"responses":{"201":{"description":"Successful response with details about a credential","content":{"application/json":{"schema":{"type":"object","title":"Telephony Credential Response","properties":{"data":{"$ref":"#/components/schemas/TelephonyCredential"}}}}}},"422":{"description":"Bad request"}}}},"/telephony_credentials/{id}":{"delete":{"description":"Permanently deletes the specified telephony credential, revoking any access it provided.","summary":"Delete a credential","operationId":"DeleteTelephonyCredential","tags":["Credentials"],"parameters":[{"name":"id","in":"path","description":"Identifies the resource.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a credential","content":{"application/json":{"schema":{"type":"object","title":"Telephony Credential Response","properties":{"data":{"$ref":"#/components/schemas/TelephonyCredential"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}},"get":{"description":"Get the details of an existing On-demand Credential.","summary":"Get a credential","operationId":"GetTelephonyCredential","tags":["Credentials"],"parameters":[{"name":"id","in":"path","description":"Identifies the resource.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with details about a credential","content":{"application/json":{"schema":{"type":"object","title":"Telephony Credential Response","properties":{"data":{"$ref":"#/components/schemas/TelephonyCredential"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}}},"patch":{"description":"Updates the specified telephony credential and returns the updated credential.","summary":"Update a credential","operationId":"UpdateTelephonyCredential","tags":["Credentials"],"parameters":[{"name":"id","in":"path","description":"Identifies the resource.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Parameters that can be updated in a credential","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelephonyCredentialUpdateRequest"}}}},"responses":{"200":{"description":"Successful response with details about a credential","content":{"application/json":{"schema":{"type":"object","title":"Telephony Credential Response","properties":{"data":{"$ref":"#/components/schemas/TelephonyCredential"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}}}},"/telephony_credentials/{id}/token":{"post":{"description":"Create an Access Token (JWT) for the credential.","summary":"Create an Access Token.","operationId":"CreateTelephonyCredentialToken","tags":["Access Tokens"],"parameters":[{"name":"id","in":"path","description":"Identifies the resource.","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"JWT","content":{"text/plain":{"schema":{"type":"string","example":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ"}}}},"404":{"description":"Resource not Found"}}}},"/terms_of_service/agreements":{"get":{"summary":"List the calling user's Terms of Service agreements","description":"Returns the Terms of Service agreements the authenticated user has on file. Each entry records the version agreed to and when. Most users only have one agreement per product, but if the ToS is updated and the user re-agrees a new entry is added.\n\nResults are paginated with the standard `page[number]` / `page[size]` parameters; the response uses the standard `{data, meta}` JSON:API envelope.\n\nBy default this returns agreements for **all** products the user has agreed to. Pass the `product_type` query parameter to scope the result to a single product.","operationId":"listTermsOfServiceAgreements","tags":["Terms of Service"],"parameters":[{"name":"product_type","in":"query","required":false,"description":"Optional filter. Omit to list the user's agreements for **every** product (branded_calling and number_reputation); pass a value to return only that product's agreements.","schema":{"$ref":"#/components/schemas/TosProductType"},"example":"branded_calling"},{"$ref":"#/components/parameters/BcPageNumber"},{"$ref":"#/components/parameters/BcPageSize"}],"responses":{"200":{"description":"Paginated list of agreements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TosAgreementList"}}}},"default":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"}}}},"/terms_of_service/agreements/{agreement_id}":{"get":{"summary":"Get a Terms of Service agreement by id","description":"Retrieve a single ToS agreement record. Returns `404` if the agreement does not exist or does not belong to the authenticated user.","operationId":"getTermsOfServiceAgreement","tags":["Terms of Service"],"parameters":[{"name":"agreement_id","in":"path","description":"Unique identifier of the agreement.","required":true,"schema":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"}}],"responses":{"200":{"description":"Agreement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TosAgreementWrapped"}}}},"default":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"}}}},"/terms_of_service/branded_calling/agree":{"post":{"summary":"Agree to the Branded Calling Terms of Service","description":"Records the authenticated user's agreement to the current Branded Calling ToS. No body required. Idempotent - re-calling after agreement is a no-op and returns the existing agreement.\n\nThis is a prerequisite for activating Branded Calling on any enterprise (`POST /enterprises/{id}/branded_calling`); without an agreement, activation returns `403`.","operationId":"agreeToBrandedCallingTos","tags":["Terms of Service"],"responses":{"201":{"description":"Agreement recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TosAgreementWrapped"}}}},"default":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"}}}},"/terms_of_service/info":{"get":{"summary":"Get Terms of Service information","description":"Returns the available Terms of Service agreements (product, current version, terms URL, effective date). Omit `product_type` to return all products; pass it to scope to one.","operationId":"getTermsOfServiceInfo","tags":["Terms of Service"],"parameters":[{"name":"product_type","in":"query","required":false,"description":"Optional product filter. Omit to return info for all products.","schema":{"$ref":"#/components/schemas/TosProductType"},"example":"branded_calling"}],"responses":{"200":{"description":"Terms of Service information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermsOfServiceInfo"}}}},"401":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"},"default":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"}}}},"/terms_of_service/number_reputation/agree":{"post":{"summary":"Agree to the Phone Number Reputation Terms of Service","description":"Records the authenticated user's agreement to the current Phone Number Reputation ToS. No body required. Idempotent.\n\nPrerequisite for using any of the `/v2/.../reputation/*` endpoints.","operationId":"agreeNumberReputationTermsOfService","tags":["Terms of Service"],"responses":{"201":{"description":"Agreement recorded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TosAgreementWrapped"}}}},"default":{"$ref":"#/components/responses/number-reputation_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/number-reputation_GenericErrorResponse"}}}},"/terms_of_service/status":{"get":{"summary":"Get the calling user's Terms of Service status","description":"Returns whether the authenticated user has agreed to the current Terms of Service for the product given by `product_type`. Used during onboarding to decide whether to prompt the user with the ToS dialog before continuing.\n\n`agreement_required: true` means the user has not yet agreed (or has agreed to an outdated version) and must agree before using that product's endpoints.","operationId":"getTermsOfServiceStatus","tags":["Terms of Service"],"parameters":[{"name":"product_type","in":"query","required":false,"description":"Which product's ToS to check. Defaults to `branded_calling`.","schema":{"$ref":"#/components/schemas/TosProductType"}}],"responses":{"200":{"description":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TosStatusWrapped"}}}},"default":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"},"4XX":{"$ref":"#/components/responses/branded-calling_GenericErrorResponse"}}}},"/texml/Accounts/{account_sid}/Calls":{"get":{"summary":"Fetch multiple call resources","description":"Returns multiple call resouces for an account. This endpoint is eventually consistent.","x-latency-category":"responsive","operationId":"GetTexmlCalls","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/To"},{"$ref":"#/components/parameters/From"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/StartTime"},{"$ref":"#/components/parameters/StartTime_gt"},{"$ref":"#/components/parameters/StartTime_lt"},{"$ref":"#/components/parameters/EndTime"},{"$ref":"#/components/parameters/EndTime_gt"},{"$ref":"#/components/parameters/EndTime_lt"}],"responses":{"200":{"description":"Multiple call resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallResourceIndex"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Initiate an outbound call","description":"Initiate an outbound TeXML call. Telnyx will request TeXML from the XML Request URL configured for the connection in the Mission Control Portal.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"InitiateTexmlCall","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"}],"requestBody":{"description":"Iniatiate Call request object","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateCallRequest"}}}},"responses":{"200":{"description":"Successful response upon initiating a TeXML call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateCallResult"}}}},"422":{"$ref":"#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83"},"429":{"$ref":"#/components/responses/call-scripting_TooManyRequestsResponse"},"default":{"$ref":"#/components/responses/call-scripting_GenericErrorResponse"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}":{"get":{"summary":"Fetch a call","description":"Returns an individual call identified by its CallSid. This endpoint is eventually consistent.","x-latency-category":"responsive","operationId":"GetTexmlCall","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/CallSid"},{"$ref":"#/components/parameters/AccountSid"}],"responses":{"200":{"description":"Call resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Update call","description":"Update TeXML call. Please note that the keys present in the payload MUST BE formatted in CamelCase as specified in the example.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"UpdateTexmlCall","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/CallSid"},{"$ref":"#/components/parameters/AccountSid"}],"requestBody":{"description":"Update Call request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/UpdateCallRequest"}}}},"responses":{"200":{"description":"Call resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"},"422":{"$ref":"#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json":{"get":{"summary":"Fetch recordings for a call","description":"Returns recordings for a call identified by call_sid.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"FetchTeXMLCallRecordings","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"}],"responses":{"200":{"description":"Successful Get Call Recordings Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlGetCallRecordingsResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Request recording for a call","description":"Starts recording with specified parameters for call idientified by call_sid.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"StartTeXMLCallRecording","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlCreateCallRecordingRequest"},"responses":{"200":{"description":"Successful call recording create response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlCreateCallRecordingResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json":{"post":{"summary":"Update recording on a call","description":"Updates recording resource for particular call.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"UpdateTeXMLCallRecording","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"},{"$ref":"#/components/parameters/RecordingSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlUpdateCallRecordingRequest"},"responses":{"200":{"description":"Successful call recording create response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlCreateCallRecordingResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json":{"post":{"summary":"Request siprec session for a call","description":"Starts siprec session with specified parameters for call idientified by call_sid.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"StartTeXMLSiprecSession","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlCreateSiprecSessionRequest"},"responses":{"200":{"description":"Successful SIPREC session create response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlCreateSiprecSessionResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json":{"post":{"summary":"Updates siprec session for a call","description":"Updates siprec session identified by siprec_sid.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"UpdateTeXMLSiprecSession","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"},{"$ref":"#/components/parameters/SiprecSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlUpdateSiprecSessionRequest"},"responses":{"200":{"description":"Successful SIPREC session update response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlUpdateSiprecSessionResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json":{"post":{"summary":"Start streaming media from a call.","description":"Starts streaming media from a call to a specific WebSocket address.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"StartTeXMLCallStreaming","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlCreateCallStreamingRequest"},"responses":{"200":{"description":"Successful call streaming create response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlCreateCallStreamingResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json":{"post":{"summary":"Update streaming on a call","description":"Updates streaming resource for particular call.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"UpdateTeXMLCallStreaming","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/CallSid"},{"$ref":"#/components/parameters/StreamingSid"}],"requestBody":{"$ref":"#/components/requestBodies/TexmlUpdateCallStreamingRequest"},"responses":{"200":{"description":"Successful call streaming update response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlUpdateCallStreamingResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences":{"get":{"summary":"List conference resources","description":"Returns a paginated list of conference resources for the account, with support for filtering by friendly name, status, and creation or update dates.","x-latency-category":"responsive","operationId":"GetTexmlConferences","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FriendlyName"},{"$ref":"#/components/parameters/ConferenceStatus"},{"$ref":"#/components/parameters/DateCreated"},{"$ref":"#/components/parameters/DateUpdated"}],"responses":{"200":{"description":"Multiple conference resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceResourceIndex"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences/{conference_sid}":{"get":{"summary":"Fetch a conference resource","description":"Returns a single conference resource for the account by its ConferenceSid.","x-latency-category":"responsive","operationId":"GetTexmlConference","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"responses":{"200":{"description":"Conference resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Update a conference resource","description":"Updates the specified conference resource, for example to modify its status, and returns the updated conference.","x-latency-category":"responsive","operationId":"UpdateTexmlConference","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"requestBody":{"description":"Update Conference request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/call-scripting_UpdateConferenceRequest_c75353cb83"}}}},"responses":{"200":{"description":"Conference resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants":{"get":{"summary":"List conference participants","description":"Returns the list of participants currently in the specified conference.","x-latency-category":"responsive","operationId":"GetTexmlConferenceParticipants","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"responses":{"200":{"description":"Multiple participant resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResourceIndex"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Dial a new conference participant","description":"Dials a new participant into the specified conference and returns the created participant resource.","x-latency-category":"responsive","operationId":"DialTexmlConferenceParticipant","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"requestBody":{"description":"Dial Conference Participant request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/DialConferenceParticipantRequest"}}}},"responses":{"200":{"description":"New participant resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewParticipantResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}":{"delete":{"summary":"Delete a conference participant","description":"Removes the specified participant from the conference, ending their leg of the call.","x-latency-category":"responsive","operationId":"DeleteTexmlConferenceParticipant","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"},{"$ref":"#/components/parameters/CallSidOrParticipantLabel"}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"get":{"summary":"Get conference participant resource","description":"Returns a single conference participant resource by call SID or participant label.","x-latency-category":"responsive","operationId":"GetTexmlConferenceParticipant","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"},{"$ref":"#/components/parameters/CallSidOrParticipantLabel"}],"responses":{"200":{"description":"Participant resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Update a conference participant","description":"Updates the specified conference participant, for example muting or holding them, and returns the updated participant.","x-latency-category":"responsive","operationId":"UpdateTexmlConferenceParticipant","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"},{"$ref":"#/components/parameters/CallSidOrParticipantLabel"}],"requestBody":{"description":"Update Conference Participant request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/call-scripting_UpdateConferenceParticipantRequest_c75353cb83"}}}},"responses":{"200":{"description":"Participant resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings":{"get":{"summary":"List conference recordings","description":"Returns the list of recordings made for the specified conference.","x-latency-category":"responsive","operationId":"GetTexmlConferenceRecordings","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"responses":{"200":{"description":"Multiple conference recording resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceRecordingResourceIndex"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json":{"get":{"summary":"Fetch recordings for a conference","description":"Returns recordings for a conference identified by conference_sid.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"FetchTeXMLConferenceRecordings","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/ConferenceSid"}],"responses":{"200":{"description":"Successful Get Call Recordings Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlGetCallRecordingsResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Queues":{"get":{"summary":"List queue resources","description":"Returns a paginated list of queue resources for the account, with support for filtering by creation or update dates.","x-latency-category":"responsive","operationId":"GetTexmlQueues","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/DateCreated"},{"$ref":"#/components/parameters/DateUpdated"}],"responses":{"200":{"description":"Multiple queue resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueResourceIndex"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Create a new queue","description":"Creates a new queue resource for the account with the provided settings and returns it.","x-latency-category":"responsive","operationId":"CreateTexmlQueue","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"}],"requestBody":{"description":"Create Queue request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/call-scripting_CreateQueueRequest_c75353cb83"}}}},"responses":{"200":{"description":"Queue resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Queues/{queue_sid}":{"delete":{"summary":"Delete a queue resource","description":"Permanently deletes the specified queue resource from the account.","x-latency-category":"responsive","operationId":"DeleteTexmlQueue","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/QueueSid"}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"get":{"summary":"Fetch a queue resource","description":"Returns a single queue resource for the account by its QueueSid.","x-latency-category":"responsive","operationId":"GetTexmlQueue","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/QueueSid"}],"responses":{"200":{"description":"Queue resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"post":{"summary":"Update a queue resource","description":"Updates the specified queue resource's settings and returns the updated queue.","x-latency-category":"responsive","operationId":"UpdateTexmlQueue","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/QueueSid"}],"requestBody":{"description":"Update Queue request object","required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/call-scripting_UpdateQueueRequest_c75353cb83"}}}},"responses":{"200":{"description":"Queue resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueResource"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Recordings.json":{"get":{"summary":"Fetch multiple recording resources","description":"Returns multiple recording resources for an account.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"GetTeXMLCallRecordings","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PageSizeTexml"},{"$ref":"#/components/parameters/TexmlDateCreated"}],"responses":{"200":{"description":"Successful Get Call Recordings Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlGetCallRecordingsResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Recordings/{recording_sid}.json":{"delete":{"summary":"Delete recording resource","description":"Deletes recording resource identified by recording id.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"DeleteTeXMLCallRecording","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/RecordingSid"}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"get":{"summary":"Fetch recording resource","description":"Returns recording resource identified by recording id.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"GetTeXMLCallRecording","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/RecordingSid"}],"responses":{"200":{"description":"Retrieves call recording resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TexmlGetCallRecordingResponseBody"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Transcriptions.json":{"get":{"summary":"List recording transcriptions","description":"Returns multiple recording transcription resources for an account.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"GetTeXMLRecordingTranscriptions","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/PageSize"}],"responses":{"200":{"description":"Successful list Recording Transcriptions Response","content":{"application/json":{"schema":{"type":"object","title":"List Recording Transcriptions Response","properties":{"transcriptions":{"type":"array","items":{"$ref":"#/components/schemas/TexmlRecordingTranscription"}},"end":{"type":"integer","description":"The number of the last element on the page, zero-indexed","example":1},"first_page_uri":{"type":"string","format":"uri","description":"Relative uri to the first page of the query results"},"previous_page_uri":{"type":"string","format":"uri","description":"Relative uri to the previous page of the query results"},"next_page_uri":{"type":"string","description":"Relative uri to the next page of the query results","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=KRWXZPO&PageSize=1"},"page":{"type":"integer","description":"Current page number, zero-indexed.","example":0},"page_size":{"type":"integer","description":"The number of items on the page","example":20},"start":{"type":"integer","description":"The number of the first element on the page, zero-indexed.","example":0},"uri":{"type":"string","description":"The URI of the current page.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=YTBNAXPI&PageSize=1"}}}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json":{"delete":{"summary":"Delete a recording transcription","description":"Permanently deletes a recording transcription.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"DeleteTeXMLRecordingTranscription","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/RecordingTranscriptionSid"}],"responses":{"204":{"description":"The resource was deleted successfully."},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}},"get":{"summary":"Fetch a recording transcription resource","description":"Returns the recording transcription resource identified by its ID.","x-latency-category":"responsive","x-group-parameters":"true","operationId":"GetTeXMLRecordingTranscription","tags":["TeXML REST Commands"],"parameters":[{"$ref":"#/components/parameters/AccountSid"},{"$ref":"#/components/parameters/RecordingTranscriptionSid"}],"responses":{"200":{"description":"Successful get Recording Transcription Response","content":{"application/json":{"schema":{"type":"object","title":"Recording Transcription Response","$ref":"#/components/schemas/TexmlRecordingTranscription"}}}},"404":{"$ref":"#/components/responses/call-scripting_NotFoundResponse_c75353cb83"}}}},"/texml/ai_calls/{connection_id}":{"post":{"summary":"Initiate an outbound AI call","description":"Initiate an outbound AI call with warm-up support. Validates parameters, builds an internal TeXML with an AI Assistant configuration, encodes instructions into client state, and calls the dial API. The Twiml, Texml, and Url parameters are not allowed and will result in a 422 error.\n\n**Expected callback events:**\n\nStatus callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`, or `failed`), then `analyzed` after post-call processing completes.\n\nConversation callbacks: `conversation_created` and `conversation_ended`.\n\nRecording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled.\n","x-latency-category":"responsive","x-group-parameters":"true","operationId":"InitiateTexmlAICall","tags":["TeXML REST Commands"],"parameters":[{"name":"connection_id","in":"path","description":"The ID of the TeXML connection to use for the call.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Initiate AI Call request object","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateAICallRequest"}}}},"responses":{"200":{"$ref":"#/components/responses/InitiateAICallResponse"},"401":{"$ref":"#/components/responses/UnauthenticatedResponse"},"422":{"$ref":"#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83"}}}},"/texml/calls/{connection_id}":{"post":{"summary":"Create a connection-scoped TeXML call","description":"Initiate an outbound TeXML call using a TeXML application connection ID, not an account SID. Request parameter names are case-sensitive. From and To are required; Texml supplies inline instructions and Url overrides the application XML request URL. When neither is supplied, the application configuration supplies the instructions. The response is a flat call object without a data wrapper.","operationId":"CreateTexmlCall","tags":["TeXML REST Commands"],"parameters":[{"name":"connection_id","in":"path","required":true,"description":"The ID of the connection holding the TeXML application to call from.","schema":{"type":"string"},"example":"1234567890"}],"requestBody":{"required":true,"description":"Connection-scoped outbound call parameters.","content":{"application/json":{"schema":{"type":"object","required":["From","To"],"properties":{"From":{"type":"string","description":"The E.164-formatted phone number or SIP URI to present as the caller.","example":"+13120001234"},"To":{"type":"string","description":"The E.164-formatted phone number or SIP URI to call.","example":"+13121230000"},"Texml":{"type":"string","description":"Inline TeXML instructions to execute when the call is answered.","example":"<Response><Say>Hello</Say></Response>"},"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":"<Response><Say>Hello</Say></Response>"}},"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":"<Response><Say>Hello</Say></Response>"},"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":"<Response><Say>Hello</Say></Response>"}}}},"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 <API_KEY>` header. Send JSON frames with text to synthesize; receive JSON frames containing base64-encoded audio chunks.\n\nSupported providers: `aws`, `telnyx`, `azure`, `minimax`, `resemble`, `elevenlabs`, `xai`, `humain`, `soniox`.\n\n**Connection flow:**\n1. Open WebSocket with query parameters specifying provider, voice, and model.\n2. Send an initial handshake message `{\"text\": \" \"}` (single space) with optional `voice_settings` to initialize the session.\n3. Send text messages as `{\"text\": \"Hello world\"}`.\n4. Receive audio chunks as JSON frames with base64-encoded audio.\n5. A final frame with `isFinal: true` indicates the end of audio for the current text.\n\nTo interrupt and restart synthesis mid-stream, send `{\"force\": true}` — the current worker is stopped and a new one is started.\n\n**Note:** The Telnyx `Ultra` model is not available over WebSocket. Use the HTTP POST `/text-to-speech/speech` endpoint instead.","operationId":"TextToSpeechOverWs","tags":["Text To Speech Commands"],"parameters":[{"$ref":"#/components/parameters/voice"},{"$ref":"#/components/parameters/provider"},{"$ref":"#/components/parameters/model_id"},{"$ref":"#/components/parameters/voice_id"},{"$ref":"#/components/parameters/disable_cache"},{"$ref":"#/components/parameters/audio_format"},{"$ref":"#/components/parameters/socket_id"}],"responses":{"101":{"description":"WebSocket connection established. Communication proceeds via JSON frames.\n\n**Client → Server:** See `ClientTextFrame` schema.\n**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).\n\nAuthentication is provided via the standard `Authorization: Bearer <API_KEY>` header.\n\nThe `voice` parameter provides a convenient shorthand to specify provider, model, and voice in a single string (e.g. `Telnyx.Ultra.<voice_id>`). Alternatively, specify `provider` explicitly along with provider-specific parameters.\n\nSupported providers: `aws`, `telnyx`, `azure`, `elevenlabs`, `minimax`, `resemble`, `xai`, `humain`, `soniox`.\n\nThe Telnyx `Ultra` model supports 44 languages with emotion control, speed adjustment, and volume control. Use the `telnyx` provider-specific parameters to configure these features.","operationId":"generateSpeech","tags":["Text To Speech Commands"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSpeechRequest"},"example":{"voice":"string","text":"string","provider":"aws","language":"string","text_type":"text","output_type":"binary_output","disable_cache":false,"aws":{"language_code":"string","text_type":"text","lexicon_names":["string"],"output_format":"string","sample_rate":"string"},"telnyx":{"voice_speed":1,"response_format":"mp3","sampling_rate":24000,"volume":1,"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,"audio_format":"mp3"}}}}},"responses":{"200":{"description":"Speech generated successfully. The response format depends on the `output_type` parameter:\n- `binary_output` (default): Returns raw audio bytes with the appropriate `Content-Type` header. Most providers return `audio/mpeg`; `humain` has no MP3 output and always returns raw headerless PCM16LE 24kHz mono as `audio/pcm`.\n- `base64_output`: Returns a JSON object with `base64_audio` field.","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary","description":"Raw audio bytes. Returned when `output_type` is `binary_output` (default) for most providers."}},"audio/pcm":{"schema":{"type":"string","format":"binary","description":"Raw headerless PCM16LE audio bytes, mono, 24kHz. Returned when `output_type` is `binary_output` (default) and `provider` is `humain` — 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.\n\nSome providers (ElevenLabs, Resemble) require an API key to list voices.","operationId":"listVoices","tags":["Text To Speech Commands"],"parameters":[{"name":"provider","in":"query","required":false,"description":"Filter voices by provider. If omitted, voices from all providers are returned.","schema":{"type":"string","enum":["aws","telnyx","azure","elevenlabs","minimax","resemble","xai","humain","soniox"]}},{"name":"api_key","in":"query","required":false,"description":"API key for providers that require one to list voices (e.g. ElevenLabs).","schema":{"type":"string"}}],"responses":{"200":{"description":"List of available voices.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicesResponse"},"example":{"voices":[{"provider":"string","name":"string","voice_id":"string","language":"string","gender":"string"}]}}}},"400":{"description":"Bad request — 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_2","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_2","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_2","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_2","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_2","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_2","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\n3ca7bd3d-7d82-4e07-9df4-009123068320,inbound,forking,0.000800,17.000000\n..."}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/usage_reports_usage_reports_ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/usage_reports_usage_reports_ErrorResponse"}}}}},"x-latency-category":"interactive"}},"/usage_reports/options":{"get":{"tags":["Usage Reports (BETA)"],"summary":"Get Usage Reports query options (BETA)","description":"Get the Usage Reports options for querying usage, including the products available and their respective metrics and dimensions","operationId":"ListUsageReportsOptions","parameters":[{"name":"product","in":"query","description":"Options (dimensions and metrics) for a given product. If none specified, all products will be returned.","required":false,"schema":{"type":"string"},"examples":{"product=wireless":{"value":"wireless","summary":"Specify a product if you know what you're looking for"}}},{"name":"authorization_bearer","in":"header","description":"Bearer token used to authenticate the request.","schema":{"type":"string","description":"Authenticates the request with your Telnyx API V2 KEY"}}],"responses":{"200":{"description":"Successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageReportsOptionsResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/usage_reports_usage_reports_ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/usage_reports_usage_reports_ErrorResponse"}}}}},"x-latency-category":"interactive"}},"/user/addresses":{"get":{"description":"Returns a paginated list of your user addresses, with support for filtering and sorting.","summary":"List all user addresses","operationId":"FindUserAddress","tags":["UserAddresses"],"x-endpoint-cost":"medium","parameters":[{"$ref":"#/components/parameters/user-addresses_PageConsolidated"},{"$ref":"#/components/parameters/user-addresses_FilterConsolidated"},{"$ref":"#/components/parameters/SortUserAddress"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UserAddress"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"}},"x-latency-category":"responsive"},"post":{"description":"Creates a new user address from the provided details and returns the created address.","summary":"Creates a user address","operationId":"CreateUserAddress","tags":["UserAddresses"],"x-endpoint-cost":"medium","parameters":[],"requestBody":{"description":"Parameters that can be defined during user address creation","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAddressCreate"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UserAddress"}}}}}},"422":{"description":"Bad request"}},"x-latency-category":"responsive"}},"/user/addresses/{id}":{"get":{"description":"Retrieves the details of an existing user address.","summary":"Retrieve a user address","operationId":"GetUserAddress","tags":["UserAddresses"],"parameters":[{"name":"id","in":"path","description":"user address ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UserAddress"}}}}}},"401":{"description":"Unauthorized"},"404":{"description":"Resource not found"},"422":{"description":"Bad request"}},"x-latency-category":"responsive"}},"/user_addresses":{"get":{"description":"Returns a paginated list of your user addresses, with support for filtering and sorting.","summary":"List all user addresses","operationId":"FindUserAddress_2","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_2","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_2","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":"ListWhatsappPhoneNumbers","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}}}}},"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}}}}},"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.<br /><br />For AWS and GCE, you have the option of creating the primary connection first and the secondary connection later. You also have the option of disabling the primary and/or secondary connections at any time and later re-enabling them. With Azure, you do not have this option. Azure requires both the primary and secondary connections to be created at the same time and they can not be independantly disabled.","operationId":"CreateVirtualCrossConnect","tags":["Virtual Cross Connects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VirtualCrossConnectCreate"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VirtualCrossConnectCombined"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/virtual_cross_connects/coverage":{"get":{"summary":"List Virtual Cross Connect Cloud Coverage","description":"List Virtual Cross Connects Cloud Coverage.<br /><br />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.<br /><br />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.<br /><br />Once the Virtual Cross Connect has moved to `provisioned` and you are ready to enable routing, you can toggle the routing announcements to `true`.","operationId":"UpdateVirtualCrossConnect","tags":["Virtual Cross Connects"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VirtualCrossConnectPatch"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VirtualCrossConnectCombined"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/virtual_cross_connects_coverage":{"get":{"summary":"List Virtual Cross Connect Cloud Coverage","description":"List Virtual Cross Connects Cloud Coverage.<br /><br />This endpoint shows which cloud regions are available for the `location_code` your Virtual Cross Connect will be provisioned in.","operationId":"ListVirtualCrossConnectCoverage_2","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.\n\n**Note:** `include_domains` and `exclude_domains` cannot be used in the same request. Use one or the other.","operationId":"CreateWebSearch","tags":["Web Search"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchRequest"},"example":{"query":"latest AI agent frameworks","count":10,"country":"US","safesearch":"moderate","freshness":"week","include_domains":["arxiv.org","github.com"],"livecrawl":false}}}},"responses":{"200":{"description":"Successful search response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WebSearchResponse"}}},"example":{"data":{"results":{"web":[{"url":"https://example.com/article","title":"Top AI Agent Frameworks in 2026","description":"A comprehensive guide to the latest AI agent frameworks...","snippets":["LangGraph is a framework for building stateful, multi-actor agents..."],"thumbnail_url":"https://example.com/thumb.jpg","favicon_url":"https://cdn.telnyx.com/favicon?domain=example.com&size=128"}],"news":[]}}}}}},"400":{"$ref":"#/components/responses/web-search_BadRequest"},"401":{"$ref":"#/components/responses/web-search_Unauthorized"},"500":{"$ref":"#/components/responses/web-search_InternalServerError"},"502":{"$ref":"#/components/responses/web-search_ProviderError"},"504":{"$ref":"#/components/responses/ProviderTimeout"}}}},"/web_search/contents":{"post":{"summary":"Retrieve page contents","description":"Retrieves clean HTML or Markdown content from a list of URLs. Supports up to 20 URLs per request (public API limit). Specify which formats to return: `html`, `markdown`, `metadata`.","operationId":"CreateWebSearchContents","tags":["Contents"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentsRequest"},"example":{"urls":["https://en.wikipedia.org/wiki/Artificial_intelligence"],"formats":["markdown","metadata"],"crawl_timeout":10,"max_age":null}}}},"responses":{"200":{"description":"Successful content retrieval response.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ContentsResponse"}}},"example":{"data":{"results":[{"url":"https://en.wikipedia.org/wiki/Artificial_intelligence","title":"Artificial intelligence - Wikipedia","markdown":"# Artificial intelligence\n\nArtificial intelligence (AI) is...","metadata":{"site_name":"Wikipedia","favicon_url":"https://cdn.telnyx.com/favicon?domain=en.wikipedia.org&size=128"}}]}}}}},"400":{"$ref":"#/components/responses/web-search_BadRequest"},"401":{"$ref":"#/components/responses/web-search_Unauthorized"},"500":{"$ref":"#/components/responses/web-search_InternalServerError"},"502":{"$ref":"#/components/responses/web-search_ProviderError"},"504":{"$ref":"#/components/responses/ProviderTimeout"}}}},"/web_search/research":{"post":{"summary":"Start research task","description":"Starts a deep research task that runs multiple searches, reads sources, and synthesizes an answer with citations.\n\n## Synchronous mode (default)\n\nWhen `background` is `false` or omitted, the request blocks until the research completes and returns the answer with citations. This can take up to 120 seconds depending on `research_effort`.\n\n## Asynchronous mode\n\nWhen `background` is `true`, the request returns immediately with a `task_id` and `status: pending`. Poll `GET /web_search/research/{task_id}` to check when the research completes and retrieve the answer.","operationId":"CreateWebSearchResearch","tags":["Research"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchRequest"},"example":{"query":"Compare the performance of RAG vs fine-tuning for domain-specific QA","research_effort":"standard","max_sources":20,"background":false}}}},"responses":{"200":{"description":"Research response. Shape depends on `background`:\n\n- **Synchronous** (`background` false/unset): returns `answer` + `citations`.\n- **Asynchronous** (`background` true): returns `task_id` + `status`.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"$ref":"#/components/schemas/ResearchResponseSync"},{"$ref":"#/components/schemas/ResearchResponseAsync"}]}}},"examples":{"sync":{"summary":"Synchronous response (background=false)","value":{"data":{"answer":"RAG and fine-tuning serve different purposes...","citations":[{"url":"https://arxiv.org/abs/2401.15884","title":"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks","snippet":"We show that RAG models produce more factually grounded responses..."}]}}},"async":{"summary":"Asynchronous response (background=true)","value":{"data":{"task_id":"bf3026a5-dd57-44dd-b922-200041be3a4b","status":"pending"}}}}}}},"400":{"$ref":"#/components/responses/web-search_BadRequest"},"401":{"$ref":"#/components/responses/web-search_Unauthorized"},"500":{"$ref":"#/components/responses/web-search_InternalServerError"},"502":{"$ref":"#/components/responses/web-search_ProviderError"},"504":{"$ref":"#/components/responses/ProviderTimeout"}}}},"/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"},"500":{"$ref":"#/components/responses/web-search_InternalServerError"},"502":{"$ref":"#/components/responses/web-search_ProviderError"}}}},"/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_2","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_2","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_2","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_2","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_2","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_2","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_2","parameters":[{"$ref":"#/components/parameters/WabaId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchWabaSettingsRequest"}}}},"responses":{"200":{"description":"Updated settings","$ref":"#/components/responses/WabaSettingsResponse"},"4XX":{"$ref":"#/components/responses/management_messaging_GenericErrorResponse"}},"x-latency-category":"responsive","description":"Update the settings of a WhatsApp Business Account."}},"/whatsapp/message_templates":{"get":{"tags":["Whatsapp Message Templates"],"summary":"List Whatsapp message templates","operationId":"ListWhatsappTemplates_2","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_2","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_2","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_2","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_2","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_2","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/{phone_number}":{"delete":{"tags":["Whatsapp Phone Numbers"],"summary":"Delete a Whatsapp phone number","operationId":"DeleteWhatsappPhoneNumber_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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_2","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."}},"/wireguard_interfaces":{"get":{"summary":"List all WireGuard Interfaces","description":"Returns a paginated list of the WireGuard interfaces on your account, with support for filtering.","operationId":"ListWireguardInterfaces","tags":["WireGuard Interfaces"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[network_id]","schema":{"type":"object","properties":{"network_id":{"type":"string","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","description":"The associated network id to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WireguardInterfaceRead"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a WireGuard Interface","description":"Create a new WireGuard Interface. Current limitation of 10 interfaces per user can be created.","operationId":"CreateWireguardInterface","tags":["WireGuard Interfaces"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WireguardInterfaceCreate"}}},"required":true},"responses":{"202":{"description":"Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_interfaces/{id} with the returned id to check status.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardInterfaceRead"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/wireguard_interfaces/{id}":{"delete":{"summary":"Delete a WireGuard Interface","description":"Deletes the specified WireGuard interface from its network.","operationId":"DeleteWireguardInterface","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardInterfaceRead"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"get":{"summary":"Retrieve a WireGuard Interfaces","description":"Returns the details of a single WireGuard interface by its identifier.","operationId":"GetWireguardInterface","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardInterfaceRead"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/wireguard_peers":{"get":{"summary":"List all WireGuard Peers","description":"Returns a paginated list of your WireGuard peers, with support for filtering.","operationId":"ListWireguardPeers","tags":["WireGuard Interfaces"],"parameters":[{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[wireguard_interface_id]","schema":{"type":"object","properties":{"wireguard_interface_id":{"type":"string","format":"uuid","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","description":"The id of the associated WireGuard interface to filter on."}}}},{"$ref":"#/components/parameters/PageConsolidated"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WireguardPeer"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"post":{"summary":"Create a WireGuard Peer","description":"Create a new WireGuard Peer. Current limitation of 5 peers per interface can be created.","operationId":"CreateWireguardPeer","tags":["WireGuard Interfaces"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WireguardPeerCreate"}}},"required":true},"responses":{"202":{"description":"Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_peers/{id} with the returned id to check status.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardPeer"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/wireguard_peers/{id}":{"delete":{"summary":"Delete the WireGuard Peer","description":"Deletes the specified WireGuard peer from its interface.","operationId":"DeleteWireguardPeer","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardPeer"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"get":{"summary":"Retrieve the WireGuard Peer","description":"Returns the details of a single WireGuard peer by its identifier.","operationId":"GetWireguardPeer","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardPeer"}}}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}},"patch":{"summary":"Update the WireGuard Peer","description":"Updates the specified WireGuard peer and returns the updated peer.","operationId":"UpdateWireguardPeer","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WireguardPeerPatch"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WireguardPeer"}}}}}},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/wireguard_peers/{id}/config":{"get":{"summary":"Retrieve Wireguard config template for Peer","description":"Retrieve Wireguard config template for Peer","operationId":"GetWireguardPeerConfig","tags":["WireGuard Interfaces"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"text/plain":{"schema":{"type":"string","example":"[Interface]\nPrivateKey = <! INSERT PEER PRIVATE KEY HERE !>\nAddress = 198.51.100.1/32\n\n[Peer]\nPublicKey = qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=\nAllowedIPs = 198.51.100.0/29\nEndpoint = 203.0.113.0:51871\nPersistentKeepalive = 25\n"}}}},"422":{"$ref":"#/components/responses/GenericErrorResponse"},"default":{"$ref":"#/components/responses/GenericErrorResponse"}}}},"/wireless/detail/records/reports":{"get":{"summary":"Get all Wireless Detail Records (WDRs) Reports","description":"Returns the WDR Reports that match the given parameters.","operationId":"GetWdrReports","tags":["Reporting"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber"},{"$ref":"#/components/parameters/wireless_PageSize"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WdrReport"}}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse"}},"x-latency-category":"responsive"},"post":{"x-latency-category":"background","summary":"Create a Wireless Detail Records (WDRs) Report","description":"Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed wireless data in the given time period.\n","operationId":"CreateWdrReport","tags":["Reporting"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WdrReportRequest"}}}},"responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WdrReport"}}}}}},"422":{"$ref":"#/components/responses/sim-cards-monitoring_wireless_UnprocessableEntity"},"default":{"$ref":"#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse"}}}},"/wireless/detail/records/reports/{id}":{"delete":{"summary":"Delete a Wireless Detail Record (WDR) Report","description":"Permanently deletes the specified Wireless Detail Record (WDR) report.","operationId":"DeleteWdrReport","tags":["Reporting"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WdrReport"}}}}}},"404":{"$ref":"#/components/responses/wireless_ResourceNotFound"},"default":{"$ref":"#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse"}},"x-latency-category":"responsive"},"get":{"x-latency-category":"background","summary":"Get a Wireless Detail Record (WDR) Report","description":"Returns a single Wireless Detail Record (WDR) report by its identifier, including its parameters and current status.","operationId":"GetWdrReport","tags":["Reporting"],"parameters":[{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WdrReport"}}}}}},"404":{"$ref":"#/components/responses/wireless_ResourceNotFound"},"default":{"$ref":"#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse"}}}},"/wireless/detail_records_reports":{"get":{"summary":"Get all Wireless Detail Records (WDRs) Reports","description":"Returns the WDR Reports that match the given parameters.","operationId":"GetWdrReports_2","tags":["Reporting"],"parameters":[{"$ref":"#/components/parameters/wireless_PageNumber_c5290d5308"},{"$ref":"#/components/parameters/wireless_PageSize_c5290d5308"}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WdrReport"}}}}}}},"401":{"description":"Unauthorized"},"default":{"$ref":"#/components/responses/wireless_GenericErrorResponse_c5290d5308"}}},"post":{"x-latency-category":"background","summary":"Create a Wireless Detail Records (WDRs) Report","description":"Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed wireless data in the given time period.\n","operationId":"CreateWdrReport_2","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_2","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_2","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":{"200":{"description":"Payment already settled (idempotent response)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402TransactionResponse"}}}},"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"}}}}},"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"}},"/v1/chat/completions":{"post":{"operationId":"x402_v1ChatCompletions","summary":"Pay-per-call API via x402","description":"OpenAI-compatible chat completions via Telnyx Inference — 17 open-weight models (MiniMax, Kimi, GLM, DeepSeek, Llama, Qwen, Gemma) selected via body.model, from $0.002 to $0.150193 USDC per call. No API key, no signup, pay per request. Returns HTTP 402 with `payment-required` header; settle the x402 challenge to receive the response. No Telnyx API key required.","tags":["x402"],"servers":[{"url":"https://x402.telnyx.com","description":"x402 pay-per-call gateway"}],"security":[],"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"13850","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"0.01385 USDC per call via x402 on Base. Gateway: https://x402.telnyx.com/v1/chat/completions"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","messages"],"properties":{"model":{"type":"string","description":"Model slug — 17 open-weight models available (MiniMax, Kimi, GLM, DeepSeek, Llama, Qwen, Gemma), e.g. \"moonshotai/Kimi-K2.6\". The 402 challenge quotes the per-model price."},"messages":{"type":"array","items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["system","user","assistant","tool"]},"content":{"type":"string"}}}},"max_tokens":{"type":"integer","minimum":1,"description":"Output token budget. Per-model caps apply and are quoted in the 402 challenge."}}}}}},"responses":{"200":{"description":"Successful completion (returned after payment settles).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/x402ChatCompletionResponse"}}}},"402":{"description":"Payment Required — settle the x402 challenge described in the payment-required header. Gateway: https://x402.telnyx.com/v1/chat/completions. See `x-payment-info` for accepted payment offers.","headers":{"payment-required":{"description":"Base64-encoded x402v2 PaymentRequired envelope. Decode and settle the challenge per the x402 protocol.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/x402PaymentRequired"}}}}}}},"/v1/audio/speech":{"post":{"operationId":"x402_v1AudioSpeech","summary":"Pay-per-call API via x402","description":"Text-to-speech via Telnyx Inference (OpenAI-compatible /v1/audio/speech). 4,000+ voices across 9 providers, mp3 output, up to 3,000 characters. $0.000006 USDC per character metered ($0.002 minimum settle), or flat $0.018 exact per call. Returns HTTP 402 with `payment-required` header; settle the x402 challenge to receive the response. No Telnyx API key required.","tags":["x402"],"servers":[{"url":"https://x402.telnyx.com","description":"x402 pay-per-call gateway"}],"security":[],"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"18000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"0.018 USDC per call via x402 on Base. Gateway: https://x402.telnyx.com/v1/audio/speech"}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input","voice"],"properties":{"model":{"type":"string","description":"Accepted for OpenAI SDK compatibility (e.g. \"tts-1\") but not forwarded — the voice id selects the engine."},"input":{"type":"string","minLength":1,"maxLength":3000,"description":"Text to synthesize. Upstream caps input at 3,000 characters."},"voice":{"type":"string","description":"OpenAI voice name (alloy, echo, …) or Telnyx voice id (\"Provider.Model.VoiceId\" — free catalog at GET /v1/audio/voices)."},"response_format":{"type":"string","enum":["mp3"],"description":"Output is always mp3."}}}}}},"responses":{"200":{"description":"MP3 audio (returned after payment settles).","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"402":{"description":"Payment Required — settle the x402 challenge described in the payment-required header. Gateway: https://x402.telnyx.com/v1/audio/speech. See `x-payment-info` for accepted payment offers.","headers":{"payment-required":{"description":"Base64-encoded x402v2 PaymentRequired envelope. Decode and settle the challenge per the x402 protocol.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/x402PaymentRequired"}}}}}}},"/v1/audio/transcriptions":{"post":{"operationId":"x402_v1AudioTranscriptions","summary":"Pay-per-call API via x402","description":"Speech-to-text via Telnyx Inference (OpenAI-compatible /v1/audio/transcriptions, multipart). Whisper large-v3-turbo, 100 languages, wav/mp3 up to 5 min / 12 MB. $0.003 USDC per minute metered per second ($0.002 minimum settle), or flat $0.015 exact per call. Returns HTTP 402 with `payment-required` header; settle the x402 challenge to receive the response. No Telnyx API key required.","tags":["x402"],"servers":[{"url":"https://x402.telnyx.com","description":"x402 pay-per-call gateway"}],"security":[],"x-payment-info":{"offers":[{"intent":"charge","method":"x402","amount":"15000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"0.015 USDC per call via x402 on Base. Gateway: https://x402.telnyx.com/v1/audio/transcriptions"}]},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Audio file (wav/mp3), up to 5 minutes / 12 MB."},"model":{"type":"string","enum":["whisper-1","whisper-large-v3-turbo","openai/whisper-large-v3-turbo"],"description":"All aliases of openai/whisper-large-v3-turbo."},"response_format":{"type":"string","enum":["json","verbose_json"]},"language":{"type":"string"},"prompt":{"type":"string","maxLength":1024},"temperature":{"type":"number","minimum":0,"maximum":1}}}}}},"responses":{"200":{"description":"Transcription (returned after payment settles). `verbose_json` adds duration and segment timestamps.","content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"duration":{"type":"number","description":"Audio duration in seconds (verbose_json only)."},"segments":{"type":"array","items":{"type":"object"},"description":"Segment timestamps (verbose_json only)."}}}}}},"402":{"description":"Payment Required — settle the x402 challenge described in the payment-required header. Gateway: https://x402.telnyx.com/v1/audio/transcriptions. See `x-payment-info` for accepted payment offers.","headers":{"payment-required":{"description":"Base64-encoded x402v2 PaymentRequired envelope. Decode and settle the challenge per the x402 protocol.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/x402PaymentRequired"}}}}}}}},"components":{"callbacks":{},"examples":{"Maximum20JobsAllowed":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"You can have at most 20 pending or in progress jobs","source":{"pointer":"/base"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"MaximumAllowedPhoneNumbers":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"1000 numbers is the maximum allowed.","source":{"pointer":"/phone_numbers"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"MinimumAllowedPhoneNumbers":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"You must provide at least 1 phone number.","source":{"pointer":"/phone_numbers"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"MixedIdsAndE164Values":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"You must specify either all phone numbers in the e164 format or all as phone number ids","source":{"pointer":"/phone_numbers"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"NotAuthorized":{"value":{"errors":[{"code":"10006","title":"Not authorized","detail":"You are not authorized to access the requested resource.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10006"}}]}},"PhoneNumberOwnership":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"You must own every number in the bulk request","source":{"pointer":"/phone_numbers"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"PhoneNumbersMustBePresent":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"must be present","source":{"pointer":"/phone_numbers"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}}},"headers":{"IdempotentReplayed":{"description":"Present with value `true` when Edge replayed a stored successful response for the supplied Idempotency-Key. Omitted for first-time requests and error responses.","schema":{"type":"boolean","enum":[true],"example":true}},"PaymentReceipt":{"description":"Machine Payment Protocol receipt returned on successful paid responses. Contains the receipt token identifying the settled payment; keep it for audit and reconciliation alongside the credited transaction.","schema":{"type":"string"}},"WWWAuthenticateChallenge":{"description":"Machine Payment Protocol challenge(s) returned on a 402 response, following the HTTP WWW-Authenticate format (RFC 9110). Construct a payment credential from a challenge and retry the same request with an `Authorization: Payment ...` header carrying it.","schema":{"type":"string"}}},"links":{},"parameters":{"10dlc_FilterConsolidated":{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[telnyx_campaign_id], filter[telnyx_brand_id], filter[tcr_campaign_id], filter[tcr_brand_id]","schema":{"type":"object","properties":{"telnyx_campaign_id":{"type":"string","format":"uuid","example":"f3575e15-32ce-400e-a4c0-dd78800c20b0","description":"Filter results by the Telnyx Campaign id"},"telnyx_brand_id":{"type":"string","format":"uuid","example":"f3575e15-32ce-400e-a4c0-dd78800c20b0","description":"Filter results by the Telnyx Brand id"},"tcr_campaign_id":{"type":"string","example":"CAMPID3","description":"Filter results by the TCR Campaign id"},"tcr_brand_id":{"type":"string","example":"BRANDID","description":"Filter results by the TCR Brand id"}}}},"AccountSid":{"name":"account_sid","in":"path","required":true,"description":"The id of the account the resource belongs to.","schema":{"type":"string"}},"After":{"name":"after","in":"query","required":false,"description":"Return results with a cursor position after this value.","schema":{"type":"integer","minimum":0,"default":0}},"AgentId":{"name":"id","in":"path","required":true,"description":"The Telnyx-assigned agent identifier.","schema":{"type":"string","format":"uuid"}},"ArtifactId":{"name":"artifact_id","in":"path","required":true,"description":"Unique identifier for a meeting session artifact.","schema":{"type":"string","examples":["mtgart_b2c3d4e5-f6a7-8901-bcde-f23456789012"]}},"AuthorizationBearer":{"name":"authorization_bearer","in":"header","schema":{"type":"string","description":"Authenticates the request with your Telnyx API V2 KEY"},"description":"Format: Bearer <TOKEN>"},"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 <code>connection_name</code> 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 <code>external_sip_connection</code> matching the given value will be returned."},"id":{"type":"string","default":null,"example":"1930241863466354012","description":"If present, connections with <code>id</code> matching the given value will be returned."},"created_at":{"type":"string","default":null,"example":"2022-12-31","description":"If present, connections with <code>created_at</code> 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 <code>street_address</code> 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 <code>address_book</code> flag equal to the given value."}}},"customer_reference":{"oneOf":[{"type":"string","description":"If present, addresses with <code>customer_reference</code> 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","national","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.<br/><br/>\n If the SIM card contains <b><i>all</i></b> of the given <code>tags</code> they will be found.<br/><br/>\nFor example, if the SIM cards have the following tags: <ul>\n  <li><code>['customers', 'staff', 'test']</code>\n  <li><code>['test']</code></li>\n  <li><code>['customers']</code></li>\n</ul>\nSearching for <code>['customers', 'test']</code> returns only the first because it's the only one with both tags.<br/> Searching for <code>test</code> returns the first two SIMs, because both of them have such tag.<br/> Searching for <code>customers</code> returns the first and last SIMs.<br/>\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"},"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"}},"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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>street_address</code>: sorts the result by the\n    <code>street_address</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-street_address</code>: sorts the result by the\n    <code>street_address</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>friendly_name</code>: sorts the result by the\n    <code>friendly_name</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-friendly_name</code>: sorts the result by the\n    <code>friendly_name</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>connection_name</code>: sorts the result by the\n    <code>connection_name</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-connection_name</code>: sorts the result by the\n    <code>connection_name</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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 <code>-</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>name</code>: sorts the result by the\n    <code>name</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-name</code>: sorts the result by the\n    <code>name</code> field in descending order.\n  </li>\n</ul> <br/>","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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>street_address</code>: sorts the result by the\n    <code>street_address</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-street_address</code>: sorts the result by the\n    <code>street_address</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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"}},"TemplateId":{"name":"id","in":"path","required":true,"description":"Email template UUID.","schema":{"type":"string","format":"uuid"}},"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"}},"WhatsappPhoneNumber":{"name":"phone_number","in":"path","required":true,"schema":{"type":"string"},"description":"Phone number (E.164 format)"},"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"}},"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 <code>application_name</code> 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 <code>friendly_name</code> containing the given value will be returned. Matching is not case-sensitive. Requires at least three characters."}}}},"call-scripting_PageConsolidated":{"name":"page","in":"query","style":"deepObject","explode":true,"description":"Consolidated page parameter (deepObject style). Originally: page[size], page[number]","schema":{"type":"object","properties":{"size":{"type":"integer","minimum":1,"maximum":250,"default":250,"description":"The size of the page"},"number":{"type":"integer","minimum":1,"default":1,"description":"The page number to load"}}}},"calls_Page":{"name":"Page","in":"query","required":false,"description":"The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.","schema":{"type":"integer"},"example":"1"},"calls_PageSize":{"name":"PageSize","in":"query","required":false,"description":"The number of records to be displayed on a page","schema":{"type":"integer"},"example":"10"},"collections_PageSize":{"name":"page[size]","in":"query","required":false,"description":"Number of results per page. Defaults to 20.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"example":20}},"conferences_Page":{"name":"Page","in":"query","required":false,"description":"The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.","schema":{"type":"integer"},"example":"1"},"conferences_PageSize":{"name":"PageSize","in":"query","required":false,"description":"The number of records to be displayed on a page","schema":{"type":"integer"},"example":"10"},"connections_FilterConsolidated":{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id]","schema":{"type":"object","properties":{"connection_name":{"type":"object","description":"Filter by connection_name using nested operations","properties":{"contains":{"type":"string","default":null,"description":"If present, connections with <code>connection_name</code> 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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>connection_name</code>: sorts the result by the\n    <code>connection_name</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-connection_name</code>: sorts the result by the\n    <code>connection_name</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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"},"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 <code>email</code> matching exactly the value given."}}},"organization_name":{"type":"object","additionalProperties":false,"properties":{"contains":{"type":"string","description":"If present, only returns results with the <code>organization_name</code> 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 <code>organization_name</code> 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 <code>status</code> matching exactly the value given. Use <code>enabled</code> or <code>disabled</code> 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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>email</code>: sorts the result by the\n    <code>email</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-email</code>: sorts the result by the\n    <code>email</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> 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 <code>application_name</code> 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 <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n  <li>\n    <code>application_name</code>: sorts the result by the\n    <code>application_name</code> field in ascending order.\n  </li>\n\n  <li>\n    <code>-application_name</code>: sorts the result by the\n    <code>application_name</code> field in descending order.\n  </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> in descending order.","schema":{"type":"string","enum":["created_at","application_name","active"],"example":"application_name","default":"created_at"}},"pronunciation_dict_id":{"name":"id","in":"path","required":true,"description":"The UUID of the pronunciation dictionary.","schema":{"type":"string","format":"uuid","example":"c215a3e1-be41-4701-97e8-1d3c22f9a5b7"}},"provider":{"name":"provider","in":"query","required":false,"description":"TTS provider. Defaults to `telnyx` if not specified. Ignored when `voice` is provided.","schema":{"type":"string","enum":["aws","telnyx","azure","elevenlabs","minimax","resemble","xai","humain","soniox"],"default":"telnyx"}},"push-notifications_PageConsolidated":{"name":"page","in":"query","style":"deepObject","explode":true,"description":"Consolidated page parameter (deepObject style). Originally: page[size], page[number]","schema":{"type":"object","properties":{"size":{"type":"integer","minimum":1,"maximum":250,"default":20,"description":"The size of the page."},"number":{"type":"integer","minimum":1,"default":1,"description":"The page number to load."}}}},"queues_Page":{"name":"Page","in":"query","required":false,"description":"The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.","schema":{"type":"integer"},"example":"1"},"queues_PageSize":{"name":"PageSize","in":"query","required":false,"description":"The number of records to be displayed on a page","schema":{"type":"integer"},"example":"10"},"rcs-registration_IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"A caller-generated key containing letters, numbers, underscores, or hyphens. Reuse the same key and request body when retrying the same logical agent creation.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9_-]+$"}},"recordings_Page":{"name":"Page","in":"query","required":false,"description":"The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.","schema":{"type":"integer"},"example":"1"},"recordings_PageSizeTexml":{"name":"PageSize","in":"query","required":false,"description":"The number of records to be displayed on a page","schema":{"type":"integer"},"example":"10"},"redact":{"name":"redact","in":"query","required":false,"description":"Enable redaction of sensitive information (e.g., PCI data, SSN) from transcription results. Supported values depend on the transcription engine.","schema":{"type":"string"},"example":"pci"},"release_id":{"name":"release_id","description":"Identifies a Release request","in":"path","required":true,"schema":{"format":"uuid","type":"string","example":"7b6a6449-b055-45a6-81f6-f6f0dffa4cc6"}},"sample_rate":{"name":"sample_rate","in":"query","required":false,"description":"Audio sample rate in Hz. Required when `input_format` is a raw encoding (`linear16`, `linear32`) — those formats carry no header metadata. Ignored for container formats (`mp3`, `wav`), which self-describe their rate.","schema":{"type":"integer"},"example":16000},"socket_id":{"name":"socket_id","in":"query","required":false,"description":"Client-provided socket identifier for tracking. If not provided, one is generated server-side.","schema":{"type":"string"}},"telephony-credentials_FilterConsolidated":{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[name], filter[status], filter[resource_id], filter[sip_username]","schema":{"type":"object","properties":{"tag":{"type":"string","description":"Filter by tag"},"name":{"type":"string","description":"Filter by name"},"status":{"type":"string","description":"Filter by status"},"resource_id":{"type":"string","description":"Filter by resource_id"},"sip_username":{"type":"string","description":"Filter by sip_username"}}}},"telephony-credentials_PageConsolidated":{"name":"page","in":"query","style":"deepObject","explode":true,"description":"Consolidated page parameter (deepObject style). Originally: page[number], page[size]","schema":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"default":1,"description":"The page number to load"},"size":{"type":"integer","minimum":1,"maximum":250,"default":50,"description":"The size of the page"}}}},"ticket_id":{"name":"ticket_id","description":"Identifies an Upload request","in":"path","required":true,"schema":{"format":"uuid","type":"string","example":"7b6a6449-b055-45a6-81f6-f6f0dffa4cc6"}},"transcription_engine":{"name":"transcription_engine","in":"query","required":true,"description":"The transcription engine to use for processing the audio stream.","schema":{"type":"string","enum":["Azure","Deepgram","Google","Telnyx","xAI","Speechmatics","Soniox","Parakeet","Humain","Reson8","Cohere"]},"example":"Telnyx"},"transcriptions_PageSize":{"name":"PageSize","in":"query","required":false,"description":"The number of records to be displayed on a page","schema":{"type":"integer"},"example":"10"},"user-addresses_FilterConsolidated":{"name":"filter","in":"query","style":"deepObject","explode":true,"description":"Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains], filter[street_address][contains]","schema":{"type":"object","properties":{"customer_reference":{"type":"object","description":"Filter user addresses via the customer reference. Supports both exact matching (eq) and partial matching (contains). Matching is not case-sensitive.","properties":{"eq":{"type":"string","description":"Filter user addresses via exact customer reference match. Matching is not case-sensitive."},"contains":{"type":"string","description":"If present, user addresses with <code>customer_reference</code> 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 <code>street_address</code> 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 <code>customer_reference</code> 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 <code>street_address</code> 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.<voice_id>`, `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"}}}},"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/<field>`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorList"},"example":{"errors":[{"code":"10015","title":"Validation Failed","detail":"can't be blank","source":{"pointer":"/data/attributes/to"}}]}}}},"Conflict":{"description":"The request conflicts with existing state (e.g. duplicate slug or duplicate source).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"collection_slug_taken","title":"Collection slug already in use","detail":"A collection with slug 'support-transcripts' already exists for this account.","meta":{"pointer":"/slug"}}]}}}},"ConflictErrorResponse":{"description":"Resource conflict or in use","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"DependencyUnavailable":{"description":"A registration dependency is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"DraftUnavailableResponse":{"description":"Drafts or the email domain service are temporarily unavailable (10016).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10016","title":"Service Unavailable","detail":"Drafts are temporarily unavailable. Please try again later."}]}}}},"EmailSendTooManyRequestsResponse":{"description":"Send rejected before message creation because the account daily recipient quota was exhausted (10011), the sender-domain graduation ceiling was exceeded (domain_graduation_limit_exceeded), or domain reputation is poor (reputation_suspended).","headers":{"Retry-After":{"description":"Seconds until the next UTC-midnight reset. Present only for domain_graduation_limit_exceeded; omitted for 10011 and reputation_suspended.","schema":{"type":"integer","minimum":1},"example":3600}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DailySendLimitError"},{"$ref":"#/components/schemas/DomainGraduationLimitExceededError"},{"$ref":"#/components/schemas/ReputationSuspendedError"}]},"examples":{"accountDailyLimit":{"summary":"Account daily recipient quota exhausted","value":{"errors":[{"code":"10011","title":"Too Many Requests","detail":"Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC."}]}},"senderDomainGraduation":{"summary":"Sender-domain graduation ceiling exceeded","value":{"errors":[{"code":"domain_graduation_limit_exceeded","title":"Too Many Requests","detail":"Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC.","meta":{"retry_after_seconds":3600,"remaining_today":0}}]}},"reputationSuspended":{"summary":"Domain reputation is poor","value":{"errors":[{"code":"reputation_suspended","title":"Sending Suspended","detail":"Sender domain reputation is too low. Sending has been suspended. Please contact support to resolve deliverability issues."}]}}}}}},"Forbidden":{"description":"The authenticated credential is not permitted to perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"forbidden","message":"credential is not permitted"}}}}},"ForbiddenErrorResponse":{"description":"Insufficient permissions to access billing group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"ForbiddenResponse":{"description":"Forbidden. The request is understood but has been refused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"403","title":"Forbidden","detail":"Forbidden"}]}}}},"FrameworkError":{"description":"Framework-rendered error (e.g. 406 Not Acceptable, 405 Method Not\nAllowed, 415 Unsupported Media Type). HTTP status matches the error\nand the body `code` carries that same status (e.g. `\"406\"`, not a\nhardcoded `\"500\"`). The explicit `500.json` clause still emits\n`code: \"500\"` for genuine 500s.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorList"},"example":{"errors":[{"code":"406","title":"Not Acceptable","detail":"Not Acceptable"}]}}}},"GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"GetGcbChannelZonesRequestResponse":{"description":"A list of channel zones","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GcbChannelZone"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}}}}},"IdempotencyConflictResponse":{"description":"A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10036","title":"Resource is being processed","detail":"A request with this Idempotency-Key is already being processed.","source":{"pointer":"/header/Idempotency-Key"}}]}}}},"InboundMessageLabelResponse":{"description":"The updated message, including its current label set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundMessageResponse"},"example":{"data":{"id":"55555555-5555-5555-5555-555555555555","record_type":"email_message","direction":"inbound","status":"received","inbox_id":"11111111-1111-1111-1111-111111111111","thread_id":"33333333-3333-3333-3333-333333333333","message_id":"<message@example.com>","in_reply_to":"<earlier@example.com>","references":["<earlier@example.com>"],"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"}}}}},"MeetingRecordingLookupProviderError":{"description":"The provider failed to return recording entries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"provider_error","message":"failed to fetch recordings from provider"}}}}},"MeetingSendChatProviderError":{"description":"The meeting provider rejected native chat delivery.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"provider_error","message":"meeting provider rejected chat message"}}}}},"MeetingSpeakUpstreamError":{"description":"Text-to-speech generation or meeting audio delivery failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"tts_error","message":"tts synthesis failed"}}}}},"MeetingStopProviderError":{"description":"The meeting provider rejected cancellation or leave.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"provider_error","message":"meeting provider rejected bot stop"}}}}},"MeetingStopSpeakingProviderError":{"description":"The meeting provider rejected stopping audio playback.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"provider_error","message":"meeting provider rejected stop audio"}}}}},"MeetingUpdateProviderError":{"description":"The meeting provider rejected the scheduled-session update.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"provider_error","message":"meeting provider rejected session update"}}}}},"NotFound":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"collection_not_found","title":"Collection not found","detail":"No collection with uuid 'b3b1c8a2-9f4e-4d2a-9c1e-2f7a6d5b4c3a' exists for this account."}]}}}},"NotFoundErrorResponse":{"description":"Billing group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"NotFoundResponse":{"description":"Resource not found. The requested resource does not exist. Common causes include: invalid call_control_id, conference not found, audio file not found, or recording not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"examples":{"resource_not_found":{"summary":"Generic resource not found","value":{"errors":[{"code":"10007","title":"Resource not found","detail":"Resource not found"}]}},"conference_not_found":{"summary":"Conference not found","value":{"errors":[{"code":"90058","title":"Invalid conference_id","detail":"The conference does not exist."}]}},"audio_file_not_found":{"summary":"Audio file not found","value":{"errors":[{"code":"10005","title":"Audio file not found","detail":"Provided audio file URL couldn't be found."}]}},"recording_not_found":{"summary":"Recording not found","value":{"errors":[{"code":"10005","title":"Recording not found","detail":"The recording could not be found. Please check the recording_id and try again.","source":{"pointer":"/recording_id"}}]}}}}}},"NotFoundResponseApp":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"examples":{"notFound":{"value":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/"}}]}}}}}},"PayloadTooLarge":{"description":"Payload Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"invalid_request","message":"request body too large"}}}}},"PayloadTooLargeResponse":{"description":"Request body exceeds the 8,000,000-byte limit for this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"ProviderError":{"description":"The RCS provider rejected or could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"ProviderTimeout":{"description":"The upstream search provider timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchError"},"example":{"error":{"message":"Provider request timed out"}}}}},"RecordingMediaAuthenticationUnavailable":{"description":"The authentication service is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"auth_unavailable","message":"authentication service is unavailable"}}}}},"RecordingMediaInvalidState":{"description":"Provider 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 provider 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":"The session's provider does not support recording-media deletion, or does not match the configured provider.","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 or authentication is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"not_configured","message":"required feature is not configured"}}}}},"ServiceUnavailableErrorResponse":{"description":"Service temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10037","title":"Service unavailable","detail":"Service is unavailable."}]}}}},"ServiceUnavailableResponse":{"description":"Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"example":{"errors":[{"code":"10007","title":"Service unavailable","detail":"Service unavailable"}]}}}},"TemplateRenderFailedResponse":{"description":"Standalone template render failure (10015).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10015","title":"Template Render Failed","detail":"Liquid parse error"}]}}}},"TooManyRequests":{"description":"Authentication is temporarily overloaded. Retry after the number of seconds in `Retry-After`.","headers":{"Retry-After":{"required":true,"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":1,"maximum":5}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"auth_overloaded","message":"authentication temporarily overloaded"}}}}},"TooManyRequestsResponse":{"description":"Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce the rate of outbound dial attempts and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"example":{"errors":[{"code":"90103","title":"Dials per second limit exceeded.","detail":"You have exceeded the number of dials per second allowed for your account."}]}}}},"UnauthenticatedResponse":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"examples":{"Authentication Failed":{"value":{"errors":[{"code":"10009","title":"Authentication failed","detail":"Could not understand the provided credentials.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}}}},"Unauthorized":{"description":"Missing or invalid authentication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}},"UnauthorizedErrorResponse":{"description":"Authentication required or invalid credentials","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}},"UnauthorizedRequestErrorResponse":{"description":"Unauthorized Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}},"UnauthorizedResponse":{"description":"Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}},"UnexpectedErrorResponse":{"description":"An unexpected error occurred.","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/UnexpectedError"}}}}}}},"UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"UnprocessableEntityErrorResponse":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"examples":{"missing_required_parameter":{"summary":"Missing required parameter","value":{"errors":[{"code":"10004","title":"Missing required parameter","detail":"The 'to' parameter is required and cannot be blank.","source":{"pointer":"/to"}}]}},"invalid_call_control_id":{"summary":"Invalid call control ID","value":{"errors":[{"code":"90015","title":"Invalid Call Control ID","detail":"The call_control_id provided was not valid.","source":{"pointer":"/call_control_id"}}]}},"call_already_ended":{"summary":"Call has already ended","value":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}},"call_not_answered":{"summary":"Call not answered yet","value":{"errors":[{"code":"90034","title":"Call not answered yet","detail":"This call can't receive this command because it has not been answered yet."}]}},"cannot_record_before_audio_started":{"summary":"Cannot record before audio started","value":{"errors":[{"code":"90020","title":"Call recording triggered before audio started","detail":"Call recording cannot be started until audio has commenced on the call."}]}},"transcription_already_active":{"summary":"Transcription already active","value":{"errors":[{"code":"90054","title":"Call transcription is already in progress","detail":"Call transcription can not be started more than once."}]}},"ai_assistant_already_active":{"summary":"AI Assistant already active","value":{"errors":[{"code":"90061","title":"AI Assistant is already in progress","detail":"AI Assistant cannot be started more than once."}]}},"conference_already_ended":{"summary":"Conference has already ended","value":{"errors":[{"code":"90019","title":"Conference has already ended","detail":"This conference is no longer active and can't receive commands."}]}},"conference_name_conflict":{"summary":"Conference name conflict","value":{"errors":[{"code":"90033","title":"Unable to execute command","detail":"Conference with given name already exists and it's active."}]}},"max_participants_reached":{"summary":"Maximum participants reached","value":{"errors":[{"code":"90032","title":"Maximum number of participants reached","detail":"The maximum allowed value of `max_participants` has been reached at 100."}]}},"queue_full":{"summary":"Queue is full","value":{"errors":[{"code":"90036","title":"Queue full","detail":"The 'support' queue is full and can't accept more calls."}]}},"call_already_in_queue":{"summary":"Call already in queue","value":{"errors":[{"code":"90038","title":"Call already in queue","detail":"Call can't be added to a queue it's already in."}]}},"invalid_connection_id":{"summary":"Invalid connection ID","value":{"errors":[{"code":"10015","title":"Invalid value for connection_id (Call Control App ID)","detail":"The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call Control Apps with valid webhook URL are accepted.","source":{"pointer":"/connection_id"}}]}},"invalid_phone_number_format":{"summary":"Invalid phone number format","value":{"errors":[{"code":"10016","title":"Phone number must be in +E164 format","detail":"The 'to' parameter must be in E164 format.","source":{"pointer":"/to"}}]}},"srtp_not_supported_for_pstn":{"summary":"SRTP not supported for PSTN calls","value":{"errors":[{"source":{"pointer":"/media_encryption"},"title":"Media encryption not supported for PSTN calls","detail":"SRTP media encryption is not supported for PSTN calls.","code":"10011"}]}},"fork_not_found":{"summary":"Call is not forked","value":{"errors":[{"code":"90031","title":"Call is not currently forked","detail":"Can't stop forking, because the call isn't currently forked."}]}},"media_streaming_used":{"summary":"Media streaming in use","value":{"errors":[{"code":"90045","title":"Media Streaming is used","detail":"This command can't be issued when media streaming is used."}]}},"invalid_enumerated_value":{"summary":"Invalid enumerated value","value":{"errors":[{"code":"10032","title":"Invalid enumerated value","detail":"The value must be one of: dual, single.","source":{"pointer":"/record_channels"}}]}},"value_outside_range":{"summary":"Value outside of range","value":{"errors":[{"code":"10033","title":"Value outside of range","detail":"The value is outside of allowed range 1 to 5000","source":{"pointer":"/max_participants"}}]}}}}}},"UnprocessableManagedAccountEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/UnprocessableEntityError"}}}},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"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 /<field>`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorList"},"example":{"errors":[{"code":"10015","title":"Validation Failed","detail":"is invalid","source":{"pointer":"/filter[reason]"}}]}}}},"ValidationErrorResponse":{"description":"Validation Failed (10015) or changeset validation error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10015","title":"Validation Failed","detail":"subject can't be blank","source":{"pointer":"/data/attributes/subject"}}]}}}},"ValidationFailed":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsErrorResponse"},"example":{"errors":[{"code":"10015","title":"Validation Failed","detail":"domain is invalid","source":{"pointer":"/data/attributes/domain"}}]}}}},"WabaSettingsResponse":{"description":"Successful response with Whatsapp business account settings","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WabaSettings"}}}}}},"WabaSingleResponse":{"description":"Successful response with Whatsapp business account","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WabaResponse"}}}}}},"WabasListResponse":{"description":"Successful response with list of Whatsapp business accounts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WabaResponse"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta"}}}}}},"WhatsappCallingSettingsResponse":{"description":"Successful response with Whatsapp calling settings","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappCallingSettingsData"}}}}}},"WhatsappConversationWindowResponse":{"description":"Successful response with Whatsapp conversation window status","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappConversationWindowData"}}}}}},"WhatsappConversationalComponentSingleResponse":{"description":"Successful response with Whatsapp conversational components","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappConversationalComponent"}}}}}},"WhatsappPhoneSingleResponse":{"description":"Successful response with one WhatsApp phone number","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappPhoneResponse"}},"required":["data"]}}}},"WhatsappPhonesListResponse":{"description":"Successful response with Whatsapp phone numbers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WhatsappPhoneResponse"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta"}}}}}},"WhatsappProfileSingleResponse":{"description":"Successful response with Whatsapp profile","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WhatsappProfileData"}}}}}},"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"}}}}}},"billing_ForbiddenErrorResponse":{"description":"Insufficient permissions to access balance information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10010","title":"Authorization failed","detail":"You do not have permission to perform the requested action on the specified resource or resources."}]}}}},"billing_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"billing_UnprocessableEntityErrorResponse":{"description":"Invalid or missing account information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"branded-calling_GenericErrorResponse":{"description":"An error occurred. The response carries the standard Telnyx error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/branded-calling_Errors"},"examples":{"validation_error":{"summary":"422 - request body failed validation","value":{"errors":[{"code":"10005","title":"Invalid parameters","detail":"field required","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/body/legal_name"}}]}},"bad_request":{"summary":"400 - request rejected by a state guard","description":"Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Cannot update DIR in 'verified' status","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"not_found":{"summary":"404 - resource does not exist or is not yours","value":{"errors":[{"code":"10009","title":"Resource not found","detail":"Enterprise not found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}},"conflict":{"summary":"409 - request conflicts with current resource state","value":{"errors":[{"code":"10021","title":"Resource in use","detail":"DIR has 1 active infringement claim(s). Resolve the claim before making this change.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10021"}}]}}}}}},"bundle-pricing_BadRequestErrorResponse":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"bundle-pricing_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"bundle-pricing_NotFoundErrorResponse":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"bundle-pricing_UnprocessableEntityErrorResponse":{"description":"Request cannot be processed","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"call-control_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-control_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"call-recordings_GenericErrorResponse":{"description":"Unexpected error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"call-recordings_InternalServerErrorResponse":{"description":"Internal server error. An unexpected error occurred on the server.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"500","title":"Internal Server Error","detail":"Internal server error"}]}}}},"call-recordings_NotFoundResponse":{"description":"Resource not found. The requested resource or URL could not be found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"not_found":{"summary":"Generic not found","value":{"errors":[{"code":"404","title":"Not Found","detail":"Page not found"}]}},"connection_not_found":{"summary":"Connection not found","value":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found.","source":{"pointer":"/connection_id"}}]}}}}}},"call-recordings_UnauthorizedResponse":{"description":"Unauthorized. The request lacks valid authentication credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"401","title":"Unauthorized","detail":"Unauthorized"}]}}}},"call-scripting_BadRequestResponse":{"description":"Bad request. The request could not be understood or was missing required parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"examples":{"conference_ended":{"summary":"Conference already ended","value":{"errors":[{"code":"90019","title":"Conference has already ended","detail":"This conference is no longer active and can't receive commands."}]}},"participant_on_hold":{"summary":"Participant on hold","value":{"errors":[{"code":"90047","title":"Participant on hold","detail":"This participant is on hold"}]}}}}}},"call-scripting_GenericErrorResponse":{"description":"An unexpected error occurred while processing the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occurred."}]}}}},"call-scripting_NotFoundResponse":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ResourceNotFoundError"}}}},"call-scripting_NotFoundResponse_c75353cb83":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ResourceNotFoundError_c75353cb83"}}}},"call-scripting_TooManyRequestsResponse":{"description":"Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce the rate of outbound dial attempts and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"example":{"errors":[{"code":"90103","title":"Dials per second limit exceeded.","detail":"You have exceeded the number of dials per second allowed for your account."}]}}}},"call-scripting_UnauthorizedResponse":{"description":"The user doesn't have the required permissions to perform the requested action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"examples":{"notAuthorized":{"value":{"errors":[{"code":"10010","title":"Not authorized","detail":"You are not authorized to access the requested resource.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10010"},"source":{"pointer":"/"}}]}}}}}},"call-scripting_UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but contains semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/calls_ErrorResponse"},"examples":{"missing_required_parameter":{"summary":"Missing required parameter","value":{"errors":[{"code":"10004","title":"Missing required parameter","detail":"Can't be blank: ApplicationId","source":{"pointer":"/ApplicationId"}}]}},"invalid_parameter_type":{"summary":"Invalid parameter type","value":{"errors":[{"code":"10026","title":"Invalid parameter type","detail":"The 'To' parameter must be of type 'string'","source":{"pointer":"/To"}}]}},"invalid_enumerated_value":{"summary":"Invalid enumerated value","value":{"errors":[{"code":"10032","title":"Invalid enumerated value","detail":"Status must be one of completed","source":{"pointer":"/Status"}}]}},"invalid_send_digits":{"summary":"Invalid SendDigits format","value":{"errors":[{"code":"90014","title":"Invalid value for SendDigits","detail":"The 'SendDigits' parameter must be a 'string' made of a combination of either 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, w, W, * or #","source":{"pointer":"/SendDigits"}}]}}}}}},"call-scripting_UnprocessableEntityResponse_c75353cb83":{"description":"Unprocessable entity. The request was well-formed but contains semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/call-scripting_ErrorResponse"},"examples":{"missing_required_parameter":{"summary":"Missing required parameter","value":{"errors":[{"code":"10004","title":"Missing required parameter","detail":"Can't be blank: ApplicationId","source":{"pointer":"/ApplicationId"}}]}},"invalid_parameter_type":{"summary":"Invalid parameter type","value":{"errors":[{"code":"10026","title":"Invalid parameter type","detail":"The 'To' parameter must be of type 'string'","source":{"pointer":"/To"}}]}},"invalid_enumerated_value":{"summary":"Invalid enumerated value","value":{"errors":[{"code":"10032","title":"Invalid enumerated value","detail":"Status must be one of completed","source":{"pointer":"/Status"}}]}},"invalid_send_digits":{"summary":"Invalid SendDigits format","value":{"errors":[{"code":"90014","title":"Invalid value for SendDigits","detail":"The 'SendDigits' parameter must be a 'string' made of a combination of either 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, w, W, * or #","source":{"pointer":"/SendDigits"}}]}}}}}},"charges_BadRequestErrorResponse":{"description":"Invalid request parameters or date range","content":{"application/json":{"schema":{"$ref":"#/components/schemas/charges_Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"charges_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/charges_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"charges_UnprocessableEntityErrorResponse":{"description":"User account not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/charges_Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"connections_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/connections_ErrorResponse"},"examples":{"missingParameter":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed.","source":{"pointer":"/"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}}}}}},"connections_NotFoundResponse":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/connections_ErrorResponse"},"examples":{"notFound":{"value":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/"}}]}}}}}},"connections_UnauthorizedResponse":{"description":"The user doesn't have the required permissions to perform the requested action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/connections_ErrorResponse"},"examples":{"notAuthorized":{"value":{"errors":[{"code":"10010","title":"Not authorized","detail":"You are not authorized to access the requested resource.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10010"},"source":{"pointer":"/"}}]}}}}}},"connections_UnprocessableEntityResponse":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/connections_ErrorResponse"},"examples":{"unprocessableEntity":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Invalid dnis_format: test, was provided. Acceptable formats are +e164, e164, national, sip_username","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"},"source":{"pointer":"/inbound/dnis_number_format"}}]}}}}}},"customer_service_record_ForbiddenErrorResponse":{"description":"You do not have permission to perform the requested action on the specified resource or resources.","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ForbiddenError"}}}}}}},"customer_service_record_UnauthorizedErrorResponse":{"description":"The required authentication headers were either invalid or not included in the request.","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/UnauthorizedError"}}}}}}},"customer_service_record_UnprocessableEntityErrorResponse":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/customer_service_record_UnprocessableEntityError"}}}}}}},"documents_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"email_BadRequestResponse":{"description":"Bad Request / Validation Failed (10015).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"email is required"}]}}}},"email_ForbiddenResponse":{"description":"Forbidden (10007), such as domain not verified, suspended, degraded, or missing DKIM.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10007","title":"Forbidden","detail":"Domain is not verified. Complete DNS setup before sending email."}]}}}},"email_InternalServerErrorResponse":{"description":"Internal server error (10019).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10019","title":"Internal Server Error","detail":"Failed to create batch validation"}]}}}},"email_NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainsErrorResponse"},"example":{"errors":[{"code":"10001","title":"Not Found","detail":"The requested email domain was not found"}]}}}},"email_NotFoundResponse":{"description":"Resource not found (10001).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10001","title":"Not Found","detail":"The requested resource was not found"}]}}}},"email_ServiceUnavailableResponse":{"description":"Service unavailable (10016), including an unavailable upstream dependency or unavailable Edge idempotency protection for a keyed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10016","title":"Service Unavailable","detail":"The email domain service is temporarily unavailable. Please try again later."}]}}}},"email_Unauthorized":{"description":"Missing or invalid gateway auth.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorList"},"example":{"errors":[{"code":"10007","title":"Unauthorized","detail":"Missing authentication"}]}}}},"email_UnauthorizedResponse":{"description":"Not authorized (10006).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/email_ErrorResponse"},"example":{"errors":[{"code":"10006","title":"Not authorized","detail":"Invalid API key","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10006"}}]}}}},"emergency_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"emergency_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"emergency_NotFoundResponse":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"emergency_UnauthorizedResponse":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}},"invoice_BadRequestErrorResponse":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"invoice_ForbiddenErrorResponse":{"description":"Insufficient permissions to access invoices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10010","title":"Authorization failed","detail":"You do not have permission to perform the requested action on the specified resource or resources."}]}}}},"invoice_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"invoice_NotFoundErrorResponse":{"description":"Invoice not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"managed-accounts_ForbiddenResponse":{"description":"Unauthorized response. Happens when the current user is not authorized to access the endpoint."},"managed-accounts_UnauthorizedResponse":{"description":"Unauthenticated response. Happens when the current user cannot be authenticated."},"management_messaging_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"string","title":"string","detail":"string","source":{"pointer":"/data/attributes/phone_number","parameter":"string"}}]}}}},"media-storage_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"string","title":"string","detail":"string","source":{"pointer":"string","parameter":"string"}}]}}}},"media-streaming_GenericErrorResponse":{"description":"Unexpected error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"media-streaming_NotFoundResponse":{"description":"Resource not found. The requested resource or URL could not be found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"not_found":{"summary":"Generic not found","value":{"errors":[{"code":"404","title":"Not Found","detail":"Page not found"}]}},"connection_not_found":{"summary":"Connection not found","value":{"errors":[{"code":"10005","title":"Resource not found","detail":"The Dialogflow connection for the specified connection_id could not be found.","source":{"pointer":"/connection_id"}}]}}}}}},"media-streaming_UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but contains semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"422","title":"Unprocessable Entity","detail":"The request parameters failed validation.","source":{"pointer":"/service_account"}}]}}}},"meeting-sessions_BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"invalid_request","message":"request is invalid"}}}}},"meeting-sessions_Conflict":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"invalid_state","message":"only scheduled sessions can be updated"}}}}},"meeting-sessions_InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"internal_error","message":"internal server error"}}}}},"meeting-sessions_NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"not_found","message":"meeting session not found"}}}}},"meeting-sessions_Unauthorized":{"description":"Unauthorized. On api.telnyx.com, authentication is enforced by the API gateway before the request reaches the Meeting service, so a missing or invalid API key returns the standard Telnyx error envelope (`{\"errors\": [{\"code\": \"10009\", ...}]}`) rather than the single-`error` shape below.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"unauthorized","message":"invalid or missing credentials"}}}}},"meeting-sessions_UnprocessableEntity":{"description":"Unprocessable Entity, including an unsupported capability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/meeting-sessions_ErrorResponse"},"example":{"error":{"code":"unsupported_capability","message":"avatar video is not supported on platform 'unknown'"}}}}},"messaging_BadRequestResponse":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"messaging_BadRequestResponse_0b38e7044b":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors_0b38e7044b"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"messaging_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"}}}},"messaging_GenericErrorResponse_0b38e7044b":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors_0b38e7044b"},"example":{"errors":[{"code":"string","title":"string","detail":"string","source":{"pointer":"/data/attributes/phone_number","parameter":"string"}}]}}}},"messaging_NotFoundResponse":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"}}}},"messaging_NotFoundResponse_0b38e7044b":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors_0b38e7044b"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"messaging_UnauthorizedResponse":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}},"messaging_UnauthorizedResponse_0b38e7044b":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors_0b38e7044b"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}},"messaging_UnprocessableEntityResponse":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"messaging_UnprocessableEntityResponse_0b38e7044b":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors_0b38e7044b"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"messaging_WabasListResponse":{"description":"Successful response with list of Whatsapp business accounts","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WabaResponse"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"messaging_WhatsappPhonesListResponse":{"description":"Successful response with Whatsapp phone numbers","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WhatsappPhoneResponse"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"messaging_WhatsappTemplateListResponse":{"description":"Successful response with Whatsapp template","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WhatsappTemplateData"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}}}}},"messaging_toll_free_verification_GenericErrorResponse":{"description":"Generic error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"string","title":"string","detail":"string","source":{"pointer":"string","parameter":"string"}}]}}}},"netapps_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/netapps_Errors"}}}},"netapps_UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/netapps_Errors"}}}},"notifications_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"notifications_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"notifications_NotFoundResponse":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"number-lookup_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"number-reputation_GenericErrorResponse":{"description":"An error occurred. The response carries the standard Telnyx error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/number-reputation_Errors"},"examples":{"validation_error":{"summary":"422 - request body failed validation","value":{"errors":[{"code":"10005","title":"Invalid parameters","detail":"field required","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/body/legal_name"}}]}},"bad_request":{"summary":"400 - request rejected by a state guard","description":"Returned when the request itself is well-formed but the resource is in a state that disallows this action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Cannot update DIR in 'verified' status","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}},"not_found":{"summary":"404 - resource does not exist or is not yours","value":{"errors":[{"code":"10009","title":"Resource not found","detail":"Enterprise not found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}},"conflict":{"summary":"409 - request conflicts with current resource state","value":{"errors":[{"code":"10021","title":"Resource in use","detail":"DIR has 1 active infringement claim(s). Resolve the claim before making this change.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10021"}}]}}}}}},"numbers_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"}}}},"numbers_BadRequestResponse_73c9788e53":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"numbers_ForbiddenResponse":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"},"examples":{"Not authorized":{"$ref":"#/components/examples/NotAuthorized"}}}}},"numbers_ForbiddenResponse_73c9788e53":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"Not authorized":{"$ref":"#/components/examples/NotAuthorized"}}}}},"numbers_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"}}}},"numbers_NotFoundResponse":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"}}}},"numbers_NotFoundResponse_73c9788e53":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"numbers_UnauthorizedResponse":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"},"examples":{"Authentication Failed":{"value":{"errors":[{"code":"10009","title":"Authentication failed","detail":"Could not understand the provided credentials.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}}}},"numbers_UnauthorizedResponse_73c9788e53":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"Authentication Failed":{"value":{"errors":[{"code":"10009","title":"Authentication failed","detail":"Could not understand the provided credentials.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}}}},"numbers_UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_Errors"}}}},"numbers_UnprocessableEntity_73c9788e53":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"phone-numbers_messaging_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"profiles_messaging_NotFoundResponse":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"programmable-fax_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/programmable-fax_ErrorResponse"},"examples":{"missingParameter":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed.","source":{"pointer":"/"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}}}}}},"programmable-fax_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"programmable-fax_NotFoundResponse":{"description":"The requested resource does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"404","title":"Not Found","detail":"The requested resource does not exist"}]}}}},"programmable-fax_UnauthorizedResponse":{"description":"Unauthorized"},"programmable-fax_UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but contains semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"422","title":"Unprocessable Entity","detail":"The request parameters failed validation"}]}}}},"rcs-registration_BadRequest":{"description":"The request or idempotency header is malformed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"rcs-registration_Conflict":{"description":"The operation is not allowed in the current lifecycle state or the idempotency key was used for a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"rcs-registration_NotFound":{"description":"The resource does not exist, is not owned by the organization, or the provider does not support the requested capability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"rcs-registration_Unauthorized":{"description":"The request is not authenticated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/rcs-registration_ErrorResponse"}}}},"rcs_messaging_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/messaging_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"sim-cards-configuration_wireless_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"sim-cards-configuration_wireless_UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"sim-cards-monitoring_wireless_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"sim-cards-monitoring_wireless_UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"siprec_siprec_GenericErrorResponse":{"description":"Unexpected error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"siprec_siprec_NotFoundResponse":{"description":"The requested resource does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":404,"title":"Not Found","detail":"The requested resource does not exist"}]}}}},"siprec_siprec_UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but contains semantic errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":422,"title":"Unprocessable Entity","detail":"The request parameters failed validation"}]}}}},"speech-to-text_UnprocessableEntityResponse":{"description":"Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values and business logic violations.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/speech-to-text_Errors"},"examples":{"missing_required_parameter":{"summary":"Missing required parameter","value":{"errors":[{"code":"10004","title":"Missing required parameter","detail":"The 'transcription_engine' parameter is required and cannot be blank.","source":{"pointer":"/transcription_engine"}}]}}}}}},"toll-free-verification_GenericErrorResponse":{"description":"Generic error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/toll-free-verification_Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"users_BadRequestResponse":{"description":"Bad request, the request was unacceptable, often due to missing a required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/users_ErrorResponse"},"examples":{"missingParameter":{"value":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed.","source":{"pointer":"/"},"meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"}}]}}}}}},"users_NotFoundResponse":{"description":"The requested resource doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/users_ErrorResponse"},"examples":{"notFound":{"value":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10005"},"source":{"pointer":"/"}}]}}}}}},"users_UnauthorizedResponse":{"description":"The user doesn't have the required permissions to perform the requested action.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/users_ErrorResponse"},"examples":{"notAuthorized":{"value":{"errors":[{"code":"10010","title":"Not authorized","detail":"You are not authorized to access the requested resource.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10010"},"source":{"pointer":"/"}}]}}}}}},"verified-numbers_GenericErrorResponse":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10015","title":"Bad Request","detail":"The request failed because it was not well-formed."}]}}}},"verified-numbers_NotFoundErrorResponse":{"description":"Resource Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"The requested resource or URL could not be found."}]}}}},"verified-numbers_UnprocessableEntityErrorResponse":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}},"verify_GenericErrorResponse":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"}}}},"video_Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/video_Error"}}}},"video_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string","example":"Error"}}}}}},"video_ResourceNotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/video_Error"},"example":{"code":"string","title":"string","detail":"string","source":{"pointer":"string","parameter":"string"}}}}},"video_UnauthorizedResponse":{"description":"Unauthorized"},"voice-channels_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}},"web-search_BadRequest":{"description":"Invalid request — 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.\n\nThe API Gateway returns this response before the request reaches the backend service. The error format follows the standard Telnyx JSON:API error envelope with `errors[]`, not the backend-level `WebSearchError` shape.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"},"example":{"errors":[{"code":"10009","title":"Authentication failed","detail":"Could not find any usable credentials in the request.","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10009"}}]}}}},"wireless_GenericErrorResponse":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"}}}},"wireless_GenericErrorResponse_c5290d5308":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"unexpectedError":{"summary":"Unexpected API error","value":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}}}}},"wireless_ResourceNotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Error"}}}},"wireless_Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"authenticationFailed":{"summary":"Authentication failed","value":{"errors":[{"code":"10009","title":"Authentication failed","detail":"The required authentication headers were either invalid or not included in the request."}]}}}}}},"wireless_UnprocessableEntity":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/wireless_Errors"}}}},"wireless_UnprocessableEntity_c5290d5308":{"description":"Unprocessable entity. Check the 'detail' field in response for details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Errors"},"examples":{"unprocessableEntity":{"summary":"Request could not be processed","value":{"errors":[{"code":"10027","title":"Unprocessable Entity","detail":"The server understood the syntax of the request but was unable to process the instructions."}]}}}}}}},"schemas":{"10dlc_Error":{"required":["code","title"],"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}}}},"10dlc_Error_ca4eb0ad6f":{"required":["code","title"],"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}}}},"10dlc_Errors":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/10dlc_Error"}}},"type":"object"},"10dlc_HTTPValidationError":{"title":"HTTPValidationError","type":"object","properties":{"detail":{"title":"Detail","type":"array","items":{"$ref":"#/components/schemas/ValidationError"}}}},"10dlc_TaskStatus":{"title":"TaskStatus","enum":["pending","processing","completed","failed"],"type":"string","description":"An enumeration."},"A2AAgentHeader":{"type":"object","title":"A2AAgentHeader","description":"A header sent when fetching an A2A agent's card and on every call made to that agent.","properties":{"name":{"type":"string","description":"HTTP header name. May only contain alphanumeric characters, hyphens, and underscores, or a `{{dynamic_variable}}` placeholder surrounded by those characters.","example":"X-Api-Key"},"value":{"type":"string","description":"Header value, stored exactly as written. It may be a literal, a `{{dynamic_variable}}`, or an `{{#integration_secret}}identifier{{/integration_secret}}` section that resolves to a stored integration secret when the conversation starts. Control characters are not allowed. The encrypted `{{variable | encryption_secret_ref}}` form used for per-caller credentials is not resolved here and is rejected when the assistant is saved.","example":"{{#integration_secret}}my_agent_api_key{{/integration_secret}}"}},"required":["name","value"]},"AIAssistantAddMessagesRequest":{"type":"object","title":"AI Assistant Add Messages Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"messages":{"description":"The messages to add to the conversation.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/UserMessage"},{"$ref":"#/components/schemas/AssistantMessage"},{"$ref":"#/components/schemas/ToolMessage"},{"$ref":"#/components/schemas/SystemMessage"},{"$ref":"#/components/schemas/DeveloperMessage"}],"discriminator":{"propertyName":"role","mapping":{"user":"#/components/schemas/UserMessage","assistant":"#/components/schemas/AssistantMessage","tool":"#/components/schemas/ToolMessage","system":"#/components/schemas/SystemMessage","developer":"#/components/schemas/DeveloperMessage"}}}},"trigger_response":{"type":"boolean","description":"When `true`, the injected messages immediately trigger an assistant response/turn instead of waiting for the next natural turn or idle timeout. This may interrupt a user who is still speaking.","default":false}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","messages":[{"role":"system","content":"Get the user's favorite color"}],"trigger_response":false}},"AIAssistantJoinParticipant":{"type":"object","required":["id","role"],"properties":{"id":{"type":"string","description":"The call_control_id of the participant to add to the conversation.","example":"v3:abc123def456"},"role":{"type":"string","description":"The role of the participant in the conversation.","enum":["user"],"example":"user"},"name":{"type":"string","description":"Display name for the participant.","example":"John Doe"},"on_hangup":{"type":"string","description":"Determines what happens to the conversation when this participant hangs up.","enum":["continue_conversation","end_conversation"],"default":"continue_conversation","example":"continue_conversation"}}},"AIAssistantJoinRequest":{"type":"object","required":["conversation_id","participant"],"properties":{"conversation_id":{"type":"string","description":"The ID of the AI assistant conversation to join.","example":"v3:abc123"},"participant":{"$ref":"#/components/schemas/AIAssistantJoinParticipant"},"client_state":{"type":"string","description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"type":"string","description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}}},"AIAssistantStartRequest":{"type":"object","properties":{"assistant":{"$ref":"#/components/schemas/CallAssistantRequest"},"greeting":{"description":"Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.<voice_id>` 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: <group>` 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. 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,"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","greeting":"Hi, I'm your assistant. How can I help?","voice_settings":{"voice":"Telnyx.KokoroTTS.af_heart"},"transcription":{"model":"deepgram/flux","language":"en"},"tools":[{"type":"hangup","hangup":{}}]},"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,"description":"Request timeout in seconds."},"max_retries":{"type":"integer","description":"Maximum number of retries for the request."},"service_tier":{"type":"string","description":"The service tier to use for this request. Supported values vary by model; use the Telnyx models endpoint and inspect the model's `service_tiers` field. If omitted, Telnyx-hosted models use `default`."},"region":{"type":"string","enum":["USA","EU","AUS","UAE"],"description":"Optional data-residency region the request should be served from, using the same vocabulary as your account's Data Locality setting. Behavior depends on `mode`. Supported for Telnyx-hosted models only: a request routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it. Omit for today's latency-based routing."},"mode":{"type":"string","enum":["preferred","strict"],"default":"preferred","description":"How strictly `region` is applied. `preferred` (the default when `region` is set) tries that region first and falls back to another when the model cannot be served there, so a request that would have succeeded still succeeds. `strict` pins the request: it is served from that region or it fails with a 422, never redirected to another region. Requires `region`."}},"type":"object","required":["model","messages","max_tokens"],"title":"AnthropicMessageRequest","additionalProperties":true,"description":"Anthropic Messages-compatible request with Telnyx extensions."},"ApplicationName":{"title":"Application Name","type":"string","description":"A user-assigned name to help manage the application.","example":"call-router"},"ArithmeticExpression":{"description":"Numeric expression: applies an arithmetic operator to two sub-expressions.\n\nUseful for derived numeric checks, e.g. `cart_total + shipping > 50`.\nBoth operands should resolve to numbers at runtime.","example":{"left":{"name":"cart_total","type":"variable"},"op":"+","right":{"name":"shipping_cost","type":"variable"},"type":"arithmetic"},"properties":{"left":{"$ref":"#/components/schemas/Expression"},"op":{"description":"Arithmetic operator applied to `left` and `right`.","enum":["+","-","*","/","%"],"title":"Op","type":"string"},"right":{"$ref":"#/components/schemas/Expression"},"type":{"const":"arithmetic","title":"Type","type":"string"}},"required":["type","op","left","right"],"title":"ArithmeticExpression","type":"object"},"ArtifactContent":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string"}}},"AssignProfileToCampaignRequest":{"title":"AssignProfileToCampaignRequest","required":["messagingProfileId"],"type":"object","properties":{"messagingProfileId":{"title":"Messagingprofileid","type":"string","description":"The ID of the messaging profile that you want to link to the specified campaign.","example":"4001767e-ce0f-4cae-9d5f-0d5e636e7809"},"tcrCampaignId":{"title":"Tcrcampaignid","type":"string","description":"The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId.","example":"CWZTFH1"},"campaignId":{"title":"Campaignid","type":"string","description":"The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in the request, do not also include a tcrCampaignId.","example":"4b300178-131c-d902-d54e-72d90ba1620j"}}},"AssignProfileToCampaignResponse":{"title":"AssignProfileToCampaignResponse","required":["messagingProfileId","taskId"],"type":"object","properties":{"messagingProfileId":{"title":"Messagingprofileid","type":"string","description":"The ID of the messaging profile that you want to link to the specified campaign.","example":"4001767e-ce0f-4cae-9d5f-0d5e636e7809"},"tcrCampaignId":{"title":"Tcrcampaignid","type":"string","description":"The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId.","example":"CWZTFH1"},"campaignId":{"title":"Campaignid","type":"string","description":"The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in the request, do not also include a tcrCampaignId.","example":"4b300178-131c-d902-d54e-72d90ba1620j"},"taskId":{"title":"Taskid","type":"string","description":"The ID of the task associated with assigning a messaging profile to a campaign.","example":"667a80f8-b0a9-49d0-b9ab-a7a1bcc45086"}}},"AssignmentTaskStatusResponse":{"title":"AssignmentTaskStatusResponse","required":["taskId","status"],"type":"object","properties":{"taskId":{"title":"Taskid","type":"string"},"status":{"allOf":[{"$ref":"#/components/schemas/10dlc_TaskStatus"}],"type":"string","description":"The status of the task associated with assigning a messaging profile to a campaign.","example":"pending"},"createdAt":{"title":"Createdat","type":"string","format":"date-time"},"updatedAt":{"title":"Updatedat","type":"string","format":"date-time"}}},"Assistant":{"type":"object","title":"Assistant","description":"Assistant configuration including choice of LLM, custom instructions, and tools.","properties":{"model":{"description":"The model to be used by the voice assistant.","type":"string","default":"Qwen/Qwen3-235B-A22B","example":"Qwen/Qwen3-235B-A22B"},"instructions":{"description":"The system instructions that the voice assistant uses during the gather command","type":"string","example":"You are a friendly voice assistant."},"openai_api_key_ref":{"description":"This is necessary only if the model selected is from OpenAI. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your OpenAI API Key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_openai_api_key"},"tools":{"description":"The tools that the voice assistant can use.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BookAppointmentTool"},{"$ref":"#/components/schemas/CheckAvailabilityTool"},{"$ref":"#/components/schemas/WebhookTool"},{"$ref":"#/components/schemas/HangupTool"},{"$ref":"#/components/schemas/TransferTool"},{"$ref":"#/components/schemas/CallControlRetrievalTool"}],"discriminator":{"propertyName":"type","mapping":{"book_appointment":"#/components/schemas/BookAppointmentTool","check_availability":"#/components/schemas/CheckAvailabilityTool","webhook":"#/components/schemas/WebhookTool","hangup":"#/components/schemas/HangupTool","transfer":"#/components/schemas/TransferTool","retrieval":"#/components/schemas/CallControlRetrievalTool"}}}}}},"AssistantA2AAgent":{"type":"object","title":"AssistantA2AAgent","description":"A remote agent, reachable over the A2A (Agent2Agent) protocol, that an assistant can delegate to. Tools are not configured here: at the start of every conversation the agent's card is fetched and one tool is derived per skill the card advertises.","properties":{"name":{"type":"string","maxLength":43,"description":"Identifies the agent and seeds the names of the tools derived from its card (`a2a_<name>_<skill_id>`). Characters outside `[A-Za-z0-9_]` are replaced with `_` before the tool name is built, so two agents whose names differ only in punctuation collide and are rejected.","example":"billing_agent"},"url":{"type":"string","description":"The agent's base URL, or the URL of its agent card. At most 2,048 bytes once UTF-8 encoded. `/.well-known/agent-card.json` is appended to the path unless it already ends in `.json`. Must be an `http://` or `https://` URL for an externally reachable host: internal destinations (`localhost`, private and reserved IP ranges, `.local` domains) are rejected, and the hostname may not contain a `{{...}}` placeholder. Placeholders in the path are allowed.","example":"https://agents.example.com"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/A2AAgentHeader"},"description":"Headers sent when fetching this agent's card and on every call made to it. Use them to authenticate to the agent."},"async":{"type":"boolean","default":false,"description":"When `true`, the assistant hands the turn straight back to the model and the agent's answer is delivered into the conversation once it arrives, instead of the caller waiting for it in silence."},"timeout_ms":{"type":"integer","minimum":1,"maximum":4294967295,"description":"Total budget, in milliseconds, for one call to this agent, including any time spent polling a task that is still running. Omit to inherit the assistant's tool timeout.","example":30000},"poll_interval_ms":{"type":"integer","minimum":1,"maximum":4294967295,"description":"How often, in milliseconds, to poll an agent task that has not finished yet. Defaults to 500.","example":500},"messages":{"type":"array","description":"Filler messages spoken while a call to this agent is in progress. `request_start` messages are spoken immediately when the call begins. `request_response_delayed` messages are spoken after `timing_ms` has elapsed only if the agent has not answered yet. Filler messages are not used when `async` is `true`.","items":{"oneOf":[{"title":"A2AAgentRequestStartMessage","type":"object","required":["type","content"],"properties":{"type":{"type":"string","const":"request_start","description":"Speak the filler message immediately when the call to the agent begins."},"content":{"type":"string","minLength":1,"description":"The text the assistant speaks."},"timing_ms":{"type":"integer","minimum":100,"maximum":120000,"description":"An optional delay value. This value is ignored for `request_start` messages."}},"additionalProperties":false},{"title":"A2AAgentRequestResponseDelayedMessage","type":"object","required":["type","content","timing_ms"],"properties":{"type":{"type":"string","const":"request_response_delayed","description":"Speak the filler message only if the agent has not answered yet after `timing_ms`."},"content":{"type":"string","minLength":1,"description":"The text the assistant speaks."},"timing_ms":{"type":"integer","minimum":100,"maximum":120000,"description":"How long to wait, in milliseconds, before speaking this message."}},"additionalProperties":false}]}}},"required":["name","url"]},"AssistantChatReq":{"properties":{"content":{"type":"string","title":"Content","description":"The message content sent by the client to the assistant","example":"Tell me a joke about cats"},"name":{"type":"string","title":"Name","description":"The optional display name of the user sending the message","example":"Charlie"},"conversation_id":{"type":"string","title":"Conversation Id","description":"A unique identifier for the conversation thread, used to maintain context","example":"42b20469-1215-4a9a-8964-c36f66b406f4"},"stream":{"type":"boolean","title":"Stream","description":"When true, the response is streamed as Server-Sent Events (`text/event-stream`): `delta` events carry content fragments as they are generated, a final `done` event carries the full content plus `whatsapp_template`, and a terminal `error` event reports failures that happen after streaming started. When false (default), the response is a single JSON object.","default":false}},"type":"object","required":["content","conversation_id"],"title":"AssistantChatReq"},"AssistantChatResponse":{"properties":{"content":{"type":"string","title":"Content","description":"The assistant's generated response based on the input message and context.","example":"Why did the cat sit on the computer? Because it wanted to keep an eye on the mouse!"}},"type":"object","required":["content"],"title":"AssistantChatResponse"},"AssistantDeletedResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","title":"Object"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["id","object","deleted"],"title":"AssistantDeletedResponse","description":"Aligns with the OpenAI API:\nhttps://platform.openai.com/docs/api-reference/assistants/deleteAssistant"},"AssistantIntegration":{"type":"object","title":"AssistantIntegration","description":"Reference to a connected integration attached to an assistant. Discover available integrations with `/ai/integrations` and connected integrations with `/ai/integrations/connections`.","properties":{"integration_id":{"type":"string","description":"Catalog integration ID to attach. This is the `id` from the integrations catalog at `/ai/integrations` (the same value also appears as `integration_id` on entries returned by `/ai/integrations/connections`). It is **not** the connection-level `id` from `/ai/integrations/connections`."},"allowed_list":{"type":"array","items":{"type":"string"},"description":"Optional per-assistant allowlist of integration tool names. When omitted or empty, all tools allowed by the connected integration are available to the assistant."}},"required":["integration_id"]},"AssistantMCPServer":{"type":"object","title":"AssistantMCPServer","description":"Reference to an MCP server attached to an assistant. Create and manage MCP servers with the `/ai/mcp_servers` endpoints, then attach them to assistants by ID.","properties":{"id":{"type":"string","description":"ID of the MCP server to attach. This must be the `id` of an MCP server returned by the `/ai/mcp_servers` endpoints."},"allowed_tools":{"type":"array","items":{"type":"string"},"description":"Optional per-assistant allowlist of MCP tool names. When omitted, the assistant uses the MCP server's configured `allowed_tools`."}},"required":["id"]},"AssistantMessage":{"type":"object","title":"Assistant Message","description":"Messages sent by the model in response to user messages.","properties":{"role":{"description":"The role of the messages author, in this case `assistant`.","type":"string","enum":["assistant"]},"content":{"description":"The contents of the assistant message. Required unless `tool_calls`","type":"string"},"tool_calls":{"type":"array","description":"The tool calls generated by the model, such as function calls.","items":{"$ref":"#/components/schemas/ToolCall"}},"metadata":{"$ref":"#/components/schemas/MessageMetadata"}},"required":["role"],"example":{"role":"assistant","content":"Hello, I'm John."}},"AssistantScheduledCallAttempt":{"properties":{"attempt_number":{"type":"integer","title":"Attempt Number"},"attempted_at":{"type":"string","format":"date-time","title":"Attempted At"},"call_status":{"type":"string","title":"Call Status","description":"Values: busy, canceled, no-answer, ringing, completed, failed, in-progress"},"call_duration":{"title":"Call Duration","type":"integer","description":"Duration of the call in seconds"},"telnyx_call_control_id":{"title":"Telnyx Call Control Id","type":"string"}},"type":"object","required":["attempt_number","attempted_at","call_status"],"title":"AssistantScheduledCallAttempt","description":"One row in `call_attempts` — captures the terminal outcome of a single dispatch."},"AssistantSmsChatReq":{"properties":{"from":{"type":"string","title":"From"},"to":{"type":"string","title":"To"},"text":{"type":"string","title":"Text"},"conversation_metadata":{"title":"Conversation Metadata","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"object"},"should_create_conversation":{"title":"Should Create Conversation","type":"boolean"}},"type":"object","required":["from","to"],"title":"AssistantSmsChatReq"},"AssistantSmsChatResponse":{"properties":{"conversation_id":{"title":"Conversation Id","type":"string"}},"type":"object","title":"AssistantSmsChatResponse"},"AssistantTarget":{"description":"Edge target referencing a different assistant.\n\nWhen the edge fires, the conversation hands off to `assistant_id`: the\nactive assistant on the conversation row is rewritten and the new\nassistant's flow starts at its own `start_node_id`. The current turn's\nLLM response is delivered to the user as-is; subsequent turns route\nto the new assistant.","properties":{"assistant_id":{"description":"ID of the assistant the conversation transitions to.","example":"assistant-billing","title":"Assistant Id","type":"string"},"position":{"$ref":"#/components/schemas/NodePosition","description":"Optional canvas coordinates for rendering the target assistant as a node in authoring UIs. Pure presentation — 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.\n\nReturns all test configuration details including evaluation criteria,\nscheduling, and metadata. Used when retrieving individual tests or\nafter creating/updating tests."},"AssistantTools":{"description":"Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. On update, a sent `tools` array fully replaces the assistant's inline tools; omit the field to leave them unchanged. Each tool type except `function`, `webhook`, and `client_side_tool` allows at most one instance per assistant, counted across inline `tools` and shared `tool_ids` combined.","type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/FunctionTool"},{"$ref":"#/components/schemas/inference-embedding_WebhookTool"},{"$ref":"#/components/schemas/ClientSideTool"},{"$ref":"#/components/schemas/RetrievalTool"},{"$ref":"#/components/schemas/HandoffTool"},{"$ref":"#/components/schemas/inference-embedding_HangupTool"},{"$ref":"#/components/schemas/inference-embedding_TransferTool"},{"$ref":"#/components/schemas/InviteTool"},{"$ref":"#/components/schemas/SIPReferTool"},{"$ref":"#/components/schemas/DTMFTool"},{"$ref":"#/components/schemas/SendMessageTool"},{"$ref":"#/components/schemas/SkipTurnTool"},{"$ref":"#/components/schemas/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. Can include Deepgram-specific options such as `smart_format`, `punctuate`, `diarize`, `utterance`, `numerals`, and `language`. If `language` is provided both as a top-level parameter and in `model_config`, the top-level parameter takes precedence.","additionalProperties":true,"example":{"smart_format":true,"punctuate":true}}},"required":["model"]},"AudioTranscriptionResponse":{"type":"object","description":"Response fields vary by model. `distil-whisper/distil-large-v2` returns `text`, `duration`, and `segments` in `verbose_json` mode. `openai/whisper-large-v3-turbo` returns `text` only. The `deepgram/*` models return `text` and, depending on `model_config`, may include `words` with per-word timestamps and speaker labels. The Parakeet models (`nvidia/parakeet-v3`, `omi-health/omi-med-stt-v1`) return `text` only.","properties":{"text":{"type":"string","description":"The transcribed text for the audio file."},"duration":{"type":"number","description":"The duration of the audio file in seconds. Returned by `distil-whisper/distil-large-v2` and the `deepgram/*` models when `response_format` is `verbose_json`. Not returned by `openai/whisper-large-v3-turbo`."},"segments":{"type":"array","description":"Segments of the transcribed text and their corresponding details. Returned by `distil-whisper/distil-large-v2` and the `deepgram/*` models when `response_format` is `verbose_json`; Deepgram segments also carry nested `words` and `speakers`. Not returned by `openai/whisper-large-v3-turbo`.","items":{"$ref":"#/components/schemas/AudioTranscriptionResponseSegments"}},"words":{"type":"array","description":"Word-level timestamps and optional speaker labels. Only returned by the `deepgram/*` models when word-level output is enabled via `model_config`.","items":{"$ref":"#/components/schemas/AudioTranscriptionResponseWord"}}},"required":["text"]},"AudioTranscriptionResponseSegments":{"type":"object","properties":{"id":{"type":"number","description":"Unique identifier of the segment."},"start":{"type":"number","description":"Start time of the segment in seconds."},"end":{"type":"number","description":"End time of the segment in seconds."},"text":{"type":"string","description":"Text content of the segment."},"words":{"type":"array","description":"Word-level timing detail for this segment. Returned by the `deepgram/*` models when word-level output is enabled via `model_config`.","items":{"$ref":"#/components/schemas/AudioTranscriptionResponseWord"}},"speakers":{"type":"array","description":"Speaker indices heard in this segment. Returned by the `deepgram/*` models when `diarize` is enabled via `model_config`.","items":{"type":"integer"}}},"required":["id","start","end","text"]},"AudioTranscriptionResponseWord":{"type":"object","description":"Word-level timing detail. Only present when using a `deepgram/*` model with `model_config` options that enable word timestamps.","properties":{"word":{"type":"string","description":"The transcribed word."},"start":{"type":"number","description":"Start time of the word in seconds."},"end":{"type":"number","description":"End time of the word in seconds."},"confidence":{"type":"number","description":"Confidence score for the word (0.0 to 1.0)."},"speaker":{"type":"integer","description":"Speaker index. Only present when diarization is enabled via `model_config`."},"speaker_confidence":{"type":"number","description":"Confidence score for the speaker assignment (0.0 to 1.0). Only present when diarization is enabled via `model_config`."},"punctuated_word":{"type":"string","description":"The transcribed word with punctuation and capitalisation applied. Only present when `punctuate` or `smart_format` is enabled via `model_config`."}},"required":["word","start","end"]},"AudioVisualizerConfig":{"type":"object","properties":{"color":{"type":"string","enum":["verdant","twilight","bloom","mystic","flare","glacier"],"description":"The color theme for the audio visualizer."},"preset":{"type":"string","description":"The preset style for the audio visualizer."}},"title":"AudioVisualizerConfig"},"AuditEventChanges":{"type":"object","title":"Audit Event Changes","description":"Details of the changes made to a resource.","properties":{"field":{"type":"string","description":"The name of the field that was changed. May use the dot notation to indicate nested fields.","example":"nested.field.name"},"to":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"object","additionalProperties":true},{"type":"array","items":{}},{"type":"null"}],"description":"The new value of the field. Can be any JSON type.","example":12345},"from":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"object","additionalProperties":true},{"type":"array","items":{}},{"type":"null"}],"description":"The previous value of the field. Can be any JSON type.","example":54321}}},"AuditLog":{"type":"object","title":"Audit Log Entry","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the audit log entry.","example":"550e8400-e29b-41d4-a716-446655440000"},"user_id":{"type":"string","format":"uuid","description":"Unique identifier for the user who made the change.","example":"550e8400-e29b-41d4-a716-446655440001"},"record_type":{"type":"string","description":"The type of the resource being audited.","example":"audit_event"},"resource_id":{"type":"string","description":"Unique identifier for the resource that was changed.","example":"550e8400-e29b-41d4-a716-446655440002"},"alternate_resource_id":{"type":["string","null"],"description":"An alternate identifier for a resource which may be considered unique enough to identify the resource but is not the primary identifier for the resource. For example, this field could be used to store the phone number value for a phone number when the primary database identifier is a separate distinct value.","example":"+14155551234"},"change_made_by":{"type":"string","enum":["telnyx","account_manager","account_owner","organization_member"],"description":"Indicates if the change was made by Telnyx on your behalf, the organization owner, a member of your organization, or in the case of managed accounts, the account manager.","example":"organization_member"},"changes":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AuditEventChanges"},"description":"Details of the changes made to the resource.","example":[{"field":"field.name","to":"old value","from":"new value"}]},"organization_id":{"type":"string","format":"uuid","description":"Unique identifier for the organization that owns the resource.","example":"550e8400-e29b-41d4-a716-446655440003"},"change_type":{"type":"string","description":"The type of change that occurred.","example":"update"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the change occurred.","example":"2026-01-03T00:00:00Z"}}},"AuditLogList":{"type":"object","title":"Audit Log List","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"}},"meta":{"$ref":"#/components/schemas/audit-logs_PaginationMeta"}}},"AuditLogsErrors":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/audit-logs_Error"}}}},"AuthenticationMethod":{"type":"string","enum":["token","certificate"],"default":"token","description":"Authentication method used when connecting to the external LLM endpoint.","title":"AuthenticationMethod"},"AuthenticationProvider":{"type":"object","title":"AuthenticationProvider","properties":{"id":{"type":"string","format":"uuid","description":"Uniquely identifies the authentication provider.","example":"35146afd-df93-4963-b1e9-1a085e2ae874"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"authentication_provider"},"name":{"$ref":"#/components/schemas/name"},"short_name":{"$ref":"#/components/schemas/short_name"},"organization_id":{"$ref":"#/components/schemas/organization_id"},"active":{"$ref":"#/components/schemas/active"},"activated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the authentication provider was activated.","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"settings":{"type":"object","description":"The settings associated with the authentication provider.","properties":{"assertion_consumer_service_url":{"type":"string","description":"The Assertion Consumer Service URL for the service provider (Telnyx).","format":"uri","example":"https://api.telnyx.com/sso/saml/auth/myorg"},"service_provider_entity_id":{"type":"string","description":"The Entity ID for the service provider (Telnyx).","format":"uri","example":"https://api.telnyx.com/sso/saml/metadata/myorg"},"service_provider_login_url":{"type":"string","description":"The login URL for the service provider (Telnyx). Users navigate to this URL to initiate SSO login.","format":"uri","example":"https://api.telnyx.com/sso/myorg"},"idp_entity_id":{"type":"string","description":"The Entity ID for the identity provider (IdP).","format":"uri","example":"https://myorg.myidp.com/saml/metadata"},"idp_sso_target_url":{"type":"string","description":"The SSO target url for the identity provider (IdP).","format":"uri","example":"https://myorg.myidp.com/trust/saml2/http-post/sso"},"idp_cert_fingerprint":{"type":"string","description":"The certificate fingerprint for the identity provider (IdP)","example":"13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7"},"idp_cert_fingerprint_algorithm":{"type":"string","description":"The algorithm used to generate the identity provider's (IdP) certificate fingerprint","enum":["sha1","sha256","sha384","sha512"],"default":"sha1","example":"sha256"},"name_identifier_format":{"type":"string","description":"The name identifier format associated with the authentication provider. This must be the same for both the Identity Provider (IdP) and the service provider (Telnyx).","example":"urn:oasis:names:tc:SAML:1.1:nameid-format"},"idp_slo_target_url":{"type":"string","description":"The Single Logout (SLO) target URL for the identity provider (IdP).","format":"uri","example":"https://myorg.myidp.com/trust/saml2/http-redirect/slo"},"idp_certificate":{"type":"string","description":"The full X.509 certificate for the identity provider (IdP).","example":"-----BEGIN CERTIFICATE-----\nMIIC...\n-----END CERTIFICATE-----"},"idp_attribute_names":{"type":"object","description":"Mapping of SAML attribute names used by the identity provider (IdP).","example":{"email":"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"}},"provision_groups":{"type":"boolean","description":"Whether group provisioning is enabled for this authentication provider.","example":false}}},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","format":"date-time","example":"2018-02-02T22:25:27.521Z"}}},"AuthenticationProviderCreate":{"type":"object","required":["name","short_name","settings"],"properties":{"name":{"$ref":"#/components/schemas/name"},"short_name":{"$ref":"#/components/schemas/short_name"},"active":{"$ref":"#/components/schemas/active"},"settings":{"$ref":"#/components/schemas/settings"},"settings_url":{"$ref":"#/components/schemas/settings_url"}}},"AuthorizationServerMetadata":{"type":"object","properties":{"issuer":{"type":"string","format":"uri","description":"Authorization server issuer URL"},"token_endpoint":{"type":"string","format":"uri","description":"Token endpoint URL"},"introspection_endpoint":{"type":"string","format":"uri","description":"Token introspection endpoint URL"},"jwks_uri":{"type":"string","format":"uri","description":"JWK Set endpoint URL"},"registration_endpoint":{"type":"string","format":"uri","description":"Dynamic client registration endpoint URL"},"authorization_endpoint":{"type":"string","format":"uri","description":"Authorization endpoint URL"},"grant_types_supported":{"type":"array","items":{"type":"string"},"description":"Supported grant types"},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"},"description":"Supported PKCE code challenge methods"},"response_types_supported":{"type":"array","items":{"type":"string"},"description":"Supported response types"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"description":"Supported token endpoint authentication methods"},"scopes_supported":{"type":"array","items":{"type":"string"},"description":"Supported OAuth scopes","example":["admin"]}}},"AutoRechargePref":{"type":"object","properties":{"id":{"type":"string","example":"1524126400473204723","description":"The unique identifier for the auto recharge preference."},"record_type":{"type":"string","example":"auto_recharge_pref","description":"The record type."},"threshold_amount":{"type":"string","example":"104.00","description":"The threshold amount at which the account will be recharged.","x-format":"decimal"},"recharge_amount":{"type":"string","example":"104.00","description":"The amount to recharge the account, the actual recharge amount will be the amount necessary to reach the threshold amount plus the recharge amount.","x-format":"decimal"},"enabled":{"type":"boolean","example":true,"description":"Whether auto recharge is enabled."},"invoice_enabled":{"type":"boolean","example":true},"preference":{"type":"string","enum":["credit_paypal","ach"],"example":"credit_paypal","description":"The payment preference for auto recharge."}}},"AutoRechargePrefRequest":{"type":"object","properties":{"threshold_amount":{"type":"string","example":"104.00","description":"The threshold amount at which the account will be recharged.","x-format":"decimal"},"recharge_amount":{"type":"string","example":"104.00","description":"The amount to recharge the account, the actual recharge amount will be the amount necessary to reach the threshold amount plus the recharge amount.","x-format":"decimal"},"enabled":{"type":"boolean","example":true,"description":"Whether auto recharge is enabled."},"invoice_enabled":{"type":"boolean","example":true},"preference":{"type":"string","enum":["credit_paypal","ach"],"example":"credit_paypal","description":"The payment preference for auto recharge."}}},"AutoRespConfigCreateSchema":{"title":"AutoRespConfigCreateSchema","required":["op","keywords","country_code"],"type":"object","properties":{"op":{"title":"Op","enum":["start","stop","info"],"type":"string"},"keywords":{"title":"Keywords","type":"array","items":{"type":"string"},"example":["keyword1","keyword2"]},"resp_text":{"title":"Resp Text","type":"string","example":"Thank you for your message"},"country_code":{"title":"Country Code","type":"string","example":"US"}}},"AutorespConfigResponseSchema":{"title":"AutorespConfigResponseSchema","required":["data"],"type":"object","properties":{"data":{"$ref":"#/components/schemas/AutorespConfigSchema"}}},"AutorespConfigSchema":{"title":"AutorespConfigSchema","required":["op","keywords","country_code","id","created_at","updated_at"],"type":"object","properties":{"op":{"title":"Op","enum":["start","stop","info"],"type":"string","example":"start"},"keywords":{"title":"Keywords","type":"array","items":{"type":"string"},"example":["START","BEGIN"]},"resp_text":{"title":"Resp Text","type":"string","example":"Thank you for subscribing to our service."},"country_code":{"title":"Country Code","type":"string","example":"*"},"id":{"title":"Id","type":"string","example":"b8f9c1c0-5b5a-4b1e-8c1c-0b5a4b1e8c1c"},"created_at":{"title":"Created At","type":"string","format":"date-time"},"updated_at":{"title":"Updated At","type":"string","format":"date-time"}}},"AutorespConfigsResponseSchema":{"title":"AutorespConfigsResponseSchema","description":"List of Auto-Response Settings","required":["data","meta"],"type":"object","properties":{"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/AutorespConfigSchema"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta"}}},"AvailablePhoneNumber":{"type":"object","properties":{"record_type":{"type":"string","example":"available_phone_number","enum":["available_phone_number"]},"phone_number":{"type":"string","example":"+19705555098"},"vanity_format":{"type":"string"},"best_effort":{"type":"boolean","description":"Specifies whether the phone number is an exact match based on the search criteria or not.","example":false},"quickship":{"type":"boolean","description":"Specifies whether the phone number can receive calls immediately after purchase or not.","example":true},"reservable":{"type":"boolean","description":"Specifies whether the phone number can be reserved before purchase or not.","example":true},"region_information":{"type":"array","items":{"$ref":"#/components/schemas/RegionInformation"}},"cost_information":{"$ref":"#/components/schemas/CostInformation"},"features":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}}},"example":{"record_type":"available_phone_number","phone_number":"+19705555098","vanity_format":"","best_effort":false,"quickship":true,"reservable":true,"region_information":[{"region_type":"country_code","region_name":"US"}],"cost_information":{"upfront_cost":"3.21","monthly_cost":"6.54","currency":"USD"},"features":[{"name":"sms"},{"name":"voice"}]}},"AvailablePhoneNumberBlock":{"type":"object","properties":{"record_type":{"type":"string","example":"available_phone_number_block","enum":["available_phone_number_block"]},"phone_number":{"type":"string","example":"+19705555000"},"range":{"type":"integer","example":10},"region_information":{"type":"array","items":{"$ref":"#/components/schemas/RegionInformation"}},"cost_information":{"$ref":"#/components/schemas/CostInformation"},"features":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}}},"example":{"record_type":"available_phone_number_block","phone_number":"+19705555000","range":10,"region_information":[{"region_type":"country_code","region_name":"US"}],"cost_information":{"upfront_cost":"3.21","monthly_cost":"6.54","currency":"USD"},"features":[{"name":"sms"},{"name":"voice"}]}},"AvailablePhoneNumbersMetadata":{"type":"object","example":{"total_results":100,"best_effort_results":50},"properties":{"total_results":{"type":"integer","example":1},"best_effort_results":{"type":"integer","example":0}}},"AvailableService":{"type":"string","title":"Available service","enum":["cloud_vpn","private_wireless_gateway","virtual_cross_connect"]},"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,"description":"Monthly recurring charge price."},"currency":{"title":"Currency","type":"string","example":"USD","description":"Bundle's currency code."},"specs":{"title":"Specs","type":"array","items":{"type":"string"},"example":["1 AU Number","Emergency Calling","All inbound and outbound calling billed pay-as-you-go"]}}},"BillingCategory":{"type":"string","enum":["NON_CONVERSATIONAL","CONVERSATIONAL"]},"BillingContact":{"type":"object","required":["first_name","last_name","email","phone_number"],"properties":{"first_name":{"type":"string","maxLength":255,"description":"The first name of the person Telnyx should contact about billing for this account.","example":"Alex"},"last_name":{"type":"string","maxLength":255,"description":"The last name of the person Telnyx should contact about billing for this account.","example":"Bill"},"email":{"type":"string","format":"email","description":"The email address of the person Telnyx should contact about billing for this account.","example":"billing@acmeplumbing.example.com"},"phone_number":{"type":"string","description":"The phone number of the billing contact, in E.164 format, for example +12125551234.","example":"+13125550001"}}},"BillingGroup":{"type":"object","properties":{"record_type":{"type":"string","enum":["billing_group"],"description":"Identifies the type of the resource.","example":"billing_group"},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource.","example":"f5586561-8ff0-4291-a0ac-84fe544797bd"},"organization_id":{"type":"string","format":"uuid","description":"Identifies the organization that owns the resource.","example":"f1486bae-f067-460c-ad43-73a92848f902"},"name":{"type":"string","description":"A user-specified name for the billing group","example":"My billing group name"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z"},"deleted_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the resource was removed.","example":null}},"example":{"record_type":"billing_group","id":"f5586561-8ff0-4291-a0ac-84fe544797bd","organization_id":"f1486bae-f067-460c-ad43-73a92848f902","name":"My billing group name","created_at":"2019-10-15T10:07:15.527Z","updated_at":"2019-10-15T10:07:15.527Z","deleted_at":null}},"BlackBoxTestResult":{"type":"object","properties":{"record_type":{"type":"string","example":"black_box_test"},"id":{"type":"string","description":"The name of the black box test.","example":"msg_overview_outbound_sms"},"result":{"type":"number","description":"The average result of the black box test over the last hour.","example":0.999}}},"BlackBoxTestResultSet":{"type":"object","properties":{"record_type":{"type":"string","example":"black_box_test_result"},"product":{"type":"string","example":"cloud_storage","description":"The product associated with the black box test group."},"black_box_tests":{"type":"array","items":{"$ref":"#/components/schemas/BlackBoxTestResult"}}}},"BlocksErrorObject":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","description":"Error codes: `10001` (Not Found), `10007` (Unauthorized),\n`10015` (Validation Failed), `10019` (Internal — import create\nfallback), `40901` (Conflict), `500` (framework/catch-all).\n"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}},"description":"`/data/attributes/<field>` for changeset/Params; `/<field>` for query-param errors."}}},"BookAppointmentTool":{"properties":{"type":{"type":"string","enum":["book_appointment"]},"book_appointment":{"$ref":"#/components/schemas/BookAppointmentToolParams"}},"type":"object","required":["type","book_appointment"],"title":"BookAppointmentTool"},"BookAppointmentToolParams":{"properties":{"event_type_id":{"type":"integer","description":"Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-event-type-id)"},"api_key_ref":{"type":"string","description":"Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key.","example":"my_calcom_api_key"},"attendee_name":{"type":"string","description":"The name of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-name). If not provided, the assistant will ask for the attendee's name."},"attendee_timezone":{"type":"string","description":"The timezone of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-timezone). If not provided, the assistant will ask for the attendee's timezone."}},"type":"object","required":["event_type_id","api_key_ref"],"title":"BookAppointmentToolParams"},"BooleanLiteralExpression":{"description":"Constant boolean value. Useful for unconditional ('always') edges.","example":{"type":"bool_literal","value":true},"properties":{"type":{"const":"bool_literal","title":"Type","type":"string"},"value":{"description":"Literal boolean value.","title":"Value","type":"boolean"}},"required":["type","value"],"title":"BooleanLiteralExpression","type":"object"},"BooleanOpExpression":{"description":"Combine sub-expressions with a logical operator (`and` / `or` / `not`).\n\n`and` and `or` accept two or more operands; `not` accepts exactly one.","example":{"op":"and","operands":[{"name":"is_premium","type":"variable"},{"left":{"name":"user_age","type":"variable"},"op":">=","right":{"type":"number_literal","value":18},"type":"comparison"}],"type":"bool_op"},"properties":{"op":{"description":"Logical operator. `not` is unary; `and`/`or` are n-ary (>=2).","enum":["and","or","not"],"title":"Op","type":"string"},"operands":{"description":"Operand sub-expressions. Length must be exactly 1 for `not` and >= 2 for `and`/`or`.","items":{"type":"object","title":"Expression","description":"Recursive reference to Expression. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/Expression for the full structure.","additionalProperties":true},"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` on create or when the Letter of Authorization is re-uploaded; an admin moves it to `approved` or `rejected`. 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. Omit when working directly with Telnyx; the LOA marks the Authorized Agent block as N/A."},"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"}}},"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:\n\n* Set this field to `\"\"` to unassign each number from their respective messaging profile\n* Set this field to a quoted UUID of a messaging profile to assign these numbers to that messaging profile"},"numbers":{"type":"array","items":{"type":"string","x-format":"+E.164"},"description":"The list of phone numbers to update."},"assign_only":{"type":"boolean","description":"If true, only assign numbers to the profile without changing other settings.","default":false}},"example":{"messaging_profile_id":"00000000-0000-0000-0000-000000000000","numbers":["+18880000000","+18880000001","+18880000002"]}},"BulkSIMCardAction":{"type":"object","description":"This object represents a bulk SIM card action. It groups SIM card actions created through a bulk endpoint under a single resource for further lookup.","properties":{"id":{"$ref":"#/components/schemas/wireless_Id_c5290d5308"},"record_type":{"type":"string","example":"bulk_sim_card_action","readOnly":true},"action_type":{"type":"string","description":"The action type. It can be one of the following: <br/>\n<ul>\n<li><code>bulk_disable_voice</code> - disable voice for every SIM Card in a SIM Card Group.</li>\n<li><code>bulk_enable_voice</code> - enable voice for every SIM Card in a SIM Card Group.</li>\n<li><code>bulk_set_public_ips</code> - set a public IP for each specified SIM Card.</li>\n</ul>","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: <br/>\n<ul>\n<li><code>bulk_disable_voice</code> - disable voice for every SIM Card in a SIM Card Group.</li>\n<li><code>bulk_enable_voice</code> - enable voice for every SIM Card in a SIM Card Group.</li>\n<li><code>bulk_set_public_ips</code> - set a public IP for each specified SIM Card.</li>\n</ul>","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":"<sip:111@192.168.1.1>"}],"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.<voice_id>` 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":"<code>Latency</code> directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n","enum":["Latency","Chicago, IL","Ashburn, VA","San Jose, CA","London, UK","Chennai, IN","Amsterdam, Netherlands","Toronto, Canada","Sydney, Australia"],"example":"Amsterdam, Netherlands","default":"Latency"},"application_name":{"type":"string","description":"A user-assigned name to help manage the application.","example":"call-router"},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was created","example":"2018-02-02T22:25:27.521Z"},"dtmf_type":{"type":"string","description":"Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.","enum":["RFC 2833","Inband","SIP INFO"],"example":"Inband","default":"RFC 2833"},"first_command_timeout":{"type":"boolean","description":"Specifies whether calls to phone numbers associated with this connection should hangup after timing out.","example":true,"default":false},"first_command_timeout_secs":{"type":"integer","description":"Specifies how many seconds to wait before timing out a dial command.","example":10,"default":30},"tags":{"type":"array","items":{"type":"string"},"description":"Tags assigned to the Call Control Application."},"id":{"type":"string","example":"1293384261075731499","x-format":"int64"},"inbound":{"$ref":"#/components/schemas/CallControlApplicationInbound"},"outbound":{"$ref":"#/components/schemas/CallControlApplicationOutbound"},"record_type":{"type":"string","enum":["call_control_application"],"default":"call_control_application"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was last updated","example":"2018-02-02T22:25:27.521Z"},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_event_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as `https`.","example":"https://failover.example.com","default":""},"webhook_event_url":{"type":"string","format":"url","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as `https`.","example":"https://example.com"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this Call Control Application.","default":false},"redact_dtmf_debug_logging":{"type":"boolean","description":"When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions.","example":true,"default":false}},"example":{"active":false,"anchorsite_override":"Latency","application_name":"call-router","created_at":"2018-02-02T22:25:27.521Z","dtmf_type":"Inband","first_command_timeout":true,"first_command_timeout_secs":10,"id":"1293384261075731499","inbound":{"channel_limit":10,"shaken_stir_enabled":true,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"},"record_type":"call_control_application","updated_at":"2018-02-02T22:25:27.521Z","webhook_api_version":"1","webhook_event_failover_url":"https://failover.example.com","webhook_event_url":"https://example.com","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"redact_dtmf_debug_logging":true}},"CallControlApplicationInbound":{"type":"object","title":"Call Control Application Inbound","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection.","example":10,"default":null},"shaken_stir_enabled":{"type":"boolean","description":"When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.","default":false,"example":false},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls.","example":"example","default":null},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"example":"only_my_connections","default":"from_anyone"}}},"CallControlApplicationOutbound":{"type":"object","title":"Call Control Application Outbound","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of outbound calls to phone numbers associated with this connection.","example":10,"default":null},"outbound_voice_profile_id":{"type":"string","description":"Identifies the associated outbound voice profile.","example":"1293384261075731499","x-format":"int64"}}},"CallControlBucketIds":{"properties":{"bucket_ids":{"items":{"type":"string"},"type":"array","title":"Bucket Ids"},"max_num_results":{"description":"The maximum number of results to retrieve as context for the language model.","type":"integer"}},"type":"object","required":["bucket_ids"],"title":"BucketIds"},"CallControlCommandResult":{"type":"object","title":"Call Control Command Result","example":{"result":"ok"},"properties":{"result":{"type":"string","example":"ok"}}},"CallControlCommandResultWithConversationId":{"type":"object","title":"Call Control Command Result With Conversation ID","example":{"result":"ok","conversation_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"},"properties":{"result":{"type":"string","example":"ok"},"conversation_id":{"type":"string","format":"uuid","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the conversation created by the command."}}},"CallControlCommandResultWithConversationRelayId":{"type":"object","title":"Call Control Command Result With Conversation Relay ID","example":{"result":"ok","conversation_relay_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"},"properties":{"result":{"type":"string","example":"ok"},"conversation_relay_id":{"type":"string","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the Conversation Relay session created by the command."}}},"CallControlCommandResultWithRecordingId":{"type":"object","title":"Call Control Command Result With Recording ID","example":{"result":"ok","recording_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"},"properties":{"result":{"type":"string","example":"ok"},"recording_id":{"type":"string","format":"uuid","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the recording. Only present when the record parameter is set to record-from-answer."}}},"CallControlId":{"type":"string","example":"v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA"},"CallControlRetrievalTool":{"properties":{"type":{"type":"string","enum":["retrieval"]},"retrieval":{"$ref":"#/components/schemas/CallControlBucketIds"}},"type":"object","required":["type","retrieval"],"title":"RetrievalTool"},"CallControlTransferToolParams":{"properties":{"targets":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the target.","example":"Support"},"to":{"type":"string","description":"The destination number or SIP URI of the call.","example":"+13129457420"}},"required":["to"]}},{"type":"string","description":"A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.","example":"{{ targets }}"}],"description":"The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime."},"from":{"type":"string","example":"+35319605860","description":"Number or SIP URI placing the call."}},"type":"object","required":["targets","from"],"title":"TransferToolParams"},"CallControlWebhookToolParams":{"properties":{"name":{"type":"string","description":"The name of the tool."},"description":{"type":"string","description":"The description of the tool."},"url":{"description":"The URL of the external tool to be called. This URL is going to be used by the assistant. The URL can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will be provided by the assistant if `path_parameters` are provided with the `id` attribute.","type":"string","example":"https://example.com/api/v1/function"},"method":{"description":"The HTTP method to be used when calling the external tool.","type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"default":"POST"},"headers":{"description":"The headers to be sent to the external tool.","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"description":"The value of the header. Note that we support mustache templating for the value. For example you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret as the bearer token.","type":"string"}}}},"body_parameters":{"description":"The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the body parameters.","type":"object"},"required":{"description":"The required properties of the body parameters.","type":"array","items":{"type":"string"}},"type":{"type":"string","enum":["object"]}},"example":{"properties":{"age":{"description":"The age of the customer.","type":"integer"},"location":{"description":"The location of the customer.","type":"string"}},"required":["age","location"],"type":"object"}},"path_parameters":{"description":"The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the path parameters.","type":"object"},"required":{"description":"The required properties of the path parameters.","type":"array","items":{"type":"string"}},"type":{"type":"string","enum":["object"]}},"example":{"properties":{"id":{"description":"The id of the customer.","type":"string"}},"required":["id"],"type":"object"}},"query_parameters":{"description":"The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the query parameters.","type":"object"},"required":{"description":"The required properties of the query parameters.","type":"array","items":{"type":"string"}},"type":{"type":"string","enum":["object"]}},"example":{"properties":{"page":{"description":"The page number.","type":"integer"}},"required":["page"],"type":"object"}}},"type":"object","required":["url","name","description"],"title":"WebhookToolParams"},"CallCost":{"type":"object","title":"Call Cost","properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"event_type":{"type":"string","example":"call.cost","enum":["call.cost"],"description":"The type of event being delivered."},"id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Unique identifier of the event."},"occurred_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521992Z","description":"ISO 8601 datetime of when the event occurred."},"payload":{"type":"object","properties":{"call_control_id":{"type":"string","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","description":"Call ID used to issue commands via Call Control API."},"connection_id":{"type":"string","example":"7267xxxxxxxxxxxxxx","description":"Call Control App ID (formerly Telnyx connection ID) used in the call."},"call_leg_id":{"type":"string","example":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","description":"ID that is unique to the call and can be used to correlate webhook events."},"call_session_id":{"type":"string","example":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","description":"ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call."},"client_state":{"type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","description":"State received from a command. Base64-encoded."},"billing_group_id":{"type":["string","null"],"example":"f5586561-8ff0-4291-a0ac-84fe544797bd","description":"Identifies the billing group associated with the call."},"status":{"type":"string","example":"success","enum":["success","error"],"description":"The status of the cost calculation (`success` or `error`)."},"total_cost":{"type":["string","null"],"example":"0.0106","description":"The total cost of the call."},"billed_duration_secs":{"type":["integer","null"],"example":120,"description":"The longest billed duration across all cost parts, in seconds."},"cost_parts":{"type":"array","description":"Breakdown of costs by call part.","items":{"$ref":"#/components/schemas/CallCostPart"},"example":[{"call_part":"sip-trunking","rate":"0.0050","cost":"0.0050","currency":"USD","billed_duration_secs":60},{"call_part":"call-recording","rate":"0.00190","cost":"0.0038","currency":"USD","billed_duration_secs":120},{"call_part":"call-control","rate":"0.00180","cost":"0.0018","currency":"USD","billed_duration_secs":60}]},"occurred_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521992Z","description":"ISO 8601 datetime of when the event occurred."}}}},"example":{"record_type":"event","event_type":"call.cost","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","billing_group_id":"f5586561-8ff0-4291-a0ac-84fe544797bd","status":"success","total_cost":"0.0106","billed_duration_secs":120,"cost_parts":[{"call_part":"sip-trunking","rate":"0.0050","cost":"0.0050","currency":"USD","billed_duration_secs":60},{"call_part":"call-recording","rate":"0.00190","cost":"0.0038","currency":"USD","billed_duration_secs":120},{"call_part":"call-control","rate":"0.00180","cost":"0.0018","currency":"USD","billed_duration_secs":60}],"occurred_at":"2018-02-02T22:25:27.521992Z"}}},"CallCostEvent":{"type":"object","title":"Call Cost Event","properties":{"data":{"$ref":"#/components/schemas/CallCost"}}},"CallCostPart":{"type":"object","title":"Call Cost Part","properties":{"call_part":{"type":"string","example":"call-control","description":"The product component this cost applies to. Values are determined by the billing system (e.g. sip-trunking, call-control, call-recording). Not a fixed set — 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":"<sip:111@192.168.1.1>"}],"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":"<sip:111@192.168.1.1>"}],"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"}}},"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"}}},"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"],"description":"Premium Answering Machine Greeting Ended result."}}}},"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 `,<digits>` 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.","default":"disabled","type":"string","enum":["premium","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.","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"}}},"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:\n- ``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.\n\nAlways carries ``rules`` (canonical)."},"CancelPendingVersionResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"cancelled":{"$ref":"#/components/schemas/DocReqsRequirement"},"restored":{"$ref":"#/components/schemas/DocReqsRequirement"}}}}},"CapabilitiesResponse":{"type":"object","additionalProperties":false,"properties":{"brand_entity":{"type":"boolean"},"brand_verification":{"type":"boolean"},"submission_sections":{"type":"boolean"},"distinct_launch_phase":{"type":"boolean"},"per_carrier_approval":{"type":"boolean"},"templates":{"type":"boolean"},"campaigns":{"type":"boolean"},"vendor_webhooks":{"type":"boolean"},"invite_test_devices":{"type":"boolean"}},"required":["brand_entity","brand_verification","submission_sections","distinct_launch_phase","per_carrier_approval","templates","campaigns","vendor_webhooks","invite_test_devices"]},"Carrier":{"type":"object","properties":{"mobile_country_code":{"type":"string","description":"Region code that matches the specific country calling code if the requested phone number type is mobile","example":"US"},"mobile_network_code":{"type":"string","description":"National destination code (NDC), with a 0 prefix, if an NDC is found and the requested phone number type is mobile","example":"0866"},"name":{"type":"string","description":"SPID (Service Provider ID) name, if the requested phone number has been ported; otherwise, the name of carrier who owns the phone number block","example":"Telnyx/4"},"type":{"type":"string","description":"A phone number type that identifies the type of service associated with the requested phone number","enum":["fixed line","mobile","voip","fixed line or mobile","toll free","premium rate","shared cost","personal number","pager","uan","voicemail","unknown"],"example":"voip"},"error_code":{"type":["string","null"],"description":"Unused","example":null},"normalized_carrier":{"type":"string","description":"If known to Telnyx and applicable, the primary network carrier.","example":"AT&T"}}},"CarrierApprovalResponse":{"type":"object","additionalProperties":false,"properties":{"approval_id":{"type":"string","format":"uuid"},"scope_type":{"$ref":"#/components/schemas/CarrierApprovalScope"},"status":{"$ref":"#/components/schemas/CarrierApprovalStatus"},"carrier":{"type":["string","null"]},"submitted_at":{"type":["string","null"],"format":"date-time"},"approved_at":{"type":["string","null"],"format":"date-time"},"rejected_reason":{"type":["string","null"]}},"required":["approval_id","scope_type","status","carrier","submitted_at","approved_at","rejected_reason"],"example":{"approval_id":"33333333-3333-4333-8333-333333333333","scope_type":"hub","status":"SUBMITTED","carrier":null,"submitted_at":"2026-08-10T12:00:00Z","approved_at":null,"rejected_reason":null}},"CarrierApprovalScope":{"type":"string","enum":["carrier","hub","bot"]},"CarrierApprovalStatus":{"type":"string","enum":["PENDING","SUBMITTED","APPROVED","REJECTED"]},"CdrAvailableFieldsResponse":{"type":"object","properties":{"Interaction Data":{"type":"array","description":"Fields related to call interaction and basic call information","items":{"type":"string"},"example":["origination_number","terminating_number","start_timestamp_utc","start_timestamp","answer_timestamp","end_timestamp","direction"]},"Number Information":{"type":"array","description":"Geographic and routing information for phone numbers","items":{"type":"string"},"example":["origination_city","origination_state","origination_lata","origination_country","terminating_city","terminating_state"]},"Telephony Data":{"type":"array","description":"Technical telephony and call control information","items":{"type":"string"},"example":["route","connection_id","hangup_code","pdd","tags","sip_call_id","mos"]},"Billing":{"type":"array","description":"Cost and billing related information","items":{"type":"string"},"example":["billable_time","cost","rate","billing_group_id"]}},"description":"Available CDR report fields grouped by category"},"CdrDeleteDetailReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrDetailedReqResponse"}}},"CdrDeleteUsageReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrUsageReportResponseLegacy"}}},"CdrDetailedReqResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the report","example":"123e4567-e89b-12d3-a456-426614174000"},"start_time":{"type":"string","description":"Start time in ISO format","example":"2024-02-01T00:00:00Z"},"end_time":{"type":"string","description":"End time in ISO format","example":"2024-02-12T23:59:59Z"},"call_types":{"type":"array","description":"List of call types (Inbound = 1, Outbound = 2)","items":{"type":"integer","description":"Call type value","format":"int32"}},"record_types":{"type":"array","description":"List of record types (Complete = 1, Incomplete = 2, Errors = 3)","example":[1,2],"items":{"type":"integer","description":"Record type value","format":"int32"}},"connections":{"type":"array","description":"List of connections","example":[123,456],"items":{"type":"integer","description":"List of connections","format":"int64"}},"report_name":{"type":"string","description":"Name of the report","example":"My Report"},"status":{"type":"integer","description":"Status of the report (Pending = 1, Complete = 2, Failed = 3, Expired = 4)","format":"int32","example":1},"report_url":{"type":"string","description":"URL to download the report"},"filters":{"type":"array","description":"List of filters","items":{"$ref":"#/components/schemas/Filter"}},"created_at":{"type":"string","description":"Creation date of the report","example":"2024-02-12T14:00:00Z"},"updated_at":{"type":"string","description":"Last update date of the report","example":"2024-02-12T14:05:00Z"},"timezone":{"type":"string","description":"Timezone for the report"},"source":{"type":"string","description":"Source of the report. Valid values: calls (default), call-control, fax-api, webrtc"},"retry":{"type":"integer","description":"Number of retries","format":"int32"},"managed_accounts":{"type":"array","description":"List of managed accounts","items":{"type":"string","format":"uuid"},"example":["f47ac10b-58cc-4372-a567-0e02b2c3d479","6ba7b810-9dad-11d1-80b4-00c04fd430c8"]},"record_type":{"type":"string","example":"cdr_detailed_report"}},"description":"Response object for CDR detailed report"},"CdrDetailedRequest":{"required":["start_time","end_time"],"type":"object","properties":{"start_time":{"type":"string","description":"Start time in ISO format","format":"date-time","example":"2024-02-01T00:00:00Z"},"end_time":{"type":"string","description":"End time in ISO format","format":"date-time","example":"2024-02-12T23:59:59Z"},"timezone":{"type":"string","description":"Timezone for the report","example":"UTC"},"call_types":{"type":"array","description":"List of call types to filter by (Inbound = 1, Outbound = 2)","items":{"type":"integer","format":"int32"},"example":[1,2]},"record_types":{"type":"array","description":"List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3)","items":{"type":"integer","format":"int32"},"example":[1,2]},"connections":{"type":"array","description":"List of connections to filter by","items":{"type":"integer","format":"int64"},"example":[123,456]},"report_name":{"type":"string","description":"Name of the report","example":"My CDR Report"},"source":{"type":"string","description":"Source of the report. Valid values: calls (default), call-control, fax-api, webrtc","example":"calls"},"include_all_metadata":{"type":"boolean","description":"Whether to include all metadata","example":true},"filters":{"type":"array","description":"List of filters to apply","items":{"$ref":"#/components/schemas/Filter"}},"fields":{"type":"array","description":"Set of fields to include in the report","items":{"type":"string"},"example":["call_leg_id","start_time","end_time"]},"managed_accounts":{"type":"array","description":"List of managed accounts to include","items":{"type":"string","format":"uuid"},"example":["f47ac10b-58cc-4372-a567-0e02b2c3d479","6ba7b810-9dad-11d1-80b4-00c04fd430c8"]},"select_all_managed_accounts":{"type":"boolean","description":"Whether to select all managed accounts","example":false}},"description":"Request object for CDR detailed report"},"CdrGetDetailReportByIdResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrDetailedReqResponse"}}},"CdrGetDetailReportResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CdrDetailedReqResponse"}},"meta":{"$ref":"#/components/schemas/batch-csv_PaginationMeta_705dfa7312"}}},"CdrGetSyncUsageReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrUsageReportResponse"}}},"CdrGetUsageReportByIdResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrUsageReportResponseLegacy"}}},"CdrGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CdrUsageReportResponseLegacy"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta"}}},"CdrPostDetailReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrDetailedReqResponse"}}},"CdrPostUsageReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CdrUsageReportResponseLegacy"}}},"CdrUsageReportResponse":{"type":"object","properties":{"id":{"type":"string","description":"Identifies the resource","format":"uuid"},"start_time":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"end_time":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"connections":{"type":"array","example":[1234567890,9876543210],"items":{"type":"integer","format":"int64"}},"aggregation_type":{"type":"string","enum":["NO_AGGREGATION","CONNECTION","TAG","BILLING_GROUP"]},"status":{"type":"string","enum":["PENDING","COMPLETE","FAILED","EXPIRED"]},"report_url":{"type":"string","example":"http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv"},"result":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"record_type":{"type":"string","example":"cdr_usage_report"},"product_breakdown":{"type":"string","enum":["NO_BREAKDOWN","DID_VS_TOLL_FREE","COUNTRY","DID_VS_TOLL_FREE_PER_COUNTRY"]}}},"CdrUsageReportResponseLegacy":{"type":"object","properties":{"id":{"type":"string","description":"Identifies the resource","format":"uuid"},"start_time":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"end_time":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"connections":{"uniqueItems":true,"type":"array","example":["1234567890","9876543210"],"items":{"type":"string"}},"aggregation_type":{"type":"integer","description":"Aggregation type: All = 0, By Connections = 1, By Tags = 2, By Billing Group = 3","format":"int32"},"status":{"type":"integer","description":"Status of the report: Pending = 1, Complete = 2, Failed = 3, Expired = 4","format":"int32"},"report_url":{"type":"string","example":"http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv"},"result":{"type":"object"},"created_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z"},"record_type":{"type":"string","example":"cdr_usage_report"},"product_breakdown":{"type":"integer","description":"Product breakdown type: No breakdown = 0, DID vs Toll-free = 1, Country = 2, DID vs Toll-free per Country = 3","format":"int32"}},"description":"Legacy V2 CDR usage report response"},"ChatCompletionRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/ChatCompletionSystemMessageParam"},"type":"array","example":[{"role":"system","content":"You are a friendly chatbot."},{"role":"user","content":"Hello, world!"}],"description":"A list of the previous chat messages for context."},"model":{"type":"string","default":"meta-llama/Meta-Llama-3.1-8B-Instruct","description":"The language model to chat with."},"service_tier":{"type":"string","description":"The service tier to use for this request. Supported values vary by model; use `GET /v2/ai/openai/models` and inspect the model's `service_tiers` field. If omitted, Telnyx-hosted models use `default`."},"region":{"type":"string","enum":["USA","EU","AUS","UAE"],"description":"Optional data-residency region the request should be served from, using the same vocabulary as your account's Data Locality setting. Behavior depends on `mode`. Supported for Telnyx-hosted models only: a request routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it. Omit for today's latency-based routing."},"mode":{"type":"string","enum":["preferred","strict"],"default":"preferred","description":"How strictly `region` is applied. `preferred` (the default when `region` is set) tries that region first and falls back to another when the model cannot be served there, so a request that would have succeeded still succeeds. `strict` pins the request: it is served from that region or it fails with a 422, never redirected to another region. Requires `region`."},"api_key_ref":{"type":"string","description":"If you are using an external inference provider like xAI or OpenAI, this field allows you to pass along a reference to your API key. After creating an [integration secret](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for you API key, pass the secret's `identifier` in this field."},"stream":{"type":"boolean","default":false,"description":"Whether or not to stream data-only server-sent events as they become available."},"temperature":{"type":"number","default":0.1,"description":"Adjusts the \"creativity\" of the model. Lower values make the model more deterministic and repetitive, while higher values make the model more random and creative."},"max_tokens":{"type":["integer","null"],"default":8192,"description":"Maximum number of completion (output) tokens the model may generate per request. Defaults to 8192 when omitted or `null`. Set a higher value to allow longer completions. The model's `max_completion_tokens` metadata (see `GET /ai/models`), when set, caps both the default and any larger explicit value. Reasoning models consume this budget across reasoning and answer tokens combined."},"tools":{"items":{"oneOf":[{"$ref":"#/components/schemas/ChatCompletionToolParam"},{"$ref":"#/components/schemas/Retrieval"}]},"type":"array","description":"The `function` tool type follows the same schema as the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat). The `retrieval` tool type is unique to Telnyx. You may pass a list of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents) for retrieval-augmented generation."},"tool_choice":{"type":"string","enum":["none","auto","required"]},"response_format":{"description":"Controls the format of the model output. `json_object` guarantees valid JSON output without defining a schema; `json_schema` constrains the output to the JSON schema you supply via the `json_schema` property and is the supported way to get guaranteed structured output on Telnyx-hosted models.","$ref":"#/components/schemas/ChatCompletionResponseFormatParam"},"min_p":{"type":"number","description":"This is an alternative to `top_p` that [many prefer](https://github.com/huggingface/transformers/issues/27670). Must be in [0, 1]."},"n":{"type":"number","description":"This will return multiple choices for you instead of a single chat completion."},"use_beam_search":{"type":"boolean","default":false,"description":"Setting this to `true` will allow the model to [explore more completion options](https://huggingface.co/blog/how-to-generate#beam-search). This is not supported by OpenAI."},"best_of":{"type":"integer","description":"This is used with `use_beam_search` to determine how many candidate beams to explore."},"length_penalty":{"type":"number","default":1,"description":"This is used with `use_beam_search` to prefer shorter or longer completions."},"early_stopping":{"type":"boolean","default":false,"description":"This is used with `use_beam_search`. If `true`, generation stops as soon as there are `best_of` complete candidates; if `false`, a heuristic is applied and the generation stops when is it very unlikely to find better candidates."},"logprobs":{"type":"boolean","default":false,"description":"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`."},"top_logprobs":{"type":"integer","description":"This is used with `logprobs`. An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability."},"frequency_penalty":{"type":"number","default":0,"description":"Higher values will penalize the model from repeating the same output tokens."},"presence_penalty":{"type":"number","default":0,"description":"Higher values will penalize the model from repeating the same output tokens."},"top_p":{"type":"number","description":"An alternative or complement to `temperature`. This adjusts how many of the top possibilities to consider."},"stop":{"description":"Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"maxItems":4}]},"seed":{"type":"integer","description":"If specified, the system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result."},"enable_thinking":{"type":"boolean","default":true,"description":"Whether to enable the thinking/reasoning phase for models that support it (e.g., QwQ, Qwen3). When set to false, the model will skip the internal reasoning step and respond directly, which can reduce latency. Defaults to true."},"reasoning_effort":{"type":"string","enum":["none","minimal","low","medium","high","xhigh","max"],"description":"Controls the reasoning effort for models that support it. When set, the model spends more or less compute on internal reasoning before generating its response. Supported values: none, minimal, low, medium, high, xhigh, max. Not all models support all values; unsupported values are rejected with a 400 error. When omitted, reasoning models use their default effort level."}},"type":"object","required":["messages"],"title":"ChatCompletionRequest"},"ChatCompletionResponseFormatParam":{"description":"Output format for the model response. `text` returns plain text, `json_object` enables JSON mode (valid JSON output without a schema), and `json_schema` constrains the output to a schema you supply. For guaranteed schema-conformant structured output on Telnyx-hosted models, use `json_schema`.","oneOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"$ref":"#/components/schemas/ResponseFormatJsonSchemaParam"}],"title":"ChatCompletionResponseFormatParam"},"ChatCompletionSystemMessageParam":{"type":"object","properties":{"content":{"oneOf":[{"title":"Content String","type":"string"},{"title":"Text and Image Array","type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text","image_url"]},"text":{"type":"string"},"image_url":{"type":"string"}},"required":["type"],"additionalProperties":false}}]},"role":{"type":"string","enum":["system","user","assistant","tool"]}},"required":["content","role"],"title":"ChatCompletionSystemMessageParam"},"ChatCompletionToolParam":{"properties":{"type":{"type":"string","enum":["function"]},"function":{"$ref":"#/components/schemas/FunctionDefinition"}},"type":"object","required":["function","type"],"title":"Function"},"CheckAvailabilityTool":{"properties":{"type":{"type":"string","enum":["check_availability"]},"check_availability":{"$ref":"#/components/schemas/CheckAvailabilityToolParams"}},"type":"object","required":["type","check_availability"],"title":"CheckAvailabilityTool"},"CheckAvailabilityToolParams":{"properties":{"event_type_id":{"type":"integer","description":"Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/slots/get-available-slots#parameter-event-type-id)"},"api_key_ref":{"type":"string","description":"Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key.","example":"my_calcom_api_key"}},"type":"object","required":["event_type_id","api_key_ref"],"title":"CheckAvailabilityToolParams"},"ChildRelationshipInfo":{"type":"object","required":["relationship_type","via","cost_rollup","traversal_enabled","description","child_product","child_event","child_record_type"],"properties":{"relationship_type":{"type":"string"},"via":{"$ref":"#/components/schemas/MetadataFieldMapping"},"cost_rollup":{"type":"boolean"},"traversal_enabled":{"type":"boolean"},"description":{"type":"string"},"child_product":{"type":"string"},"child_event":{"type":"string"},"child_record_type":{"type":"string"}}},"CivicAddress":{"type":"object","title":"Civic Address","properties":{"id":{"$ref":"#/components/schemas/UUID"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"civic_address"},"city_or_town":{"type":"string","example":"Chicago"},"city_or_town_alias":{"type":"string"},"company_name":{"type":"string","example":"Telnyx"},"country":{"type":"string","example":"US"},"country_or_district":{"type":"string","example":"US"},"default_location_id":{"type":"string","format":"uuid","description":"Identifies what is the default location in the list of locations."},"description":{"type":"string","example":"Texas Office"},"house_number":{"type":"string","example":"600"},"house_number_suffix":{"type":"string"},"postal_or_zip_code":{"type":"string","example":"78701"},"state_or_province":{"type":"string","example":"TX"},"street_name":{"type":"string","example":"Congress"},"street_suffix":{"type":"string","example":"St"},"locations":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}},"example":{"id":"07a4dc5d-9b3b-4ba2-88a4-6ba172316c65","record_type":"civic_address","city_or_town":"Austin","city_or_town_alias":"","company_name":"Telnyx","country":"US","country_or_district":"US","default_location_id":"18ded4bb-b694-44c1-a89b-a35b7acd4c9e","description":"Austin Office","house_number":"600","house_number_suffix":"","locations":[{"id":"18ded4bb-b694-44c1-a89b-a35b7acd4c9e","additional_info":"","description":"Austin Office","is_default":true},{"id":"d420a57f-c4ae-4697-87e1-fbefd9e86f72","additional_info":"14th Floor","description":"","is_default":false}],"postal_or_zip_code":"78701","state_or_province":"TX","street_name":"Congress Street","street_suffix":""}},"Clause":{"properties":{"attribute":{"type":"string","title":"Attribute","description":"Attribute name from the routing context"},"operator":{"$ref":"#/components/schemas/Operator","description":"Match operator"},"values":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Values"}},"type":"object","required":["attribute","operator","values"],"title":"Clause","description":"A single attribute/operator/values check.\n\nA clause matches when the routing context's value for ``attribute``\nsatisfies ``operator`` against any of ``values``."},"ClientSideTool":{"title":"ClientSideTool","type":"object","properties":{"type":{"type":"string","enum":["client_side_tool"]},"shared":{"type":"boolean","description":"Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — 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://<database>:<meta_token>@us-east-1.telnyxcloudfs.com:5432/<database>?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.\n\nEvaluates to a boolean. Used in edge conditions to gate transitions on\nruntime values, e.g. `user_age >= 18` or `tier == \"gold\"`.","example":{"left":{"name":"user_age","type":"variable"},"op":">=","right":{"type":"number_literal","value":18},"type":"comparison"},"properties":{"left":{"type":"object","title":"Expression","description":"Recursive reference to Expression. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/Expression for the full structure.","additionalProperties":true},"op":{"description":"Relational/membership operator. `contains` / `not_contains` apply to strings (substring) and arrays (membership).","enum":["==","!=","<","<=",">",">=","contains","not_contains"],"title":"Op","type":"string"},"right":{"type":"object","title":"Expression","description":"Recursive reference to Expression. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/Expression for the full structure.","additionalProperties":true},"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. <br/><br/>","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 `<Provider>.<Model>.<VoiceId>`. Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.<VoiceId>` (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.<VoiceId>` (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.<ModelId>.<VoiceId>` (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\": \"<secret_identifier>\"}`. 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.<model_id>.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<ModelId>.<VoiceId>` (e.g., `FishAudio.s2.1-pro.<reference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.<ModelId>.<VoiceId>` (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.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.<VoiceId>` (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\nFor service_level basic, you may define the gender of the speaker (male or female).","type":"string","example":"Telnyx.KokoroTTS.af"},"voice_settings":{"description":"The settings associated with the voice selected","oneOf":[{"$ref":"#/components/schemas/ElevenLabsVoiceSettings"},{"$ref":"#/components/schemas/TelnyxVoiceSettings"},{"$ref":"#/components/schemas/AWSVoiceSettings"},{"$ref":"#/components/schemas/MinimaxVoiceSettings"},{"$ref":"#/components/schemas/AzureVoiceSettings"},{"$ref":"#/components/schemas/ResembleVoiceSettings"},{"$ref":"#/components/schemas/InworldVoiceSettings"},{"$ref":"#/components/schemas/XAIVoiceSettings"},{"$ref":"#/components/schemas/SonioxVoiceSettings"}],"discriminator":{"propertyName":"type","mapping":{"elevenlabs":"#/components/schemas/ElevenLabsVoiceSettings","telnyx":"#/components/schemas/TelnyxVoiceSettings","aws":"#/components/schemas/AWSVoiceSettings","minimax":"#/components/schemas/MinimaxVoiceSettings","azure":"#/components/schemas/AzureVoiceSettings","resemble":"#/components/schemas/ResembleVoiceSettings","inworld":"#/components/schemas/InworldVoiceSettings","xai":"#/components/schemas/XAIVoiceSettings","soniox":"#/components/schemas/SonioxVoiceSettings"}}},"language":{"description":"The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.","type":"string","enum":["arb","cmn-CN","cy-GB","da-DK","de-DE","en-AU","en-GB","en-GB-WLS","en-IN","en-US","es-ES","es-MX","es-US","fr-CA","fr-FR","hi-IN","is-IS","it-IT","ja-JP","ko-KR","nb-NO","nl-NL","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sv-SE","tr-TR"],"example":"en-US"},"command_id":{"description":"Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"call_control_ids":["v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"],"payload":"Say this to participants","payload_type":"text","voice":"female","language":"en-US","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"ConferenceSpeakStarted":{"type":"object","title":"Conference Speak Started","example":{"record_type":"event","event_type":"conference.speak.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"connection_id":"7267xxxxxxxxxxxxxx","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}},"properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"event_type":{"type":"string","example":"conference.speak.started","enum":["conference.speak.started"],"description":"The type of event being delivered."},"id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Identifies the type of resource."},"payload":{"type":"object","properties":{"connection_id":{"type":"string","example":"7267xxxxxxxxxxxxxx","description":"Call Control App ID (formerly Telnyx connection ID) used in the call."},"creator_call_session_id":{"type":"string","example":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","description":"ID that is unique to the call session that started the conference."},"conference_id":{"type":"string","example":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","description":"ID of the conference the text was spoken in."},"occurred_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521Z","description":"ISO 8601 datetime of when the event occurred."}}}}},"ConferenceSpeakStartedEvent":{"type":"object","title":"Conference Speak Started Event","properties":{"data":{"$ref":"#/components/schemas/ConferenceSpeakStarted"}}},"ConferenceStopRequest":{"type":"object","title":"Conference Stop Request","properties":{"call_control_ids":{"description":"List of call control ids identifying participants the audio file should stop be played to. If not given, the audio will be stoped to the entire conference.","type":"array","items":{"type":"string"}},"region":{"$ref":"#/components/schemas/ConferenceRegion"}}},"ConferenceUnholdRequest":{"required":["call_control_ids"],"type":"object","title":"Conference Unhold Request","properties":{"call_control_ids":{"description":"List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unheld.","type":"array","items":{"type":"string"}},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"call_control_ids":["v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"]}},"ConferenceUnmuteRequest":{"type":"object","title":"Conference Unmute Request","properties":{"call_control_ids":{"description":"List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unmuted. When empty all participants will be unmuted.","type":"array","items":{"type":"string"}},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"call_control_ids":["v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"]}},"Connection":{"type":"object","title":"Connection","properties":{"id":{"type":"string","description":"Identifies the specific resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"ip_connection"},"active":{"type":"boolean","description":"Defaults to true","example":true},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"type":"string","example":"string"},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"},"webhook_event_url":{"description":"The URL where webhooks related to this connection will be sent.","type":["string","null"],"format":"uri","default":null,"example":"https://example.com"},"webhook_event_failover_url":{"description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails.","type":["string","null"],"format":"uri","default":"","example":"https://failover.example.com"},"webhook_api_version":{"description":"Determines which webhook format will be used, Telnyx API v1 or v2.","type":"string","enum":["1","2"],"default":"1","example":"1"},"outbound_voice_profile_id":{"$ref":"#/components/schemas/connections_OutboundVoiceProfileId"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]}},"example":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"ip_connection","active":true,"anchorsite_override":"Latency","connection_name":"string","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","outbound_voice_profile_id":"1293384261075731499"}},"ConnectionActive":{"title":"Connection Active","type":"boolean","description":"Specifies whether the connection can be used.","default":true,"example":false},"ConnectionAndroidPushCredentialId":{"title":"Android Push Credential Id","type":["string","null"],"description":"The uuid of the push credential for Android","example":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","default":null},"ConnectionId":{"description":"The ID of the connection used to send the fax.","type":"string","example":"234423"},"ConnectionIdCredentials":{"type":"string","description":"Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource.","example":"1234567890"},"ConnectionIosPushCredentialId":{"title":"Ios Push Credential Id","type":["string","null"],"description":"The uuid of the push credential for Ios","example":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","default":null},"ConnectionJitterBuffer":{"type":"object","description":"Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering.","properties":{"enable_jitter_buffer":{"type":"boolean","description":"Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.","default":false,"example":true},"jitterbuffer_msec_min":{"type":"integer","description":"The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.","minimum":40,"maximum":400,"default":60,"example":60},"jitterbuffer_msec_max":{"type":"integer","description":"The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.","minimum":40,"maximum":400,"default":200,"example":200}}},"ConnectionName":{"title":"Connection Name","type":"string","description":"A user-assigned name to help manage the connection.","example":"office-connection"},"ConnectionNoiseSuppression":{"type":"string","description":"Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off.","enum":["inbound","outbound","both","disabled"],"example":"both"},"ConnectionNoiseSuppressionDetails":{"type":"object","description":"Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used.","properties":{"engine":{"type":"string","description":"The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression.","enum":["denoiser","deep_filter_net","deep_filter_net_large","krisp_viva_tel","krisp_viva_tel_lite","krisp_viva_promodel","krisp_viva_ss","quail_voice_focus"],"default":"denoiser","example":"deep_filter_net"},"attenuation_limit":{"type":"integer","description":"The attenuation limit value for the selected engine. Default values vary by engine: 0 for 'denoiser', 80 for 'deep_filter_net', 'deep_filter_net_large', and all Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss'), 100 for 'quail_voice_focus'.","minimum":0,"maximum":100,"multipleOf":10,"example":80}}},"ConnectionRtcpSettings":{"type":"object","title":"Connection RTCP Settings","properties":{"port":{"enum":["rtcp-mux","rtp+1"],"default":"rtp+1","description":"RTCP port by default is rtp+1, it can also be set to rtcp-mux","type":"string"},"capture_enabled":{"type":"boolean","default":false,"description":"Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal.","example":true},"report_frequency_secs":{"type":"integer","default":5,"description":"RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds.","example":10}},"example":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10}},"ConnectionsCount":{"title":"Connections Count","type":"object","required":["record_type","counts","limits"],"properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"connections_count"},"counts":{"type":"object","description":"Counts of the authenticated user's connections, grouped by connection type. Forward-only connections are excluded.","required":["ip_connections","credential_connections","uac_connections","fqdn_connections","call_control_applications","texml_applications","third_party_provider_connections","external_connections","fax_connections","mobile_voice_connections","microsoft_teams_sbc_connections","zoom_sbc_connections","operator_connect_connections"],"properties":{"ip_connections":{"type":"integer","description":"Number of IP connections."},"credential_connections":{"type":"integer","description":"Number of credential connections."},"uac_connections":{"type":"integer","description":"Number of UAC connections."},"fqdn_connections":{"type":"integer","description":"Number of FQDN connections."},"call_control_applications":{"type":"integer","description":"Number of Call Control applications."},"texml_applications":{"type":"integer","description":"Number of TeXML applications."},"third_party_provider_connections":{"type":"integer","description":"Number of third-party provider connections."},"external_connections":{"type":"integer","description":"Number of external connections."},"fax_connections":{"type":"integer","description":"Number of Fax applications."},"mobile_voice_connections":{"type":"integer","description":"Number of mobile voice (IMS) connections."},"microsoft_teams_sbc_connections":{"type":"integer","description":"Number of Microsoft Teams SBC (direct routing) connections."},"zoom_sbc_connections":{"type":"integer","description":"Number of Zoom SBC connections."},"operator_connect_connections":{"type":"integer","description":"Number of Microsoft Operator Connect connections."}}},"limits":{"type":"object","description":"Connection limits that apply to the user. Contains a single global_limit when a global connection limit applies, or per-type limits (standard_limit, texml_limit and uac_limit) when the user has per-type connection count capabilities.","oneOf":[{"title":"Global Connection Limit","type":"object","additionalProperties":false,"required":["global_limit"],"properties":{"global_limit":{"type":"integer","description":"Maximum total number of connections allowed, when a global limit applies.","example":10000}}},{"title":"Per-type Connection Limits","type":"object","additionalProperties":false,"required":["standard_limit","texml_limit","uac_limit"],"properties":{"standard_limit":{"type":"integer","description":"Maximum number of standard connections allowed, when per-type limits apply."},"texml_limit":{"type":"integer","description":"Maximum number of TeXML applications allowed, when per-type limits apply."},"uac_limit":{"type":"integer","description":"Maximum number of UAC connections allowed, when per-type limits apply."}}}]}}},"ConsentTokenResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"client_id":{"type":"string","description":"Client ID"},"name":{"type":"string","description":"Client name"},"requested_scopes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Scope ID"},"name":{"type":"string","description":"Scope name"},"description":{"type":"string","description":"Scope description"}}}},"logo_uri":{"type":["string","null"],"format":"uri","description":"URL of the client logo"},"tos_uri":{"type":["string","null"],"format":"uri","description":"URL of the client's terms of service"},"policy_uri":{"type":["string","null"],"format":"uri","description":"URL of the client's privacy policy"},"redirect_uri":{"type":"string","format":"uri","description":"The redirect URI for this authorization"},"verified":{"type":"boolean","description":"Whether the client is verified"}}}}},"ConsumedData":{"type":"object","title":"ConsumedData","description":"Represents the amount of data consumed.","properties":{"unit":{"type":"string","example":"MB","default":"MB"},"amount":{"type":"string","example":"2048.1"}}},"ContentResult":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"The source URL."},"title":{"type":"string","description":"Page title (if available)."},"html":{"type":"string","description":"Cleaned HTML content (if `html` format requested; may also be present on freshly crawled pages)."},"markdown":{"type":"string","description":"Markdown content (if `markdown` format requested)."},"metadata":{"type":"object","properties":{"site_name":{"type":"string","description":"Site name. Often empty."},"favicon_url":{"type":"string","format":"uri","description":"Favicon URL (if available)."}},"additionalProperties":true,"description":"Page metadata (if `metadata` format requested)."}}},"ContentsRequest":{"type":"object","required":["urls"],"properties":{"urls":{"type":"array","items":{"type":"string","format":"uri"},"minItems":1,"maxItems":20,"description":"List of URLs to retrieve content from (max 20 for public API).","example":["https://en.wikipedia.org/wiki/Artificial_intelligence"]},"formats":{"type":"array","items":{"type":"string","enum":["html","markdown","metadata"]},"maxItems":3,"description":"Content formats to return. If omitted, `html` and `metadata` are returned by default. Retrieval is best-effort per URL: a format field appears only when that content could be produced, and a freshly crawled page may also include `html` even when not requested.","example":["markdown","metadata"]},"crawl_timeout":{"type":"integer","minimum":1,"maximum":60,"description":"Timeout for crawling each URL, in seconds (1-60).","example":10},"max_age":{"type":["integer","null"],"minimum":0,"description":"Maximum age of cached content in seconds. `null` means no limit.","example":null}}},"ContentsResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ContentResult"}}}},"ContestSubmission":{"type":"object","description":"One round of customer contest evidence on an infringement claim. The aggregated documents across rounds live on the parent claim's `contest_documents`; this submission record carries only the per-round notes and document count.","properties":{"notes":{"type":"string","example":"We own the trademark outright; our registration precedes the claimant by three years."},"submitted_at":{"type":"string","format":"date-time","example":"2026-04-22T02:13:06.629473Z","readOnly":true},"document_count":{"type":"integer","minimum":0,"example":1,"readOnly":true}}},"Conversation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"name":{"type":"string","example":""},"created_at":{"type":"string","description":"The datetime the conversation was created.","format":"date-time","example":"2025-04-15T13:07:28.764Z"},"metadata":{"type":"object","description":"Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own. The reserved field `ai_disabled` (boolean) can be set to `true` to prevent AI-generated responses on this conversation. When `ai_disabled` is `true`, calls to the chat endpoint will return a 400 error. Set to `false` or remove the field to re-enable AI responses. This is useful when a human agent needs to take over the conversation mid-stream (e.g., a technician stepping in while AI was messaging a resident).","additionalProperties":{"type":"string"},"example":{"telnyx_conversation_channel":"sms","telnyx_agent_target":"+13128675309","telnyx_end_user_target":"+13128675309","assistant_id":"assistant-123"}},"last_message_at":{"type":"string","description":"The datetime of the latest message in the conversation.","format":"date-time","example":"2025-04-15T13:07:28.764Z"}},"required":["id","created_at","metadata","last_message_at"]},"ConversationChannelType":{"type":"string","enum":["phone_call","sms_chat"],"title":"ConversationChannelType"},"ConversationFlow":{"description":"Conversation flow as returned by the API.","example":{"edges":[{"condition":{"prompt":"The caller is asking about a bill or charge.","type":"llm"},"id":"e_intake_to_billing","start_node_id":"n_intake","target":{"node_id":"n_billing","type":"node"}},{"condition":{"prompt":"The caller has explicitly asked for a human.","type":"llm"},"id":"e_intake_to_escalation_assistant","start_node_id":"n_intake","target":{"assistant_id":"assistant-human-handoff","position":{"x":600,"y":80},"type":"assistant","voice_mode":"distinct"}}],"nodes":[{"type":"prompt","id":"n_intake","instructions":"Greet the caller and ask what they're calling about.","name":"Intake","position":{"x":120,"y":80},"shared_tool_ids":["tool-faq-kb"]},{"type":"prompt","id":"n_billing","instructions":"Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.","instructions_mode":"append","model":"moonshotai/Kimi-K2.6","name":"Billing","position":{"x":420,"y":80},"shared_tool_ids":["tool-billing-lookup"],"tools_mode":"append"}],"start_node_id":"n_intake"},"properties":{"edges":{"description":"Directed transitions between nodes.","items":{"$ref":"#/components/schemas/FlowEdge"},"title":"Edges","type":"array"},"nodes":{"description":"All nodes in the flow.","items":{"discriminator":{"mapping":{"prompt":"#/components/schemas/FlowNode","speak":"#/components/schemas/SpeakNode","tool":"#/components/schemas/ToolNode"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/FlowNode"},{"$ref":"#/components/schemas/ToolNode"},{"$ref":"#/components/schemas/SpeakNode"}]},"title":"Nodes","type":"array"},"start_node_id":{"description":"ID of the node where the conversation begins.","title":"Start Node Id","type":"string"}},"required":["start_node_id","nodes"],"title":"ConversationFlow","type":"object"},"ConversationFlowReq":{"description":"Conversation flow as supplied by API clients (create / update).\n\nA directed graph of `FlowNodeReq` connected by `FlowEdge`s. Validation\nenforces unique node/edge IDs, that `start_node_id` references a real\nnode, and that every edge's endpoints reference real nodes.","example":{"edges":[{"condition":{"prompt":"The caller is asking about a bill or charge.","type":"llm"},"id":"e_intake_to_billing","start_node_id":"n_intake","target":{"node_id":"n_billing","type":"node"}},{"condition":{"prompt":"The caller has explicitly asked for a human.","type":"llm"},"id":"e_intake_to_escalation_assistant","start_node_id":"n_intake","target":{"assistant_id":"assistant-human-handoff","position":{"x":600,"y":80},"type":"assistant","voice_mode":"distinct"}}],"nodes":[{"type":"prompt","id":"n_intake","instructions":"Greet the caller and ask what they're calling about.","name":"Intake","position":{"x":120,"y":80},"shared_tool_ids":["tool-faq-kb"]},{"type":"prompt","id":"n_billing","instructions":"Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.","instructions_mode":"append","model":"moonshotai/Kimi-K2.6","name":"Billing","position":{"x":420,"y":80},"shared_tool_ids":["tool-billing-lookup"],"tools_mode":"append"}],"start_node_id":"n_intake"},"properties":{"edges":{"description":"Directed transitions between nodes. May be empty for a single-node flow.","items":{"$ref":"#/components/schemas/FlowEdge"},"title":"Edges","type":"array"},"nodes":{"description":"All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node (`type: prompt`), a tool node (`type: tool`), or a speak node (`type: speak`).","items":{"discriminator":{"mapping":{"prompt":"#/components/schemas/FlowNodeReq","tool":"#/components/schemas/ToolNodeReq","speak":"#/components/schemas/SpeakNodeReq"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/FlowNodeReq"},{"$ref":"#/components/schemas/ToolNodeReq"},{"$ref":"#/components/schemas/SpeakNodeReq"}]},"title":"Nodes","type":"array"},"start_node_id":{"description":"ID of the node where the conversation begins.","example":"n_intake","title":"Start Node Id","type":"string"}},"required":["start_node_id","nodes"],"title":"ConversationFlowReq","type":"object"},"ConversationHistoryRecord":{"type":"object","description":"A single search result representing one chunk of a conversation history record. Records are split into chunks of up to 480 tokens with 64-token overlap at ingestion time.","required":["id","record_id","chunk_index","chunk_total","text","score","region","user_id","organization_id","record_created_at","ingested_at"],"properties":{"id":{"type":"string","description":"Unique chunk identifier.","example":"rec-001_chunk_0"},"record_id":{"type":"string","description":"Identifier of the parent record. Multiple chunks from the same record share this ID.","example":"rec-001"},"chunk_index":{"type":"integer","description":"Zero-based index of this chunk within the parent record.","example":0},"chunk_total":{"type":"integer","description":"Total number of chunks the parent record was split into.","example":3},"text":{"type":"string","description":"The text content of this chunk (up to 480 tokens).","example":"Customer called regarding a billing discrepancy on their latest invoice."},"score":{"type":"number","format":"float","description":"Cosine similarity score between the query vector and this chunk's vector. Higher values indicate greater semantic relevance.","example":0.92},"region":{"type":"string","enum":["USA","DEU","AUS","UAE"],"description":"The region where this record is stored.","example":"USA"},"user_id":{"type":"string","description":"Identifier of the user who owns this record.","example":"user-123"},"organization_id":{"type":"string","description":"Identifier of the organization that owns this record.","example":"org-456"},"record_created_at":{"type":"string","format":"date-time","description":"When the original record was created (ISO 8601).","example":"2026-05-28T12:00:00Z"},"ingested_at":{"type":"string","format":"date-time","description":"When the record was chunked, embedded, and indexed (ISO 8601).","example":"2026-05-28T12:01:00Z"},"metadata":{"type":"object","additionalProperties":true,"default":{},"description":"Arbitrary metadata attached to the record at ingestion time. Filterable via filter[field]=value query parameters.","example":{"source":"call-center","language":"en"}}}},"ConversationHistoryResponse":{"type":"object","description":"Search response following the standard Telnyx V2 API format.","required":["data","meta"],"properties":{"data":{"type":"array","description":"Ranked list of matching text chunks, sorted by cosine similarity score descending.","items":{"$ref":"#/components/schemas/ConversationHistoryRecord"}},"meta":{"$ref":"#/components/schemas/transcriptions-search_PaginationMeta"}}},"ConversationInsight":{"type":"object","required":["id","status","created_at","conversation_insights"],"properties":{"id":{"type":"string","description":"Unique identifier for the conversation insight."},"status":{"type":"string","enum":["pending","in_progress","completed","failed"],"description":"Current status of the insight generation for the conversation."},"created_at":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"conversation_insights":{"type":"array","description":"List of insights extracted from the conversation.","items":{"type":"object","required":["result","insight_id"],"properties":{"result":{"type":"string","description":"Insight result from the conversation. If the insight has a JSON schema, this will be stringified JSON object."},"insight_id":{"type":"string","description":"Unique identifier for the insight configuration."}}}}}},"ConversationInsightAggregateResp":{"properties":{"data":{"items":{"additionalProperties":true,"type":"object","description":"An aggregation row. Contains the grouped field values (keyed by the group_by field names) and a `record_count` integer. For example, when grouping by `score`, each row has a `score` value and a `record_count` of conversations with that score. When also splitting by `metadata.assistant_version_id`, each row includes both `score` and `metadata.assistant_version_id` plus their combined `record_count`.","properties":{"record_count":{"type":"integer","description":"Number of conversation insights that match this combination of grouped field values."}},"required":["record_count"]},"type":"array","title":"Data","description":"Aggregation result rows. Each row contains the grouped field values and a `record_count`."}},"type":"object","required":["data"],"title":"ConversationInsightAggregateResp","description":"Aggregated conversation insight counts grouped by the specified fields. Each item in `data` contains the grouped field values and a `record_count` indicating how many conversation insights match that combination."},"ConversationInsightListData":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConversationInsight"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ConversationInsightListData"},"ConversationMessage":{"type":"object","required":["role","text"],"properties":{"role":{"type":"string","enum":["user","assistant","tool"],"description":"The role of the message sender."},"text":{"type":"string","description":"The message content. Can be null for tool calls."},"tool_calls":{"type":"array","description":"Optional tool calls made by the assistant.","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the tool call."},"type":{"type":"string","enum":["function"],"description":"Type of the tool call."},"function":{"type":"object","properties":{"name":{"type":"string","description":"Name of the function to call."},"arguments":{"type":"string","description":"JSON-formatted arguments to pass to the function."}},"required":["name","arguments"]}},"required":["id","type","function"]}},"created_at":{"type":"string","description":"The datetime the message was created on the conversation. This does not necesarily correspond to the time the message was sent. The best field to use to determine the time the end user experienced the message is `sent_at`.","format":"date-time","example":"2025-04-15T13:07:28.764Z"},"sent_at":{"type":"string","description":"The datetime the message was sent to the end user.","format":"date-time","example":"2025-04-15T13:07:28.764Z"},"metadata":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"},{"items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"array"}]},"type":"object","title":"Metadata"}}},"ConversationMessageListData":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConversationMessage"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ConversationMessageListData"},"ConversationRelayAssistant":{"type":"object","title":"Conversation Relay Custom Parameters","description":"Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session.","properties":{"dynamic_variables":{"type":"object","description":"Custom key-value parameters forwarded to the Conversation Relay session.","additionalProperties":{"type":"string"},"example":{"customer_id":"12345","tier":"premium"}}},"additionalProperties":true},"ConversationRelayEmbeddedConfig":{"type":"object","title":"Conversation Relay Embedded Config","description":"Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on `answer` and `dial`. It uses public field names (`url`, `dtmf_detection`, `greeting`, `voice`, `language`, etc.) and maps them to the underlying Conversation Relay action. `client_state`, `tts_language`, and `transcription_language` inside this object are ignored; use the parent command's `client_state` and `command_id` fields instead.","properties":{"url":{"type":"string","pattern":"^wss?://","description":"WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.","example":"wss://example.com/conversation-relay"},"dtmf_detection":{"type":"boolean","description":"Enable DTMF detection for the relay session.","default":false,"example":true},"greeting":{"type":"string","description":"Text played when the relay session starts.","example":"Hi! Ask me anything!"},"voice":{"$ref":"#/components/schemas/VoiceConfig"},"voice_settings":{"description":"The settings associated with the voice selected","oneOf":[{"$ref":"#/components/schemas/ElevenLabsVoiceSettings"},{"$ref":"#/components/schemas/TelnyxVoiceSettings"},{"$ref":"#/components/schemas/AWSVoiceSettings"},{"$ref":"#/components/schemas/MinimaxVoiceSettings"},{"$ref":"#/components/schemas/AzureVoiceSettings"},{"$ref":"#/components/schemas/ResembleVoiceSettings"},{"$ref":"#/components/schemas/InworldVoiceSettings"},{"$ref":"#/components/schemas/XAIVoiceSettings"},{"$ref":"#/components/schemas/SonioxVoiceSettings"}],"discriminator":{"propertyName":"type","mapping":{"elevenlabs":"#/components/schemas/ElevenLabsVoiceSettings","telnyx":"#/components/schemas/TelnyxVoiceSettings","aws":"#/components/schemas/AWSVoiceSettings","minimax":"#/components/schemas/MinimaxVoiceSettings","azure":"#/components/schemas/AzureVoiceSettings","resemble":"#/components/schemas/ResembleVoiceSettings","inworld":"#/components/schemas/InworldVoiceSettings","xai":"#/components/schemas/XAIVoiceSettings","soniox":"#/components/schemas/SonioxVoiceSettings"}}},"tts_provider":{"type":"string","description":"Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.","example":"telnyx"},"provider":{"type":"string","description":"Structured voice provider. Must be supplied together with `structured_provider`.","example":"elevenlabs"},"structured_provider":{"$ref":"#/components/schemas/ConversationRelayStructuredProvider"},"language":{"type":"string","description":"Default language for both text-to-speech and speech recognition.","default":"en","example":"en-US"},"languages":{"type":"array","description":"Per-language TTS and transcription settings.","items":{"$ref":"#/components/schemas/ConversationRelayLanguage"}},"interruptible":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"interruptible_greeting":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"interruption_settings":{"$ref":"#/components/schemas/ConversationRelayInterruptionSettings"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google"},"transcription_engine_config":{"$ref":"#/components/schemas/ConversationRelayTranscriptionEngineConfig"},"custom_parameters":{"type":"object","description":"Custom key-value parameters forwarded to the relay session as assistant dynamic variables.","additionalProperties":true,"example":{"customer_id":"12345"}}},"required":["url"],"example":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","voice_settings":{"type":"telnyx"},"language":"en-US","languages":[{"language":"en-US","voice":"Telnyx.Ultra.alloy","tts_provider":"telnyx","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}],"interruptible":"speech","interruptible_greeting":"dtmf","custom_parameters":{"customer_id":"12345"}}},"ConversationRelayInterruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech"},"ConversationRelayInterruptionSettings":{"type":"object","title":"Conversation Relay Interruption Settings","description":"Settings for handling caller interruptions during Conversation Relay speech.","properties":{"enable":{"type":"boolean","description":"Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`."},"interruptible":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"interruptible_greeting":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"welcome_greeting_interruptible":{"$ref":"#/components/schemas/ConversationRelayInterruptible"}}},"ConversationRelayLanguage":{"type":"object","title":"Conversation Relay Language","description":"Language-specific TTS and transcription settings for Conversation Relay.","properties":{"language":{"type":"string","description":"BCP 47 language tag for this language configuration.","example":"en-US"},"tts_provider":{"type":"string","description":"Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.","example":"telnyx"},"voice":{"type":"string","description":"Voice identifier for this language.","example":"Telnyx.KokoroTTS.af"},"voice_settings":{"description":"The settings associated with the voice selected","oneOf":[{"$ref":"#/components/schemas/ElevenLabsVoiceSettings"},{"$ref":"#/components/schemas/TelnyxVoiceSettings"},{"$ref":"#/components/schemas/AWSVoiceSettings"},{"$ref":"#/components/schemas/MinimaxVoiceSettings"},{"$ref":"#/components/schemas/AzureVoiceSettings"},{"$ref":"#/components/schemas/ResembleVoiceSettings"},{"$ref":"#/components/schemas/InworldVoiceSettings"},{"$ref":"#/components/schemas/XAIVoiceSettings"},{"$ref":"#/components/schemas/SonioxVoiceSettings"}],"discriminator":{"propertyName":"type","mapping":{"elevenlabs":"#/components/schemas/ElevenLabsVoiceSettings","telnyx":"#/components/schemas/TelnyxVoiceSettings","aws":"#/components/schemas/AWSVoiceSettings","minimax":"#/components/schemas/MinimaxVoiceSettings","azure":"#/components/schemas/AzureVoiceSettings","resemble":"#/components/schemas/ResembleVoiceSettings","inworld":"#/components/schemas/InworldVoiceSettings","xai":"#/components/schemas/XAIVoiceSettings","soniox":"#/components/schemas/SonioxVoiceSettings"}}},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google"},"transcription_engine_config":{"$ref":"#/components/schemas/ConversationRelayTranscriptionEngineConfig"},"transcription_provider":{"type":"string","description":"Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.","example":"Deepgram"},"speech_model":{"type":"string","description":"Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.","example":"nova-3"}},"required":["language"]},"ConversationRelaySettings":{"type":"object","title":"Conversation Relay Settings","description":"Conversation Relay connection settings. This object can provide `url`, `dtmf_detection`, `interruptible`, `interruptible_greeting`, and `languages`. Top-level aliases override nested values when both are present.","properties":{"url":{"type":"string","pattern":"^wss?://","description":"WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.","example":"wss://example.com/conversation-relay"},"dtmf_detection":{"type":"boolean","description":"Whether to enable DTMF detection during the relay session.","default":false,"example":true},"interruptible":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"interruptible_greeting":{"$ref":"#/components/schemas/ConversationRelayInterruptible"},"languages":{"type":"array","description":"Language-specific TTS and transcription settings.","items":{"$ref":"#/components/schemas/ConversationRelayLanguage"}}},"required":["url"],"example":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"interruptible":"speech","interruptible_greeting":"dtmf","languages":[{"language":"en-US","tts_provider":"telnyx","voice":"Telnyx.KokoroTTS.af","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}]}},"ConversationRelayStartRequest":{"type":"object","title":"Conversation Relay Start Request","description":"Start a Conversation Relay session. You may provide the WebSocket URL 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"}},"anyOf":[{"required":["url"]},{"required":["conversation_relay_url"]},{"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.","additionalProperties":true,"example":{"transcription_model":"deepgram/nova-3","interim_results":true,"keywords_boosting":{"telnyx":2}}},"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 <code>android</code> 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_<name>_<skill_id>`. 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 `<assistant-speaks-first-with-model-generated-message>` 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"},"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,"minimum":1,"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.\n\nThis model defines all the required and optional parameters needed to create\na comprehensive test for an AI assistant, including test configuration,\nevaluation criteria, and scheduling options."},"CreateBrand":{"title":"CreateBrand","required":["entityType","displayName","country","email","vertical"],"type":"object","properties":{"entityType":{"allOf":[{"$ref":"#/components/schemas/EntityType"}],"description":"Entity type behind the brand. This is the form of business establishment."},"displayName":{"title":"Displayname","maxLength":100,"type":"string","description":"Display name, marketing name, or DBA name of the brand.","example":"ABC Mobile"},"companyName":{"title":"Companyname","maxLength":100,"type":"string","description":"(Required for Non-profit/private/public) Legal company name.","example":"ABC Inc."},"firstName":{"title":"Firstname","maxLength":100,"type":"string","description":"First name of business contact.","example":"John"},"lastName":{"title":"Lastname","maxLength":100,"type":"string","description":"Last name of business contact.","example":"Smith"},"ein":{"title":"Ein","maxLength":20,"type":"string","description":"(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.","example":"111111111"},"phone":{"title":"Phone","maxLength":20,"type":"string","description":"Valid phone number in e.164 international format.","example":"+12024567890"},"street":{"title":"Street","maxLength":100,"type":"string","description":"Street number and name.","example":"123"},"city":{"title":"City","maxLength":100,"type":"string","description":"City name","example":"New York"},"state":{"title":"State","maxLength":20,"type":"string","description":"State. Must be 2 letters code for United States.","example":"NY"},"postalCode":{"title":"Postalcode","maxLength":10,"type":"string","description":"Postal codes. Use 5 digit zipcode for United States","example":"10001"},"country":{"title":"Country","maxLength":2,"type":"string","description":"ISO2 2 characters country code. Example: US - United States","example":"US"},"email":{"title":"Email","maxLength":100,"type":"string","description":"Valid email address of brand support contact."},"stockSymbol":{"title":"Stocksymbol","maxLength":10,"type":"string","description":"(Required for public company) stock symbol.","example":"ABC"},"stockExchange":{"allOf":[{"$ref":"#/components/schemas/StockExchange"}],"description":"(Required for public company) stock exchange.","example":"NASDAQ"},"ipAddress":{"title":"Ipaddress","maxLength":50,"type":"string","description":"IP address of the browser requesting to create brand identity."},"website":{"title":"Website","maxLength":100,"type":"string","description":"Brand website URL.","example":"http://www.abcmobile.com"},"vertical":{"allOf":[{"$ref":"#/components/schemas/Vertical"}],"description":"Vertical or industry segment of the brand."},"isReseller":{"title":"Isreseller","type":"boolean","default":false},"mock":{"title":"Mock","type":"boolean","description":"Mock brand for testing purposes. Defaults to false.","default":false},"mobilePhone":{"title":"Mobilephone","maxLength":20,"type":"string","description":"Valid mobile phone number in e.164 international format.","example":"+12024567890"},"businessContactEmail":{"title":"BusinessContactEmail","type":"string","description":"Business contact email.\n\nRequired if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`.","example":"name@example.com"},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook URL for brand status updates.","example":"https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Webhook failover URL for brand status updates.","example":"https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6"}}},"CreateCallControlApplicationRequest":{"type":"object","title":"Create Call Control Application Request","required":["application_name","webhook_event_url"],"properties":{"application_name":{"type":"string","description":"A user-assigned name to help manage the application.","example":"call-router"},"webhook_event_url":{"type":"string","format":"url","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"active":{"type":"boolean","description":"Specifies whether the connection can be used.","default":true},"anchorsite_override":{"type":"string","description":"<code>Latency</code> directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n","enum":["Latency","Chicago, IL","Ashburn, VA","San Jose, CA","London, UK","Chennai, IN","Amsterdam, Netherlands","Toronto, Canada","Sydney, Australia"],"example":"Amsterdam, Netherlands","default":"Latency"},"dtmf_type":{"type":"string","description":"Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.","enum":["RFC 2833","Inband","SIP INFO"],"example":"Inband","default":"RFC 2833"},"first_command_timeout":{"type":"boolean","description":"Specifies whether calls to phone numbers associated with this connection should hangup after timing out.","example":true,"default":false},"first_command_timeout_secs":{"type":"integer","description":"Specifies how many seconds to wait before timing out a dial command.","example":10,"default":30},"inbound":{"$ref":"#/components/schemas/CallControlApplicationInbound"},"outbound":{"$ref":"#/components/schemas/CallControlApplicationOutbound"},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_event_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this Call Control Application.","default":false},"redact_dtmf_debug_logging":{"type":"boolean","description":"When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions.","example":true,"default":false}},"example":{"application_name":"call-router","webhook_event_url":"https://example.com","active":false,"anchorsite_override":"Latency","dtmf_type":"Inband","first_command_timeout":true,"first_command_timeout_secs":10,"inbound":{"channel_limit":10,"shaken_stir_enabled":true,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"},"webhook_api_version":"1","webhook_event_failover_url":"https://failover.example.com","webhook_timeout_secs":25,"call_cost_in_webhooks":true,"redact_dtmf_debug_logging":true}},"CreateCloudfsFilesystemRequest":{"type":"object","properties":{"name":{"type":"string","description":"Filesystem name, unique within your organization. Names are trimmed and lowercased; after normalization they may contain lowercase letters, numbers, `.`, `_`, and `-` only.","pattern":"^[a-z0-9._-]+$","minLength":1,"maxLength":63,"example":"agent-fs"},"region":{"type":"string","description":"Region where the filesystem's storage and metadata are provisioned.","enum":["us-central-1","us-east-1","us-west-1"],"example":"us-east-1"}},"required":["name","region"]},"CreateCollectionRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Human-readable collection name.","example":"Support Transcripts"},"description":{"type":"string","description":"Optional description.","example":"All customer support voice transcripts."},"slug":{"type":"string","description":"Optional slug (unique per organization). Derived from `name` when omitted.","example":"support-transcripts"},"sources":{"type":"array","description":"Optional sources to attach at creation time.","items":{"$ref":"#/components/schemas/SourceRequest"}},"settings":{"description":"Optional retrieval settings.","allOf":[{"$ref":"#/components/schemas/RetrievalSettingsWrapper"}]}}},"CreateConferenceRequest":{"required":["call_control_id","name"],"type":"object","title":"Create Conference Request","properties":{"call_control_id":{"description":"Unique identifier and token for controlling the call","example":"v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==","type":"string"},"name":{"description":"Name of the conference","example":"Business","type":"string"},"beep_enabled":{"description":"Whether a beep sound should be played when participants join and/or leave the conference.","enum":["always","never","on_enter","on_exit"],"default":"never","example":"on_exit","type":"string"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. The client_state will be updated for the creator call leg and will be used for all webhooks related to the created conference.","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","type":"string"},"comfort_noise":{"description":"Toggle background comfort noise.","example":false,"type":"boolean","default":true},"command_id":{"description":"Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.","example":"891510ac-f3e4-11e8-af5b-de00688a4901","type":"string"},"duration_minutes":{"description":"Time length (minutes) after which the conference will end.","example":5,"type":"integer"},"hold_audio_url":{"type":"string","example":"http://example.com/message.wav","description":"The URL of a file to be played to participants joining the conference. The URL can point to either a WAV or MP3 file. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when \"start_conference_on_create\" is set to \"false\"."},"hold_media_name":{"type":"string","example":"my_media_uploaded_to_media_storage_api","description":"The media_name of a file to be played to participants joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when \"start_conference_on_create\" is set to \"false\"."},"max_participants":{"description":"The maximum number of active conference participants to allow. Must be between 2 and 800. Defaults to 250","example":3,"type":"integer"},"start_conference_on_create":{"description":"Whether the conference should be started on creation. If the conference isn't started all participants that join are automatically put on hold. Defaults to \"true\".","example":false,"type":"boolean"},"region":{"description":"Sets the region where the conference data will be hosted. Defaults to the region defined in user's data locality settings (Europe or US).","example":"US","type":"string","enum":["Australia","Europe","Middle East","US"]}},"example":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","name":"Business","beep_enabled":"always","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","duration_minutes":5,"hold_audio_url":"http://www.example.com/audio.wav","start_conference_on_create":false,"max_participants":250}},"CreateConversationRequest":{"properties":{"name":{"type":"string"},"metadata":{"type":"object","description":"Metadata associated with the conversation. Set `ai_disabled` to `true` to create the conversation with AI message responses disabled.","additionalProperties":{"type":"string"}}},"type":"object","title":"CreateConversationRequest"},"CreateCredentialConnectionRequest":{"type":"object","title":"Create Credential Connection Request","required":["user_name","password","connection_name"],"properties":{"active":{"type":"boolean","description":"Defaults to true"},"user_name":{"type":"string","description":"The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).","example":"myusername123"},"password":{"type":"string","description":"The password to be used as part of the credentials. Must be 8 to 128 characters long.","example":"my123secure456password789"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"$ref":"#/components/schemas/ConnectionName"},"sip_uri_calling_preference":{"type":"string","description":"This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":false,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true.","enum":["1","2","texml"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/CredentialInbound"},"outbound":{"$ref":"#/components/schemas/CredentialOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"password":"my123secure456password789","user_name":"myusername123","anchorsite_override":"Latency","connection_name":"my name","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":false,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true,"simultaneous_ringing":"disabled"},"outbound":{"call_parking_enabled":true,"ani_override":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"US","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}}},"CreateDocServiceDocumentRequest":{"type":"object","properties":{"url":{"description":"If the file is already hosted publicly, you can provide a URL and have the documents service fetch it for you.","type":"string","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"file":{"description":"Alternatively, instead of the URL you can provide the Base64 encoded contents of the file you are uploading.","type":"string","format":"byte","example":"ZXhhbXBsZSBvZiBlbmNvZGVkIGNvbnRlbnQ="},"filename":{"description":"The filename of the document.","type":"string","example":"test-document.pdf"},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"}}},"CreateEmailBatchItemRequest":{"type":"object","description":"A single message in a batch create request. This schema mirrors\n`CreateEmailRequest` EXCEPT it does not accept the reply/forward\nthreading parameters (`in_reply_to_message_id`, `reply_to_all`,\n`forward_of_message_id`) — those are single-send-only in Phase 1\n(MSG-1491) and are not yet implemented on the batch endpoint. Recipient\nemail addresses must be unique across `to`, `cc`, and `bcc` after\ncase-insensitive normalization. Duplicate recipients return `400`.","properties":{"from":{"$ref":"#/components/schemas/EmailAddressInput"},"from_name":{"type":"string","description":"Optional display name for string `from`; overrides `from.name` when provided."},"to":{"$ref":"#/components/schemas/EmailAddressArrayInput"},"cc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"bcc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"reply_to":{"$ref":"#/components/schemas/EmailAddressInput","description":"Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored."},"subject":{"type":"string","description":"Required unless `template_id` is supplied. When using a template, the template's subject is rendered; if the template has no subject or renders empty, the request returns 400."},"html_body":{"type":"string","description":"HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses."},"text_body":{"type":"string","description":"Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom email headers. Write-only; not returned in responses."},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentRequest"}},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[tags]` when listing messages."},"group_id":{"type":"string","format":"uuid","nullable":true,"description":"Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling."},"ignore_suppression":{"type":"boolean","default":false,"description":"When true, allows delivery to recipients whose suppressions explicitly\npermit an override. Hard bounces, spam complaints, and invalid-address\nsuppressions cannot be overridden. Requires the `email:override` API scope.\n"},"metadata":{"type":"object","additionalProperties":true,"description":"Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[metadata]` when listing messages."},"tracking_settings":{"$ref":"#/components/schemas/TrackingSettings"},"template_id":{"type":"string","format":"uuid"},"template_variables":{"type":"object","default":{},"additionalProperties":true,"description":"Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`, a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error (batch) naming the variable; no message is persisted for the failed item."},"scheduled_at":{"type":"string","format":"date-time","nullable":true,"description":"Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used."},"send_at":{"type":"string","format":"date-time","deprecated":true,"description":"Deprecated alias for `scheduled_at`."},"inline_css":{"type":"boolean","default":false},"sandbox_mode":{"type":"boolean","default":false,"description":"Per-message sandbox flag. The batch-level `sandbox_mode` envelope value is authoritative: it overwrites every message's `sandbox_mode` before processing, including the `false` default when the envelope omits the field. A per-item `sandbox_mode: true` inside a non-sandbox batch is therefore a real send. Set the envelope field to run any batch item in sandbox mode."}},"required":["from","to"]},"CreateEmailBatchRequest":{"type":"object","properties":{"messages":{"type":"array","minItems":1,"maxItems":1000,"description":"Array of email messages to send. Up to 1,000 messages per batch request. Each message is validated and sent independently; per-message failures do not affect other messages in the batch.","items":{"$ref":"#/components/schemas/CreateEmailBatchItemRequest"}},"sandbox_mode":{"type":"boolean","default":false,"description":"Applies sandbox mode to all messages in the batch and overrides any per-message `sandbox_mode` value — 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\nsupplied). `scope` is derived. `bounce_category`/`dsn_code`/`meta`/\n`group_id` are not accepted on the public surface.\n"},"CreateEmailDomainRequest":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","example":"example.com"},"inbound_enabled":{"type":"boolean","default":false,"description":"Enable inbound routing for this domain"},"dmarc_policy":{"type":"object","allOf":[{"$ref":"#/components/schemas/EmailDMARCPolicy"}],"nullable":true,"description":"DMARC policy. Omit/null for the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).\n"},"tracking":{"$ref":"#/components/schemas/DomainsTrackingSettings"}}},"CreateEmailInboxRequest":{"type":"object","description":"Both fields are optional. Omitting `username` generates one; omitting `domain_id` uses the account's shared inbound subdomain. Omitting both creates an instant inbox with a generated username.","properties":{"username":{"type":"string","description":"Inbox local part. Trimmed and lowercased before validation; the normalized value must be 1-64 characters, start and end with a letter or digit, and contain only letters, digits, dots, hyphens, and underscores. Generated when omitted."},"domain_id":{"type":"string","format":"uuid","description":"Account-owned, inbound-enabled domain UUID. The account's shared inbound subdomain is allocated when omitted."}}},"CreateEmailRequest":{"type":"object","description":"Recipient email addresses must be unique across `to`, `cc`, and `bcc` after case-insensitive normalization. Duplicate recipients return `400 Bad Request`.","properties":{"from":{"$ref":"#/components/schemas/EmailAddressInput"},"from_name":{"type":"string","description":"Optional display name for string `from`; overrides `from.name` when provided."},"to":{"$ref":"#/components/schemas/EmailAddressArrayInput"},"cc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"bcc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"reply_to":{"$ref":"#/components/schemas/EmailAddressInput","description":"Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored."},"subject":{"type":"string","description":"Required unless `template_id` is supplied. When using a template, the template's subject is rendered; if the template has no subject or renders empty, the request returns 400."},"html_body":{"type":"string","description":"HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses."},"text_body":{"type":"string","description":"Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom email headers. Write-only; not returned in responses."},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentRequest"}},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[tags]` when listing messages."},"group_id":{"type":"string","format":"uuid","nullable":true,"description":"Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling."},"ignore_suppression":{"type":"boolean","default":false,"description":"When true, allows delivery to recipients whose suppressions explicitly\npermit an override. Hard bounces, spam complaints, and invalid-address\nsuppressions cannot be overridden. Requires the `email:override` API scope.\n"},"metadata":{"type":"object","additionalProperties":true,"description":"Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated to Email Detail Records. Usable in `filter[metadata]` when listing messages."},"tracking_settings":{"$ref":"#/components/schemas/TrackingSettings"},"template_id":{"type":"string","format":"uuid"},"template_variables":{"type":"object","default":{},"additionalProperties":true,"description":"Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`, a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error (batch) naming the variable; no message is persisted for the failed item."},"scheduled_at":{"type":"string","format":"date-time","nullable":true,"description":"Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP 422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at` remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at` is omitted or null, `send_at` is used."},"send_at":{"type":"string","format":"date-time","deprecated":true,"description":"Deprecated alias for `scheduled_at`."},"inline_css":{"type":"boolean","default":false},"sandbox_mode":{"type":"boolean","default":false,"description":"Validates and accepts the message without injecting it into the MTA or outbound Kafka path. Nothing is delivered: sandbox records are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation signals.\n\nThe reserved sandbox test-recipient domain is `test.telnyx.com`. In sandbox mode, these addresses produce deterministic recipient-scoped lifecycle events:\n\n- `delivered@test.telnyx.com`: queued -> sending -> sent -> delivered\n- `hard-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (permanent)\n- `soft-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (transient)\n- `complaint@test.telnyx.com`: queued -> sending -> sent -> complained\n- `suppressed@test.telnyx.com`: queued -> suppressed\n- `invalid@test.telnyx.com`: queued -> sending -> failed (invalid recipient)\n- `dkim-fail@test.telnyx.com`: queued -> sending -> failed (DKIM unavailable)\n- `rate-limit@test.telnyx.com`: queued -> sending -> failed (rate limit exceeded)\n\nMatching is case-insensitive for both the local part and the domain and requires the exact domain `test.telnyx.com` — subdomains and other domains do not match. Mixed sandbox sends simulate only reserved test recipients; other recipients retain ordinary sandbox behavior (accepted, no delivery attempted). Hard-bounce and complaint outcomes also use the normal automatic-suppression pipeline. Non-sandbox sends to these addresses use the normal delivery path."},"in_reply_to_message_id":{"type":"string","format":"uuid","nullable":true,"description":"Telnyx message UUID of the message this send replies to. When provided,\nthe API sets RFC 5322 `In-Reply-To` and `References` headers on the\noutbound MIME so the recipient's mailbox (Gmail/Outlook) threads it\ncorrectly. The parent is looked up under the caller's account scope;\na UUID belonging to another account yields a non-enumerating 404.\n\nWire-only (Phase 1): the API sets the headers and does NOT resolve or\nmutate `thread_id` on the server side. Messages sent without this\nparameter are standalone (no threading headers injected).\n\nCannot be combined with `forward_of_message_id` (422)."},"reply_to_all":{"type":"boolean","default":false,"nullable":true,"description":"Indicates a reply-all intent. In Phase 1 (wire-only) this does not\nchange the threading headers — recipient selection is customer-\ncontrolled (`to`/`cc`), and a thread is not defined by its audience.\nWhen the referenced message has no thread context, reply-all\ndegrades to a plain reply (parent ID only in `References`). The\nresolution engine (separate work) will expand the ancestor chain\nat a later phase with no API change.\n\nOnly meaningful alongside `in_reply_to_message_id`."},"forward_of_message_id":{"type":"string","format":"uuid","nullable":true,"description":"Telnyx message UUID of the message this send forwards. Forwarded\nmessages start a NEW thread per RFC 5322 — NO `In-Reply-To` or\n`References` headers are set on the outbound MIME. The id is\nrecorded in the message's metadata for EDR provenance only.\n\nThe id is validated as a UUID but is NOT looked up against the\nmessage store — existence is the caller's responsibility (the\nforward is pure metadata; it does not affect delivery). Cannot be\ncombined with `in_reply_to_message_id` (422)."}},"required":["from","to"]},"CreateEmailTemplateRequest":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9 _-]+$","description":"Letters, numbers, spaces, hyphens, and underscores only."},"subject":{"type":"string","nullable":true,"description":"Liquid template subject."},"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":"Template variables. Auto-extracted from subject/body fields when absent.","items":{"type":"string"}},"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."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"microsoft_teams_sbc":{"type":"boolean","description":"When enabled, the connection will be created for Microsoft Teams Direct Routing. A *.mstsbc.telnyx.tech FQDN will be created for the connection automatically.","default":false},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"$ref":"#/components/schemas/WebhookEventUrl"},"webhook_event_failover_url":{"$ref":"#/components/schemas/WebhookEventFailoverUrl"},"webhook_api_version":{"$ref":"#/components/schemas/WebhookApiVersion"},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"webhook_timeout_secs":{"$ref":"#/components/schemas/WebhookTimeoutSecs"},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/InboundFqdn"},"outbound":{"$ref":"#/components/schemas/OutboundFqdn"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"string","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":10,"shaken_stir_enabled":true},"outbound":{"ani_override":"+1234567890","ani_override_type":"always","call_parking_enabled":true,"channel_limit":10,"generate_ringback_tone":true,"instant_ringback_enabled":true,"ip_authentication_method":"credential-authentication","ip_authentication_token":"aBcD1234","localization":"string","outbound_voice_profile_id":"1293384261075731499","t38_reinvite_source":"customer","tech_prefix":"0123","encrypted_media":"SRTP","timeout_1xx_secs":10,"timeout_2xx_secs":10},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}},"type":"object"},"CreateFqdnRequest":{"title":"Create Fqdn Request","type":"object","required":["fqdn","dns_record_type","connection_id"],"properties":{"connection_id":{"type":"string","description":"ID of the FQDN connection to which this IP should be attached."},"fqdn":{"type":"string","description":"FQDN represented by this resource.","example":"example.com"},"port":{"type":["integer","null"],"description":"Port to use when connecting to this FQDN.","default":5060,"example":5060},"dns_record_type":{"type":"string","description":"The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used.","example":"a"}},"example":{"connection_id":"1516447646313612565","fqdn":"example.com","port":8080,"dns_record_type":"a"}},"CreateGrantResponse":{"type":"object","properties":{"redirect_uri":{"type":"string","format":"uri","description":"Redirect URI with authorization code or error"}},"required":["redirect_uri"]},"CreateGroupMMSMessageRequest":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","description":"Phone number, in +E.164 format, used to send the message.","x-format":"address"},"to":{"description":"A list of destinations. No more than 8 destinations are allowed.","type":"array","items":{"$ref":"#/components/schemas/ToNumber"}},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string."},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true}},"example":{"from":"+13125551234","to":["+18655551234","+14155551234"],"text":"Hello, World!","subject":"From Telnyx!","media_urls":["http://example.com"],"webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true}},"CreateImportRequest":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"The CSV file (Plug.Upload). Missing/non-upload → 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 <code>ios</code> here","type":"string","enum":["ios"]},"certificate":{"description":"Certificate as received from APNs","type":"string","example":"-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----"},"private_key":{"description":"Corresponding private key to the certificate as received from APNs","type":"string","example":"-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----"},"alias":{"description":"Alias to uniquely identify the credential","type":"string","example":"LucyIosCredential"}}},"CreateIpConnectionRequest":{"title":"Create IP Connection Request","properties":{"active":{"type":"boolean","description":"Defaults to true","example":true},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"type":"string","example":"string"},"transport_protocol":{"type":"string","description":"One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.","default":"UDP","enum":["UDP","TCP","TLS"],"example":"UDP"},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.","example":true},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.","example":true},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.","example":false},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/CreateInboundIpRequest"},"outbound":{"$ref":"#/components/schemas/OutboundIp"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":false,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_routing_method":"sequential","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"test","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true},"outbound":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","tech_prefix":"string","ip_authentication_method":"token","ip_authentication_token":"string","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}},"type":"object"},"CreateIpRequest":{"title":"Create Ip Request","type":"object","required":["ip_address"],"properties":{"connection_id":{"type":"string","description":"ID of the IP Connection to which this IP should be attached."},"ip_address":{"type":"string","description":"IP adddress represented by this resource.","example":"192.168.0.0"},"port":{"type":"integer","description":"Port to use when connecting to this IP.","default":5060,"example":5060}},"example":{"connection_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","ip_address":"192.168.0.0","port":5060}},"CreateKvNamespaceRequest":{"type":"object","properties":{"name":{"type":"string","description":"Namespace name. May contain lowercase letters, numbers, and hyphens only.","pattern":"^[a-z0-9-]+$","minLength":1,"maxLength":255,"example":"my-cache"}},"required":["name"]},"CreateLongCodeMessageRequest":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","description":"Phone number, in +E.164 format, used to send the message.","x-format":"address"},"to":{"$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.\n\n**Required for MMS**","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true},"type":{"description":"The protocol for sending the message, either SMS or MMS.","type":"string","enum":["SMS","MMS"]},"auto_detect":{"description":"Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts.","type":"boolean","default":false},"encoding":{"type":"string","description":"Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting.","enum":["auto","gsm7","ucs2"],"default":"auto"}},"example":{"from":"+18445550001","to":"+13125550002","text":"Hello, World!","subject":"From Telnyx!","media_urls":["http://example.com"],"webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true,"type":"MMS"}},"CreateMCPServerRequest":{"type":"object","properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"url":{"type":"string","title":"Url"},"api_key_ref":{"type":["string","null"],"title":"Api Key Ref"},"allowed_tools":{"type":["array","null"],"items":{"type":"string"},"title":"Allowed Tools"}},"required":["name","type","url"],"title":"CreateMCPServerRequest"},"CreateManagedAccountRequest":{"title":"Create Managed Account Request","required":["business_name"],"properties":{"email":{"type":"string","description":"The email address for the managed account. If not provided, the email address will be generated based on the email address of the manager account.","example":"new_managed_account@customer.org"},"password":{"type":"string","description":"Password for the managed account. If a password is not supplied, the account will not be able to be signed into directly. (A password reset may still be performed later to enable sign-in via password.)","example":"3jVjLq!tMuWKyWx4NN*CvhnB"},"business_name":{"type":"string","description":"The name of the business for which the new managed account is being created, that will be used as the managed accounts's organization's name.","example":"Larry's Cat Food Inc"},"managed_account_allow_custom_pricing":{"type":"boolean","description":"Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. This value may be changed after creation, but there may be time lag between when the value is changed and pricing changes take effect.","example":false},"rollup_billing":{"type":"boolean","description":"Boolean value that indicates if the billing information and charges to the managed account \"roll up\" to the manager account. If true, the managed account will not have its own balance and will use the shared balance with the manager account. This value cannot be changed after account creation without going through Telnyx support as changes require manual updates to the account ledger. Defaults to false.","example":false}},"example":{"email":"larry_cat_food@customer.org","password":"3jVjLq!tMuWKyWx4NN*CvhnB","business_name":"Larry's Cat Food Inc","managed_account_allow_custom_pricing":false,"rollup_billing":false},"type":"object"},"CreateMeetingSessionArtifactRequest":{"title":"CreateMeetingSessionArtifactRequest","description":"One of two shapes: a named type on its own, or `custom` with the prompt it answers.","oneOf":[{"title":"Named artifact","type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["summary","action_items","decisions","topics","open_questions"],"description":"What to generate from the transcript. `custom` is answered from a `prompt` you supply; the five named types need none."}}},{"title":"Custom artifact","type":"object","additionalProperties":false,"required":["type","prompt"],"properties":{"type":{"type":"string","const":"custom","description":"Answered from the `prompt` below rather than a fixed question."},"prompt":{"type":"string","minLength":1,"maxLength":4000,"description":"An open-ended request answered from the transcript. Required when `type` is `custom`, and rejected with 400 on any named type. Trimmed before storage and echoed back in artifact responses and the `artifact.completed` webhook."}}}]},"CreateMeetingSessionRequest":{"title":"CreateMeetingSessionRequest","type":"object","additionalProperties":false,"description":"Request body for creating a new meeting session.\n\nCross-field rules:\n- Neither `avatar` nor `assistant` can be combined with `join_at`; both are available only for sessions that join immediately.\n- `assistant` cannot be combined with `barge_in: true`.\n- The `avatar` and `assistant` options take effect at session creation and cannot be modified later.\n- An effective Avatar or Assistant webpage output takes precedence over `camera_image`; the static image is ignored and a URL source is not fetched.","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."},"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."},"avatar":{"$ref":"#/components/schemas/MeetingSessionAvatarRequest"},"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 Bot","avatar":{"provider":"anam","avatar_id":"avatar_fake-001","api_key":"fake_avatar_api_key_do_not_use"}},{"meeting_url":"https://teams.microsoft.com/l/meetup-join/example","bot_name":"Voice Assistant","assistant":{"id":"asst_fake-uuid-1234","audio_gate":"half_duplex","dynamic_variables":{"candidate_name":"Ada Lovelace","role":"Staff Engineer"}}}]},"CreateMeetingSessionResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MeetingSessionCreated"}}},"CreateMessageRequest":{"type":"object","required":["to"],"properties":{"from":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).\n\n**Required if sending with a phone number, short code, or alphanumeric sender ID.**\n","x-format":"address"},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile.\n\n**Required if sending via number pool or with an alphanumeric sender ID.**\n"},"to":{"$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.\n\n**Required for MMS**","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true},"type":{"description":"The protocol for sending the message, either SMS or MMS.","type":"string","enum":["SMS","MMS"]},"auto_detect":{"description":"Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts.","type":"boolean","default":false},"send_at":{"description":"ISO 8601 formatted date indicating when to send the message - accurate up till a minute.","type":["string","null"],"format":"date-time"},"encoding":{"type":"string","description":"Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting.","enum":["auto","gsm7","ucs2"],"default":"auto"}},"example":{"from":"+18445550001","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","to":"+18445550001","text":"Hello, World!","subject":"From Telnyx!","media_urls":["http://example.com"],"webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true,"type":"MMS"}},"CreateMessageTemplateRequest":{"title":"CreateMessageTemplateRequest","description":"The request body when creating a message template.","required":["text"],"type":"object","properties":{"text":{"example":"Your {{app_name}} verification code is: {{code}}.","type":"string","description":"The text content of the message template."}}},"CreateMessagingHostedNumberOrderRequest":{"type":"object","example":{"messaging_profile_id":"dc8f39ac-953d-4520-b93b-786ae87db0da","phone_numbers":["+18665550001","+18665550002"]},"properties":{"phone_numbers":{"type":"array","items":{"type":"string","x-format":"+E.164"},"description":"Phone numbers to be used for hosted messaging."},"messaging_profile_id":{"type":"string","description":"Automatically associate the number with this messaging profile ID when the order is complete."}}},"CreateMessagingProfileRequest":{"type":"object","required":["name","whitelisted_destinations"],"properties":{"name":{"description":"A user friendly name for the messaging profile.","type":"string"},"whitelisted_destinations":{"description":"Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]` all destinations will be allowed.","type":"array","items":{"description":"ISO 3166-1 alpha-2 country code.","type":"string","pattern":"^[A-Z]{2}$"}},"enabled":{"description":"Specifies whether the messaging profile is enabled or not.","type":"boolean","default":true},"webhook_url":{"description":"The URL where webhooks related to this messaging profile will be sent.","type":["string","null"],"format":"url","default":""},"webhook_failover_url":{"description":"The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails.","type":["string","null"],"format":"url","default":""},"webhook_api_version":{"description":"Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.","type":"string","enum":["1","2","2010-04-01"],"default":"2"},"number_pool_settings":{"$ref":"#/components/schemas/NumberPoolSettings"},"url_shortener_settings":{"$ref":"#/components/schemas/UrlShortenerSettings"},"alpha_sender":{"description":"The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID.","type":["string","null"],"pattern":"^[A-Za-z0-9 ]{1,11}$"},"daily_spend_limit":{"description":"The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"daily_spend_limit_enabled":{"description":"Whether to enforce the value configured by `daily_spend_limit`.","type":"boolean"},"mms_fall_back_to_sms":{"description":"enables SMS fallback for MMS messages.","type":"boolean","default":false},"mms_transcoding":{"description":"enables automated resizing of MMS media.","type":"boolean","default":false},"mobile_only":{"description":"Send messages only to mobile phone numbers.","type":"boolean","default":false},"smart_encoding":{"description":"Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs.","type":"boolean","default":false},"resource_group_id":{"type":["string","null"],"maxLength":64,"description":"The resource group ID to associate with this messaging profile."},"health_webhook_url":{"type":["string","null"],"format":"url","description":"A URL to receive health check webhooks for numbers in this profile."},"ai_assistant_id":{"type":["string","null"],"maxLength":64,"description":"The AI assistant ID to associate with this messaging profile.","example":"ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000"}},"example":{"name":"My name","enabled":true,"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","webhook_api_version":"2","number_pool_settings":{"toll_free_weight":10,"long_code_weight":1,"skip_unhealthy":true,"sticky_sender":false,"geomatch":false},"url_shortener_settings":{"domain":"example.ex","prefix":"","replace_blacklist_only":true,"send_webhooks":false},"whitelisted_destinations":["US"]}},"CreateMissionRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"title":"Description","type":"string"},"model":{"title":"Model","type":"string"},"instructions":{"title":"Instructions","type":"string"},"execution_mode":{"$ref":"#/components/schemas/ExecutionMode","default":"external"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","required":["name"],"title":"CreateMissionRequest"},"CreateMissionRunRequest":{"properties":{"input":{"title":"Input","additionalProperties":true,"type":"object"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","title":"CreateMissionRunRequest"},"CreateMsgReq":{"properties":{"role":{"type":"string","title":"Role"},"content":{"type":"string","title":"Content","default":""},"name":{"type":"string","title":"Name"},"tool_choice":{"anyOf":[{"type":"string"},{"type":"object","title":"ToolChoiceObject"}],"title":"Tool Choice"},"tool_calls":{"items":{"type":"object","additionalProperties":true},"type":"array","title":"Tool Calls"},"tool_call_id":{"type":"string","title":"Tool Call Id"},"sent_at":{"type":"string","format":"date-time","title":"Sent At"},"metadata":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"},{"items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"array"}]},"title":"Metadata"}},"type":"object","required":["role"],"title":"CreateMsgReq"},"CreateMultiPartDocServiceDocumentRequest":{"type":"object","properties":{"file":{"description":"The file you are uploading.","type":"string","format":"binary"},"customer_reference":{"type":"string","description":"Optional reference string for customer tracking.","example":"MY REF 001"}}},"CreateNumberBlockOrderRequest":{"required":["starting_number","range"],"properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"record_type":{"type":"string","example":"number_block_order","readOnly":true},"starting_number":{"type":"string","description":"Starting phone number block","example":"+19705555000","writeOnly":true},"range":{"type":"integer","description":"The phone number range included in the block.","example":10,"writeOnly":true},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":10,"readOnly":true},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated with this phone number."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true},"errors":{"type":"string","description":"Errors the reservation could happen upon","example":"Number is already on hold","readOnly":true}},"example":{"starting_number":"+19705555000","range":10},"type":"object"},"CreateNumberOrderRequest":{"properties":{"phone_numbers":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"e164_phone_number","example":"+19705555098"},"requirement_group_id":{"type":"string","description":"ID of requirement group to use to satisfy number requirements","example":"dbbd94ee-9079-488f-80ba-f566b247fd7"},"bundle_id":{"type":"string","description":"ID of bundle to associate the number to","example":"bc8e4d67-33a0-4cbb-af74-7b58f05bd494"}},"required":["phone_number"]},"writeOnly":true},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated with this phone number."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"billing_group_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the billing group associated with the phone number."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"}},"example":{"phone_numbers":[{"phone_number":"+19705555098","bundle_id":"bc8e4d67-33a0-4cbb-af74-7b58f05bd494"},{"phone_number":"+492111609539","requirement_group_id":"dbbd94ee-9079-488f-80ba-f566b247fd79"}],"connection_id":"346789098765567","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600","billing_group_id":"abc85f64-5717-4562-b3fc-2c9600","customer_reference":"MY REF 001"},"type":"object"},"CreateNumberPoolMessageRequest":{"type":"object","required":["to","messaging_profile_id"],"properties":{"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"to":{"$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.\n\n**Required for MMS**","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true},"type":{"description":"The protocol for sending the message, either SMS or MMS.","type":"string","enum":["SMS","MMS"]},"auto_detect":{"description":"Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts.","type":"boolean","default":false},"encoding":{"type":"string","description":"Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting.","enum":["auto","gsm7","ucs2"],"default":"auto"}},"example":{"messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","to":"+13125550002","text":"Hello, World!","subject":"From Telnyx!","media_urls":["http://example.com"],"webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true,"type":"MMS"}},"CreateNumberReservationRequest":{"properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"record_type":{"type":"string","example":"number_reservation","readOnly":true},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/ReservedPhoneNumber"}},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the entire reservation.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the numbers reservation was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number reservation was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true}},"example":{"id":"12ade33a-21c0-473b-b055-b3c836e1c292","record_type":"number_reservation","phone_numbers":[{"id":"12ade33a-21c0-473b-b055-b3c836e1c292","record_type":"reserved_phone_number","phone_number":"+19705555098","status":"pending","created_at":"2018-01-01T00:00:00.000000Z","updated_at":"2018-01-01T00:00:00.000000Z","expired_at":"2018-01-01T00:00:00.000000Z","errors":"Number is already on hold"}],"status":"pending","customer_reference":"MY REF 001","created_at":"2018-01-01T00:00:00.000000Z","updated_at":"2018-01-01T00:00:00.000000Z"},"type":"object"},"CreateOAuthGrantRequest":{"type":"object","properties":{"allowed":{"type":"boolean","description":"Whether the grant is allowed"},"consent_token":{"type":"string","description":"Consent token"}},"required":["allowed","consent_token"],"additionalProperties":false},"CreateOutboundVoiceProfileRequest":{"type":"object","title":"Outbound Voice Profile","required":["name"],"example":{"name":"office","traffic_type":"conversational","service_plan":"global","concurrent_call_limit":10,"enabled":true,"tags":["office-profile"],"usage_payment_method":"rate-deck","whitelisted_destinations":["US","BR","AU"],"max_destination_rate":10,"daily_spend_limit":"100.00","daily_spend_limit_enabled":true,"billing_group_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","calling_window":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5}},"properties":{"name":{"type":"string","description":"A user-supplied name to help with organization.","example":"office","minLength":3},"traffic_type":{"$ref":"#/components/schemas/TrafficType"},"service_plan":{"$ref":"#/components/schemas/ServicePlan"},"concurrent_call_limit":{"type":["integer","null"],"description":"Must be no more than your global concurrent call limit. Null means no limit.","example":10},"enabled":{"type":"boolean","description":"Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections.","example":true,"default":true},"tags":{"type":"array","items":{"type":"string"},"example":["office-profile"]},"usage_payment_method":{"$ref":"#/components/schemas/UsagePaymentMethod"},"whitelisted_destinations":{"type":"array","items":{"type":"string"},"description":"The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.","example":["US","BR","AU"],"default":["US","CA"]},"max_destination_rate":{"type":"number","description":"Maximum rate (price per minute) for a Destination to be allowed when making outbound calls."},"daily_spend_limit":{"type":"string","description":"The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls.","example":"100.00"},"daily_spend_limit_enabled":{"type":"boolean","description":"Specifies whether to enforce the daily_spend_limit on this outbound voice profile.","example":true,"default":false},"call_recording":{"$ref":"#/components/schemas/OutboundCallRecording"},"billing_group_id":{"type":["string","null"],"format":"uuid","description":"The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","default":null},"calling_window":{"type":"object","description":"Specifies the time window and call limits for calls made using this outbound voice profile. Note that all times are UTC in 24-hour clock time.","example":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5},"properties":{"start_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.","example":"08:00:00.00Z","format":"time"},"end_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.","example":"20:00:00.00Z","format":"time"},"calls_per_cld":{"type":"integer","description":"The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit.","example":5,"minimum":0}}}}},"CreatePlanRequest":{"properties":{"steps":{"items":{"$ref":"#/components/schemas/CreatePlanStepRequest"},"type":"array","title":"Steps"}},"type":"object","required":["steps"],"title":"CreatePlanRequest"},"CreatePlanStepRequest":{"properties":{"step_id":{"type":"string","title":"Step Id"},"description":{"type":"string","title":"Description"},"sequence":{"type":"integer","title":"Sequence"},"parent_step_id":{"title":"Parent Step Id","type":"string"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","required":["step_id","description","sequence"],"title":"CreatePlanStepRequest"},"CreatePortingOrder":{"type":"object","title":"CreatePortingOrder","required":["phone_numbers"],"properties":{"phone_numbers":{"type":"array","items":{"type":"string"},"description":"The list of +E.164 formatted phone numbers","example":["+13035550000","+13035550001","+13035550002"]},"customer_reference":{"type":["string","null"],"description":"A customer-specified reference number for customer bookkeeping purposes","example":"Acct 123abc"},"customer_group_reference":{"type":"string","description":"A customer-specified group reference for customer bookkeeping purposes","example":"Group-456"}}},"CreatePortingOrderComment":{"type":"object","properties":{"body":{"type":"string","example":"Please, let me know when the port completes"}}},"CreatePronunciationDictRequest":{"type":"object","description":"Request body for creating a pronunciation dictionary.","required":["name","items"],"properties":{"name":{"type":"string","description":"Human-readable name. Must be unique within the organization.","minLength":1,"maxLength":255,"example":"Brand Names"},"items":{"type":"array","description":"List of pronunciation items (alias or phoneme type). At least one item is required.","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/PronunciationDictItem"}}}},"CreateQueueRequest":{"type":"object","title":"Create Queue Request","required":["queue_name"],"properties":{"queue_name":{"description":"The name of the queue. Must be between 1 and 255 characters.","type":"string","minLength":1,"maxLength":255,"example":"tier_1_support"},"max_size":{"description":"The maximum number of calls allowed in the queue.","type":"integer","minimum":1,"default":300,"example":100}},"example":{"queue_name":"tier_1_support","max_size":100}},"CreateRequirementVersionRequest":{"type":"object","required":["effective_start_at","requirement_type_ids"],"properties":{"effective_start_at":{"description":"ISO 8601 formatted date-time indicating when the new version should become active. Must be a future date-time.","type":"string","format":"date-time","example":"2026-08-01T00:00:00.000Z"},"requirement_type_ids":{"description":"List of requirement type UUIDs that apply to the new version. Replaces the existing requirement types for the new version.","type":"array","items":{"type":"string","format":"uuid"},"example":["a38c217a-8019-48f8-bff6-0fdd9939075b"]}}},"CreateRoomClientTokenRequest":{"type":"object","properties":{"token_ttl_secs":{"description":"The time to live in seconds of the Client Token, after that time the Client Token is invalid and can't be used to join a Room.","type":"integer","example":600,"default":600,"minimum":10,"maximum":3600},"refresh_token_ttl_secs":{"description":"The time to live in seconds of the Refresh Token, after that time the Refresh Token is invalid and can't be used to refresh Client Token.","type":"integer","example":3600,"default":3600,"minimum":60,"maximum":86400}}},"CreateRoomCompositionRequest":{"type":"object","properties":{"format":{"description":"The desired format of the room composition.","type":"string","example":"mp4","default":"mp4"},"resolution":{"description":"The desired resolution (width/height in pixels) of the resulting video of the room composition. Both width and height are required to be between 16 and 1280; and width * height should not exceed 1280 * 720","type":"string","example":"800x600","default":"1280x720"},"session_id":{"description":"id of the room session associated with the room composition.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"video_layout":{"description":"Describes the video layout of the room composition in terms of regions.","type":"object","additionalProperties":{"$ref":"#/components/schemas/VideoRegion"}},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":"string","format":"uri","description":"The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":"integer","minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null}}},"CreateRoomRequest":{"type":"object","properties":{"unique_name":{"description":"The unique (within the Telnyx account scope) name of the room.","type":"string","example":"My room"},"max_participants":{"description":"The maximum amount of participants allowed in a room. If new participants try to join after that limit is reached, their request will be rejected.","type":"integer","example":10,"default":10,"minimum":2,"maximum":50},"enable_recording":{"description":"Enable or disable recording for that room.","type":"boolean","example":true,"default":false},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":"string","format":"uri","description":"The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":"integer","minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null}}},"CreateScheduledEventRequest":{"properties":{"telnyx_conversation_channel":{"$ref":"#/components/schemas/ConversationChannelType"},"telnyx_end_user_target":{"type":"string","description":"The phone number, SIP URI, to schedule the call or text to.","title":"Telnyx End User Target"},"telnyx_agent_target":{"type":"string","description":"The phone number, SIP URI, to schedule the call or text from.","title":"Telnyx Agent Target"},"scheduled_at_fixed_datetime":{"type":"string","format":"date-time","description":"The datetime at which the event should be scheduled. Formatted as ISO 8601.","example":"2025-04-15T13:07:28.764Z","title":"Scheduled At Fixed Datetime"},"text":{"type":"string","description":"Required for sms scheduled events. The text to be sent to the end user."},"conversation_metadata":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"object","description":"Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own.","title":"Conversation Metadata"},"dynamic_variables":{"additionalProperties":{"type":"string"},"type":"object","description":"A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax.","title":"Dynamic Variables"},"max_retries_client_errors":{"type":"integer","maximum":10,"minimum":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,"minimum":60},"call_settings":{"$ref":"#/components/schemas/ScheduledCallSettings"}},"type":"object","required":["telnyx_conversation_channel","telnyx_end_user_target","telnyx_agent_target","scheduled_at_fixed_datetime"],"title":"CreateScheduledEventRequest"},"CreateScheduledMessageRequest":{"type":"object","required":["to"],"properties":{"from":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).\n\n**Required if sending with a phone number, short code, or alphanumeric sender ID.**\n","x-format":"address"},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile.\n\n**Required if sending via number pool or with an alphanumeric sender ID.**\n"},"to":{"$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.\n\n**Required for MMS**","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true},"type":{"description":"The protocol for sending the message, either SMS or MMS.","type":"string","enum":["SMS","MMS"]},"auto_detect":{"description":"Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts.","type":"boolean","default":false},"send_at":{"description":"ISO 8601 formatted date indicating when to send the message - accurate up till a minute.","type":"string","format":"date-time"}},"example":{"from":"+18445550001","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","to":"+18445550001","text":"Hello, World!","subject":"From Telnyx!","webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true,"type":"SMS","send_at":"2019-01-23T18:30:00Z"}},"CreateSharedToolRequest":{"properties":{"type":{"type":"string","title":"Type"},"display_name":{"type":"string","title":"Display Name"},"function":{"title":"Function","additionalProperties":true,"type":"object"},"retrieval":{"title":"Retrieval","additionalProperties":true,"type":"object"},"handoff":{"title":"Handoff","additionalProperties":true,"type":"object"},"invite":{"title":"Invite","additionalProperties":true,"type":"object"},"webhook":{"title":"Webhook","additionalProperties":true,"type":"object"},"pay":{"$ref":"#/components/schemas/PayToolParams","title":"Pay"},"client_side_tool":{"title":"Client Side Tool","additionalProperties":true,"type":"object"},"update_dynamic_variables":{"$ref":"#/components/schemas/UpdateDynamicVariablesToolParams","title":"Update Dynamic Variables"},"timeout_ms":{"type":"integer","title":"Timeout Ms","default":5000}},"additionalProperties":true,"type":"object","required":["type","display_name"],"title":"CreateSharedToolRequest","description":"Request model for creating a shared (org-level) tool."},"CreateShortCodeMessageRequest":{"type":"object","required":["from","to"],"properties":{"from":{"type":"string","description":"Phone number, in +E.164 format, used to send the message.","x-format":"address"},"to":{"$ref":"#/components/schemas/ToNumber"},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"subject":{"type":"string","description":"Subject of multimedia message"},"media_urls":{"description":"A list of media URLs. The total media size must be less than 1 MB.\n\n**Required for MMS**","type":"array","items":{"type":"string","format":"url"}},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails.","type":"string","format":"url"},"use_profile_webhooks":{"type":"boolean","description":"If the profile this number is associated with has webhooks, use them for delivery notifications. If webhooks are also specified on the message itself, they will be attempted first, then those on the profile.","default":true},"type":{"description":"The protocol for sending the message, either SMS or MMS.","type":"string","enum":["SMS","MMS"]},"auto_detect":{"description":"Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts.","type":"boolean","default":false},"encoding":{"type":"string","description":"Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded). `ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding` setting.","enum":["auto","gsm7","ucs2"],"default":"auto"}},"example":{"from":"+18445550001","to":"+18445550001","text":"Hello, World!","subject":"From Telnyx!","media_urls":["http://example.com"],"webhook_url":"http://example.com/webhooks","webhook_failover_url":"https://backup.example.com/hooks","use_profile_webhooks":true,"type":"MMS"}},"CreateSpendLimitRequest":{"description":"Send exactly one of `amount` and `unlimited: true`.","oneOf":[{"$ref":"#/components/schemas/CreateSpendLimitWithAmount"},{"$ref":"#/components/schemas/CreateSpendLimitUnlimited"}]},"CreateSpendLimitUnlimited":{"title":"Unlimited","description":"Explicitly no cap.","type":"object","additionalProperties":false,"properties":{"product":{"type":"string","description":"Product to limit, as returned in `product` by the list operation.","example":"inference"},"period":{"$ref":"#/components/schemas/SpendLimitPeriod"},"unlimited":{"type":"boolean","enum":[true],"description":"`true`: explicitly no cap.","example":true},"reason":{"type":"string","maxLength":500,"description":"Why the limit is set or changed, kept for audit.","example":"Team budget"}},"required":["product","unlimited"]},"CreateSpendLimitWithAmount":{"title":"Amount","description":"A limit in USD.","type":"object","additionalProperties":false,"properties":{"product":{"type":"string","description":"Product to limit, as returned in `product` by the list operation.","example":"inference"},"period":{"$ref":"#/components/schemas/SpendLimitPeriod"},"amount":{"type":"number","minimum":0,"description":"Limit in USD. `0` blocks at the first cent of spend.","example":100},"unlimited":{"type":"boolean","enum":[false],"description":"Optional; only `false` is allowed together with `amount`.","example":false},"reason":{"type":"string","maxLength":500,"description":"Why the limit is set or changed, kept for audit.","example":"Team budget"}},"required":["product","amount"]},"CreateSqlDatabaseRequest":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Lowercase letters, numbers, and hyphens only; must start and end with a letter or number.","pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","minLength":1,"maxLength":255,"example":"my-database"}},"required":["name"]},"CreateSubNumberOrdersReportRequest":{"type":"object","properties":{"status":{"type":"string","description":"Filter by order status","enum":["pending","success","failure"],"example":"success"},"country_code":{"type":"string","description":"Filter by country code","example":"US"},"created_at_gt":{"type":"string","format":"date-time","description":"Filter for orders created after this date","example":"2023-04-05T10:22:08.230549Z"},"created_at_lt":{"type":"string","format":"date-time","description":"Filter for orders created before this date","example":"2025-06-05T10:22:08.230549Z"},"order_request_id":{"type":"string","format":"uuid","description":"Filter by specific order request ID","example":"12ade33a-21c0-473b-b055-b3c836e1c293"},"customer_reference":{"type":"string","description":"Filter by customer reference","example":"STRING"}},"example":{"status":"success","country_code":"US","created_at_gt":"2023-04-05T10:22:08.230549Z","created_at_lt":"2025-06-05T10:22:08.230549Z","order_request_id":"12ade33a-21c0-473b-b055-b3c836e1c293","customer_reference":"STRING"}},"CreateTeXMLSecretRequest":{"type":"object","title":"Create TeXML Secret request","required":["name","value"],"example":{"name":"My Secret Name","value":"My Secret Value"},"properties":{"name":{"type":"string","description":"Name used as a reference for the secret, if the name already exists within the account its value will be replaced","example":"My Secret Name"},"value":{"type":"string","description":"Secret value which will be used when rendering the TeXML template","example":"My Secret Value"}}},"CreateTeXMLSecretResult":{"type":"object","title":"Create TeXML Secret result","example":{"name":"My Secret Name","value":"REDACTED"},"properties":{"name":{"type":"string","example":"My Secret Name"},"value":{"type":"string","enum":["REDACTED"],"example":"REDACTED"}}},"CreateTexmlApplicationRequest":{"type":"object","title":"Create Texml Application Request","required":["friendly_name","voice_url"],"properties":{"friendly_name":{"$ref":"#/components/schemas/ApplicationName"},"active":{"$ref":"#/components/schemas/ConnectionActive"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"first_command_timeout":{"$ref":"#/components/schemas/FirstCommandTimeout"},"first_command_timeout_secs":{"$ref":"#/components/schemas/FirstCommandTimeoutSecs"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the Texml Application.","example":["tag1","tag2"]},"voice_url":{"type":"string","description":"URL to which Telnyx will deliver your XML Translator webhooks.","format":"uri","example":"https://example.com"},"voice_fallback_url":{"type":"string","description":"URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your voice_url.","default":null,"format":"uri","example":"https://fallback.example.com"},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this TeXML Application.","default":false},"voice_method":{"type":"string","description":"HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or 'post'.","enum":["get","post"],"default":"post","example":"get"},"status_callback":{"type":"string","description":"URL for Telnyx to send requests to containing information about call progress events.","default":null,"format":"uri","example":"https://example.com"},"status_callback_method":{"type":"string","description":"HTTP request method Telnyx should use when requesting the status_callback URL.","enum":["get","post"],"default":"post","example":"get"},"inbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection.","default":null,"example":10},"shaken_stir_enabled":{"type":"boolean","description":"When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.","default":false,"example":false},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls.","default":null,"example":"example"},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"default":"from_anyone","example":"only_my_connections"}}},"outbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of outbound calls to phone numbers associated with this connection.","default":null,"example":10},"outbound_voice_profile_id":{"$ref":"#/components/schemas/OutboundVoiceProfileId"}}}},"example":{"friendly_name":"call-router","active":false,"anchorsite_override":"Amsterdam, Netherlands","dtmf_type":"Inband","first_command_timeout":true,"first_command_timeout_secs":10,"voice_url":"https://example.com","voice_fallback_url":"https://fallback.example.com","call_cost_in_webhooks":false,"voice_method":"get","status_callback":"https://example.com","status_callback_method":"get","tags":["tag1","tag2"],"inbound":{"channel_limit":10,"shaken_stir_enabled":true,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"}}},"CreateUacConnectionRequest":{"type":"object","title":"Create UAC Connection Request","required":["connection_name"],"properties":{"active":{"type":"boolean","description":"Defaults to true"},"user_name":{"type":"string","description":"The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).","example":"myusername123"},"password":{"type":"string","description":"The password to be used as part of the credentials. Must be 8 to 128 characters long.","example":"my123secure456password789"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"$ref":"#/components/schemas/ConnectionName"},"sip_uri_calling_preference":{"type":"string","description":"This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":false,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true.","enum":["1","2","texml"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/UacInboundRequest"},"outbound":{"$ref":"#/components/schemas/UacOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"},"internal_uac_settings":{"$ref":"#/components/schemas/UacInternalSettings"},"external_uac_settings":{"$ref":"#/components/schemas/UacExternalSettings"}},"example":{"active":true,"password":"my123secure456password789","user_name":"myusername123","anchorsite_override":"Latency","connection_name":"my name","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":false,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true,"simultaneous_ringing":"disabled"},"outbound":{"call_parking_enabled":true,"ani_override":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"US","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200},"internal_uac_settings":{"destination_uri":"14155550123@acme.sip.telnyx.com"},"external_uac_settings":{"username":"ext8492","password":"testtesttest","proxy":"sip-pbx.acme.example","auth_username":"auth8492","from_user":"8492","outbound_proxy":"outbound.sip-pbx.acme.example:5061","expiration_sec":600,"transport":"TLS","user_agent":"Telnyx-Usage-Voice-Trunk/1.0"}},"description":"A UAC (User Agent Client) Connection registers Telnyx to your PBX — 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 <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/CredentialInbound"},"outbound":{"$ref":"#/components/schemas/CredentialOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"credential_connection","active":true,"user_name":"myusername123","password":"my123secure456password789","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","anchorsite_override":"Latency","connection_name":"string","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","call_cost_in_webhooks":false,"webhook_timeout_secs":25,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtp+1","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":15,"shaken_stir_enabled":true,"simultaneous_ringing":"enabled"},"outbound":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}}},"CredentialInbound":{"type":"object","title":"Credential Inbound","example":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_routing_method":"sequential","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true,"simultaneous_ringing":"enabled"},"properties":{"ani_number_format":{"type":"string","enum":["+E.164","E.164","+E.164-national","E.164-national"],"default":"E.164-national","description":"This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls."},"dnis_number_format":{"type":"string","enum":["+e164","e164","national","sip_username"],"default":"e164"},"codecs":{"type":"array","items":{"type":"string"},"description":"Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.","default":["G722","G711U","G711A","G729","OPUS","H.264"]},"default_routing_method":{"type":"string","enum":["sequential","round-robin"],"description":"Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed."},"channel_limit":{"type":"integer","default":null,"description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection."},"generate_ringback_tone":{"type":"boolean","default":false,"description":"Generate ringback tone through 183 session progress message with early media."},"isup_headers_enabled":{"type":"boolean","default":false,"description":"When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)"},"prack_enabled":{"type":"boolean","description":"Enable PRACK messages as defined in RFC3262.","default":false},"sip_compact_headers_enabled":{"type":"boolean","description":"Defaults to true.","default":true},"timeout_1xx_secs":{"type":"integer","description":"Time(sec) before aborting if connection is not made.","minimum":1,"maximum":120,"default":3},"timeout_2xx_secs":{"type":"integer","description":"Time(sec) before aborting if call is unanswered (min: 1, max: 600).","minimum":1,"maximum":600,"default":90},"shaken_stir_enabled":{"type":"boolean","description":"When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.","default":false},"simultaneous_ringing":{"type":"string","description":"When enabled, allows multiple devices to ring simultaneously on incoming calls.","default":"disabled","enum":["disabled","enabled"]}}},"CredentialOutbound":{"type":"object","title":"Credential Outbound","example":{"call_parking_enabled":true,"ani_override":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"US","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"properties":{"call_parking_enabled":{"type":["boolean","null"],"default":false,"description":"Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next."},"ani_override":{"type":"string","description":"Set a phone number as the ani_override value to override caller id number on outbound calls.","default":""},"ani_override_type":{"type":"string","enum":["always","normal","emergency"],"description":"Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.","default":"always"},"channel_limit":{"type":"integer","default":null,"description":"When set, this will limit the total number of outbound calls to phone numbers associated with this connection."},"instant_ringback_enabled":{"type":"boolean","default":true,"description":"When set, ringback will not wait for indication before sending ringback tone to calling party."},"generate_ringback_tone":{"type":"boolean","default":false,"description":"Generate ringback tone through 183 session progress message with early media."},"localization":{"type":"string","default":"US","description":"A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.","example":"US"},"t38_reinvite_source":{"type":"string","enum":["telnyx","customer","disabled","passthru","caller-passthru","callee-passthru"],"description":"This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.<br/><br/> 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":0.00003529133987660637,"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":0.00003529133987660637,"2":0.0015006266723396524,"3":0.9981292470777234},"confidence":0.9894200002646713}},"DecisionModelScoreQuestion":{"type":"object","description":"Rate the state against an ordered rubric.","properties":{"type":{"type":"string","description":"Question type.","enum":["score"]},"instructions":{"$ref":"#/components/schemas/DecisionModelContent","description":"Required instructions describing what to decide about the shared state."},"criteria":{"type":"array","description":"Between 2 and 64 description strings in ascending score order. Indices start at zero.","minItems":2,"maxItems":64,"items":{"type":"string"}}},"required":["type","instructions","criteria"],"additionalProperties":false,"example":{"type":"score","instructions":"Rate operational urgency.","criteria":["Low","Normal","High","Critical"]}},"DecisionModelUsage":{"type":"object","description":"Token usage for the completed evaluation.","properties":{"input_tokens":{"type":"integer","minimum":0,"description":"Input tokens processed, including shared-context preparation and question evaluation. This can exceed the token count of the unique input text."},"output_tokens":{"type":"integer","minimum":0,"description":"Output tokens used for the evaluation, including shared-context preparation."}},"required":["input_tokens","output_tokens"],"additionalProperties":false},"DeepgramNova2Config":{"type":"object","title":"DeepgramNova2Config","properties":{"transcription_engine":{"type":"string","enum":["Deepgram"]},"transcription_model":{"type":"string","enum":["deepgram/nova-2"]},"interim_results":{"type":"boolean","default":false,"example":true,"description":"Whether to send also interim results. If set to false, only final results will be sent."},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms."},"language":{"$ref":"#/components/schemas/DeepgramNova2TranscriptionLanguage"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation."},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence."},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1}},"hints":{"type":"array","description":"Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Nova-2-only; use `keyterms` on Nova-3.","items":{"type":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"]}},"additionalProperties":false,"required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-2","language":"en","smart_format":false,"hints":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}}},"DeepgramNova2TranscriptionLanguage":{"title":"Deepgram nova-2 transcription engine list of languages","type":"string","description":"Language to use for speech recognition with nova-2 model","example":"en","default":"en","enum":["bg","ca","zh","zh-CN","zh-Hans","zh-TW","zh-Hant","zh-HK","cs","da","da-DK","nl","en","en-US","en-AU","en-GB","en-NZ","en-IN","et","fi","nl-BE","fr","fr-CA","de","de-CH","el","hi","hu","id","it","ja","ko","ko-KR","lv","lt","ms","no","pl","pt","pt-BR","pt-PT","ro","ru","sk","es","es-419","sv","sv-SE","th","th-TH","tr","uk","vi","auto_detect"]},"DeepgramNova3Config":{"type":"object","title":"DeepgramNova3Config","properties":{"transcription_engine":{"type":"string","enum":["Deepgram"]},"transcription_model":{"type":"string","enum":["deepgram/nova-3"]},"interim_results":{"type":"boolean","default":false,"example":true,"description":"Whether to send also interim results. If set to false, only final results will be sent."},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms."},"language":{"$ref":"#/components/schemas/DeepgramNova3TranscriptionLanguage"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation."},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence."},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1}},"keyterms":{"type":"array","description":"Nova-3 keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Nova-3-only; use `hints` on Nova-2.","items":{"type":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"]}},"additionalProperties":false,"required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-3","language":"en","smart_format":false,"keyterms":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}}},"DeepgramNova3TranscriptionLanguage":{"title":"Deepgram nova-3 transcription engine list of languages","type":"string","description":"Language to use for speech recognition with nova-3 model","example":"en","default":"en","enum":["en","en-US","en-AU","en-GB","en-IN","en-NZ","de","nl","sv","sv-SE","da","da-DK","es","es-419","fr","fr-CA","pt","pt-BR","pt-PT","auto_detect"]},"DefaultCondition":{"properties":{"type":{"type":"string","const":"default","title":"Type"}},"type":"object","required":["type"],"title":"DefaultCondition","description":"Fallback edge condition: fires only when no other edge's condition is true.\n\nEvaluated after every conditioned (`llm` / `expression`) edge regardless\nof declaration order, so it routes the flow whenever none of the node's\nother outgoing edges match. Valid **only** on edges leaving a `tool` or\n`speak` node, where the deterministic step auto-advances and must always\nhave somewhere to go. A tool/speak node with any outgoing edge is required\nto carry exactly one `default` edge so it never dead-ends; a tool/speak\nnode with no outgoing edges is a valid terminal step. Carries no parameters.","example":{"type":"default"}},"DefaultGateway":{"allOf":[{"$ref":"#/components/schemas/Record"},{"type":"object","title":"DefaultGateway","properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"default_gateway"},"network_id":{"type":"string","format":"uuid","description":"Network ID.","readOnly":true,"example":"e66c496d-4a85-423b-8b2a-8e63fac20320"},"wireguard_peer_id":{"type":"string","format":"uuid","description":"Wireguard peer ID.","example":"e66c496d-4a85-423b-8b2a-8e63fac20320"},"status":{"$ref":"#/components/schemas/InterfaceStatus"}}}]},"DelegationSettings":{"type":"object","title":"DelegationSettings","description":"Splits the conversation between a frontend model that talks to the caller and a backend model that does the work. On the GPT-Live route the frontend model cannot call tools at all — 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"}},"DialogflowConfig":{"type":"object","title":"Dialogflow Config","properties":{"analyze_sentiment":{"description":"Enable sentiment analysis from Dialogflow.","type":"boolean","example":true,"default":false},"partial_automated_agent_reply":{"description":"Enable partial automated agent reply from Dialogflow.","type":"boolean","example":true,"default":false}}},"DialogflowConnection":{"type":"object","title":"Dialogflow Connection Params","required":["service_account"],"properties":{"service_account":{"description":"The JSON map to connect your Dialoglow account.","type":"object","additionalProperties":true},"dialogflow_api":{"description":"Determine which Dialogflow will be used.","type":"string","enum":["cx","es"],"example":"cx","default":"es"},"conversation_profile_id":{"description":"The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required)","type":"string","example":"a-VMHLWzTmKjiJw5S6O0-w"},"location":{"description":"The region of your agent is. (If you use Dialogflow CX, this param is required)","type":"string","example":"global"},"environment":{"description":"Which Dialogflow environment will be used.","type":"string","example":"development"}},"example":{"service_account":{"type":"service_account","project_id":"your-project-id","private_key_id":"your-private-key","private_key":"-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----","client_email":"example@example.com","client_id":"your-client-id","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/example%40example.iam.gserviceaccount.com"},"dialogflow_api":"cx","conversation_profile_id":"a-VMHLWzTmKjiJw5S6O0-w","location":"global","environment":"development"}},"DialogflowConnectionResponse":{"type":"object","title":"Dialogflow Connection Response","required":["data"],"properties":{"data":{"type":"object","title":"Dialogflow Connection","properties":{"record_type":{"type":"string","example":"dialogflow_connections"},"connection_id":{"type":"string","example":"1234541231","description":"Uniquely identifies a Telnyx application (Call Control)."},"conversation_profile_id":{"type":"string","description":"The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required)","example":"a-VMHLWzTmKjiJw5S6O0-w"},"environment":{"type":"string","description":"Which Dialogflow environment will be used.","example":"development"},"service_account":{"type":"string","description":"The JSON map to connect your Dialoglow account.","example":"****"}}}}},"Dir":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"16635d38-75a6-4481-82e8-69af60e05011","readOnly":true},"enterprise_id":{"type":"string","format":"uuid","example":"4a6192a4-573d-446d-b3ce-aff9117272a6"},"display_name":{"type":"string","example":"Acme Plumbing"},"reselling":{"type":"boolean","example":false},"certify_brand_is_accurate":{"type":"boolean","example":true},"certify_no_shaft_content":{"type":"boolean","example":true},"certify_ip_ownership":{"type":"boolean","example":true},"authorizer_name":{"type":"string","nullable":true,"example":"Sam Owner"},"authorizer_email":{"type":"string","format":"email","nullable":true,"example":"sam@acmeplumbing.example.com"},"logo_url":{"type":"string","format":"uri","nullable":true,"example":"https://acmeplumbing.example.com/logo-256.bmp"},"call_reasons":{"type":"array","items":{"$ref":"#/components/schemas/CallReason"}},"documents":{"type":"array","items":{"$ref":"#/components/schemas/Document"},"nullable":true},"status":{"$ref":"#/components/schemas/DirStatus"},"rejection_reasons":{"type":"array","items":{"$ref":"#/components/schemas/RejectionReason"},"nullable":true,"description":"Populated when `status` is `rejected`; cleared on `/submit` or successful approval."},"rejected_at":{"type":"string","format":"date-time","nullable":true,"readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2026-04-26T18:06:51.940749Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","example":"2026-04-26T18:09:24.785211Z","readOnly":true},"submitted_at":{"type":"string","format":"date-time","nullable":true,"example":"2026-04-26T18:07:03.716411Z","readOnly":true},"verified_at":{"type":"string","format":"date-time","nullable":true,"example":"2026-04-26T18:07:29.537926Z","readOnly":true},"expiring_at":{"type":"string","format":"date-time","nullable":true,"example":"2027-04-26T18:07:29.537981Z","readOnly":true},"delete_requested_at":{"type":"string","format":"date-time","nullable":true,"description":"When deletion was requested. Set once the DIR enters `delete_requested`; `null` otherwise.","example":"2026-04-27T09:12:44.201820Z","readOnly":true},"webhook_url":{"type":"string","format":"uri","nullable":true,"description":"`https://` URL that receives webhook notifications for this DIR's compliance-review outcomes. `null` when not subscribed.","example":"https://acmehealthcare.example.com/webhooks/branded-calling"}}},"DirComment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"30bbd13c-1f3a-47c0-8fa6-718835917b2f","readOnly":true},"entity_type":{"type":"string","enum":["dir"],"description":"Resource the comment is attached to. Always `dir` on this endpoint.","example":"dir","readOnly":true},"content":{"type":"string","example":"Please re-upload a clearer scan of the certificate."},"visibility":{"type":"string","enum":["customer"],"description":"Always `customer` on this endpoint - internal-only comments are filtered out.","example":"customer","readOnly":true},"author_role":{"type":"string","enum":["customer","admin"],"description":"Who wrote the comment. `admin` covers the Telnyx vetting team.","example":"customer","readOnly":true},"author_name":{"type":"string","nullable":true,"description":"Display name of the author. May be `null`.","example":null,"readOnly":true},"comment_type":{"$ref":"#/components/schemas/CommentType"},"created_at":{"type":"string","format":"date-time","example":"2026-04-27T00:42:44.305835Z","readOnly":true}}},"DirCommentCreateRequest":{"type":"object","required":["content"],"description":"Customer-facing comment body. The server forces `comment_type=customer_inquiry`, `visibility=customer`, and `author_role=customer`; clients cannot override these. `author_name` is dropped to prevent admin-impersonation.","properties":{"content":{"type":"string","minLength":1,"maxLength":5000,"description":"Comment body. 1–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.\n- `draft` - newly created; editable; not yet submitted.\n- `submitted` / `in_review` - Telnyx is reviewing.\n- `verified` - approved; phone numbers may be attached.\n- `rejected` - Telnyx rejected this submission; `rejection_reasons` is populated; customer can edit and resubmit.\n- `unsuccessful` - system-side error during processing; customer can edit and resubmit.\n- `suspended` - temporarily disabled (e.g. by an active infringement claim).\n- `expired` - verification expired; customer must resubmit.\n- `infringement_claimed` - a trademark/impersonation claim is open against this DIR.\n- `permanently_rejected` - terminal; cannot be resubmitted.\n- `delete_requested` - you have requested deletion; the DIR still exists and Telnyx is completing the removal (de-registration and cleanup). A verified DIR keeps serving its branded identity, and keeps billing, until the removal finishes."},"DirUpdateRequest":{"type":"object","description":"All fields are optional; only those supplied are updated. Same per-field rules as `DirCreateRequest`.","properties":{"display_name":{"type":"string","minLength":1,"maxLength":35,"description":"Name shown to call recipients. 1–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","national","toll_free"],"example":"local","readOnly":false},"action":{"description":"Indicates whether this requirement applies to branded_calling, ordering, porting, or both ordering and porting","type":"string","enum":["both","branded_calling","ordering","porting"],"example":"ordering","readOnly":false},"requirement_types":{"description":"Lists the requirement types necessary to fulfill this requirement","type":"array","items":{"$ref":"#/components/schemas/DocReqsRequirementType"},"readOnly":true},"id":{"description":"Identifies the associated document","type":"string","format":"uuid","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2021-04-09T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was last updated.","readOnly":true,"example":"2021-04-12T20:20:20.020Z"},"version":{"type":"integer","readOnly":true,"description":"Version number. Increments with each new version. Defaults to 1."},"effective_start_at":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"When this version became (or will become) active."},"effective_end_at":{"type":["string","null"],"format":"date-time","readOnly":true,"description":"When this version was superseded. NULL means this is the active or pending version."}}},"DocReqsRequirementList":{"type":"array","items":{"$ref":"#/components/schemas/DocReqsRequirement"}},"DocReqsRequirementType":{"type":"object","properties":{"acceptance_criteria":{"description":"Specifies objective criteria for acceptance","type":"object","properties":{"time_limit":{"description":"Specifies time-based acceptance criteria","example":"Current and not expired","type":"string","readOnly":false},"locality_limit":{"description":"Specifies geography-based acceptance criteria","example":"Issued by the same country that the phone number belongs to","type":"string","readOnly":false},"acceptable_values":{"description":"Specifies the list of strictly possible values for the requirement. Ignored when empty","type":"array","items":{"type":"string","example":"US"},"readOnly":false},"max_length":{"description":"Maximum length allowed for the value","type":"integer","example":20,"readOnly":false},"min_length":{"description":"Minimum length allowed for the value","type":"integer","example":16,"readOnly":false},"acceptable_characters":{"description":"Specifies the allowed characters as a string","type":"string","example":"abcdef0123456789","readOnly":false}}},"description":{"description":"Describes the requirement type","example":"Proves the customer has a physical address in the same locality as the phone number","type":"string","readOnly":false},"example":{"description":"Provides one or more examples of acceptable documents","example":"Utility bill, internet bill, phone bill, or lease","type":"string","readOnly":false},"type":{"description":"Defines the type of this requirement type","example":"document","type":"string","enum":["document","address","textual"],"readOnly":false},"name":{"description":"A short descriptive name for this requirement_type","example":"Proof of Address","type":"string","readOnly":true},"record_type":{"description":"Identifies the type of the resource","example":"requirement_type","type":"string","readOnly":true},"id":{"description":"Identifies the associated document","type":"string","format":"uuid","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2021-04-09T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was last updated.","readOnly":true,"example":"2021-04-12T20:20:20.020Z"}}},"DocReqsRequirementTypeList":{"type":"array","items":{"$ref":"#/components/schemas/DocReqsRequirementType"}},"DocServiceDocument":{"allOf":[{"$ref":"#/components/schemas/DocServiceRecord"},{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","readOnly":true,"example":"document"},"content_type":{"description":"The document's content_type.","type":"string","readOnly":true,"example":"application/pdf"},"size":{"description":"Indicates the document's filesize","type":"object","readOnly":true,"properties":{"unit":{"description":"Identifies the unit","type":"string","readOnly":true,"example":"bytes"},"amount":{"description":"The number of bytes","type":"integer","readOnly":true,"example":123456}}},"status":{"type":"string","description":"Indicates the current document reviewing status","readOnly":true,"enum":["pending","verified","denied"],"example":"pending"},"sha256":{"description":"The document's SHA256 hash provided for optional verification purposes.","type":"string","readOnly":true,"example":"08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"},"filename":{"description":"The filename of the document.","type":"string","example":"test-document.pdf"},"customer_reference":{"type":"string","description":"Optional reference string for customer tracking.","example":"MY REF 001"},"av_scan_status":{"type":"string","description":"The antivirus scan status of the document.","readOnly":true,"enum":["scanned","infected","pending_scan","not_scanned"],"example":"scanned"}}}]},"DocServiceDocumentLink":{"allOf":[{"$ref":"#/components/schemas/DocServiceRecord"},{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","readOnly":true,"example":"document_link"},"document_id":{"description":"Identifies the associated document.","type":"string","format":"uuid","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"linked_record_type":{"description":"The linked resource's record type.","type":"string","readOnly":true,"example":"porting_order"},"linked_resource_id":{"description":"Identifies the linked resource.","type":"string","readOnly":true,"example":"132091b4-442b-4a2a-b87f-61e707e46d54"}}}]},"DocServiceRecord":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"sample_record_type"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was updated.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"}}},"Document":{"type":"object","required":["document_id","document_type"],"properties":{"document_id":{"type":"string","format":"uuid","description":"Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c"},"document_type":{"type":"string","enum":["letter_of_authorization","business_registration","articles_of_incorporation","tax_document","ein_letter","trademark_registration","website_ownership","business_license","professional_license","government_id","utility_bill","bank_statement","other"],"example":"business_registration","description":"Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`."},"description":{"type":"string","maxLength":255,"description":"An optional note describing this document, for example what it proves.","example":"Certificate of incorporation."}}},"DocumentTypeReference":{"type":"object","description":"Single supported document type.","properties":{"short_name":{"type":"string","description":"Stable identifier passed to `Document.document_type`.","example":"letter_of_authorization"},"description":{"type":"string","example":"Signed authorization from the DIR owner permitting Telnyx to register the DIR and its associated numbers on their behalf"}}},"DocumentTypeReferenceList":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DocumentTypeReference"}},"meta":{"$ref":"#/components/schemas/branded-calling_PaginationMeta"}}},"DomainGraduationLimitExceededError":{"type":"object","description":"Error envelope returned when a newly sending custom domain on shared egress would exceed its current daily graduation ceiling. The send is rejected before message creation.","required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["code","title","detail"],"properties":{"code":{"type":"string","enum":["domain_graduation_limit_exceeded"]},"title":{"type":"string","example":"Too Many Requests"},"detail":{"type":"string","example":"Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight UTC."},"meta":{"type":"object","description":"Bounded retry guidance. Each field is omitted when unknown.","additionalProperties":false,"properties":{"retry_after_seconds":{"type":"integer","minimum":1,"description":"Seconds until the next UTC-midnight reset."},"remaining_today":{"type":"integer","minimum":0,"description":"Recipient headroom remaining for the sender-domain identity before this rejected request."}}}}}}}},"DomainsErrorResponse":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/email_Error"}}}},"DomainsTrackingSettings":{"type":"object","properties":{"open_tracking":{"type":"boolean","default":false,"description":"Inject a tracking pixel into HTML messages to record open events."},"click_tracking":{"type":"boolean","default":false,"description":"Rewrite HTML links through a tracking redirect to record click events."},"unsubscribe_tracking":{"type":"boolean","default":true,"description":"Add RFC 8058 List-Unsubscribe headers with a signed one-click unsubscribe URL. Enabled by default; Gmail/Yahoo bulk-sender rules require one-click unsubscribe support."}}},"DownlinkData":{"type":"object","properties":{"amount":{"type":"number","description":"Downlink data","example":1},"unit":{"description":"Transmission unit","type":"string","enum":["B","KB","MB"],"default":"MB"}}},"DtmfType":{"title":"DTMF Type","type":"string","description":"Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.","enum":["RFC 2833","Inband","SIP INFO"],"default":"RFC 2833","example":"Inband"},"DynamicEmergencyAddress":{"type":"object","properties":{"id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f1","readOnly":true},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"dynamic_emergency_address"},"sip_geolocation_id":{"type":"string","description":"Unique location reference string to be used in SIP INVITE from / p-asserted headers.","example":"XYZ123","readOnly":true},"status":{"type":"string","description":"Status of dynamic emergency address","readOnly":true,"enum":["pending","activated","rejected"],"example":"pending"},"house_number":{"type":"string","example":"600"},"house_suffix":{"type":"string"},"street_pre_directional":{"type":"string"},"street_name":{"type":"string","example":"Congress"},"street_suffix":{"type":"string","example":"St"},"street_post_directional":{"type":"string"},"extended_address":{"type":"string"},"locality":{"type":"string","example":"Austin"},"administrative_area":{"type":"string","example":"TX"},"postal_code":{"type":"string","example":"78701"},"country_code":{"type":"string","example":"US","enum":["US","CA","PR"]},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was created","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was last updated","readOnly":true,"example":"2018-02-02T22:25:27.521Z"}},"required":["house_number","street_name","locality","administrative_area","postal_code","country_code"]},"DynamicEmergencyEndpoint":{"type":"object","properties":{"id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","readOnly":true},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"dynamic_emergency_endpoint"},"dynamic_emergency_address_id":{"type":"string","description":"An id of a currently active dynamic emergency location.","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"status":{"type":"string","description":"Status of dynamic emergency address","readOnly":true,"enum":["pending","activated","rejected"],"example":"pending"},"sip_from_id":{"type":"string","example":"FXDFWEDF","readOnly":true},"callback_number":{"type":"string","example":"+13125550000"},"caller_name":{"type":"string","example":"Jane Doe Desk Phone"},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was created","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the resource was last updated","readOnly":true,"example":"2018-02-02T22:25:27.521Z"}},"required":["dynamic_emergency_address_id","callback_number","caller_name"]},"DynamicVariableExpression":{"description":"Reference a dynamic variable by name.\n\nResolved at runtime from the assistant's dynamic-variables context (see\n`Assistant.dynamic_variables` and the dynamic-variables webhook).","example":{"name":"user_age","type":"variable"},"properties":{"name":{"description":"Variable name to look up in the runtime context.","example":"user_age","title":"Name","type":"string"},"type":{"const":"variable","title":"Type","type":"string"}},"required":["type","name"],"title":"DynamicVariableExpression","type":"object"},"ESimPurchase":{"title":"SIMCardRegistration","type":"object","properties":{"sim_card_group_id":{"type":"string","format":"uuid","description":"The group SIMCardGroup identification. This attribute can be <code>null</code> 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\nsend-time suppression checks as soon as `expires_at <= now()`.\nA maintenance worker later transitions the row to `status: expired`\nand appends an `expired` audit event (normally within 15 minutes).\n"}},"description":"Suppression record. Schema fields hidden by the view:\n`account_id`, `bounce_category`, `dsn_code`, `meta`.\n"},"EmailBlockEvent":{"type":"object","required":["id","record_type","event_type","reason","source","actor","occurred_at"],"properties":{"id":{"type":"string","format":"uuid"},"record_type":{"type":"string","enum":["email_block_event"],"description":"View-only."},"event_type":{"type":"string","enum":["created","removed","expired","override_used"]},"reason":{"type":"string","description":"Free-text snapshot of the block's reason at event time."},"source":{"type":"string","description":"Free-text snapshot of the block's source at event time."},"actor":{"type":"string","description":"Free-text (`user_id`/`org_id`/`api_key`/`dev_bypass`/`system`/`manual`)."},"meta":{"type":"object","nullable":true,"additionalProperties":true,"description":"`null` when the schema field is nil (the context usually sets it to `{}`)."},"occurred_at":{"type":"string","format":"date-time"}}},"EmailBlockEventListResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailBlockEvent"}},"meta":{"$ref":"#/components/schemas/OffsetMeta"}}},"EmailBlockImport":{"type":"object","required":["id","record_type","status","total","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"record_type":{"type":"string","enum":["email_block_import"],"description":"View-only."},"status":{"type":"string","enum":["pending","processing","completed","failed"]},"total":{"type":"integer","description":"Data-row count at upload."},"provider":{"type":"string","enum":["sendgrid","mailgun","ses","generic"],"description":"Omitted when nil."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"completed_at":{"type":"string","format":"date-time","description":"Omitted until terminal success."},"processed_rows":{"type":"integer","description":"Only when `status == completed`."},"created_count":{"type":"integer","description":"Only when `status == completed`."},"existing_count":{"type":"integer","description":"Only when `status == completed`."},"skipped_count":{"type":"integer","description":"Only when `status == completed`."},"error_count":{"type":"integer","description":"Rows that passed CSV parsing but failed suppression creation.\nThis is the creation-failure subset of `skipped_count`;\nparser-rejected rows equal `skipped_count - error_count`.\nOnly when `status == completed`.\n"},"errors":{"type":"object","additionalProperties":{"type":"string"},"description":"`{row_number: reason}`; only rendered when non-empty."},"failure_reason":{"type":"string","description":"Only on terminal failure."}},"description":"Import job. Schema fields hidden: `account_id`, `csv_content`,\n`block_ttl_days`. Nullable fields use the omit-nullable pattern.\n"},"EmailBlockImportResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailBlockImport"}}},"EmailBlockListCursorResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailBlock"}},"meta":{"$ref":"#/components/schemas/CursorMeta"}}},"EmailBlockListOffsetResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailBlock"}},"meta":{"$ref":"#/components/schemas/OffsetMeta"}}},"EmailBlockResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailBlock"}}},"EmailDMARCPolicy":{"type":"object","description":"DMARC policy for a sending domain. Drives the recommended _dmarc.<domain> TXT record. DMARC is advisory and never blocks sending. When omitted or null, the domain uses the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).","properties":{"p":{"type":"string","enum":["none","quarantine","reject"],"default":"none","description":"Policy applied to messages that fail alignment."},"pct":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"Percentage of messages the policy applies to. Omitted from the record when 100."},"rua":{"type":"string","nullable":true,"description":"URI for aggregate reports. Defaults to the Telnyx address when absent; null omits it."},"sp":{"type":"string","enum":["none","quarantine","reject"],"nullable":true,"description":"Policy for subdomains. Omitted from the record when null."}}},"EmailDomain":{"type":"object","required":["id","record_type","domain","type","status","usable_for_sending","usable_for_inbound","verification","dns_records","dkim","inbound","dmarc_policy","tracking","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"record_type":{"type":"string","enum":["email_domain"]},"domain":{"type":"string","example":"example.com"},"type":{"$ref":"#/components/schemas/EmailDomainType","description":"Domain type. `custom` domains are account-owned (BYOD). `shared` domains are Telnyx-managed, visible to and usable by ALL accounts for sending, but read-only: only the owning (system) account may modify, verify, or delete them; other accounts receive 403 (code 10008)."},"status":{"$ref":"#/components/schemas/EmailDomainStatus"},"usable_for_sending":{"type":"boolean"},"usable_for_inbound":{"type":"boolean"},"verification":{"$ref":"#/components/schemas/EmailDomainVerification"},"dns_records":{"type":"array","items":{"$ref":"#/components/schemas/DNSRecord"}},"dkim":{"$ref":"#/components/schemas/DKIMStatus"},"inbound":{"$ref":"#/components/schemas/InboundConfig"},"dmarc_policy":{"type":"object","allOf":[{"$ref":"#/components/schemas/EmailDMARCPolicy"}],"nullable":true,"description":"Customer DMARC policy. null means use the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).\n"},"tracking":{"$ref":"#/components/schemas/DomainsTrackingSettings"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"verified_at":{"type":"string","format":"date-time","nullable":true},"reputation":{"type":"object","description":"Sender reputation for this domain (present on all domain responses).","properties":{"band":{"type":"string","description":"Reputation band, e.g. good/warn/poor."},"breakdown":{"type":"object","additionalProperties":true},"computed_at":{"type":"string","format":"date-time","nullable":true}}}},"example":{"id":"123e4567-e89b-12d3-a456-426614174000","record_type":"email_domain","domain":"example.com","type":"custom","status":"pending","usable_for_sending":false,"usable_for_inbound":false,"verification":{"ownership":"pending","spf":"missing_optional","dkim":"pending","dmarc":"missing_optional","mx":"not_required"},"dns_records":[],"dkim":{"selector":null,"algorithm":null,"key_length":null,"active":false,"rotated_at":null},"inbound":{"enabled":false,"catch_all":false,"mx_required":false},"dmarc_policy":{"p":"none","pct":100,"rua":"mailto:dmarc@telnyx.com"},"tracking":{"open_tracking":false,"click_tracking":false,"unsubscribe_tracking":false},"created_at":"2026-01-01T00:00:00Z","updated_at":"2026-01-01T00:00:00Z","verified_at":null}},"EmailDomainDKIMRotation":{"type":"object","description":"Result of rotating a domain's DKIM key. The new key is active and signing switches to it immediately; the previous key is retired to a `retiring` state (retained, not revoked) so it can be revoked after the DNS propagation grace period. Selectors are fixed, so the DKIM DNS record's TXT value is replaced in place at the shared `<selector>._domainkey.<domain>` host — `old_selector_retained` is false and the returned dns_records carry the new value the customer must publish promptly.\n","required":["record_type","domain_id","domain","dkim","previous_dkim_key","old_selector_retained","dns_records"],"properties":{"record_type":{"type":"string","enum":["email_domain_dkim_rotation"]},"domain_id":{"type":"string","format":"uuid"},"domain":{"type":"string"},"dkim":{"type":"object","description":"The new active DKIM key.","required":["id","selector","algorithm","key_length","version","status"],"properties":{"id":{"type":"string","format":"uuid"},"selector":{"type":"string"},"algorithm":{"type":"string","enum":["rsa-sha256"]},"key_length":{"type":"integer","enum":[2048]},"version":{"type":"integer","description":"Monotonically increasing per-domain key version.","minimum":1},"status":{"type":"string","enum":["active"]},"activated_at":{"type":"string","format":"date-time","nullable":true}}},"previous_dkim_key":{"type":"object","nullable":true,"description":"The retired previous key, or null when the domain had no active key before rotation. Retained in a `retiring` state so it can be revoked after the DNS propagation grace period.\n","required":["id","selector","version","status"],"properties":{"id":{"type":"string","format":"uuid"},"selector":{"type":"string"},"version":{"type":"integer"},"status":{"type":"string","enum":["retiring","revoked"]}}},"old_selector_retained":{"type":"boolean","description":"False for this service: one selector is fixed per domain, so rotation replaces the TXT value at the existing _domainkey host. There is no dual-selector overlap; publish the replacement TXT promptly because signing switches immediately."},"dns_records":{"type":"array","description":"The DKIM DNS records the customer must publish, carrying the new key's TXT value with verification reset to pending.\n","items":{"$ref":"#/components/schemas/DNSRecord"}}},"example":{"record_type":"email_domain_dkim_rotation","domain_id":"123e4567-e89b-12d3-a456-426614174002","domain":"example.com","dkim":{"id":"123e4567-e89b-12d3-a456-42661417400a","selector":"telnyx1","algorithm":"rsa-sha256","key_length":2048,"version":2,"status":"active","activated_at":"2026-09-11T12:00:00Z"},"previous_dkim_key":{"id":"123e4567-e89b-12d3-a456-426614174009","selector":"telnyx1","version":1,"status":"retiring"},"old_selector_retained":false,"dns_records":[{"id":"123e4567-e89b-12d3-a456-42661417400b","purpose":"dkim","record_type":"TXT","host":"telnyx1._domainkey.example.com","value":"v=DKIM1; k=rsa; p=MIIBIjANBgkqh...","actual_value":null,"priority":null,"required":true,"status":"pending"}]}},"EmailDomainDKIMRotationResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailDomainDKIMRotation"}}},"EmailDomainHealth":{"type":"object","required":["id","record_type","status","usable_for_sending","usable_for_inbound","verification","checked_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the email domain"},"record_type":{"type":"string","enum":["email_domain_health"],"description":"Record type discriminator"},"status":{"type":"string","enum":["pending","verifying","verified","failed","degraded","suspended"],"description":"Current domain status"},"usable_for_sending":{"type":"boolean","description":"Whether the domain is usable for sending email"},"usable_for_inbound":{"type":"boolean","description":"Whether the domain is usable for receiving inbound email"},"verification":{"$ref":"#/components/schemas/EmailDomainVerification"},"checked_at":{"type":"string","format":"date-time","description":"Timestamp of the last health check"}}},"EmailDomainHealthResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailDomainHealth"}}},"EmailDomainListResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailDomain"}},"meta":{"oneOf":[{"$ref":"#/components/schemas/OffsetPaginationMeta"},{"$ref":"#/components/schemas/email_CursorPaginationMeta"}]}}},"EmailDomainResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailDomain"}}},"EmailDomainStatus":{"type":"string","enum":["pending","verifying","verified","failed","degraded","suspended"]},"EmailDomainType":{"type":"string","enum":["custom","shared","shared_inbound"]},"EmailDomainVerification":{"type":"object","required":["ownership","spf","dkim","dmarc","mx"],"properties":{"ownership":{"type":"string","enum":["pending","verified","not_required"]},"spf":{"type":"string","enum":["missing_optional","verified","failed","not_required"]},"dkim":{"type":"string","enum":["pending","verified","failed"]},"dmarc":{"type":"string","enum":["missing_optional","verified","failed"]},"mx":{"type":"string","enum":["not_required","pending","verified","failed"]}}},"EmailDraft":{"type":"object","description":"An unsent, mutable draft message belonging to an inbox.","properties":{"record_type":{"type":"string","enum":["email_draft"]},"id":{"type":"string","format":"uuid"},"inbox_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["draft","sending","sent"],"description":"`draft` until the draft is sent. A sent draft is retained for audit and\nbecomes immutable.\n"},"from":{"type":"string","nullable":true,"description":"Sender address. Defaults to the inbox address at send time when null."},"from_name":{"type":"string","nullable":true},"to":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"cc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"bcc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"reply_to":{"type":"string","nullable":true},"subject":{"type":"string","nullable":true},"text_body":{"type":"string","nullable":true},"html_body":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom headers. Reply drafts carry `In-Reply-To` and `References`."},"attachments":{"type":"array","items":{"type":"object"}},"labels":{"type":"array","items":{"type":"string"},"description":"Mutable mailbox-state labels. Not propagated to Email Detail Records."},"tags":{"type":"array","items":{"type":"string"},"description":"Transport/reporting attribution tags, propagated to Email Detail Records at send time."},"metadata":{"type":"object","description":"Arbitrary customer-defined metadata."},"reply_to_message_id":{"type":"string","format":"uuid","nullable":true,"description":"Inbound message this draft replies to. Server-owned; set only on reply drafts."},"thread_id":{"type":"string","format":"uuid","nullable":true,"description":"Conversation thread inherited from the parent message."},"sent_message_id":{"type":"string","format":"uuid","nullable":true,"description":"The email message created when this draft was sent."},"sent_at":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["record_type","id","inbox_id","status"]},"EmailDraftListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailDraft"}},"meta":{"$ref":"#/components/schemas/email_PaginationMeta"}},"required":["data","meta"]},"EmailDraftRequest":{"type":"object","description":"All fields are optional — a draft may be saved incomplete. `account_id`,\n`inbox_id`, `status`, `sent_at`, `sent_message_id`, `reply_to_message_id` and\n`thread_id` are server-owned and ignored if supplied.\n","properties":{"from_email":{"type":"string"},"from_name":{"type":"string"},"to":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"cc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"bcc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddressInput"}},"reply_to":{"type":"string"},"subject":{"type":"string","maxLength":255},"text_body":{"type":"string"},"html_body":{"type":"string"},"text":{"type":"string","description":"Alias for `text_body`, matching the send endpoint."},"html":{"type":"string","description":"Alias for `html_body`, matching the send endpoint."},"headers":{"type":"object","additionalProperties":{"type":"string"}},"attachments":{"type":"array","items":{"type":"object"}},"labels":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"metadata":{"type":"object"}}},"EmailDraftResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailDraft"}},"required":["data"]},"EmailEventCounts":{"type":"object","description":"Recipient-level outcome counts for the queried time range. Each to, cc, and bcc recipient counts separately; repeated events of the same type for the same message and recipient count once. Partial MTA injection results count successful recipients as sent and unsuccessful recipients as failed. Only the ten listed event types are counted; other valid event types (scheduled, cancelled, sandbox, sending, rejected) are not included in stats.","properties":{"queued":{"type":"integer","minimum":0},"sent":{"type":"integer","minimum":0},"delivered":{"type":"integer","minimum":0},"deferred":{"type":"integer","minimum":0},"bounced":{"type":"integer","minimum":0},"opened":{"type":"integer","minimum":0},"clicked":{"type":"integer","minimum":0},"complained":{"type":"integer","minimum":0},"unsubscribed":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0}},"required":["queued","sent","delivered","deferred","bounced","opened","clicked","complained","unsubscribed","failed"]},"EmailEventRates":{"type":"object","description":"Recipient-level event rates as percentages, rounded to 2 decimal places.","properties":{"delivery_rate":{"type":"number","format":"float","minimum":0,"description":"Delivered recipients / queued recipients as a percentage."},"bounce_rate":{"type":"number","format":"float","minimum":0,"description":"Bounced recipients / queued recipients as a percentage."},"deferred_rate":{"type":"number","format":"float","minimum":0,"description":"Deferred recipients / queued recipients as a percentage."},"open_rate":{"type":"number","format":"float","minimum":0,"description":"Recipients opened / recipients delivered as a percentage."},"click_rate":{"type":"number","format":"float","minimum":0,"description":"Recipients clicked / recipients opened as a percentage."},"complaint_rate":{"type":"number","format":"float","minimum":0,"description":"Recipients with a complaint feedback report / delivered recipients as a percentage."}},"required":["delivery_rate","bounce_rate","deferred_rate","open_rate","click_rate","complaint_rate"]},"EmailEventStats":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_event_stats"]},"counts":{"$ref":"#/components/schemas/EmailEventCounts"},"rates":{"$ref":"#/components/schemas/EmailEventRates"},"time_range":{"$ref":"#/components/schemas/TimeRange"}},"required":["record_type","counts","rates","time_range"]},"EmailEventStatsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailEventStats"}},"required":["data"]},"EmailEventType":{"type":"string","description":"Bare stored event names returned by message history. In addition to the normal send and delivery lifecycle, polling can expose suppression, scan, and quarantine lifecycle rows. Sharp canonical names gw_reject, injection_timeout, and expired distinguish gateway rejection, ambiguous injection timeout, and MTA expiration. The failed and bounced names remain valid for system/admin failures and hard bounces respectively. Existing stored rows retain their original names.","enum":["queued","deferred","scheduled","cancelled","sandbox","sending","sent","failed","delivered","bounced","complained","suppressed","rejected","opened","clicked","unsubscribed","daily_limit_exceeded","scan_deferred","quarantined","quarantine_released","quarantine_release_dispatched","quarantine_rejected","quarantine_expired","gw_reject","injection_timeout","expired"]},"EmailInbox":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"record_type":{"type":"string","enum":["email_inbox"]},"address":{"type":"string","format":"email"},"status":{"type":"string","enum":["active","paused"]},"domain_id":{"type":"string","format":"uuid"},"domain":{"type":"string","description":"Domain name used by the inbox address."},"settings":{"type":"object","additionalProperties":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","record_type","address","status","domain_id","domain","settings","created_at","updated_at"]},"EmailInboxListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailInbox"}},"meta":{"$ref":"#/components/schemas/EmailInboxPaginationMeta"}},"required":["data","meta"]},"EmailInboxPaginationMeta":{"type":"object","properties":{"page_size":{"type":"integer","minimum":1,"maximum":250},"page_cursor":{"type":"string","description":"Cursor for the next inbox page, when more results are available."}},"required":["page_size"]},"EmailInboxResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailInbox"}},"required":["data"]},"EmailMessage":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_message"]},"id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/EmailMessageStatus"},"from":{"$ref":"#/components/schemas/EmailAddress"},"to":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"cc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"bcc":{"type":"array","items":{"$ref":"#/components/schemas/EmailAddress"}},"reply_to":{"type":"string","nullable":true},"subject":{"type":"string"},"template_id":{"type":"string","format":"uuid","nullable":true},"template_variables":{"type":"object","additionalProperties":true,"default":{}},"tags":{"type":"array","default":[],"items":{"type":"string"},"description":"Customer-supplied tags stored with the message."},"metadata":{"type":"object","additionalProperties":true,"default":{},"description":"Customer-supplied metadata stored with the message."},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentResponse"}},"events":{"type":"array","items":{"$ref":"#/components/schemas/EmbeddedMessageEvent"}},"created_at":{"type":"string","format":"date-time"},"scheduled_at":{"type":"string","format":"date-time","description":"Present when a scheduled_at value was stored. Persists even after the scheduled send has been processed or cancelled."},"inline_css":{"type":"boolean","description":"Present when true in the immediate create response. Not persisted; absent on subsequent GET requests."},"sandbox":{"type":"boolean","description":"Present when sandbox mode was used."},"recipient_statuses":{"type":"object","description":"Per-status recipient counts for the message. Present only for outbound messages\nwith recipient rows. Keys are recipient statuses, values are counts.\nExample: `{\"delivered\": 998, \"bounced\": 2}`.\n","additionalProperties":{"type":"integer"},"example":{"delivered":998,"bounced":2}},"suppressed":{"type":"array","description":"Recipients excluded from delivery by suppression checks, with reasons. On batch items, present when that item had suppressed recipients; all other recipients of the item still receive the message. For single sends this information appears at the top level of the response instead (see EmailMessageResponse.suppressed).","items":{"$ref":"#/components/schemas/SuppressedRecipient"}}},"required":["record_type","id","status","from","to","cc","bcc","subject","reply_to","template_id","template_variables","tags","metadata","attachments","events","created_at"]},"EmailMessageDetail":{"allOf":[{"$ref":"#/components/schemas/EmailMessage"},{"type":"object","properties":{"text_body":{"type":"string","nullable":true,"description":"Plain-text body submitted for the message."},"html_body":{"type":"string","nullable":true,"description":"HTML body submitted for the message."}},"required":["text_body","html_body"]}]},"EmailMessageDetailResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailMessageDetail"}},"required":["data"]},"EmailMessageListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailMessage"}},"meta":{"$ref":"#/components/schemas/email_PaginationMeta"}},"required":["data","meta"]},"EmailMessageResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailMessage"},"suppressed":{"type":"array","description":"Recipients removed by suppression checks when at least one recipient remains and the message is accepted.","items":{"$ref":"#/components/schemas/SuppressedRecipient"}}},"required":["data"]},"EmailMessageStatus":{"type":"string","description":"Current status of an email message. Lifecycle statuses (queued, scheduled, etc.) are set on creation. Delivery statuses (delivered, bounced, etc.) are updated by delivery event consumers.","enum":["queued","scheduled","cancelled","sandbox","sending","sent","failed","deferred","delivered","bounced","complained","rejected","opened","clicked","unsubscribed"]},"EmailRecipient":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_recipient"]},"id":{"type":"string","format":"uuid","description":"Recipient UUID."},"message_id":{"type":"string","format":"uuid","description":"Parent email message UUID."},"address":{"type":"string","format":"email","nullable":true,"description":"Recipient email address. Null for BCC recipients (redacted for privacy)."},"kind":{"type":"string","enum":["to","cc","bcc"]},"status":{"type":"string","enum":["queued","sending","sent","deferred","delivered","bounced","failed","gw_reject","cancelled","injection_timeout","expired"],"description":"Current per-recipient delivery status."},"billable":{"type":"boolean","description":"Whether this recipient's delivery is billable (set on queue acceptance)."},"sent_at":{"type":"string","format":"date-time","nullable":true},"delivered_at":{"type":"string","format":"date-time","nullable":true},"failed_at":{"type":"string","format":"date-time","nullable":true},"smtp_code":{"type":"integer","nullable":true,"description":"SMTP response code when available (e.g. 550 for bounces)."},"smtp_response":{"type":"string","nullable":true,"description":"SMTP response message when available."}},"required":["record_type","id","message_id","address","kind","status","billable"]},"EmailRecipientListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailRecipient"}},"meta":{"type":"object","properties":{"page_size":{"type":"integer","minimum":1,"maximum":100},"page_cursor":{"type":"string","nullable":true,"description":"Cursor for the next page. Absent when there are no more results."}},"required":["page_size"]}},"required":["data","meta"]},"EmailRecipientResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailRecipient"}},"required":["data"]},"EmailTemplate":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_template"]},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"subject":{"type":"string","nullable":true},"html_body":{"type":"string","nullable":true},"text_body":{"type":"string","nullable":true},"variables":{"type":"array","description":"Legacy unstructured variable names. This path remains supported unchanged.","items":{"type":"string"}},"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","subject","html_body","text_body","variables","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.\n"},"domain_id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"example":{"id":"123e4567-e89b-12d3-a456-426614174003","record_type":"email_webhook","url":"https://example.com/webhooks/email","events":["email.sent","email.delivered","email.bounced"],"domain_id":"123e4567-e89b-12d3-a456-426614174000","created_at":"2026-06-18T12:00:00Z","updated_at":"2026-06-18T12:00:00Z"}},"EmailWebhookEvent":{"type":"string","description":"Event types accepted by domain webhook subscriptions. Allowlists match the legacy event_type, not canonical_event_type. Of the 22 accepted types, email.sending is stored but intentionally not published. Cancellation, daily-limit failures, and system failures publish after commit when a matching domain webhook is configured.","enum":["email.scheduled","email.sandbox","email.queued","email.sending","email.sent","email.delivered","email.deferred","email.bounced","email.failed","email.complained","email.opened","email.clicked","email.unsubscribed","email.received","email.cancelled","email.daily_limit_exceeded","email_domain.created","email_domain.verified","email_domain.degraded","email_domain.suspended","email_domain.deleted","email_domain.dkim_rotated"]},"EmailWebhookListResponse":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailWebhook"}},"meta":{"$ref":"#/components/schemas/OffsetPaginationMeta"}}},"EmailWebhookRecipient":{"type":"object","properties":{"email":{"type":"string","format":"email"},"name":{"type":"string","nullable":true},"kind":{"type":"string","enum":["to","cc","bcc"]}},"required":["email"]},"EmailWebhookResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EmailWebhook"}}},"EmbeddedMessageEvent":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/EmailEventType"},"occurred_at":{"type":"string","format":"date-time"},"payload":{"type":"object","additionalProperties":true}},"required":["type","occurred_at"],"description":"An event embedded in a message response. The dedicated per-message events endpoint additionally returns event_type and canonical_event_type."},"EmbeddingBucketRequest":{"properties":{"bucket_name":{"type":"string","title":"Bucket Name"},"document_chunk_size":{"type":"integer","title":"Document Chunk Size","default":1024},"document_chunk_overlap_size":{"type":"integer","title":"Document Chunk Overlap Size","default":512},"embedding_model":{"allOf":[{"$ref":"#/components/schemas/SupportedEmbeddingModels"}],"default":"intfloat/multilingual-e5-large"},"loader":{"allOf":[{"$ref":"#/components/schemas/SupportedEmbeddingLoaders"}],"default":"default"}},"type":"object","required":["bucket_name"],"title":"EmbeddingBucketRequest"},"EmbeddingMetadata":{"properties":{"source":{"type":"string","title":"Source"},"checksum":{"type":"string","title":"Checksum"},"embedding":{"type":"string","title":"Embedding"},"filename":{"type":"string","title":"Filename"},"certainty":{"type":"number","title":"Certainty"},"loader_metadata":{"type":"object","title":"Loader Metadata","additionalProperties":true}},"type":"object","required":["source","checksum","embedding","filename"],"title":"EmbeddingMetadata"},"EmbeddingResponse":{"properties":{"data":{"type":"object","properties":{"task_id":{"type":"string","format":"uuid","title":"Task ID"},"task_name":{"type":"string","title":"Task Name"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"finished_at":{"type":["string","null"],"title":"Finished At"},"user_id":{"type":"string","format":"uuid","title":"User ID"}}}},"type":"object","required":["data"],"title":"EmbeddingResponse"},"EmbeddingSimilaritySearchDocument":{"properties":{"document_chunk":{"type":"string","title":"Document Chunk"},"distance":{"type":"number","title":"Distance"},"metadata":{"$ref":"#/components/schemas/EmbeddingMetadata"}},"type":"object","required":["document_chunk","distance","metadata"],"title":"EmbeddingSimilaritySearchDocument","description":"Example document response from embedding service\n{\n  \"document_chunk\": \"your status? This is Vanessa Bloome...\",\n  \"distance\": 0.18607724,\n  \"metadata\": {\n    \"source\": \"https://us-central-1.telnyxstorage.com/scripts/bee_movie_script.txt\",\n    \"checksum\": \"343054dd19bab39bbf6761a3d20f1daa\",\n    \"embedding\": \"openai/text-embedding-ada-002\",\n    \"filename\": \"bee_movie_script.txt\",\n    \"certainty\": 0.9069613814353943,\n    \"loader_metadata\": {}\n  }\n}"},"EmbeddingSimilaritySearchRequest":{"properties":{"bucket_name":{"type":"string","title":"Bucket Name"},"query":{"type":"string","title":"Query"},"num_of_docs":{"type":"integer","title":"Num Of Docs","default":3}},"type":"object","required":["bucket_name","query"],"title":"EmbeddingSimilaritySearchRequest"},"EmbeddingSimilaritySearchResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EmbeddingSimilaritySearchDocument"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"EmbeddingSimilaritySearchResponse"},"EmbeddingUrlRequest":{"properties":{"url":{"type":"string","title":"URL","description":"The URL of the webpage to embed"},"bucket_name":{"type":"string","title":"Bucket Name","description":"Name of the bucket to store the embeddings. This bucket must already exist."}},"type":"object","required":["url","bucket_name"],"title":"EmbeddingUrlRequest"},"EmbeddingsBucketFiles":{"properties":{"filename":{"type":"string","title":"Filename"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_embedded_at":{"type":"string","format":"date-time","title":"Last Embedded At"},"error_reason":{"type":"string","title":"Error Reason"}},"type":"object","required":["filename","status","created_at"],"title":"EmbeddingsBucketFiles"},"EmbeddingsBucketFilesData":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EmbeddingsBucketFiles"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"EmbeddingsBucketFilesData"},"EmergencySettings":{"description":"The emergency services settings for a phone number.","type":"object","properties":{"emergency_enabled":{"type":"boolean","default":false,"description":"Allows you to enable or disable emergency services on the phone number. In order to enable emergency services, you must also set an emergency_address_id."},"emergency_address_id":{"type":"string","description":"Identifies the address to be used with emergency services."},"emergency_status":{"type":"string","description":"Represents the state of the number regarding emergency activation.","default":"disabled","enum":["disabled","active","provisioning","deprovisioning","provisioning-failed"]}},"example":{"emergency_enabled":true,"emergency_address_id":"1315261609962112019","emergency_status":"active"}},"EnabledFeatures":{"type":"string","enum":["telephony","messaging"],"description":"If `telephony` is enabled, the assistant will be able to make and receive calls. If `messaging` is enabled, the assistant will be able to send and receive messages."},"EncryptedMedia":{"type":["string","null"],"enum":["SRTP",null],"example":"SRTP","description":"Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS."},"EndConferenceRequest":{"type":"object","title":"End Conference Request","properties":{"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same conference.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{}},"Endpoint":{"description":"URL of an S3-compatible storage endpoint, used to direct uploads and presigned download URLs to a non-AWS store (for example MinIO, Cloudflare R2, Wasabi, Backblaze B2, or Supabase). A bare host (https://s3.example.com) or a path-prefixed URL (https://xyz.supabase.co/storage/v1/s3) is accepted, and must use the http or https scheme.","type":"string","format":"uri","pattern":"^https?://","example":"https://s3.example.com"},"EnhanceInstructionsRequest":{"properties":{"enhancement_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enhancement Prompt","description":"Optional guidance describing how the instructions should be enhanced. When provided, the LLM applies these requested changes in addition to fixing any identified issues."},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions","description":"The instructions to enhance. When omitted, the assistant's existing instructions are used."}},"type":"object","title":"EnhanceInstructionsRequest"},"EnqueueRequest":{"type":"object","title":"Enqueue Request","required":["queue_name"],"properties":{"queue_name":{"description":"The name of the queue the call should be put in. If a queue with a given name doesn't exist yet it will be created.","type":"string","example":"tier_1_support"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"max_wait_time_secs":{"description":"The number of seconds after which the call will be removed from the queue.","type":"integer","example":600},"max_size":{"description":"The maximum number of calls allowed in the queue at a given time. Can't be modified for an existing queue.","type":"integer","default":100,"example":200},"keep_after_hangup":{"type":"boolean","description":"If set to true, the call will remain in the queue after hangup. In this case bridging to such call will fail with necessary information needed to re-establish the call.","default":false,"example":true}},"example":{"queue_name":"support","max_wait_time_secs":600,"max_size":20,"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"EnterpriseCreate":{"type":"object","required":["legal_name","organization_type","country_code","website","fein","industry","number_of_employees","organization_legal_type","doing_business_as","jurisdiction_of_incorporation","organization_contact","billing_contact","organization_physical_address","billing_address"],"properties":{"legal_name":{"type":"string","example":"Acme Plumbing LLC","description":"Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters.","minLength":3,"maxLength":64},"organization_type":{"type":"string","enum":["commercial","government","non_profit"],"example":"commercial","description":"Organization category for vetting purposes:\n- `commercial` - for-profit business entities (LLC, corp, partnership, sole proprietorship). Most callers fall here.\n- `government` - federal/state/local government bodies.\n- `non_profit` - registered 501(c)(3)/equivalent (incl. educational institutions, charities, religious organisations)."},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code. Currently `US` and `CA` are supported.","example":"US"},"role_type":{"type":"string","enum":["enterprise","bpo"],"description":"`enterprise` for an organization registering its own DIRs (the default, and the right choice when the calls display your own brand). `bpo` for a Business Process Outsourcer: a call center that places calls on behalf of other enterprises and displays their brand. A `bpo` enterprise describes the call center itself and cannot own a DIR. Each client the call center calls for gets its own `enterprise` in the same account, with the client's DIR under it; that DIR is then linked to the `bpo` enterprise through `bpo_authorizations`. Fixed at creation.","example":"enterprise","default":"enterprise"},"website":{"type":"string","format":"uri","maxLength":255,"example":"https://acmeplumbing.example.com","description":"Your business's public website address, including https://. Leave blank if your business has no website."},"fein":{"type":"string","description":"US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent.","example":"12-3456789"},"industry":{"type":"string","description":"The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category.","example":"technology","enum":["accounting","finance","billing","collections","business","charity","nonprofit","communications","telecom","customer service","support","delivery","shipping","logistics","education","financial","banking","government","public","healthcare","health","pharmacy","medical","insurance","legal","law","notifications","scheduling","real estate","property","retail","ecommerce","sales","marketing","software","technology","tech","media","surveys","market research","travel","hospitality","hotel"]},"number_of_employees":{"type":"string","enum":["1-10","11-50","51-200","201-500","501-2000","2001-10000","10001+"],"example":"51-200","description":"Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count."},"organization_legal_type":{"type":"string","enum":["corporation","llc","partnership","nonprofit","other"],"example":"llc","description":"Legal-entity form. Pick the form that matches your incorporation documents:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting."},"doing_business_as":{"type":"string","maxLength":255,"example":"Acme Plumbing","description":"The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name."},"jurisdiction_of_incorporation":{"type":"string","maxLength":255,"example":"Delaware","description":"The state, province, or country where your business was legally incorporated, for example Delaware."},"customer_reference":{"type":"string","maxLength":255,"description":"Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting.","example":"internal-id-12345"},"primary_business_domain_sic_code":{"type":"string","nullable":true,"description":"The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure."},"corporate_registration_number":{"type":"string","nullable":true,"description":"The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation."},"professional_license_number":{"type":"string","nullable":true,"description":"If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply."},"dun_bradstreet_number":{"type":"string","nullable":true,"description":"Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one."},"organization_contact":{"$ref":"#/components/schemas/OrganizationContact"},"billing_contact":{"$ref":"#/components/schemas/BillingContact"},"organization_physical_address":{"$ref":"#/components/schemas/PhysicalAddress"},"billing_address":{"$ref":"#/components/schemas/BillingAddress"}}},"EnterpriseEmailVerificationConfirmRequest":{"type":"object","required":["code"],"properties":{"code":{"type":"string","minLength":6,"maxLength":6,"pattern":"^\\d{6}$","description":"The 6-digit code sent to the enterprise account's contact email.","example":"482915"}}},"EnterpriseEmailVerificationStatus":{"type":"object","description":"Verification state for an enterprise account's contact email.","required":["record_type","email_verified","status"],"properties":{"record_type":{"type":"string","enum":["email_verification"],"description":"Always `email_verification`.","example":"email_verification","readOnly":true},"email_verified":{"type":"boolean","description":"Whether the enterprise account's contact email has been confirmed.","example":false},"status":{"type":"string","enum":["sent","verified"],"description":"`sent` after a code is emailed; `verified` after a successful confirm.","example":"sent"},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"When the code just sent stops being accepted. Present on a send response; null on a confirm response.","example":"2026-07-30T17:15:00Z","readOnly":true},"sends_remaining_today":{"type":"integer","nullable":true,"description":"How many more codes may be requested for this enterprise account today. Present on a send response; null on a confirm response.","example":9,"readOnly":true}}},"EnterpriseEmailVerificationStatusWrapped":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EnterpriseEmailVerificationStatus"}}},"EnterpriseListPublic":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EnterprisePublic"}},"meta":{"$ref":"#/components/schemas/branded-calling_PaginationMeta"}}},"EnterprisePublic":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"4a6192a4-573d-446d-b3ce-aff9117272a6","readOnly":true},"legal_name":{"type":"string","example":"Acme Plumbing LLC","description":"Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters."},"organization_type":{"type":"string","example":"commercial"},"country_code":{"type":"string","example":"US"},"role_type":{"type":"string","enum":["enterprise","bpo"],"example":"enterprise"},"website":{"type":"string","example":"https://acmeplumbing.example.com","description":"Your business's public website address, including https://. Leave blank if your business has no website."},"fein":{"type":"string","example":"12-3456789","description":"US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent."},"industry":{"type":"string","example":"technology","description":"The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category."},"number_of_employees":{"type":"string","example":"51-200","description":"Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count."},"organization_legal_type":{"type":"string","example":"llc","description":"Legal-entity form. Pick the form that matches your incorporation documents:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting."},"doing_business_as":{"type":"string","example":"Acme Plumbing","description":"The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name."},"jurisdiction_of_incorporation":{"type":"string","example":"Delaware","description":"The state, province, or country where your business was legally incorporated, for example Delaware."},"customer_reference":{"type":"string","description":"Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting.","example":"internal-id-12345"},"primary_business_domain_sic_code":{"type":"string","nullable":true,"description":"The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure.","example":null},"corporate_registration_number":{"type":"string","nullable":true,"description":"The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation.","example":null},"professional_license_number":{"type":"string","nullable":true,"description":"If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply.","example":null},"dun_bradstreet_number":{"type":"string","nullable":true,"description":"Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one.","example":null},"organization_contact":{"$ref":"#/components/schemas/OrganizationContact"},"billing_contact":{"$ref":"#/components/schemas/BillingContact"},"organization_physical_address":{"$ref":"#/components/schemas/PhysicalAddress"},"billing_address":{"$ref":"#/components/schemas/BillingAddress"},"created_at":{"type":"string","format":"date-time","example":"2026-04-26T18:06:51.940749Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","example":"2026-04-26T18:09:24.785211Z","readOnly":true},"branded_calling_enabled":{"type":"boolean","description":"True once Branded Calling has been activated on this enterprise (see `POST /enterprises/{id}/branded_calling`)."},"number_reputation_enabled":{"type":"boolean","description":"True once Phone Number Reputation has been enabled on this enterprise (see `POST /enterprises/{id}/reputation`)."},"bpo_verification_status":{"type":"string","enum":["pending","approved","rejected"],"nullable":true,"description":"Whether Telnyx has approved this BPO (Business Process Outsourcer) account. Only set for accounts created with `role_type` `bpo`; `null` for normal enterprises. A BPO enterprise must be `approved` before a DIR can be linked to it through `bpo_authorizations`.","example":"approved"},"bpo_verification_rejection_reason":{"type":"string","nullable":true,"description":"Reason Telnyx rejected the BPO (Business Process Outsourcer) verification, when `bpo_verification_status` is `rejected`; `null` otherwise.","example":"Business registration document could not be verified."}}},"EnterprisePublicWrapped":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/EnterprisePublic"}}},"EnterpriseReputationCreate":{"type":"object","required":["loa_document_id"],"additionalProperties":false,"properties":{"loa_document_id":{"type":"string","minLength":1,"maxLength":255,"description":"Id of the signed Letter of Authorization document, returned by the Telnyx Documents API after upload (upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c"},"check_frequency":{"allOf":[{"$ref":"#/components/schemas/ReputationCheckFrequency"}],"default":"business_daily","description":"Refresh cadence. Defaults to `business_daily` if omitted."}}},"EnterpriseReputationLoaRender":{"type":"object","description":"All fields optional. The enterprise identity, address, and authorized-representative contact are read from the enterprise record keyed by the path parameter.","properties":{"agent":{"$ref":"#/components/schemas/number-reputation_AgentInput"},"signature":{"$ref":"#/components/schemas/LoaSignaturePayload"}}},"EnterpriseReputationLoaUpdate":{"type":"object","required":["loa_document_id"],"properties":{"loa_document_id":{"type":"string","minLength":1,"maxLength":255,"description":"Id of the new signed LOA document (from the Telnyx Documents API). Changing it resets LOA approval; the new document must be approved before more numbers can be added.","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c"}}},"EnterpriseReputationPublic":{"type":"object","properties":{"enterprise_id":{"type":"string","format":"uuid","example":"4a6192a4-573d-446d-b3ce-aff9117272a6"},"status":{"$ref":"#/components/schemas/ReputationStatus"},"check_frequency":{"$ref":"#/components/schemas/ReputationCheckFrequency"},"loa_document_id":{"type":"string","nullable":true,"description":"Id of the signed LOA document.","example":"2a7e8337-e803-4057-a4ae-26c40eb0bc6c"},"loa_status":{"$ref":"#/components/schemas/ReputationLoaStatusPublic"},"rejection_reasons":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Populated when `status` is `rejected`."},"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"}}},"EnterpriseUpdate":{"type":"object","description":"All fields are optional; only the ones supplied are updated. The same field-level rules from `EnterpriseCreateRequest` apply.","properties":{"legal_name":{"type":"string","description":"Your business's full registered legal name, exactly as it appears on your incorporation or tax documents, 3 to 64 characters.","minLength":3,"maxLength":64},"website":{"type":"string","format":"uri","maxLength":255,"description":"Your business's public website address, including https://. Leave blank if your business has no website."},"fein":{"type":"string","description":"US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent."},"industry":{"type":"string","description":"The industry your business operates in. Choose the closest match from the list; if your value is not accepted, pick the nearest category.","enum":["accounting","finance","billing","collections","business","charity","nonprofit","communications","telecom","customer service","support","delivery","shipping","logistics","education","financial","banking","government","public","healthcare","health","pharmacy","medical","insurance","legal","law","notifications","scheduling","real estate","property","retail","ecommerce","sales","marketing","software","technology","tech","media","surveys","market research","travel","hospitality","hotel"]},"number_of_employees":{"type":"string","description":"Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current employee count."},"organization_legal_type":{"type":"string","description":"Legal-entity form. Pick the form that matches your incorporation documents:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional documents during vetting."},"doing_business_as":{"type":"string","maxLength":255,"description":"The trade name your business operates under if it is different from your legal name, also called a Doing Business As (DBA) name. Leave blank if you only use your legal name."},"customer_reference":{"type":"string","maxLength":255,"description":"Your own label for this account. Enter any reference that helps you find it in your records. Telnyx does not use it during vetting."},"primary_business_domain_sic_code":{"type":"string","nullable":true,"description":"The 4-digit Standard Industrial Classification code for your main line of business, which tells us what industry you operate in. Look it up in the SIC code directory if you are unsure."},"corporate_registration_number":{"type":"string","nullable":true,"description":"The official number your company received when it was legally registered or incorporated (for example from your state or national business registry). It is on your certificate of incorporation."},"professional_license_number":{"type":"string","nullable":true,"description":"If your business operates under a professional license (for example legal, medical, or financial services), enter the license number issued by the licensing authority. Leave blank if it does not apply."},"dun_bradstreet_number":{"type":"string","nullable":true,"description":"Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business. Leave blank if you do not have one."},"organization_contact":{"$ref":"#/components/schemas/OrganizationContact"},"billing_contact":{"$ref":"#/components/schemas/BillingContact"},"organization_physical_address":{"$ref":"#/components/schemas/PhysicalAddress"},"billing_address":{"$ref":"#/components/schemas/BillingAddress"},"jurisdiction_of_incorporation":{"type":"string","maxLength":255,"description":"The state, province, or country where your business was legally incorporated, for example Delaware.","example":"Delaware"}}},"EntityType":{"title":"EntityType","enum":["PRIVATE_PROFIT","PUBLIC_PROFIT","NON_PROFIT","GOVERNMENT","SOLE_PROPRIETOR"],"description":"Entity type behind the brand. This is the form of business establishment.","example":"PRIVATE_PROFIT","type":"string"},"EnumObjecToObjecttResponse":{"title":"EnumObjecToObjecttResponse","type":"object","additionalProperties":true,"example":{"PROFESSIONAL":{"industryId":"professional-services","displayName":"Professional Services","description":"Professional services."},"REAL_ESTATE":{"industryId":"real-estate","displayName":"Real Estate","description":"Buying and Selling of residential and commercial properties."}}},"EnumObjectListResponse":{"title":"EnumObjectListResponse","type":"array","items":{"type":"object","additionalProperties":true},"example":[{"networkId":10000,"displayName":"string","osrBitmaskIndex":32}]},"EnumObjectToStringResponse":{"title":"EnumObjectToStringResponse","type":"object","additionalProperties":true,"example":{"AREIS":"AREIS","BANDW":"Bandwidth","SINCH":"Sinch"}},"EnumPaginatedResponse":{"title":"EnumPaginatedResponse","type":"object","required":["page","totalRecords","records"],"properties":{"page":{"type":"integer"},"totalRecords":{"type":"integer"},"records":{"type":"array","items":{"type":"object","additionalProperties":true}}},"example":{"page":1,"totalRecords":2,"records":[{"isin":"US68243Q1067","iso2":"US","symbol":"FLWS","exchange":"NASDAQ","displayName":"1-800 FLOWERS.COM, Inc."},{"isin":"US88025U1097","iso2":"US","symbol":"TXG","exchange":"NASDAQ","displayName":"10X GENOMICS INC CLASS A"}]}},"EnumStringListResponse":{"title":"EnumStringListResponse","type":"array","items":{"type":"string"},"example":["BASIC_ACCOUNT","SMALL_ACCOUNT","MEDIUM_ACCOUNT","LARGE_ACCOUNT","KEY_ACCOUNT"]},"Error":{"required":["code","title"],"properties":{"code":{"type":"string","x-format":"int64"},"title":{"type":"string"},"description":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","format":"json-pointer"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"example":{"title":"Invalid street address","source":{"pointer":"/street_address"},"code":"20207","description":"The street address provided is invalid."},"type":"object"},"ErrorFrame":{"type":"object","description":"Server-to-client frame indicating an error during synthesis. The connection is closed shortly after.","properties":{"type":{"type":"string","const":"error","description":"Frame type identifier."},"error":{"type":"string","description":"Error message describing what went wrong."}}},"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/billing-group_Error"}}},"type":"object"},"EventData":{"properties":{"event_id":{"type":"string","title":"Event Id"},"run_id":{"type":"string","title":"Run Id"},"type":{"$ref":"#/components/schemas/EventType"},"summary":{"type":"string","title":"Summary"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"step_id":{"title":"Step Id","type":"string"},"agent_id":{"title":"Agent Id","type":"string"},"payload":{"title":"Payload","additionalProperties":true,"type":"object"},"idempotency_key":{"title":"Idempotency Key","type":"string"}},"type":"object","required":["event_id","run_id","type","summary","timestamp"],"title":"EventData"},"EventNode":{"type":"object","required":["id","product","event_name","cost","links","record","children"],"properties":{"id":{"type":"string","description":"Event identifier."},"product":{"type":"string","description":"Product that generated this event."},"event_name":{"type":"string","description":"Name of the event type."},"relationship":{"oneOf":[{"$ref":"#/components/schemas/RelationshipInfo"},{"type":"null"}],"description":"Relationship to the parent node, null for root."},"cost":{"$ref":"#/components/schemas/CostInfo"},"links":{"$ref":"#/components/schemas/Links"},"record":{"type":"object","description":"The underlying detail record data. Contents vary by record type.","additionalProperties":true},"children":{"type":"array","items":{"type":"object","title":"EventNode","description":"Recursive reference to EventNode. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/EventNode for the full structure.","additionalProperties":true},"description":"Child events in the session tree."}}},"EventPaginationMeta":{"type":"object","properties":{"page_size":{"type":"integer","minimum":1,"maximum":100},"time_range":{"$ref":"#/components/schemas/TimeRange"},"page_cursor":{"type":"string","description":"Cursor for the next page, when more results are available."}},"required":["page_size","time_range"]},"EventResponse":{"properties":{"data":{"$ref":"#/components/schemas/EventData"}},"type":"object","required":["data"],"title":"EventResponse"},"EventStatus":{"type":"string","enum":["pending","in_progress","completed","failed"],"title":"EventStatus"},"EventType":{"type":"string","enum":["status_change","step_started","step_completed","step_failed","tool_call","tool_result","message","error","custom"],"title":"EventType"},"EventsListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EventData"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"EventsListResponse"},"ExecutionMode":{"type":"string","enum":["external","managed"],"title":"ExecutionMode"},"ExportPortingOrdersCSVReport":{"description":"The parameters for generating a porting orders CSV report.","type":"object","required":["filters"],"properties":{"filters":{"type":"object","description":"The filters to apply to the export porting order CSV report.","properties":{"status__in":{"type":"array","description":"The status of the porting orders to include in the report.","items":{"type":"string","enum":["draft","in-process","submitted","exception","foc-date-confirmed","cancel-pending","ported","cancelled"]}},"customer_reference__in":{"type":"array","description":"The customer reference of the porting orders to include in the report.","items":{"type":"string","example":"my-customer-reference"}},"created_at__lt":{"type":"string","description":"The date and time the porting order was created before.","format":"date-time"},"created_at__gt":{"type":"string","description":"The date and time the porting order was created after.","format":"date-time"}}}}},"ExportPortoutsCSVReport":{"description":"The parameters for generating a port-outs CSV report.","type":"object","required":["filters"],"properties":{"filters":{"type":"object","description":"The filters to apply to the export port-out CSV report.","properties":{"status__in":{"type":"array","description":"The status of the port-outs to include in the report.","items":{"type":"string","enum":["pending","authorized","ported","rejected","rejected-pending","canceled"]}},"customer_reference__in":{"type":"array","description":"The customer reference of the port-outs to include in the report.","items":{"type":"string","example":"my-customer-reference"}},"end_user_name":{"type":"string","description":"The end user name of the port-outs to include in the report.","example":"McPortersen"},"phone_numbers__overlaps":{"type":"array","description":"A list of phone numbers that the port-outs phone numbers must overlap with.","items":{"type":"string","example":"+1234567890"}},"created_at__lt":{"type":"string","description":"The date and time the port-out was created before.","format":"date-time"},"created_at__gt":{"type":"string","description":"The date and time the port-out was created after.","format":"date-time"}}}}},"Expression":{"title":"Expression","description":"A node in a deterministic expression AST. Exactly one variant is selected by the `type` discriminator. Terminal variants (`number_literal`, `string_literal`, `bool_literal`, `variable`) bottom out the recursion; `arithmetic`, `bool_op`, and `comparison` nest further sub-expressions.\n\nExtracted into a single named schema so the recursive union is defined once (was previously inlined at every operand site).","oneOf":[{"$ref":"#/components/schemas/ComparisonExpression"},{"$ref":"#/components/schemas/BooleanOpExpression"},{"type":"object","title":"ArithmeticExpression","description":"Recursive reference to ArithmeticExpression. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/ArithmeticExpression for the full structure.","additionalProperties":true},{"$ref":"#/components/schemas/DynamicVariableExpression"},{"$ref":"#/components/schemas/StringLiteralExpression"},{"$ref":"#/components/schemas/NumberLiteralExpression"},{"$ref":"#/components/schemas/BooleanLiteralExpression"}],"discriminator":{"mapping":{"arithmetic":"#/components/schemas/ArithmeticExpression","bool_literal":"#/components/schemas/BooleanLiteralExpression","bool_op":"#/components/schemas/BooleanOpExpression","comparison":"#/components/schemas/ComparisonExpression","number_literal":"#/components/schemas/NumberLiteralExpression","string_literal":"#/components/schemas/StringLiteralExpression","variable":"#/components/schemas/DynamicVariableExpression"},"propertyName":"type"}},"ExpressionCondition":{"description":"Edge condition evaluated as a deterministic expression AST.\n\nThe expression is computed against runtime dynamic variables and must\nevaluate to a boolean. Prefer this over `LLMCondition` when the rule is\na clean function of known variables — 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"},"ExternalVetting":{"title":"ExternalVetting","type":"object","properties":{"evpId":{"title":"Evpid","maxLength":10,"type":"string","description":"External vetting provider ID for the brand."},"vettingId":{"title":"vettingId","type":"string","description":"Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting."},"vettingToken":{"title":"vettingToken","type":"string","description":"Required by some providers for vetting record confirmation."},"vettingScore":{"title":"vettingScore","type":"integer","description":"Vetting score ranging from 0-100."},"vettingClass":{"title":"Vettingclass","type":"string","description":"Identifies the vetting classification."},"vettedDate":{"title":"vettedDate","type":"string","description":"Vetting effective date. This is the date when vetting was completed, or the starting effective date in ISO 8601 format. If this date is missing, then the vetting was not complete or not valid."},"createDate":{"title":"createDate","type":"string","description":"Vetting submission date. This is the date when the vetting request is generated in ISO 8601 format."}}},"ExternalVettingList":{"title":"External vetting list","type":"array","items":{"$ref":"#/components/schemas/ExternalVetting"}},"ExternalWdrDetailRecordDto":{"type":"object","properties":{"id":{"type":"string","description":"WDR id","example":"3ca7bd3d-7d82-4e07-9df4-009123068320"},"created_at":{"type":"string","description":"Record created time","format":"date-time","example":"2020-07-01T00:00:00-06:00"},"cost":{"$ref":"#/components/schemas/WirelessCost"},"mcc":{"type":"string","description":"Mobile country code.","example":"204"},"mnc":{"type":"string","description":"Mobile network code.","example":"01"},"downlink_data":{"$ref":"#/components/schemas/DownlinkData"},"duration_seconds":{"type":"number","description":"Session duration in seconds.","example":1},"imsi":{"type":"string","description":"International mobile subscriber identity.","example":"123"},"rate":{"$ref":"#/components/schemas/WirelessRate"},"sim_group_name":{"type":"string","description":"Defined sim group name","example":"sim name"},"sim_group_id":{"type":"string","description":"Sim group unique identifier","example":"f05a189f-7c46-4531-ac56-1460dc465a42"},"sim_card_id":{"type":"string","description":"Sim card unique identifier","example":"877f80a6-e5b2-4687-9a04-88076265720f"},"phone_number":{"type":"string","description":"Phone number","example":"+12345678910"},"uplink_data":{"$ref":"#/components/schemas/UplinkData"},"record_type":{"type":"string","example":"wdr"}}},"ExternalWdrGetDetailResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExternalWdrDetailRecordDto"}},"meta":{"$ref":"#/components/schemas/wireless-public_PaginationMeta"}}},"FallbackConfig":{"properties":{"model":{"type":"string","description":"Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable."},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the fallback model API key."},"external_llm":{"$ref":"#/components/schemas/ExternalLLM"}},"type":"object","title":"FallbackConfig"},"FallbackConfigReq":{"properties":{"model":{"type":"string","description":"Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable."},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the fallback model API key."},"external_llm":{"$ref":"#/components/schemas/ExternalLLMReq"}},"type":"object","title":"FallbackConfigReq"},"Fax":{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","example":"fax","enum":["fax"]},"id":{"$ref":"#/components/schemas/Id"},"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"media_url":{"$ref":"#/components/schemas/MediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"from_display_name":{"description":"The string used as the caller id name (SIP From Display Name) presented to the destination (`to` number).","type":"string","example":"Company Name"},"quality":{"$ref":"#/components/schemas/Quality"},"status":{"description":"Status of the fax","type":"string","example":"queued","enum":["queued","media.processed","originated","sending","delivered","failed","initiated","receiving","media.processing","received"]},"webhook_url":{"description":"URL that will receive fax webhooks","type":"string"},"webhook_failover_url":{"description":"Optional failover URL that will receive fax webhooks if webhook_url doesn't return a 2XX response","type":"string"},"store_media":{"description":"Should fax media be stored on temporary URL. It does not support media_name.","type":"boolean"},"stored_media_url":{"description":"If store_media was set to true, this is a link to temporary location. Link expires after 10 minutes.","type":"string"},"preview_url":{"description":"If `store_preview` was set to `true`, this is a link to temporary location. Link expires after 10 minutes.","type":"string"},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"created_at":{"description":"ISO 8601 timestamp when resource was created","type":"string","format":"date-time"},"updated_at":{"description":"ISO 8601 timestamp when resource was updated","type":"string","format":"date-time"},"failure_reason":{"description":"Customer-facing failure reason for the fax. Present on every fax object (null when the fax has not failed). Mapped from the more granular `internal_failure_reason`. Common values include: `receiver_call_dropped`, `sender_call_dropped`, `sender_canceled`, `carrier_lost`, `service_unavailable`, `fax_signaling_error`, `receiver_communication_error`, `sender_communication_error`, `receiver_decline`, `receiver_recovery_on_timer_expire`, `receiver_no_response`, `receiver_invalid_number_format`, `receiver_no_answer`, `receiver_incompatible_destination`, `receiver_unallocated_number`, `destination_unreachable`, `user_busy`, `invalid_ecm_response_from_receiver`, `fax_initial_communication_timeout`, `destination_not_in_service_plan`, `account_disabled`, `destination_invalid`, `no_outbound_profile`, `destination_not_in_countries_whitelist`, `user_channel_limit_exceeded`, `outbound_profile_channel_limit_exceeded`, `connection_channel_limit_exceeded`, `outbound_profile_daily_spend_limit_exceeded`, `unverified_origination_number`, `unverified_destination_not_allowed`, `file_format_invalid`, `file_download_failed`, `file_size_limit_exceeded`, `page_count_limit_exceeded`, `media_processing_exception`.","type":["string","null"],"example":null},"internal_failure_reason":{"description":"Internal, more granular failure reason for the fax. Present on every fax object (null when the fax has not failed). Useful for deeper debugging beyond the customer-facing `failure_reason`.","type":["string","null"],"example":null}},"example":{"record_type":"fax","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","connection_id":"c-1","direction":"outbound","from":"+123","to":"+456","media_url":"http://www.example.com/fax.pdf","store_media":true,"stored_media_url":"https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51","preview_url":"https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b_preview.tiff?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51","quality":"high","webhook_url":"http://www.example.com/webhooks","webhook_failover_url":"","status":"queued","failure_reason":null,"internal_failure_reason":null,"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","created_at":"2020-05-05T09:59:12Z","updated_at":"2020-05-05T09:59:12Z"}},"FaxApplication":{"type":"object","title":"Fax Application","properties":{"id":{"$ref":"#/components/schemas/IntId"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"fax_application"},"application_name":{"$ref":"#/components/schemas/ApplicationName"},"active":{"$ref":"#/components/schemas/ConnectionActive"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"webhook_event_url":{"$ref":"#/components/schemas/WebhookEventUrl"},"webhook_event_failover_url":{"$ref":"#/components/schemas/WebhookEventFailoverUrl"},"webhook_timeout_secs":{"$ref":"#/components/schemas/WebhookTimeoutSecs"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the Fax Application.","example":["tag1","tag2"],"default":[]},"inbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent inbound calls to phone numbers associated with this connection.","default":null,"example":10},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls.","default":null,"example":"example"},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"default":"from_anyone","example":"only_my_connections"}}},"outbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent outbound calls to phone numbers associated with this connection.","default":null,"example":10},"outbound_voice_profile_id":{"$ref":"#/components/schemas/OutboundVoiceProfileId"}}},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"1293384261075731499","record_type":"fax_application","application_name":"fax-router","active":false,"anchorsite_override":"Amsterdam, Netherlands","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_timeout_secs":25,"inbound":{"channel_limit":10,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"},"created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"}},"FaxDelivered":{"type":"object","example":{"data":{"event_type":"fax.delivered","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"call_duration_secs":25,"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","page_count":2,"status":"delivered","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}},"properties":{"data":{"type":"object","properties":{"record_type":{"$ref":"#/components/schemas/programmable-fax_RecordType"},"id":{"$ref":"#/components/schemas/Id"},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 datetime of when the event occurred.","example":"2020-05-05T13:08:22.039204Z"},"event_type":{"type":"string","example":"fax.delivered","enum":["fax.delivered"],"description":"The type of event being delivered."},"payload":{"type":"object","properties":{"call_duration_secs":{"description":"The duration of the call in seconds.","type":"integer","example":25},"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"fax_id":{"$ref":"#/components/schemas/FaxId"},"original_media_url":{"$ref":"#/components/schemas/OriginalMediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"user_id":{"$ref":"#/components/schemas/UserId"},"page_count":{"description":"Number of transferred pages","type":"integer","example":2},"status":{"type":"string","example":"delivered","enum":["delivered"],"description":"The status of the fax."},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}},"meta":{"type":"object","description":"Metadata about the webhook delivery.","properties":{"attempt":{"type":"integer","description":"The delivery attempt number.","example":1},"delivered_to":{"type":"string","format":"uri","description":"The URL the webhook was delivered to.","example":"https://www.example.com/webhooks"}}}}},"FaxEmailRecipient":{"title":"Fax Email Recipient","type":["string","null"],"description":"Specifies an email address where faxes sent to this application will be forwarded to (as pdf or tiff attachments)","default":null,"example":"user@example.com"},"FaxFailed":{"type":"object","example":{"data":{"event_type":"fax.failed","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","failure_reason":"receiver_call_dropped","internal_failure_reason":"fs_fax_call_dropped","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"failed","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}},"properties":{"data":{"type":"object","properties":{"record_type":{"$ref":"#/components/schemas/programmable-fax_RecordType"},"id":{"$ref":"#/components/schemas/Id"},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 datetime of when the event occurred.","example":"2020-05-05T13:08:22.039204Z"},"event_type":{"type":"string","example":"fax.failed","enum":["fax.failed"],"description":"The type of event being delivered."},"payload":{"type":"object","properties":{"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"fax_id":{"$ref":"#/components/schemas/FaxId"},"original_media_url":{"$ref":"#/components/schemas/OriginalMediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"user_id":{"$ref":"#/components/schemas/UserId"},"failure_reason":{"type":"string","description":"Customer-facing cause of the fax failure. Mapped from the more granular `internal_failure_reason`.","example":"receiver_call_dropped"},"internal_failure_reason":{"type":"string","description":"Internal, more granular cause of the fax failure. Useful for deeper debugging beyond the customer-facing `failure_reason`.","example":"fs_fax_call_dropped"},"status":{"type":"string","example":"failed","enum":["failed"],"description":"The status of the fax."},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}},"meta":{"type":"object","description":"Metadata about the webhook delivery.","properties":{"attempt":{"type":"integer","description":"The delivery attempt number.","example":1},"delivered_to":{"type":"string","format":"uri","description":"The URL the webhook was delivered to.","example":"https://www.example.com/webhooks"}}}}},"FaxId":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Identifies the fax."},"FaxMediaProcessed":{"type":"object","example":{"data":{"event_type":"fax.media.processed","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"media.processed","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}},"properties":{"data":{"type":"object","properties":{"record_type":{"$ref":"#/components/schemas/programmable-fax_RecordType"},"id":{"$ref":"#/components/schemas/Id"},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 datetime of when the event occurred.","example":"2020-05-05T13:08:22.039204Z"},"event_type":{"type":"string","example":"fax.media.processed","enum":["fax.media.processed"],"description":"The type of event being delivered."},"payload":{"type":"object","properties":{"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"fax_id":{"$ref":"#/components/schemas/FaxId"},"original_media_url":{"$ref":"#/components/schemas/OriginalMediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"user_id":{"$ref":"#/components/schemas/UserId"},"status":{"type":"string","example":"media.processed","enum":["media.processed"],"description":"The status of the fax."},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}},"meta":{"type":"object","description":"Metadata about the webhook delivery.","properties":{"attempt":{"type":"integer","description":"The delivery attempt number.","example":1},"delivered_to":{"type":"string","format":"uri","description":"The URL the webhook was delivered to.","example":"https://www.example.com/webhooks"}}}}},"FaxQueued":{"type":"object","example":{"data":{"event_type":"fax.queued","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"queued","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}},"properties":{"data":{"type":"object","properties":{"record_type":{"$ref":"#/components/schemas/programmable-fax_RecordType"},"id":{"$ref":"#/components/schemas/Id"},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 datetime of when the event occurred.","example":"2020-05-05T13:08:22.039204Z"},"event_type":{"type":"string","example":"fax.queued","enum":["fax.queued"],"description":"The type of event being delivered."},"payload":{"type":"object","properties":{"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"fax_id":{"$ref":"#/components/schemas/FaxId"},"original_media_url":{"$ref":"#/components/schemas/OriginalMediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"user_id":{"$ref":"#/components/schemas/UserId"},"status":{"type":"string","example":"queued","enum":["queued"],"description":"The status of the fax."},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}},"meta":{"type":"object","description":"Metadata about the webhook delivery.","properties":{"attempt":{"type":"integer","description":"The delivery attempt number.","example":1},"delivered_to":{"type":"string","format":"uri","description":"The URL the webhook was delivered to.","example":"https://www.example.com/webhooks"}}}}},"FaxSendingStarted":{"type":"object","example":{"data":{"event_type":"fax.sending.started","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"sending","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}},"properties":{"data":{"type":"object","properties":{"record_type":{"$ref":"#/components/schemas/programmable-fax_RecordType"},"id":{"$ref":"#/components/schemas/Id"},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 datetime of when the event occurred.","example":"2020-05-05T13:08:22.039204Z"},"event_type":{"type":"string","example":"fax.sending.started","enum":["fax.sending.started"],"description":"The type of event being delivered."},"payload":{"type":"object","properties":{"connection_id":{"$ref":"#/components/schemas/ConnectionId"},"direction":{"$ref":"#/components/schemas/Direction"},"fax_id":{"$ref":"#/components/schemas/FaxId"},"original_media_url":{"$ref":"#/components/schemas/OriginalMediaUrl"},"media_name":{"$ref":"#/components/schemas/MediaName"},"to":{"$ref":"#/components/schemas/To"},"from":{"$ref":"#/components/schemas/From"},"user_id":{"$ref":"#/components/schemas/UserId"},"status":{"type":"string","example":"sending","enum":["sending"],"description":"The status of the fax."},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}},"meta":{"type":"object","description":"Metadata about the webhook delivery.","properties":{"attempt":{"type":"integer","description":"The delivery attempt number.","example":1},"delivered_to":{"type":"string","format":"uri","description":"The URL the webhook was delivered to.","example":"https://www.example.com/webhooks"}}}}},"Feature":{"properties":{"name":{"type":"string","example":"sms"}},"example":{"name":"sms"},"type":"object"},"FieldMapping":{"type":"object","required":["local_field","parent_field"],"properties":{"local_field":{"type":"string","description":"Field name on the child record."},"parent_field":{"type":"string","description":"Field name on the parent record."}}},"Filter":{"type":"object","description":"Query filter criteria. Note: The first filter object must specify filter_type as 'and'. You cannot follow an 'or' with another 'and'.","properties":{"filter_type":{"type":"string","description":"Logical operator for combining filters","enum":["and","or"]},"cli":{"type":"string","description":"Calling line identification (caller ID)","example":"+13129457420"},"cli_filter":{"type":"string","description":"Filter type for CLI matching","enum":["contains","starts_with","ends_with"]},"cld":{"type":"string","description":"Called line identification (destination number)","example":"+13129457420"},"cld_filter":{"type":"string","description":"Filter type for CLD matching","enum":["contains","starts_with","ends_with"]},"tags_list":{"type":"string","description":"Tag name to filter by","example":"tag1"},"billing_group":{"type":"string","description":"Billing group UUID to filter by","example":"adfaa016-f921-4b6c-97bb-e4c1dad231c5"}}},"FinalFrame":{"type":"object","description":"Server-to-client frame indicating synthesis is complete for the current text.","properties":{"type":{"type":"string","const":"final","description":"Frame type identifier."},"audio":{"type":"null","description":"Always `null` for the final frame."},"text":{"type":"string","description":"Empty string."},"isFinal":{"type":"boolean","description":"Always `true`.","const":true},"timeToFirstAudioFrameMs":{"type":"integer","description":"Present if this was the first response frame."}}},"FineTuningJob":{"type":"object","title":"FineTuningJob","description":"The `fine_tuning.job` object represents a fine-tuning job that has been created through the API.","properties":{"id":{"type":"string","description":"The name of the fine-tuned model that is being created."},"created_at":{"type":"integer","description":"The Unix timestamp (in seconds) for when the fine-tuning job was created."},"finished_at":{"type":["integer","null"],"description":"The Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if the fine-tuning job is still running."},"hyperparameters":{"type":"object","description":"The hyperparameters used for the fine-tuning job.","properties":{"n_epochs":{"type":"integer","minimum":1,"maximum":10,"default":3,"description":"The number of epochs to train the model for. An epoch refers to one full cycle through the training dataset."}},"required":["n_epochs"]},"model":{"type":"string","description":"The base model that is being fine-tuned."},"organization_id":{"type":"string","description":"The organization that owns the fine-tuning job."},"status":{"type":"string","description":"The current status of the fine-tuning job.","enum":["queued","running","succeeded","failed","cancelled"]},"trained_tokens":{"type":["integer","null"],"description":"The total number of billable tokens processed by this fine-tuning job. The value will be null if the fine-tuning job is still running."},"training_file":{"type":"string","description":"The storage bucket or object used for training."}},"required":["created_at","finished_at","hyperparameters","id","model","organization_id","status","trained_tokens","training_file"]},"FineTuningJobsListData":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FineTuningJob"},"type":"array"}},"type":"object","required":["data"],"title":"FineTuningJobListData"},"FirstCommandTimeout":{"title":"First Command Timeout","type":"boolean","description":"Specifies whether calls to phone numbers associated with this connection should hangup after timing out.","default":false,"example":true},"FirstCommandTimeoutSecs":{"title":"First Command Timeout Secs","type":"integer","description":"Specifies how many seconds to wait before timing out a dial command.","default":30,"example":10},"FlowEdge":{"description":"Directed transition from one node to a target, gated by a condition.\n\nThe target is either another node in the same flow (`NodeTarget`) or a\ndifferent assistant (`AssistantTarget`). Multiple edges may share a\n`start_node_id`. On calls, `expression` conditions are evaluated before\nthe model turn and take precedence over `llm` conditions regardless of\ndeclaration order, while `llm` conditions are offered to the assistant's\nmodel as transition tools and fire when the model selects one. On chat\nchannels, an `expression` condition that is true when the turn begins\nroutes before the reply is generated; all conditioned edges that remain\nare considered together in declaration order after the reply, and the\nfirst true one wins.","properties":{"condition":{"description":"Condition that gates the transition. Discriminated by `type`: `llm`, `expression`.","discriminator":{"mapping":{"expression":"#/components/schemas/ExpressionCondition","llm":"#/components/schemas/LLMCondition","default":"#/components/schemas/DefaultCondition"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/LLMCondition"},{"$ref":"#/components/schemas/ExpressionCondition"},{"$ref":"#/components/schemas/DefaultCondition"}],"title":"Condition"},"id":{"description":"Caller-supplied unique identifier for this edge within the flow.","example":"e_age_gate","title":"Id","type":"string"},"start_node_id":{"description":"ID of the node this edge transitions away from.","title":"Start Node Id","type":"string"},"target":{"description":"Destination of the transition. Discriminated by `type`: `node` (jump to another node in this flow) or `assistant` (hand off to a different assistant).","discriminator":{"mapping":{"assistant":"#/components/schemas/AssistantTarget","node":"#/components/schemas/NodeTarget"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/NodeTarget"},{"$ref":"#/components/schemas/AssistantTarget"}],"title":"Target"}},"required":["id","start_node_id","target","condition"],"title":"FlowEdge","type":"object"},"FlowNode":{"description":"One step in a conversation flow, as returned by the API.","properties":{"external_llm":{"$ref":"#/components/schemas/ExternalLLM","description":"Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — 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.\n\nEach node carries the prompt, tool scope, and optional overrides for\nmodel/voice/transcription. Unset overrides cascade from the assistant.","example":{"id":"n_intake","instructions":"Greet the caller and ask what they're calling about.","name":"Intake","position":{"x":120,"y":80},"shared_tool_ids":["tool-faq-kb"],"type":"prompt"},"properties":{"external_llm":{"$ref":"#/components/schemas/ExternalLLMReq","description":"Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — 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."},"type":{"const":"prompt","default":"prompt","description":"Node kind discriminator. `prompt` (default) is an LLM-driven step; `tool` is a standalone tool execution and `speak` a scripted message (see `ToolNodeReq` / `SpeakNodeReq`).","title":"Type","type":"string"},"voice_settings":{"$ref":"#/components/schemas/inference-embedding_VoiceSettings","description":"Per-node voice override. Only fields set here override the assistant-level voice settings; unset fields cascade."}},"required":["id","instructions"],"title":"FlowNodeReq","type":"object"},"ForbiddenError":{"allOf":[{"$ref":"#/components/schemas/GenericError"},{"properties":{"code":{"example":"10010","type":"string"},"title":{"example":"Authorization failed","type":"string"},"detail":{"example":"You do not have permission to perform the requested action on the specified resource or resources.","type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","example":"https://developers.telnyx.com/docs/overview/errors/10010"}}}},"type":"object"}]},"ForgetResponse":{"properties":{"data":{"$ref":"#/components/schemas/ForgottenProfile"}},"type":"object","required":["data"],"title":"ForgetResponse"},"ForgetSourceResponse":{"properties":{"data":{"$ref":"#/components/schemas/ForgottenSource"}},"type":"object","required":["data"],"title":"ForgetSourceResponse"},"ForgottenProfile":{"properties":{"profile_id":{"type":"string","title":"Profile Id"},"memories_deleted":{"type":"integer","title":"Memories Deleted","description":"Memories the profile held and no longer does, counted before and after. A report rather than an audit: memory moves in the background between the two counts. The status carries the outcome."}},"type":"object","required":["profile_id","memories_deleted"],"title":"ForgottenProfile"},"ForgottenSource":{"properties":{"profile_id":{"type":"string","title":"Profile Id"},"source_id":{"type":"string","title":"Source Id","description":"Identifies one source within its profile: an ingested session, or one remembered fact. Returned by `ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id."},"memories_deleted":{"type":"integer","title":"Memories Deleted","description":"Memories the profile held and no longer does, counted before and after across the whole profile: it includes memories derived from this source together with others, and anything else the profile lost in between. A report rather than an audit. The status carries the outcome."}},"type":"object","required":["profile_id","source_id","memories_deleted"],"title":"ForgottenSource"},"ForwardEmailInboxMessageRequest":{"type":"object","properties":{"to":{"$ref":"#/components/schemas/RequiredInboxActionRecipientInput"},"cc":{"$ref":"#/components/schemas/InboxActionRecipientInput"},"bcc":{"$ref":"#/components/schemas/InboxActionRecipientInput"},"text":{"type":"string","description":"Optional plain-text note prepended to the generated forwarded-message block. Blank values are treated as omitted."},"html":{"type":"string","description":"Optional HTML note prepended to the generated forwarded-message block. Blank values are treated as omitted."}},"required":["to"]},"Fqdn":{"type":"object","title":"Fqdn","properties":{"id":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"fqdn"},"connection_id":{"type":"string","description":"ID of the FQDN connection to which this FQDN is attached."},"fqdn":{"type":"string","description":"FQDN represented by this resource.","example":"example.com"},"port":{"type":"integer","description":"Port to use when connecting to this FQDN.","default":5060,"example":5060},"dns_record_type":{"type":"string","description":"The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used.","example":"a"},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"1293384261075731499","record_type":"fqdn","connection_id":"1516447646313612565","fqdn":"example.com","port":5060,"dns_record_type":"a","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"}},"FqdnAuthentication":{"type":"object","title":"FQDN Authentication","properties":{"id":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"fqdn_authentication"},"connection_id":{"type":"string","description":"The ID of the FQDN connection this authentication strategy belongs to.","example":"1293384261075731499"},"user_name":{"type":"string","description":"The username for authentication."},"password":{"type":"string","description":"The password for authentication. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected."},"ip_authentication_method":{"type":"string","description":"The IP authentication method.","enum":["token","p-charge-info"]},"fqdn_outbound_authentication":{"type":"string","description":"The outbound authentication type.","enum":["ip-authentication","credential-authentication"]},"webhook_url":{"type":"string","format":"uri","description":"The webhook URL for authentication events."},"failover_url":{"type":"string","format":"uri","description":"The failover webhook URL."},"microsoft_teams_sbc":{"type":"boolean","description":"Whether the connection is a Microsoft Teams SBC.","default":false},"txt_name":{"type":"string","description":"The TXT record name for Microsoft Teams SBC DNS verification."},"txt_value":{"type":"string","description":"The TXT record value for Microsoft Teams SBC DNS verification."},"txt_ttl":{"type":"integer","description":"The TTL for the TXT record."}}},"FqdnConnection":{"type":"object","title":"FQDN Connection","required":["connection_name"],"properties":{"id":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"fqdn_connection"},"active":{"type":"boolean","description":"Defaults to true"},"conversation_persistence":{"type":"boolean","description":"Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false."},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"$ref":"#/components/schemas/ConnectionName"},"transport_protocol":{"$ref":"#/components/schemas/FqdnConnectionTransportProtocol"},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"microsoft_teams_sbc":{"type":"boolean","description":"The connection is enabled for Microsoft Teams Direct Routing.","default":false},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according to each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"user_name":{"type":"string","description":"The username for the FQDN connection."},"password":{"type":"string","description":"The password for the FQDN connection. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected."},"rtp_pass_codecs_on_stream_change":{"type":"boolean","description":"Defines if codecs should be passed on stream change."},"adjust_dtmf_timestamp":{"type":"boolean","description":"Indicates whether DTMF timestamp adjustment is enabled."},"ignore_dtmf_duration":{"type":"boolean","description":"Indicates whether DTMF duration should be ignored."},"ignore_mark_bit":{"type":"boolean","description":"Indicates whether the mark bit should be ignored."},"call_cost_enabled":{"type":"boolean","description":"Indicates whether call cost calculation is enabled."},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"send_normalized_timestamps":{"type":"boolean","description":"Indicates whether normalized timestamps should be sent."},"third_party_control_enabled":{"type":"boolean","description":"Indicates whether third-party control is enabled."},"txt_name":{"type":"string","description":"The name for the TXT record associated with the FQDN connection."},"txt_value":{"type":"string","description":"The value for the TXT record associated with the FQDN connection."},"txt_ttl":{"type":"integer","description":"The time to live for the TXT record associated with the FQDN connection."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"webhook_event_url":{"$ref":"#/components/schemas/WebhookEventUrl"},"webhook_event_failover_url":{"$ref":"#/components/schemas/WebhookEventFailoverUrl"},"webhook_api_version":{"$ref":"#/components/schemas/WebhookApiVersion"},"webhook_timeout_secs":{"$ref":"#/components/schemas/WebhookTimeoutSecs"},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"created_at":{"$ref":"#/components/schemas/CreatedAt"},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"},"inbound":{"$ref":"#/components/schemas/InboundFqdn"},"outbound":{"$ref":"#/components/schemas/OutboundFqdn"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"id":"1293384261075731499","record_type":"fqdn_connection","active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"string","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":10,"shaken_stir_enabled":true},"outbound":{"ani_override":"string","ani_override_type":"always","call_parking_enabled":true,"channel_limit":10,"generate_ringback_tone":true,"instant_ringback_enabled":true,"ip_authentication_method":"credential-authentication","ip_authentication_token":"string","localization":"string","outbound_voice_profile_id":"1293384261075731499","t38_reinvite_source":"customer","tech_prefix":"string"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}}},"FqdnConnectionTransportProtocol":{"type":"string","description":"One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.","default":"UDP","enum":["UDP","TCP","TLS"]},"From":{"description":"The phone number, in E.164 format, the fax will be sent from.","type":"string","example":"+13125790015"},"FuncInvocationLog":{"type":"object","properties":{"record_type":{"type":"string","const":"compute_func_invocation_log"},"timestamp":{"type":"string","format":"date-time"},"method":{"type":"string"},"path":{"type":"string"},"status_code":{"type":"integer"},"duration_ms":{"type":"number"},"request_size_bytes":{"type":"integer"},"response_size_bytes":{"type":"integer"},"region":{"type":"string"}}},"FuncInvocationLogsResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/LogsMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/FuncInvocationLog"}}}},"FuncLogExportConfig":{"type":"object","description":"Metadata-only view of a function's log export destination. Header values are write-only (encrypted server-side) and never appear in any response.","properties":{"record_type":{"type":"string","enum":["compute_func_log_export_config"]},"id":{"type":"string","description":"Configuration record ID"},"func_id":{"type":"string","description":"Function ID this configuration belongs to"},"endpoint":{"type":"string","format":"uri","description":"HTTPS OTLP endpoint URL logs are pushed to"},"enabled":{"type":"boolean","description":"Whether export is enabled for this function"},"runtime_export_enabled":{"type":"boolean","description":"Whether runtime logs (function stdout/stderr) are exported"},"invocation_export_enabled":{"type":"boolean","description":"Whether invocation records (one per HTTP request) are exported"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"FuncLogExportConfigResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FuncLogExportConfig"}}},"FuncLogExportConfigSetRequest":{"type":"object","description":"Full-replace configuration body. All fields are required on every call: the API treats PUT as a replace (RFC 7231), so omitting any field is a 422, not \"keep the current value\".","required":["endpoint","headers","runtime_export_enabled","invocation_export_enabled"],"properties":{"endpoint":{"type":"string","format":"uri","description":"HTTPS URL to push logs to"},"headers":{"type":"object","description":"Headers attached to every export push, as key-value pairs (e.g. an auth token the collector expects). Required even when empty — {} 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"}}}}}}}},"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.<voice_id>` 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 `<Provider>.<Model>.<VoiceId>`. Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.<VoiceId>` (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.<VoiceId>` (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.<ModelId>.<VoiceId>` (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\": \"<secret_identifier>\"}`. 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.<model_id>.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<ModelId>.<VoiceId>` (e.g., `FishAudio.s2.1-pro.<reference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.<ModelId>.<VoiceId>` (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.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.<VoiceId>` (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\nFor service_level basic, you may define the gender of the speaker (male or female).","type":"string","example":"Telnyx.KokoroTTS.af"},"voice_settings":{"description":"The settings associated with the voice selected","oneOf":[{"$ref":"#/components/schemas/ElevenLabsVoiceSettings"},{"$ref":"#/components/schemas/TelnyxVoiceSettings"},{"$ref":"#/components/schemas/AWSVoiceSettings"},{"$ref":"#/components/schemas/MinimaxVoiceSettings"},{"$ref":"#/components/schemas/AzureVoiceSettings"},{"$ref":"#/components/schemas/ResembleVoiceSettings"},{"$ref":"#/components/schemas/InworldVoiceSettings"},{"$ref":"#/components/schemas/XAIVoiceSettings"},{"$ref":"#/components/schemas/SonioxVoiceSettings"}],"discriminator":{"propertyName":"type","mapping":{"elevenlabs":"#/components/schemas/ElevenLabsVoiceSettings","telnyx":"#/components/schemas/TelnyxVoiceSettings","aws":"#/components/schemas/AWSVoiceSettings","minimax":"#/components/schemas/MinimaxVoiceSettings","azure":"#/components/schemas/AzureVoiceSettings","resemble":"#/components/schemas/ResembleVoiceSettings","inworld":"#/components/schemas/InworldVoiceSettings","xai":"#/components/schemas/XAIVoiceSettings","soniox":"#/components/schemas/SonioxVoiceSettings"}}},"language":{"description":"The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.","type":"string","enum":["arb","cmn-CN","cy-GB","da-DK","de-DE","en-AU","en-GB","en-GB-WLS","en-IN","en-US","es-ES","es-MX","es-US","fr-CA","fr-FR","hi-IN","is-IS","it-IT","ja-JP","ko-KR","nb-NO","nl-NL","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sv-SE","tr-TR"],"example":"en-US"},"minimum_digits":{"description":"The minimum number of digits to fetch. This parameter has a minimum value of 1.","default":1,"type":"integer","example":1,"format":"int32"},"maximum_digits":{"description":"The maximum number of digits to fetch. This parameter has a maximum value of 128.","default":128,"type":"integer","example":10,"format":"int32"},"maximum_tries":{"description":"The maximum number of times that a file should be played back if there is no input from the user on the call.","default":3,"type":"integer","example":3,"format":"int32"},"timeout_millis":{"description":"The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound file.","default":60000,"type":"integer","example":60000,"format":"int32"},"terminating_digit":{"description":"The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input per `valid_digits`.","default":"#","type":"string","example":"#"},"valid_digits":{"description":"A list of all digits accepted as valid.","default":"0123456789#*","type":"string","example":"123"},"inter_digit_timeout_millis":{"description":"The number of milliseconds to wait for input between digits.","default":5000,"type":"integer","example":10000,"format":"int32"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"payload":"say this on call","invalid_payload":"say this on call","payload_type":"text","service_level":"premium","voice":"male","language":"arb","minimum_digits":1,"maximum_digits":10,"terminating_digit":"#","valid_digits":"123","inter_digit_timeout_millis":10000,"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"GcbChannelZone":{"title":"Channel zone object","required":["record_type","countries","id","name","channels"],"type":"object","properties":{"record_type":{"type":"string","enum":["channel_zone"],"example":"channel_zone"},"countries":{"type":"array","items":{"type":"string"},"description":"List of countries (in ISO 3166-2, capitalized) members of the billing channel zone","example":["BE","EL","LT","PT","BG","ES","LU","RO","CZ","FR","HU","SI","DK","HR","MT","SK","DE","IT","NL","FI","EE","CY","AT","SE","IE","LV","PL"]},"id":{"type":"string","example":"1653e6a1-4bfd-4857-97c6-6a51e1c34477"},"name":{"type":"string","example":"Euro channel zone"},"channels":{"type":"integer","format":"int64","example":7},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the channel zone was created","example":"2019-01-23T18:10:02.574Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the channel zone was updated","example":"2019-01-23T18:10:02.574Z"}}},"GenerateSpeechRequest":{"type":"object","description":"Request body for generating speech from text.","properties":{"voice":{"type":"string","description":"Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id`. Examples: `Telnyx.Ultra.<voice_id>`, `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"}}},"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"}}},"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,"maximum":1}}},"Id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Identifies the type of resource."},"ImportAssistantsRequest":{"properties":{"provider":{"type":"string","enum":["elevenlabs","vapi","retell"],"description":"The external provider to import assistants from."},"api_key_ref":{"type":"string","description":"Integration secret pointer that refers to the API key for the external provider. This should be an identifier for an integration secret created via /v2/integration_secrets."},"import_ids":{"type":"array","items":{"type":"string"},"description":"Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported."}},"type":"object","required":["provider","api_key_ref"],"title":"ImportAssistantsRequest"},"ImportExternalVetting":{"title":"ImportExternalVetting","required":["evpId","vettingId"],"type":"object","properties":{"evpId":{"title":"Evpid","maxLength":10,"type":"string","description":"External vetting provider ID for the brand."},"vettingId":{"title":"Vettingid","type":"string","description":"Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting."},"vettingToken":{"title":"Vettingtoken","type":"string","description":"Required by some providers for vetting record confirmation."}}},"ImportMetadata":{"properties":{"import_provider":{"type":"string","enum":["elevenlabs","vapi","retell"],"description":"Provider the assistant was imported from."},"import_id":{"type":"string","description":"ID of the assistant in the provider's system."}},"type":"object"},"InboundConfig":{"type":"object","required":["enabled","catch_all","mx_required"],"properties":{"enabled":{"type":"boolean"},"catch_all":{"type":"boolean"},"mx_required":{"type":"boolean"}}},"InboundEmailAddress":{"type":"object","properties":{"email":{"type":"string","format":"email"},"name":{"type":"string"}},"required":["email"]},"InboundFqdn":{"type":"object","title":"Inbound FQDN","properties":{"ani_number_format":{"type":"string","enum":["+E.164","E.164","+E.164-national","E.164-national"],"default":"E.164-national","description":"This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls."},"dnis_number_format":{"type":"string","enum":["+e164","e164","national","sip_username"],"default":"e164"},"codecs":{"type":"array","items":{"type":"string"},"description":"Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.","default":["G722","G711U","G711A","G729","OPUS","H.264"]},"default_routing_method":{"type":["string","null"],"enum":["sequential","round-robin",null],"default":"sequential","description":"Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or null, other values are not allowed."},"default_primary_fqdn_id":{"type":["string","null"],"x-format":"int64","default":null,"description":"The default primary FQDN to use for the number. Only settable if the connection is\nof FQDN type. Value must be the ID of an FQDN set on the connection."},"default_secondary_fqdn_id":{"type":["string","null"],"x-format":"int64","default":null,"description":"The default secondary FQDN to use for the number. Only settable if the connection is\nof FQDN type. Value must be the ID of an FQDN set on the connection."},"default_tertiary_fqdn_id":{"type":["string","null"],"x-format":"int64","default":null,"description":"The default tertiary FQDN to use for the number. Only settable if the connection is\nof FQDN type. Value must be the ID of an FQDN set on the connection."},"channel_limit":{"type":["integer","null"],"default":null,"description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection."},"generate_ringback_tone":{"type":"boolean","default":false,"description":"Generate ringback tone through 183 session progress message with early media."},"isup_headers_enabled":{"type":"boolean","default":false,"description":"When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)"},"prack_enabled":{"type":"boolean","description":"Enable PRACK messages as defined in RFC3262.","default":false},"sip_compact_headers_enabled":{"type":"boolean","description":"Defaults to true.","default":true},"sip_region":{"type":"string","default":"US","description":"Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used.","enum":["US","Europe","Australia"]},"sip_subdomain":{"type":["string","null"],"default":null,"description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls."},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"default":"from_anyone"},"timeout_1xx_secs":{"type":"integer","description":"Time(sec) before aborting if connection is not made.","minimum":1,"maximum":120,"default":3},"timeout_2xx_secs":{"type":"integer","description":"Time(sec) before aborting if call is unanswered (min: 1, max: 600).","minimum":1,"maximum":600,"default":90},"shaken_stir_enabled":{"type":"boolean","description":"When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.","default":false}},"example":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_routing_method":"sequential","default_primary_fqdn_id":"1293384261075731497","default_secondary_fqdn_id":"1293384261075731498","default_tertiary_fqdn_id":"1293384261075731499","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"test","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true}},"InboundIp":{"type":"object","title":"Inbound Ip","example":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_primary_ip_id":"192.168.0.0","default_tertiary_ip_id":"192.168.0.0","default_secondary_ip_id":"192.168.0.0","default_routing_method":"sequential","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"test","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true},"properties":{"ani_number_format":{"type":"string","enum":["+E.164","E.164","+E.164-national","E.164-national"],"default":"E.164-national","description":"This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls."},"dnis_number_format":{"type":"string","enum":["+e164","e164","national","sip_username"],"default":"e164"},"codecs":{"type":"array","items":{"type":"string"},"description":"Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.","default":["G722","G711U","G711A","G729","OPUS","H.264"]},"default_primary_ip_id":{"type":"string","description":"The default primary IP to use for the number. Only settable if the connection is\n              of IP authentication type. Value must be the ID of an authorized IP set on the connection.","example":"192.168.0.0"},"default_secondary_ip_id":{"type":"string","description":"The default secondary IP to use for the number. Only settable if the connection is\n              of IP authentication type. Value must be the ID of an authorized IP set on the connection.","example":"192.168.0.0"},"default_tertiary_ip_id":{"type":"string","description":"The default tertiary IP to use for the number. Only settable if the connection is\n              of IP authentication type. Value must be the ID of an authorized IP set on the connection.","example":"192.168.0.0"},"default_routing_method":{"type":"string","enum":["sequential","round-robin"],"description":"Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed."},"channel_limit":{"type":"integer","default":null,"description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection.","example":10},"generate_ringback_tone":{"type":"boolean","default":false,"description":"Generate ringback tone through 183 session progress message with early media."},"isup_headers_enabled":{"type":"boolean","default":false,"description":"When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)"},"prack_enabled":{"type":"boolean","description":"Enable PRACK messages as defined in RFC3262.","default":false},"sip_compact_headers_enabled":{"type":"boolean","description":"Defaults to true.","default":true},"sip_region":{"type":"string","default":"US","description":"Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be used.","enum":["US","Europe","Australia"]},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls."},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"]},"timeout_1xx_secs":{"type":"integer","description":"Time(sec) before aborting if connection is not made.","minimum":1,"maximum":120,"default":3},"timeout_2xx_secs":{"type":"integer","description":"Time(sec) before aborting if call is unanswered (min: 1, max: 600).","default":90},"shaken_stir_enabled":{"type":"boolean","description":"When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.","default":false}}},"InboundMessage":{"allOf":[{"$ref":"#/components/schemas/ThreadMessage"},{"type":"object","properties":{"direction":{"type":"string","enum":["inbound"]},"status":{"type":"string","enum":["received"]}}}]},"InboundMessageEvent":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/messaging_InboundMessage"}}},"InboundMessageListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InboundMessage"}},"meta":{"$ref":"#/components/schemas/email_PaginationMeta"}},"required":["data","meta"]},"InboundMessagePayload":{"properties":{"record_type":{"type":"string","example":"message","enum":["message"],"description":"Identifies the type of the resource."},"direction":{"type":"string","example":"inbound","enum":["inbound"],"description":"The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"type":{"type":"string","enum":["SMS","MMS"],"description":"The type of message. This value can be either 'sms' or 'mms'."},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"organization_id":{"type":"string","description":"Unique identifier for a messaging profile."},"to":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed","webhook_delivered"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"cc":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"from":{"type":"object","properties":{"phone_number":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"status":{"type":"string","enum":["received","delivered"]},"carrier":{"type":"string","description":"The carrier of the sender."},"line_type":{"type":"string","description":"The line-type of the sender.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Message subject."},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":"string","description":"The MIME type of the requested media.","x-format":"mime-type"},"size":{"type":"integer","description":"The size of the requested media."},"hash_sha256":{"type":"string","minLength":32,"maxLength":32,"description":"The SHA256 hash of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":"string","description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"Not used for inbound messages."},"completed_at":{"type":["string","null"],"format":"date-time","description":"Not used for inbound messages."},"valid_until":{"type":["string","null"],"description":"Not used for inbound messages.","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error"}}},"example":{"record_type":"message","direction":"inbound","id":"7ee4241c-f127-47e5-9c34-3aac291f8058","type":"SMS","messaging_profile_id":"0f512bda-ae1e-4597-8e11-e5f5686b97d3","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18665550001","status":"delivered","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"},"to":[{"phone_number":"+18445550001","status":"delivered","carrier":"TELNYX LLC","line_type":"VoIP"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}},"InboundMessageResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/InboundMessage"}},"required":["data"]},"InboundSipHeader":{"type":"object","title":"Inbound SIP Header","required":["name","value"],"properties":{"name":{"description":"The name of the header received from the SIP INVITE.","type":"string","enum":["User-to-User","Diversion"],"example":"Diversion"},"value":{"description":"The value of the header.","type":"string","example":"<sip:111@192.168.1.1>"}},"example":{"name":"Diversion","value":"<sip:111@192.168.1.1>"}},"InboundThread":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"record_type":{"type":"string","enum":["email_thread"]},"inbox_id":{"type":"string","format":"uuid"},"subject":{"type":"string","nullable":true},"preview":{"type":"string","nullable":true,"maxLength":200},"message_count":{"type":"integer","minimum":1,"description":"Total inbound and outbound messages in the thread."},"unread_count":{"type":"integer","minimum":0,"description":"Unread inbound messages; outbound messages never increment this count."},"last_message_id":{"type":"string","format":"uuid"},"last_message_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"labels":{"type":"array","description":"Mutable thread labels used for agent workflow state. Independent of the labels on the thread's messages, and distinct from the send-time `tags` on outbound messages.","items":{"type":"string","maxLength":255},"maxItems":50}},"required":["id","record_type","inbox_id","subject","preview","message_count","unread_count","last_message_id","last_message_at","created_at","updated_at","labels"]},"InboundThreadDetail":{"allOf":[{"$ref":"#/components/schemas/InboundThread"},{"type":"object","properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/ThreadMessage"}}},"required":["messages"]}]},"InboundThreadListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InboundThread"}},"meta":{"$ref":"#/components/schemas/email_PaginationMeta"}},"required":["data","meta"]},"InboxActionEmailAddressInput":{"description":"Email address accepted by inbox message actions, as a string or an object with `email` and optional `name`.","oneOf":[{"type":"string","minLength":3,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"},{"type":"object","properties":{"email":{"type":"string","minLength":3,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"},"name":{"type":"string"}},"required":["email"]}]},"InboxActionRecipientInput":{"description":"One recipient or a recipient array. Each recipient may be an email string or an object with `email` and optional `name`.","oneOf":[{"$ref":"#/components/schemas/InboxActionEmailAddressInput"},{"type":"array","items":{"$ref":"#/components/schemas/InboxActionEmailAddressInput"}}]},"InboxFilterEntry":{"type":"string","description":"An exact sender address (`user@example.com`) or domain wildcard\n(`@example.com`). Values are trimmed and normalized to lowercase.\n","example":"@example.com"},"InboxFilterEntryList":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/InboxFilterEntry"}},"InboxFilters":{"type":"object","properties":{"record_type":{"type":"string","enum":["email_inbox_filters"]},"allowlist":{"$ref":"#/components/schemas/InboxFilterEntryList"},"blocklist":{"$ref":"#/components/schemas/InboxFilterEntryList"}},"required":["record_type","allowlist","blocklist"]},"InboxFiltersResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/InboxFilters"}},"required":["data"]},"InexplicitNumberOrderRequest":{"type":"object","properties":{"ordering_groups":{"type":"array","description":"Group(s) of numbers to order. You can have multiple ordering_groups objects added to a single request.","items":{"type":"object","properties":{"country_iso":{"type":"string","description":"Country where you would like to purchase phone numbers. Allowable values: US, CA","enum":["US","CA"]},"count_requested":{"type":"string","description":"Quantity of phone numbers to order"},"phone_number_type":{"type":"string","description":"Number type (local, toll-free, etc.)"},"national_destination_code":{"type":"string","description":"Filter by area code"},"phone_number":{"type":"object","description":"Phone number search criteria","properties":{"starts_with":{"type":"string","description":"Filter by the starting digits of the phone number"},"ends_with":{"type":"string","description":"Filter by the ending digits of the phone number"},"contains":{"type":"string","description":"Filter for phone numbers that contain the digits specified"}}},"administrative_area":{"type":"string","description":"Filter for phone numbers in a given state / province"},"locality":{"type":"string","description":"Filter for phone numbers in a given city / region / rate center"},"features":{"type":"array","description":"Filter for phone numbers that have the features to satisfy your use case (e.g., [\"voice\"])","items":{"type":"string"}},"strategy":{"type":"string","description":"Ordering strategy. Define what action should be taken if we don't have enough phone numbers to fulfill your request. Allowable values are: always = proceed with ordering phone numbers, regardless of current inventory levels; never = do not place any orders unless there are enough phone numbers to satisfy the request. If not specified, the always strategy will be enforced.","enum":["always","never"],"default":"always"},"quickship":{"type":"boolean","description":"Filter to exclude phone numbers that need additional time after to purchase to activate. Only applicable for +1 toll_free numbers."},"exclude_held_numbers":{"type":"boolean","description":"Filter to exclude phone numbers that are currently on hold/reserved for your account."}},"required":["country_iso","count_requested","phone_number_type"]}},"connection_id":{"type":"string","description":"Connection id to apply to phone numbers that are purchased"},"messaging_profile_id":{"type":"string","description":"Messaging profile id to apply to phone numbers that are purchased"},"customer_reference":{"type":"string","description":"Reference label for the customer"},"billing_group_id":{"type":"string","description":"Billing group id to apply to phone numbers that are purchased"}},"required":["ordering_groups"]},"InexplicitNumberOrderResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the inexplicit number order"},"connection_id":{"type":"string","description":"Connection id to apply to phone numbers that are purchased"},"messaging_profile_id":{"type":"string","description":"Messaging profile id to apply to phone numbers that are purchased"},"customer_reference":{"type":"string","description":"Reference label for the customer"},"billing_group_id":{"type":"string","description":"Billing group id to apply to phone numbers that are purchased"},"ordering_groups":{"type":"array","items":{"type":"object","properties":{"country_iso":{"type":"string","description":"Country where you would like to purchase phone numbers"},"phone_number_type":{"type":"string","description":"Number type"},"count_requested":{"type":"integer","description":"Quantity of phone numbers requested"},"count_allocated":{"type":"integer","description":"Quantity of phone numbers allocated"},"status":{"type":"string","description":"Status of the ordering group","enum":["pending","processing","failed","success","partial_success"]},"national_destination_code":{"type":"string","description":"Filter by area code"},"phone_number[starts_with]":{"type":"string","description":"Filter by the starting digits of the phone number"},"phone_number[ends_with]":{"type":"string","description":"Filter by the ending digits of the phone number"},"phone_number[contains]":{"type":"string","description":"Filter for phone numbers that contain the digits specified"},"administrative_area":{"type":"string","description":"Filter for phone numbers in a given state / province"},"strategy":{"type":"string","description":"Ordering strategy used","enum":["always","never"]},"quickship":{"type":"boolean","description":"Filter to exclude phone numbers that need additional time after to purchase to activate. Only applicable for +1 toll_free numbers."},"exclude_held_numbers":{"type":"boolean","description":"Filter to exclude phone numbers that are currently on hold/reserved for your account."},"error_reason":{"type":"string","description":"Error reason if applicable"},"orders":{"type":"array","description":"Array of orders created to fulfill the inexplicit order","items":{"type":"object","properties":{"number_order_id":{"type":"string","format":"uuid","description":"ID of the main number order"},"sub_number_order_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Array of sub number order IDs"}},"required":["number_order_id","sub_number_order_ids"]}},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the ordering group was created"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the ordering group was updated"}}}},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated"}}},"InferenceEmbeddingTransferToolParams":{"properties":{"targets":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the target.","example":"Support"},"to":{"type":"string","description":"The destination number or SIP URI of the call.","example":"+13129457420"},"message":{"type":"string","description":"The warm transfer message to deliver to this specific target. When set, it takes precedence over the message the assistant composes from `warm_transfer_instructions`.","example":"I have a caller asking about a billing issue on invoice 4471."},"extension":{"type":"string","description":"DTMF digits to send automatically after the transfer destination answers. Useful for reaching an extension behind an IVR (e.g. `\"200\"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent.","example":"wwww200"},"sip_auth_username":{"type":"string","description":"SIP Authentication username used for SIP challenges. Applies when `to` is a SIP URI.","example":"sipuser"},"sip_auth_password":{"type":"string","description":"SIP Authentication password used for SIP challenges. Applies when `to` is a SIP URI.","example":"sippass"}},"required":["to"]}},{"type":"string","description":"A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.","example":"{{ targets }}"}],"description":"The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime."},"from":{"type":"string","example":"+35319605860","description":"Number or SIP URI placing the call."},"diversion":{"type":"string","example":"{{telnyx_agent_target}}","description":"The number the inbound call was received on, forwarded so an unverified non-Telnyx `from` can be used as the caller id -- typically to transfer out as the original caller by pairing `from: \"{{telnyx_end_user_target}}\"` with `diversion: \"{{telnyx_agent_target}}\"`. The caller id is only accepted while that number is still on an active inbound call to this `diversion` number, and the `diversion` number must be one you own or have verified."},"warm_transfer_instructions":{"type":"string","example":"Briefly greet the transfer recipient and provide any relevant information from the call. Let them know you will bridge the call right after.","description":"Natural language instructions for your agent for how to provide context for the transfer recipient."},"warm_transfer_acceptance":{"type":"object","description":"Requires the transfer destination to accept the call before the caller is bridged. When enabled, the assistant speaks privately with the destination after they answer — 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."}}},"description":{"type":"string","description":"A description of the transfer tool. By default, Telnyx generates this automatically based on the configured targets. Typically only set when importing an assistant from another provider that allowed a custom description; in that case the provided value is preserved. Most users should leave this empty and let Telnyx manage it.","example":"Transfer the call to a human agent."},"warm_message_delay_ms":{"type":["integer","null"],"example":2000,"description":"Optional delay in milliseconds before playing the warm message audio when the transferred call is answered. When set, the audio_url is not included in the dial command; instead, playback starts after the specified delay. When not set, existing behavior (audio_url in dial) is preserved."},"custom_headers":{"description":"Custom headers to be added to the SIP INVITE for the transfer command.","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"description":"The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret.","type":"string"}}}},"voicemail_detection":{"type":"object","description":"Configuration for voicemail detection (AMD - Answering Machine Detection) on the transferred call. Allows the assistant to detect when a voicemail system answers the transferred call and take appropriate action.","properties":{"detection_mode":{"type":"string","enum":["disabled","premium"],"description":"The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection."},"on_voicemail_detected":{"type":"object","description":"Action to take when voicemail is detected on the transferred call.","properties":{"action":{"type":"string","enum":["stop_transfer","leave_message_and_stop_transfer"],"description":"The action to take when voicemail is detected. 'stop_transfer' hangs up immediately. 'leave_message_and_stop_transfer' leaves a message then hangs up."},"voicemail_message":{"type":"object","description":"Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_transfer'.","properties":{"type":{"type":"string","enum":["message","warm_transfer_instructions"],"description":"The type of voicemail message. Use 'message' to leave a specific TTS message, or 'warm_transfer_instructions' to play the warm transfer audio."},"message":{"type":"string","description":"The specific message to leave as voicemail (converted to speech). Only applicable when type is 'message'."}}}}},"detection_config":{"type":"object","description":"Advanced AMD detection configuration parameters. All values are optional - Telnyx will use defaults if not specified.","properties":{"greeting_silence_duration_millis":{"type":"integer","minimum":500,"maximum":50000,"description":"Duration of silence after the greeting to wait before considering the greeting complete."},"greeting_total_analysis_time_millis":{"type":"integer","minimum":500,"maximum":300000,"description":"Maximum time to spend analyzing the greeting."},"after_greeting_silence_millis":{"type":"integer","minimum":100,"maximum":5000,"description":"Duration of silence after greeting detection before finalizing the result."},"between_words_silence_millis":{"type":"integer","minimum":10,"maximum":5000,"description":"Maximum silence duration between words during greeting."},"greeting_duration_millis":{"type":"integer","minimum":100,"maximum":10000,"description":"Expected duration of greeting speech."},"initial_silence_millis":{"type":"integer","minimum":100,"maximum":500000,"description":"Maximum silence duration at the start of the call before speech."},"maximum_number_of_words":{"type":"integer","minimum":1,"maximum":50,"description":"Maximum number of words expected in a human greeting."},"maximum_word_length_millis":{"type":"integer","minimum":50,"maximum":5000,"description":"Maximum duration of a single word."},"silence_threshold":{"type":"integer","minimum":1,"maximum":1000,"description":"Audio level threshold for silence detection."},"total_analysis_time_millis":{"type":"integer","minimum":500,"maximum":60000,"description":"Total time allowed for AMD analysis."},"min_word_length_millis":{"type":"integer","minimum":1,"maximum":1000,"description":"Minimum duration for audio to be considered a word."}}}}}},"type":"object","required":["targets","from"],"title":"TransferToolParams"},"InfringementClaim":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"e379fbc8-cd83-4bef-a280-a0ac9d00dcf8","readOnly":true},"dir_id":{"type":"string","format":"uuid","example":"42a3f554-7ce3-44c2-bfe9-6e1afe0d7991"},"enterprise_id":{"type":"string","format":"uuid","example":"7eca8226-8081-4e11-abdc-437b5f53a81f"},"claim_type":{"$ref":"#/components/schemas/InfringementClaimType"},"claim_description":{"type":"string","minLength":10,"maxLength":2000,"example":"Alleged infringement on trademark XYZ."},"claimant_name":{"type":"string","minLength":1,"maxLength":255,"example":"Test Claimant LLC"},"claimant_contact":{"type":"string","minLength":1,"maxLength":255,"example":"legal@testclaimant.example.com"},"claim_date":{"type":"string","format":"date-time","description":"When the claim was filed (set by the claimant's representative at file time).","example":"2026-04-22T02:12:54Z","readOnly":true},"status":{"$ref":"#/components/schemas/InfringementClaimStatus"},"resolution":{"type":"string","nullable":true,"enum":["upheld","rejected","modified"],"description":"Set only when `status` is `resolved`."},"resolution_date":{"type":"string","format":"date-time","nullable":true,"readOnly":true},"resolution_notes":{"type":"string","nullable":true,"maxLength":2000,"readOnly":true},"contest_documents":{"type":"array","items":{"$ref":"#/components/schemas/Document"},"description":"Aggregated across all customer contest submissions on this claim."},"contest_history":{"type":"array","items":{"$ref":"#/components/schemas/ContestSubmission"},"description":"Per-round submission audit trail. Each entry records one `POST /infringement_claims/{id}/contest` call (notes, timestamp, document count). Aggregated documents live on `contest_documents`.","readOnly":true},"dir":{"$ref":"#/components/schemas/InfringementClaimDirRef"},"created_at":{"type":"string","format":"date-time","example":"2026-04-22T02:12:55.908411Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","example":"2026-04-22T02:12:55.908417Z","readOnly":true}}},"InfringementClaimContest":{"type":"object","required":["contest_notes"],"additionalProperties":false,"properties":{"contest_notes":{"type":"string","minLength":10,"maxLength":2000,"description":"Customer's response to the claim. 10–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.","type":"string"},"AIAssistantVersion":{"description":"The version of the AI assistant to use.","type":"string"},"AIAssistantDynamicVariables":{"description":"Key-value map of dynamic variables to pass to the AI assistant.","type":"object","additionalProperties":{"type":"string"},"example":{"customer_name":"John Doe","account_id":"12345"}},"CallerId":{"description":"To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If omitted, the display name will be the same as the number in the `From` field.","example":"Info","type":"string"},"StatusCallback":{"description":"URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call value overrides the status callback URL configured on the TeXML application/connection.","example":"https://www.example.com/callback","type":"string"},"StatusCallbackEvent":{"description":"The status callback events for which Telnyx should send a webhook for this AI call. Multiple events can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy, canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured on the TeXML application/connection.","example":"initiated answered","default":"completed","type":"string"},"StatusCallbackMethod":{"description":"HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided, this per-call value overrides the status callback method configured on the TeXML application/connection.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"StatusCallbacks":{"description":"Array of URL destinations for Telnyx to send status callback events for this AI call. When provided, these per-call values override the status callback URL configured on the TeXML application/connection.","type":"array","items":{"type":"string"},"example":["https://www.example.com/callback1","https://www.example.com/callback2"]},"CustomHeaders":{"description":"Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the custom header"},"value":{"type":"string","description":"The value of the custom header"}},"required":["name","value"]},"example":[{"name":"X-Custom-Header","value":"custom-value"}]},"ConversationCallback":{"description":"URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.","example":"https://www.example.com/conversation-callback","type":"string"},"ConversationCallbackMethod":{"description":"HTTP request type used for `ConversationCallback` and `ConversationCallbacks`.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"ConversationCallbacks":{"description":"Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.","type":"array","items":{"type":"string"},"example":["https://www.example.com/conversation-callback1","https://www.example.com/conversation-callback2"]},"MachineDetection":{"description":"Enables Answering Machine Detection.","example":"Enable","default":"Disable","type":"string","enum":["Enable","Disable","DetectMessageEnd"]},"DetectionMode":{"description":"Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection","example":"Premium","default":"Regular","type":"string","enum":["Premium","Regular","PremiumCallScreening"]},"AsyncAmd":{"description":"Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed.","example":true,"default":false,"type":"boolean"},"AsyncAmdStatusCallback":{"description":"URL destination for Telnyx to send AMD callback events to for the call.","example":"https://www.example.com/callback","type":"string"},"AsyncAmdStatusCallbackMethod":{"description":"HTTP request type used for `AsyncAmdStatusCallback`.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"MachineDetectionTimeout":{"description":"Maximum timeout threshold in milliseconds for overall detection.","example":5000,"default":30000,"maximum":60000,"minimum":500,"type":"integer"},"MachineDetectionPromptEndTimeout":{"description":"Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`.","example":5000,"minimum":1000,"maximum":120000,"type":"integer"},"MachineDetectionSpeechThreshold":{"description":"Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used.","example":2000,"default":3500,"type":"integer"},"MachineDetectionSpeechEndThreshold":{"description":"Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used.","example":2000,"default":800,"type":"integer"},"MachineDetectionSilenceTimeout":{"description":"If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used.","example":2000,"default":3500,"type":"integer"},"MachineDetectionBeepProfile":{"description":"Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. Only used when MachineDetection is enabled.","example":"freq_only","default":"both","type":"string","enum":["both","freq_only"]},"MachineDetectionBeepMinFrequency":{"description":"Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when MachineDetection is enabled.","type":"integer","example":550,"format":"int32","minimum":200,"maximum":4000},"MachineDetectionBeepMaxFrequency":{"description":"Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection is enabled.","type":"integer","example":2000,"format":"int32","minimum":200,"maximum":4000},"MachineDetectionBeepMinToneDuration":{"description":"Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when MachineDetection is enabled.","type":"integer","example":300,"format":"int32","minimum":50,"maximum":5000},"MachineDetectionBeepSpectralConfirmation":{"description":"When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when MachineDetection is enabled.","type":"boolean","example":true},"MachineDetectionBeepSpectralWindow":{"description":"Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled.","type":"integer","example":100,"format":"int32","minimum":20,"maximum":1000},"MachineDetectionBeepSpectralMinPurity":{"description":"Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled.","type":"number","example":0.8,"minimum":0,"maximum":1},"MachineDetectionBeepSpectralRejectFaxCng":{"description":"When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection is enabled.","type":"boolean","example":true},"Passports":{"description":"A string of passport identifiers to associate with the call.","type":"string"},"TimeLimit":{"description":"The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds.","example":3600,"type":"integer","minimum":30,"maximum":14400,"default":14400},"Timeout":{"description":"The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds.","example":60,"type":"integer","minimum":5,"maximum":120,"default":30,"x-stainless-param":"timeout_seconds"},"Record":{"description":"Whether to record the entire participant's call leg. Defaults to `false`.","example":false,"type":"boolean"},"RecordingChannels":{"description":"The number of channels in the final recording. Defaults to `mono`.","example":"dual","type":"string","enum":["mono","dual"]},"RecordingStatusCallback":{"description":"The URL the recording callbacks will be sent to.","example":"https://example.com/recording_status_callback","type":"string"},"RecordingStatusCallbackMethod":{"description":"HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.","example":"GET","type":"string","enum":["GET","POST"]},"RecordingStatusCallbackEvent":{"description":"The changes to the recording's state that should generate a call to `RecordingStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.","example":"in-progress completed absent","type":"string"},"RecordingTimeout":{"description":"The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. The minimum value is 0. The default value is 0 (infinite).","example":5,"type":"integer","default":0},"RecordingTrack":{"description":"The audio track to record for the call. The default is `both`.","example":"inbound","type":"string","enum":["inbound","outbound","both"]},"Trim":{"description":"Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.","example":"trim-silence","type":"string","enum":["trim-silence","do-not-trim"]},"SendRecordingUrl":{"$ref":"#/components/schemas/SendRecordingUrl"},"PreferredCodecs":{"description":"The list of comma-separated codecs to be offered on a call.","example":"PCMA,PCMU","type":"string"},"SipAuthUsername":{"description":"The username to use for SIP authentication.","example":"user","type":"string"},"SipAuthPassword":{"description":"The password to use for SIP authentication.","example":"1234","type":"string"},"SipRegion":{"description":"Defines the SIP region to be used for the call.","type":"string","default":"US","enum":["US","Europe","Canada","Australia","Middle East"],"example":"Canada"}},"example":{"From":"+13120001234","To":"+13121230000","AIAssistantId":"ai-assistant-id-123"}},"InitiateAICallResult":{"type":"object","title":"Initiate AI Call Result","example":{"from":"+13120001234","to":"+13121230000","status":"queued","call_sid":"v3:example-call-sid"},"properties":{"from":{"type":"string","example":"+13120001234"},"to":{"type":"string","example":"+13120000000"},"status":{"type":"string","example":"queued"},"call_sid":{"type":"string","example":"v3:example-call-sid"}}},"InitiateCallRequest":{"type":"object","title":"Initiate Call Request","required":["To","From","ApplicationSid"],"properties":{"ApplicationSid":{"description":"The ID of the TeXML Application.","type":"string"},"To":{"description":"The phone number of the called party. Phone numbers are formatted with a `+` and country code.","example":"+16175551212","type":"string"},"From":{"description":"The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code.","example":"+16175551212","type":"string"},"CallerId":{"description":"To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special characters. If ommited, the display name will be the same as the number in the `From` field.","example":"Info","type":"string"},"Url":{"description":"The URL from which Telnyx will retrieve the TeXML call instructions.","example":"https://www.example.com/instructions.xml","type":"string"},"UrlMethod":{"description":"HTTP request type used for `Url`. The default value is inherited from TeXML Application setting.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"FallbackUrl":{"description":"A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding.","example":"https://www.example.com/instructions-fallback.xml","type":"string"},"StatusCallback":{"description":"URL destination for Telnyx to send status callback events to for the call.","example":"https://www.example.com/callback","type":"string"},"StatusCallbackMethod":{"description":"HTTP request type used for `StatusCallback`.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"StatusCallbackEvent":{"description":"The call events for which Telnyx should send a webhook. Multiple events can be defined when separated by a space.","example":"initiated answered","default":"completed","type":"string"},"MachineDetection":{"description":"Enables Answering Machine Detection.","example":"Enable","default":"Disable","type":"string","enum":["Enable","Disable","DetectMessageEnd"]},"DetectionMode":{"description":"Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection","example":"Premium","default":"Regular","type":"string","enum":["Premium","Regular","PremiumCallScreening"]},"AsyncAmd":{"description":"Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed.","example":true,"default":false,"type":"boolean"},"AsyncAmdStatusCallback":{"description":"URL destination for Telnyx to send AMD callback events to for the call.","example":"https://www.example.com/callback","type":"string"},"AsyncAmdStatusCallbackMethod":{"description":"HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application setting.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"MachineDetectionTimeout":{"description":"Maximum timeout threshold in milliseconds for overall detection.","example":5000,"default":30000,"maximum":60000,"minimum":500,"type":"integer"},"MachineDetectionPromptEndTimeout":{"description":"Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`.","example":5000,"minimum":1000,"maximum":120000,"type":"integer"},"MachineDetectionSpeechThreshold":{"description":"Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used.","example":2000,"default":3500,"type":"integer"},"MachineDetectionSpeechEndThreshold":{"description":"Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used.","example":2000,"default":800,"type":"integer"},"MachineDetectionSilenceTimeout":{"description":"If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used.","example":2000,"default":3500,"type":"integer"},"MachineDetectionBeepProfile":{"description":"Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile. Only used when MachineDetection is enabled.","example":"freq_only","default":"both","type":"string","enum":["both","freq_only"]},"MachineDetectionBeepMinFrequency":{"description":"Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when MachineDetection is enabled.","type":"integer","example":550,"format":"int32","minimum":200,"maximum":4000},"MachineDetectionBeepMaxFrequency":{"description":"Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection is enabled.","type":"integer","example":2000,"format":"int32","minimum":200,"maximum":4000},"MachineDetectionBeepMinToneDuration":{"description":"Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when MachineDetection is enabled.","type":"integer","example":300,"format":"int32","minimum":50,"maximum":5000},"MachineDetectionBeepSpectralConfirmation":{"description":"When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when MachineDetection is enabled.","type":"boolean","example":true},"MachineDetectionBeepSpectralWindow":{"description":"Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled.","type":"integer","example":100,"format":"int32","minimum":20,"maximum":1000},"MachineDetectionBeepSpectralMinPurity":{"description":"Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled.","type":"number","example":0.8,"minimum":0,"maximum":1},"MachineDetectionBeepSpectralRejectFaxCng":{"description":"When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection is enabled.","type":"boolean","example":true},"CancelPlaybackOnMachineDetection":{"description":"Whether to cancel ongoing playback on `machine` detection. Defaults to `true`.","default":true,"example":false,"type":"boolean"},"CancelPlaybackOnDetectMessageEnd":{"description":"Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`.","default":true,"example":false,"type":"boolean"},"DeepfakeDetection":{"description":"Enables Deepfake Detection on the dialed call. When enabled, audio from the remote party is analyzed to determine whether the voice is AI-generated. Results are delivered asynchronously via a callback.","example":"Enable","type":"string","enum":["Enable"]},"DeepfakeDetectionCallbackUrl":{"description":"URL destination for Telnyx to send deepfake detection callback events to for the call.","example":"https://www.example.com/deepfake-callback","type":"string"},"DeepfakeDetectionCallbackMethod":{"description":"HTTP request type used for `DeepfakeDetectionCallbackUrl`.","example":"GET","default":"POST","type":"string","enum":["GET","POST"]},"PreferredCodecs":{"description":"The list of comma-separated codecs to be offered on a call.","example":"PCMA,PCMU","type":"string"},"Record":{"description":"Whether to record the entire participant's call leg. Defaults to `false`.","example":false,"type":"boolean"},"RecordingChannels":{"description":"The number of channels in the final recording. Defaults to `mono`.","example":"dual","type":"string","enum":["mono","dual"]},"RecordingStatusCallback":{"description":"The URL the recording callbacks will be sent to.","example":"https://example.com/recording_status_callback","type":"string"},"RecordingStatusCallbackMethod":{"description":"HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.","example":"GET","type":"string","enum":["GET","POST"]},"RecordingStatusCallbackEvent":{"description":"The changes to the recording's state that should generate a call to `RecoridngStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.","example":"in-progress completed absent","type":"string"},"RecordingTimeout":{"description":"The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. The timer only starts when the speech is detected. Please note that the transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)","example":5,"type":"integer","default":0},"RecordingTrack":{"description":"The audio track to record for the call. The default is `both`.","example":"inbound","type":"string","enum":["inbound","outbound","both"]},"SendRecordingUrl":{"$ref":"#/components/schemas/SendRecordingUrl"},"SipAuthPassword":{"description":"The password to use for SIP authentication.","example":"1234","type":"string"},"SipAuthUsername":{"description":"The username to use for SIP authentication.","example":"user","type":"string"},"Trim":{"description":"Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.","example":"trim-silence","type":"string","enum":["trim-silence","do-not-trim"]},"CustomHeaders":{"description":"Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the custom header"},"value":{"type":"string","description":"The value of the custom header"}},"required":["name","value"]},"example":[{"name":"X-Custom-Header","value":"custom-value"}]},"SipRegion":{"description":"Defines the SIP region to be used for the call.","type":"string","default":"US","enum":["US","Europe","Canada","Australia","Middle East"],"example":"Canada"},"MediaEncryption":{"description":"Defines whether media should be encrypted on the call. When set to `SRTP`, the call will use Secure Real-time Transport Protocol for media encryption. When set to `DTLS`, the call will use DTLS for media encryption. Only supported for SIP destinations.","example":"disabled","default":"disabled","type":"string","enum":["disabled","SRTP","DTLS"]},"SuperviseCallSid":{"description":"The call control ID of the existing call to supervise. When provided, the created leg will be added to the specified call in supervising mode. Status callbacks and action callbacks will NOT be sent for the supervising leg.","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","type":"string"},"SupervisingRole":{"description":"The supervising role for the new leg. Determines the audio behavior: barge (hear both sides), whisper (only hear supervisor), monitor (hear both sides but supervisor muted). Default: barge","example":"monitor","type":"string","enum":["barge","whisper","monitor"],"default":"barge"},"Timeout":{"description":"The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds.","example":60,"type":"integer","minimum":5,"maximum":120,"default":30,"x-stainless-param":"timeout_seconds"},"TimeLimit":{"description":"The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds.","example":3600,"type":"integer","minimum":30,"maximum":14400,"default":14400},"Texml":{"description":"TeXML to be used as instructions for the call. If provided, the call will execute these instructions instead of fetching from the Url.","example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say>Hello</Say></Response>","type":"string"}},"oneOf":[{"title":"With URL","required":["Url"],"properties":{"Texml":{"not":{}}}},{"title":"With TeXML","required":["Texml"],"properties":{"Url":{"not":{}}}},{"title":"Application Default","properties":{"Url":{"not":{}},"Texml":{"not":{}}}}],"example":{"To":"+13121230000","From":"+13120001234","Url":"https://www.example.com/texml.xml","StatusCallback":"https://www.example.com/statuscallback-listener","ApplicationSid":"example-app-sid"}},"InitiateCallResult":{"type":"object","title":"Initaite TeXML Call Result","example":{"from":"+13120001234","to":"+13121230000","status":"queued"},"properties":{"from":{"type":"string","example":"+13120001234"},"to":{"type":"string","example":"+13120000000"},"status":{"type":"string","example":"accepted"}}},"InsightSettings":{"properties":{"insight_group_id":{"type":"string","description":"Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations."}},"type":"object"},"InsightTemplateCreateReq":{"properties":{"instructions":{"type":"string","title":"Instructions"},"name":{"type":"string","title":"Name"},"webhook":{"type":"string","title":"Webhook","default":""},"json_schema":{"anyOf":[{"type":"string"},{"type":"object","title":"JsonSchemaObject"}],"title":"Json Schema","description":"If specified, the output will follow the JSON schema."}},"type":"object","required":["instructions","name"],"title":"InsightTemplateCreateReq"},"InsightTemplateDetailRespData":{"properties":{"data":{"$ref":"#/components/schemas/InsightTemplateResp"}},"type":"object","required":["data"],"title":"InsightTemplateDetailRespData"},"InsightTemplateGroupCreateReq":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"webhook":{"type":"string","title":"Webhook","default":""}},"type":"object","required":["name"],"title":"InsightTemplateGroupCreateReq"},"InsightTemplateGroupDetailRespData":{"properties":{"data":{"$ref":"#/components/schemas/InsightTemplateGroupResp"}},"type":"object","required":["data"],"title":"InsightTemplateGroupDetailRespData"},"InsightTemplateGroupResp":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"insights":{"items":{"$ref":"#/components/schemas/InsightTemplateResp"},"type":"array","title":"Insights"},"webhook":{"type":"string","title":"Webhook","default":""}},"type":"object","required":["id","name","created_at"],"title":"InsightTemplateGroupResp"},"InsightTemplateGroupUpdateReq":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"webhook":{"type":"string","title":"Webhook"}},"type":"object","title":"InsightTemplateGroupUpdateReq"},"InsightTemplateResp":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"instructions":{"type":"string","title":"Instructions"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"insight_type":{"$ref":"#/components/schemas/TemplateType","default":"custom"},"name":{"type":"string","title":"Name","default":""},"webhook":{"type":"string","title":"Webhook","default":""},"json_schema":{"anyOf":[{"type":"string"},{"type":"object","title":"JsonSchemaObject"}],"title":"Json Schema","description":"If specified, the output will follow the JSON schema."}},"type":"object","required":["id","instructions","created_at"],"title":"InsightTemplateResp"},"InsightTemplateUpdateReq":{"properties":{"instructions":{"type":"string","title":"Instructions"},"name":{"type":"string","title":"Name"},"webhook":{"type":"string","title":"Webhook"},"json_schema":{"anyOf":[{"type":"string"},{"type":"object","title":"JsonSchemaObject"}],"title":"Json Schema"}},"type":"object","title":"InsightTemplateUpdateReq"},"IntId":{"title":"Int ID","type":"string","description":"Uniquely identifies the resource.","example":"1293384261075731499"},"Integration":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description"},"logo_url":{"type":"string","title":"Logo Url"},"status":{"type":"string","enum":["disconnected","connected"],"title":"Status"},"available_tools":{"type":"array","items":{"type":"string"},"title":"Available Tools"}},"required":["id","name","display_name","description","logo_url","status","available_tools"],"title":"Integration"},"IntegrationConnection":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"integration_id":{"type":"string","title":"Integration Id"},"allowed_tools":{"type":"array","items":{"type":"string"},"title":"Allowed Tools"}},"required":["id","integration_id","allowed_tools"],"title":"IntegrationConnection"},"IntegrationConnectionResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IntegrationConnection"}},"required":["data"],"title":"IntegrationConnectionResponse"},"IntegrationConnectionsListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationConnection"},"title":"Data"}},"required":["data"],"title":"IntegrationConnectionsListResponse"},"IntegrationSecret":{"properties":{"record_type":{"type":"string","title":"Record Type","example":"integration_secret"},"id":{"type":"string","title":"Id"},"identifier":{"type":"string","title":"Identifier"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["record_type","id","identifier","created_at"],"title":"IntegrationSecret"},"IntegrationSecretCreatedResponse":{"properties":{"data":{"$ref":"#/components/schemas/IntegrationSecret"}},"type":"object","required":["data"],"title":"IntegrationSecretCreatedResponse"},"IntegrationSecretsListData":{"properties":{"data":{"items":{"$ref":"#/components/schemas/IntegrationSecret"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/integration-secrets_Metadata"}},"type":"object","required":["data","meta"],"title":"SecretsListData"},"IntegrationsListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Integration"},"title":"Data"}},"required":["data"],"title":"IntegrationsListResponse"},"Interface":{"type":"object","properties":{"network_id":{"description":"The id of the network associated with the interface.","type":"string","format":"uuid","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"name":{"type":"string","description":"A user specified name for the interface.","example":"test interface"},"status":{"$ref":"#/components/schemas/InterfaceStatus"}}},"InterfaceStatus":{"type":"string","enum":["created","provisioning","provisioned","deleting"],"description":"The current status of the interface deployment.","readOnly":true,"example":"provisioned"},"InterruptionSettings":{"type":"object","description":"Settings for handling user interruptions during assistant speech","properties":{"enable":{"type":"boolean","description":"When true, allows users to interrupt the assistant while speaking","default":true}}},"IntrospectRequest":{"type":"object","properties":{"token":{"type":"string","description":"The token to introspect"}},"required":["token"]},"IntrospectResponse":{"type":"object","properties":{"active":{"type":"boolean","description":"Whether the token is active"},"scope":{"type":"string","description":"Space-separated list of scopes"},"client_id":{"type":"string","description":"Client identifier"},"exp":{"type":"integer","description":"Expiration timestamp"},"iat":{"type":"integer","description":"Issued at timestamp"},"iss":{"type":"string","description":"Issuer"},"aud":{"type":"string","description":"Audience"}},"required":["active"]},"InventoryCoverage":{"type":"object","properties":{"group":{"type":"string","example":"318"},"group_type":{"type":"string","example":"npa"},"number_range":{"type":"integer","example":1},"number_type":{"type":"string","enum":["did","toll-free"],"example":"did"},"phone_number_type":{"type":"string","enum":["local","toll_free","national","landline","shared_cost","mobile"],"example":"local"},"coverage_type":{"type":"string","enum":["number","block"],"example":"number"},"record_type":{"type":"string","example":"inventory_coverage_group"},"administrative_area":{"type":"string","example":"NJ"},"count":{"type":"integer","example":3},"advance_requirements":{"type":"boolean","example":true,"description":"Indicates if the phone number requires advance requirements."}},"example":{"group":"318","group_type":"npa","number_range":1,"number_type":"did","phone_number_type":"local","coverage_type":"number","record_type":"inventory_coverage_group","administrative_area":"NJ","count":3,"advance_requirements":true}},"InventoryCoverageMetadata":{"type":"object","example":{"total_results":25},"properties":{"total_results":{"type":"integer","example":25}}},"InviteTool":{"properties":{"type":{"type":"string","enum":["invite"]},"shared":{"type":"boolean","description":"Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).","readOnly":true},"invite":{"$ref":"#/components/schemas/InviteToolConfig","title":"InviteToolConfig"}},"type":"object","required":["type","invite"],"title":"InviteTool"},"InviteToolConfig":{"properties":{"from":{"type":"string","example":"+35319605860","description":"Number or SIP URI placing the call."},"targets":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the target.","example":"Support"},"to":{"type":"string","description":"The destination number or SIP URI of the call.","example":"+13129457420"}},"required":["to"]}},{"type":"string","description":"A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.","example":"{{ targets }}"},{"type":"null"}],"description":"The different possible targets of the invite. The assistant will be able to choose one of the targets to invite to the call. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. If omitted or null, the invite tool can still be configured and targets may be supplied dynamically at runtime."},"custom_headers":{"description":"Custom headers to be added to the SIP INVITE for the invite command.","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"description":"The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret.","type":"string"}}}},"voicemail_detection":{"type":"object","description":"Configuration for voicemail detection (AMD - Answering Machine Detection) on the invited call.","properties":{"detection_mode":{"type":"string","enum":["disabled","premium"],"description":"The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection."},"on_voicemail_detected":{"type":"object","description":"Action to take when voicemail is detected on the invited call.","properties":{"action":{"type":"string","enum":["stop_invite"],"description":"The action to take when voicemail is detected."}}}}}},"type":"object","required":["from"],"title":"InviteToolConfig"},"Invoice":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","example":"48eff763-ea80-4345-b688-78249eb165a8"},"file_id":{"type":"string","format":"uuid","example":"454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e"},"period_start":{"type":"string","format":"date","example":"2023-11-01"},"period_end":{"type":"string","format":"date","example":"2023-11-30"},"paid":{"type":"boolean","example":true},"url":{"type":"string","format":"uri","example":"https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8"}}},"InvoiceDetail":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","example":"48eff763-ea80-4345-b688-78249eb165a8"},"file_id":{"type":"string","format":"uuid","example":"454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e"},"period_start":{"type":"string","format":"date","example":"2023-11-01"},"period_end":{"type":"string","format":"date","example":"2023-11-30"},"paid":{"type":"boolean","example":true},"url":{"type":"string","format":"uri","example":"https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8"},"download_url":{"type":"string","format":"uri","description":"Present only if the query parameter `action=link` is set.","example":"https://us-east-1.telnyxstorage.com/porting-documents/telnyx/..."}}},"InworldVoiceSettings":{"type":"object","title":"Inworld Voice Settings","properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies."}},"required":["type"]},"Ip":{"type":"object","title":"Ip","properties":{"id":{"type":"string","description":"Identifies the type of resource.","example":"1293384261075731499","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"ip"},"connection_id":{"type":"string","description":"ID of the IP Connection to which this IP should be attached."},"ip_address":{"type":"string","description":"IP adddress represented by this resource.","example":"192.168.0.0"},"port":{"type":"integer","description":"Port to use when connecting to this IP.","default":5060,"example":5060},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"ip","connection_id":"3456789987654","ip_address":"192.168.0.0","port":5060,"created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"}},"IpConnection":{"type":"object","title":"Ip Connection","properties":{"id":{"type":"string","description":"Identifies the type of resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"ip_connection"},"active":{"type":"boolean","description":"Defaults to true","example":true},"conversation_persistence":{"type":"boolean","description":"Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false."},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"type":"string","example":"string"},"transport_protocol":{"type":"string","description":"One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.","default":"UDP","enum":["UDP","TCP","TLS"],"example":"UDP"},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.","example":true},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.","example":true},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.","example":false},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"inbound":{"$ref":"#/components/schemas/InboundIp"},"outbound":{"$ref":"#/components/schemas/OutboundIp"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"ip_connection","active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":true,"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"tags":["tag1","tag2"],"created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_primary_ip_id":"192.0.2.1","default_secondary_ip_id":"198.51.100.1","default_tertiary_ip_id":"203.0.113.1","default_routing_method":"sequential","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"string","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":10,"shaken_stir_enabled":true},"outbound":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","tech_prefix":"string","ip_authentication_method":"token","ip_authentication_token":"string","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}}},"JWKSet":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"kty":{"type":"string","description":"Key type"},"use":{"type":"string","description":"Key use"},"alg":{"type":"string","description":"Algorithm"},"kid":{"type":"string","description":"Key ID"}}}}}},"JoinConferenceRequest":{"required":["call_control_id"],"type":"object","title":"Join Conference Request","properties":{"call_control_id":{"description":"Unique identifier and token for controlling the call","example":"v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==","type":"string"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. Please note that the client_state will be updated for the participient call leg and the change will not affect conferencing webhooks unless the participient is the owner of the conference.","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","type":"string"},"command_id":{"description":"Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.","example":"891510ac-f3e4-11e8-af5b-de00688a4901","type":"string"},"end_conference_on_exit":{"description":"Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".","example":true,"type":"boolean"},"soft_end_conference_on_exit":{"description":"Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".","example":true,"type":"boolean"},"hold":{"description":"Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".","example":true,"type":"boolean"},"hold_audio_url":{"type":"string","example":"http://example.com/message.wav","description":"The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\"."},"hold_media_name":{"type":"string","example":"my_media_uploaded_to_media_storage_api","description":"The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\"."},"mute":{"description":"Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".","example":true,"type":"boolean"},"start_conference_on_enter":{"description":"Whether the conference should be started after the participant joins the conference. Defaults to \"false\".","example":true,"type":"boolean"},"supervisor_role":{"description":"Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. \"barge\" means the supervisor enters the conference as a normal participant. This is the same as \"none\". \"monitor\" means the supervisor is muted but can hear all participants. \"whisper\" means that only the specified \"whisper_call_control_ids\" can hear the supervisor. Defaults to \"none\".","example":"whisper","type":"string","enum":["barge","monitor","none","whisper"]},"whisper_call_control_ids":{"description":"Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only.","example":["v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ","v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw"],"type":"array","items":{"type":"string"}},"beep_enabled":{"description":"Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting.","enum":["always","never","on_enter","on_exit"],"example":"on_exit","type":"string"},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","end_conference_on_exit":true,"hold":true,"hold_audio_url":"http://www.example.com/audio.wav","mute":true,"start_conference_on_enter":true,"supervisor_role":"whisper","whisper_call_control_ids":["v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ","v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw"],"beep_enabled":"always"}},"KvKey":{"type":"object","properties":{"key":{"type":"string","example":"user/123"},"size_bytes":{"type":"integer","description":"Size of the stored value in bytes.","example":21},"updated_at":{"type":"string","format":"date-time","example":"2026-06-18T14:48:17Z"}}},"KvKeyListResponseWrapper":{"type":"object","properties":{"record_type":{"type":"string","example":"storage_kv_key"},"data":{"type":"array","items":{"$ref":"#/components/schemas/KvKey"}},"meta":{"$ref":"#/components/schemas/KvListMeta"}}},"KvListMeta":{"type":"object","properties":{"has_more":{"type":"boolean","description":"Whether more results are available on a following page.","example":false},"cursor":{"type":"string","description":"Opaque cursor for the next page; pass it back as the `cursor` query parameter. Omitted when there are no further results."}}},"KvNamespace":{"type":"object","properties":{"record_type":{"type":"string","example":"storage_kv"},"id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"},"name":{"type":"string","example":"my-cache"},"status":{"type":"string","description":"Provisioning status. A namespace is usable once `status` is `provision_ok`. Once deletion completes, the namespace no longer appears in the API.","enum":["pending","provision_ok","provision_failed","deleting","delete_failed"],"example":"provision_ok"},"created_at":{"type":"string","format":"date-time","example":"2026-06-18T14:48:17Z"},"updated_at":{"type":"string","format":"date-time","example":"2026-06-18T14:48:17Z"}}},"KvNamespaceListResponseWrapper":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/KvNamespace"}},"meta":{"$ref":"#/components/schemas/edge-compute_PaginationMeta"}}},"KvNamespaceResponseWrapper":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/KvNamespace"}}},"LLMCondition":{"description":"Edge condition routed by the assistant's LLM from a natural-language\nprompt.\n\nHow the edge is decided depends on the channel. On calls, each outgoing\n`llm` condition is offered to the assistant's model as a transition tool\nalongside the assistant's tools, and the edge fires when the model\nselects it; the platform does not evaluate the prompt itself, and\ninstructions that forbid or discourage tool calls can stop these edges\nfrom firing. On chat channels, the edge prompts are evaluated in a\nseparate model call after the reply, which does not use the assistant's\ninstructions. Use this for fuzzy intents that aren't expressible as a\ndeterministic expression (e.g. 'user wants to escalate to a human').","example":{"prompt":"The user has confirmed their booking details.","type":"llm"},"properties":{"prompt":{"description":"Natural-language criterion the model routes on. On calls this is offered to the model as the transition tool's description; on chat channels it is judged as a statement in the post-reply evaluation call.","example":"The user has confirmed their booking details.","title":"Prompt","type":"string"},"type":{"const":"llm","title":"Type","type":"string"}},"required":["type","prompt"],"title":"LLMCondition","type":"object"},"LabelMutationRequest":{"type":"object","description":"Labels to add or remove. Both operations are idempotent set operations, so a retried request converges instead of failing.","properties":{"labels":{"type":"array","description":"One or more labels. Each label is a freeform, case-sensitive string of at most 255 characters; a message or thread may carry at most 50 labels. The `telnyx:` prefix is a reserved system namespace and is rejected on customer writes.","items":{"type":"string","minLength":1,"maxLength":255},"minItems":1,"maxItems":50}},"required":["labels"]},"LeaveConferenceRequest":{"required":["call_control_id"],"type":"object","title":"Leave Conference Request","properties":{"call_control_id":{"description":"Unique identifier and token for controlling the call","example":"f91269aa-61d1-417f-97b3-10e020e8bc47","type":"string"},"command_id":{"description":"Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.","example":"891510ac-f3e4-11e8-af5b-de00688a4901","type":"string"},"beep_enabled":{"description":"Whether a beep sound should be played when the participant leaves the conference. Can be used to override the conference-level setting.","enum":["always","never","on_enter","on_exit"],"example":"on_exit","type":"string"},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"call_control_id":"c46e06d7-b78f-4b13-96b6-c576af9640ff","beep_enabled":"never"}},"LeaveQueueRequest":{"type":"object","title":"Leave Queue Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"LedgerBillingGroupReport":{"type":"object","properties":{"record_type":{"type":"string","enum":["ledger_billing_group_report"],"description":"Identifies the type of the resource.","example":"ledger_billing_group_report"},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"organization_id":{"type":"string","format":"uuid","description":"Uniquely identifies the organization that owns the resource."},"status":{"type":"string","description":"Status of the ledger billing group report","enum":["pending","complete","failed","deleted"]},"report_url":{"type":["string","null"],"description":"External url of the ledger billing group report, if the status is complete","format":"uri"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created."},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated."}},"example":{"record_type":"ledger_billing_group_report","id":"f5586561-8ff0-4291-a0ac-84fe544797bd","organization_id":"f5586561-8ff0-4291-a0ac-84fe544797bd","report_url":"https://example.com","created_at":"2019-10-15T10:07:15.527Z","updated_at":"2019-10-15T10:07:15.527Z"}},"LinkTelnyxAgentRequest":{"properties":{"telnyx_agent_id":{"type":"string","title":"Telnyx Agent Id","description":"The Telnyx AI agent ID to link"}},"type":"object","required":["telnyx_agent_id"],"title":"LinkTelnyxAgentRequest"},"Links":{"type":"object","required":["self","records"],"properties":{"self":{"type":"string","description":"Link to this session analysis node."},"records":{"type":"string","description":"Link to the underlying detail records."}}},"ListMeta":{"type":"object","properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":42},"page_number":{"type":"integer","example":1},"page_size":{"type":"integer","example":20}}},"ListPushCredentialsResponse":{"description":"Mobile mobile push credentials","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PushCredential"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"},"ListVerificationsResponse":{"title":"ListVerificationsResponse","required":["data","meta"],"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Verification"}},"meta":{"$ref":"#/components/schemas/verify_Meta"}}},"ListVerifiedNumbersResponse":{"title":"ListVerifiedNumbersResponse","description":"A paginated list of Verified Numbers","required":["data","meta"],"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerifiedNumberResponse"}},"meta":{"$ref":"#/components/schemas/verified-numbers_Meta"}}},"ListVerifyProfileMessageTemplateResponse":{"title":"ListVerifyProfileMessageTemplateResponse","description":"A list of Verify profile message templates","required":["data"],"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerifyProfileMessageTemplateResponse"}}}},"ListVerifyProfilesResponse":{"title":"ListVerifyProfilesResponse","description":"A paginated list of Verify profiles","required":["data","meta"],"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerifyProfileResponse"}},"meta":{"$ref":"#/components/schemas/verify_Meta"}}},"ListedMemory":{"properties":{"id":{"type":"string","title":"Id"},"text":{"type":"string","title":"Text"},"recorded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recorded At"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id","description":"The source this memory was extracted from. Set for a fact, which comes from exactly one source; null for a memory derived from other memories. Read it with `GET .../sources/{source_id}`. A source deleted a moment ago can still be named here, and then answers 404."}},"type":"object","required":["id","text","source_id"],"title":"ListedMemory"},"LoaSignaturePayload":{"type":"object","description":"Optional signature embedded in the rendered PDF. When omitted the PDF is returned unsigned for the customer to sign and upload.","required":["image_base64"],"properties":{"image_base64":{"type":"string","description":"Base64-encoded signature image."},"signer_name":{"type":"string","nullable":true}}},"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":"Avatar configuration if an avatar is attached, otherwise null."},"avatar_state":{"type":["string","null"],"enum":["starting","connected","degraded","disconnected",null],"description":"Current state of the avatar connection, or null if no avatar is attached."},"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."}}},"MeetingSessionAvatar":{"title":"MeetingSessionAvatar","type":"object","additionalProperties":false,"required":["provider","avatar_id"],"properties":{"provider":{"type":"string","const":"anam","description":"Avatar provider identifier."},"avatar_id":{"type":"string","description":"Identifier of the avatar."}}},"MeetingSessionAvatarRequest":{"title":"MeetingSessionAvatarRequest","type":"object","additionalProperties":false,"description":"Request options for attaching a bring-your-own-key avatar to the session.","required":["provider","avatar_id","api_key"],"properties":{"provider":{"type":"string","const":"anam","description":"Avatar provider identifier. Currently only \"anam\" is supported."},"avatar_id":{"type":"string","minLength":1,"maxLength":100,"description":"Identifier of the avatar to use."},"api_key":{"type":"string","minLength":1,"maxLength":4096,"writeOnly":true,"description":"Bring-your-own-key API key for the avatar provider. The key is never stored or returned by the API."}}},"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":"Avatar configuration if an avatar is attached, otherwise null."},"avatar_state":{"type":["string","null"],"enum":["starting","connected","degraded","disconnected",null],"description":"Current state of the avatar connection, or null if no avatar is attached."},"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"}}}},"MeetingSessionRecording":{"type":"object","additionalProperties":false,"required":["type","url","expires_at"],"properties":{"type":{"type":"string"},"url":{"type":"string","format":"uri","description":"Current provider download URL. The API does not guarantee URL lifetime or refresh behavior."},"expires_at":{"type":["string","null"],"description":"Expiry timestamp when available, or null. Currently returns null."}}},"MeetingSessionRecordingListResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeetingSessionRecording"}}}},"MeetingSessionRecordingMediaDeletionResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"object","additionalProperties":false,"required":["meeting_session_id","provider","scope","deletion_status"],"properties":{"meeting_session_id":{"type":"string","description":"The account-scoped Meeting Session identifier."},"provider":{"type":"string","const":"telnyx"},"scope":{"type":"string","const":"provider_recording_media"},"deletion_status":{"type":"string","enum":["requested","already_in_progress"]}}}},"example":{"data":{"meeting_session_id":"mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890","provider":"telnyx","scope":"provider_recording_media","deletion_status":"requested"}}},"MeetingSessionResponse":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/MeetingSession"}}},"MemoryListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ListedMemory"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/PageMeta"}},"type":"object","required":["data","meta"],"title":"MemoryListResponse"},"MemoryResponse":{"properties":{"data":{"$ref":"#/components/schemas/TracedMemory"}},"type":"object","required":["data"],"title":"MemoryResponse"},"MessageDetailRecord":{"type":"object","properties":{"uuid":{"type":"string","description":"Unique identifier of the message","example":"3ca7bd3d-7d82-4e07-9df4-009123068320"},"user_id":{"type":"string","description":"Identifier of the Telnyx account who owns the message","example":"3ca7bd3d-7d82-4e07-9df4-009123068320"},"completed_at":{"type":"string","description":"Message completion time","format":"date-time","example":"2020-07-01T00:00:00Z"},"created_at":{"type":"string","description":"Message creation time","format":"date-time","example":"2020-07-01T00:00:00Z"},"updated_at":{"type":"string","description":"Message updated time","format":"date-time","example":"2020-07-01T00:00:00Z"},"sent_at":{"type":"string","description":"Time when the message was sent","format":"date-time","example":"2020-07-01T00:00:00Z"},"carrier":{"type":"string","description":"Country-specific carrier used to send or receive the message","example":"T-Mobile USA"},"carrier_fee":{"type":"string","description":"Fee charged by certain carriers in order to deliver certain message types. Telnyx passes this fee on to the customer according to our pricing table","example":"0.003"},"cld":{"type":"string","description":"The recipient of the message (to parameter in the Messaging API)","example":"+1555123456"},"cli":{"type":"string","description":"The sender of the message (from parameter in the Messaging API). For Alphanumeric ID messages, this is the sender ID value","example":"+1555123456"},"country_code":{"type":"string","description":"Two-letter representation of the country of the cld property using the ISO 3166-1 alpha-2 format","example":"US"},"delivery_status":{"type":"string","description":"Final webhook delivery status","example":"success: webhook succeeded"},"delivery_status_failover_url":{"type":"string","description":"Failover customer-provided URL which Telnyx posts delivery status webhooks to","example":"https://api.example.com/sms/telnyx/inbound"},"delivery_status_webhook_url":{"type":"string","description":"Primary customer-provided URL which Telnyx posts delivery status webhooks to","example":"https://api.example.com/sms/telnyx/inbound"},"direction":{"type":"string","description":"Logical direction of the message from the Telnyx customer's perspective. It's inbound when the Telnyx customer receives the message, or outbound otherwise","example":"outbound","enum":["inbound","outbound"]},"fteu":{"type":"boolean","description":"Indicates whether this is a Free-To-End-User (FTEU) short code message","example":false},"mcc":{"type":"string","description":"Mobile country code. Only available for certain products, such as Global Outbound-Only from Alphanumeric Sender ID","example":"204"},"mnc":{"type":"string","description":"Mobile network code. Only available for certain products, such as Global Outbound-Only from Alphanumeric Sender ID","example":"01"},"message_type":{"type":"string","description":"Describes the Messaging service used to send the message. Available services are: Short Message Service (SMS), Multimedia Messaging Service (MMS), and Rich Communication Services (RCS)","example":"SMS","enum":["SMS","MMS","RCS"]},"on_net":{"type":"boolean","description":"Indicates whether both sender and recipient numbers are Telnyx-managed","example":true},"profile_id":{"type":"string","description":"Unique identifier of the Messaging Profile used to send or receive the message","example":"30ef55db-c4a2-4c4a-9804-a68077973d07"},"profile_name":{"type":"string","description":"Name of the Messaging Profile used to send or receive the message","example":"My Messaging Profile"},"source_country_code":{"type":"string","description":"Two-letter representation of the country of the cli property using the ISO 3166-1 alpha-2 format","example":"US"},"status":{"type":"string","description":"Final status of the message after the delivery attempt","example":"delivered","enum":["gw_timeout","delivered","dlr_unconfirmed","dlr_timeout","received","gw_reject","failed"]},"tags":{"type":"string","description":"Comma-separated tags assigned to the Telnyx number associated with the message","example":"tag1,tag2,tag3"},"rate":{"type":"string","description":"Currency amount per billing unit used to calculate the Telnyx billing cost","example":"0.003"},"currency":{"type":"string","description":"Telnyx account currency used to describe monetary values, including billing cost","example":"USD"},"cost":{"type":"string","description":"Amount, in the user currency, for the Telnyx billing cost","example":"0.003"},"errors":{"type":"array","description":"Telnyx API error codes returned by the Telnyx gateway","items":{"type":"string","example":"40001"}},"parts":{"type":"integer","description":"Number of message parts. The message is broken down in multiple parts when its length surpasses the limit of 160 characters","example":2},"record_type":{"type":"string","description":"Identifies the record schema","example":"message_detail_record","default":"message_detail_record"}},"required":["record_type"]},"MessageEvent":{"type":"object","description":"An event on the per-message events endpoint. The legacy event_type and additive canonical_event_type are email.-prefixed. The deprecated type preserves the bare stored event name for compatibility.","properties":{"type":{"allOf":[{"$ref":"#/components/schemas/EmailEventType"}],"deprecated":true,"description":"Deprecated name field retained for compatibility. Its value is the bare stored event name, never email.-prefixed. Use event_type for the legacy rendering or canonical_event_type for the canonical name."},"event_type":{"type":"string","pattern":"^email\\.","example":"email.delivered","description":"Legacy customer-visible event name, prefixed with `email.`. Gateway rejections render `email.failed`; MTA expirations render `email.bounced`. Webhook subscription allowlists match the legacy name."},"canonical_event_type":{"type":"string","pattern":"^email\\.","example":"email.delivered","description":"Additive canonical outcome name, prefixed with `email.`. Gateway rejection is `email.gw_reject`, ambiguous injection timeout is `email.injection_timeout`, and MTA expiration is `email.expired`. Unchanged outcomes retain their names. Existing stored rows are translated only when recorded payload evidence proves the outcome; a legacy failed row is not guessed or sharpened."},"occurred_at":{"type":"string","format":"date-time"},"payload":{"type":"object","additionalProperties":true}},"required":["type","event_type","canonical_event_type","occurred_at"]},"MessageEventListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MessageEvent"}},"meta":{"$ref":"#/components/schemas/email_PaginationMeta"}},"required":["data","meta"]},"MessageMetadata":{"description":"Metadata to add to the message","type":"object"},"MessageTemplateResponseDataWrapper":{"title":"MessageTemplateResponseDataWrapper","type":"object","properties":{"data":{"$ref":"#/components/schemas/VerifyProfileMessageTemplateResponse"}}},"MessagingFeatureSet":{"type":["object","null"],"required":["domestic_two_way","international_inbound","international_outbound"],"description":"The set of features available for a specific messaging use case (SMS or MMS). Features\ncan vary depending on the characteristics the phone number, as well as its current\nproduct configuration.\n","properties":{"domestic_two_way":{"type":"boolean","description":"Send messages to and receive messages from numbers in the same country."},"international_inbound":{"type":"boolean","description":"Receive messages from numbers in other countries."},"international_outbound":{"type":"boolean","description":"Send messages to numbers in other countries."}},"example":{"domestic_two_way":true,"international_inbound":false,"international_outbound":true}},"MessagingHostedNumberOrder":{"type":"object","example":{"id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","record_type":"messaging_hosted_number_order","messaging_profile_id":"dc8f39ac-953d-4520-b93b-786ae87db0da","status":"pending","phone_numbers":[{"record_type":"messaging_hosted_number","id":"bf6307bd-884d-4c1f-b6ea-c62b8c495d3c","phone_number":"+18665550001","status":"pending"},{"record_type":"messaging_hosted_number","id":"464bd54e-a328-4b11-a131-28e6793cb6f2","phone_number":"+18665550002","status":"pending"}]},"properties":{"record_type":{"type":"string","example":"messaging_hosted_number_order","description":"Identifies the type of the resource.","readOnly":true},"id":{"type":"string","format":"uuid","description":"Resource unique identifier.","readOnly":true},"messaging_profile_id":{"type":["string","null"],"description":"Automatically associate the number with this messaging profile ID when the order is complete."},"status":{"type":"string","enum":["carrier_rejected","compliance_review_failed","deleted","failed","incomplete_documentation","incorrect_billing_information","ineligible_carrier","loa_file_invalid","loa_file_successful","pending","provisioning","successful"]},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/HostedNumber"}}}},"MessagingInboundMessage":{"type":"object","properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"event_type":{"type":"string","example":"message.received","enum":["message.received"],"description":"The type of event being delivered."},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created."},"payload":{"$ref":"#/components/schemas/MessagingInboundMessagePayload"}},"example":{"record_type":"event","id":"bf6307bd-884d-4c1f-b6ea-c62b8c495d3c","event_type":"message.received","occurred_at":"2019-01-23T18:10:02.574Z","payload":{"record_type":"message","direction":"inbound","id":"7ee4241c-f127-47e5-9c34-3aac291f8058","type":"SMS","messaging_profile_id":"0f512bda-ae1e-4597-8e11-e5f5686b97d3","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18665550001","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"},"to":[{"phone_number":"+18445550001","status":"delivered","carrier":"TELNYX LLC","line_type":"VoIP"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}}},"MessagingInboundMessageEvent":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MessagingInboundMessage"}}},"MessagingInboundMessagePayload":{"properties":{"autoresponse_type":{"type":"string","description":"Automatic response type triggered by an inbound opt-in, opt-out, or help keyword. Examples include START, STOP, and HELP.","example":"STOP"},"record_type":{"type":"string","example":"message","enum":["message"],"description":"Identifies the type of the resource."},"direction":{"type":"string","example":"inbound","enum":["inbound"],"description":"The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"type":{"type":"string","enum":["SMS","MMS","WHATSAPP","RCS"],"description":"The messaging channel used for the message."},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"organization_id":{"type":"string","description":"Unique identifier for a messaging profile."},"to":{"description":"Receiving address. SMS, MMS and RCS webhooks use an array of recipients. RCS recipients are identified by agent_id and agent_name. WhatsApp webhooks use one E.164 phone number.","oneOf":[{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed","webhook_delivered"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]},"agent_id":{"type":"string","description":"RCS agent identifier."},"agent_name":{"type":"string","description":"RCS agent name."}}}},{"type":"string","description":"WhatsApp receiving address in E.164 format.","x-format":"address"}]},"cc":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"from":{"type":"object","properties":{"phone_number":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"status":{"type":"string","enum":["received","delivered","webhook_delivered"]},"carrier":{"type":"string","description":"The carrier of the sender."},"line_type":{"type":"string","description":"The line-type of the sender.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless","","long_code"]}}},"body":{"type":"object","description":"Message body for RCS and WhatsApp. RCS messages contain text, user_file, location, or suggestion_response. For WhatsApp edits and revocations, inspect type and the corresponding edit or revoke object.","properties":{"from":{"type":"string","description":"WhatsApp sender in E.164 format.","x-format":"address"},"id":{"type":"string","description":"Telnyx identifier for this webhook message."},"foreign_id":{"type":"string","description":"Meta WhatsApp message identifier for this webhook event."},"timestamp":{"type":"string","description":"Unix timestamp supplied by Meta."},"type":{"type":"string","description":"WhatsApp message body type. Edit and revoke events use `edit` and `revoke`, respectively.","examples":["edit","revoke"]},"edit":{"type":"object","description":"Details for an edited WhatsApp message.","properties":{"original_message_id":{"type":"string","description":"Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque."},"message":{"type":"object","description":"Replacement WhatsApp message content. Its shape depends on the message type.","additionalProperties":true}},"required":["original_message_id","message"]},"revoke":{"type":"object","description":"Details for a revoked WhatsApp message.","properties":{"original_message_id":{"type":"string","description":"Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat this value as opaque."}},"required":["original_message_id"]},"text":{"description":"RCS text string or WhatsApp text object.","oneOf":[{"type":"string"},{"type":"object","properties":{"body":{"type":"string"}},"additionalProperties":true}]},"user_file":{"type":"object","description":"RCS file attachment and optional thumbnail.","properties":{"payload":{"type":"object","properties":{"file_name":{"type":"string"},"file_size_bytes":{"type":"integer"},"file_uri":{"type":"string"},"mime_type":{"type":"string"}}},"thumbnail":{"type":"object","properties":{"file_name":{"type":"string"},"file_size_bytes":{"type":"integer"},"file_uri":{"type":"string"},"mime_type":{"type":"string"}}}}},"location":{"type":"object","description":"Location shared in an RCS message.","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}}},"suggestion_response":{"type":"object","description":"Selected RCS suggestion.","properties":{"postback_data":{"type":"string"},"text":{"type":"string"}}}},"additionalProperties":true},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Message subject."},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":"string","description":"The MIME type of the requested media.","x-format":"mime-type"},"size":{"type":"integer","description":"The size of the requested media."},"hash_sha256":{"type":"string","minLength":32,"maxLength":32,"description":"The SHA256 hash of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":["string","null"],"description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":["string","null"],"description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"Not used for inbound messages."},"completed_at":{"type":["string","null"],"format":"date-time","description":"Not used for inbound messages."},"valid_until":{"type":["string","null"],"description":"Not used for inbound messages.","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}},"example":{"record_type":"message","direction":"inbound","id":"7ee4241c-f127-47e5-9c34-3aac291f8058","type":"SMS","messaging_profile_id":"0f512bda-ae1e-4597-8e11-e5f5686b97d3","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18665550001","status":"delivered","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"},"to":[{"phone_number":"+18445550001","status":"delivered","carrier":"TELNYX LLC","line_type":"VoIP"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}},"MessagingMetricsTimeFrame":{"type":"string","title":"Messaging Metrics Time Frame","description":"The time frame for metrics aggregation.","enum":["1h","3h","24h","3d","7d","30d"],"default":"24h"},"MessagingOutboundMessage":{"properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"event_type":{"type":"string","example":"message.sent","enum":["message.sent","message.finalized","message.read"],"description":"The type of event being delivered."},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created."},"payload":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}},"example":{"record_type":"event","id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","event_type":"message.sent","occurred_at":"2019-01-23T18:10:02.574Z","payload":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"MMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"queued","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[{"url":"https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png","content_type":null,"sha256":null,"size":null}],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}}},"MessagingOutboundMessageEvent":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessage"},"meta":{"type":"object","properties":{"attempt":{"type":"integer","example":1,"description":"Number of attempts to deliver the webhook event."},"delivered_to":{"type":"string","format":"url","example":"https://www.example.com/hooks","description":"The webhook URL the event was delivered to."}}}}},"MessagingOutboundMessagePayload":{"type":"object","properties":{"record_type":{"type":"string","example":"message","enum":["message"],"description":"Identifies the type of the resource."},"direction":{"type":"string","example":"outbound","enum":["outbound"],"description":"The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"type":{"type":"string","enum":["SMS","MMS","RCS"],"description":"The type of message."},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"organization_id":{"type":"string","format":"uuid","description":"The id of the organization the messaging profile belongs to."},"from":{"type":"object","properties":{"phone_number":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]},"agent_id":{"type":"string","description":"RCS agent identifier."},"agent_name":{"type":"string","description":"RCS agent name."}}},"to":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","description":"The delivery status of the message.","enum":["queued","sending","sent","expired","sending_failed","delivery_unconfirmed","delivered","delivery_failed","read"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"cc":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Subject of multimedia message"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":["string","null"],"x-format":"mime-type","description":"The MIME type of the requested media."},"sha256":{"type":["string","null"],"description":"The SHA256 hash of the requested media."},"size":{"type":["integer","null"],"description":"The size of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":"string","description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was sent."},"completed_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was finalized."},"valid_until":{"type":["string","null"],"description":"Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}},"smart_encoding_applied":{"type":"boolean","description":"Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks."},"wait_seconds":{"type":["number","null"],"format":"float","description":"Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.","example":0.5},"body":{"type":"object","description":"RCS webhook message body. Text messages use the text property.","properties":{"text":{"type":"string","description":"RCS text message."}}}},"example":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"MMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"queued","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[{"url":"https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png","content_type":null,"sha256":null,"size":null}],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[],"wait_seconds":0.5}},"MessagingProfile":{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","enum":["messaging_profile"],"readOnly":true},"id":{"description":"Identifies the type of resource.","type":"string","format":"uuid","readOnly":true},"mms_fall_back_to_sms":{"description":"enables SMS fallback for MMS messages.","type":"boolean","default":false},"mms_transcoding":{"description":"enables automated resizing of MMS media.","type":"boolean","default":false},"name":{"description":"A user friendly name for the messaging profile.","type":"string"},"enabled":{"description":"Specifies whether the messaging profile is enabled or not.","type":"boolean"},"webhook_url":{"description":"The URL where webhooks related to this messaging profile will be sent.","type":["string","null"],"format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails.","type":["string","null"],"format":"url"},"webhook_api_version":{"description":"Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.","type":"string","enum":["1","2","2010-04-01"]},"health_webhook_url":{"description":"DEPRECATED: health check url service checking","type":["string","null"],"format":"url"},"whitelisted_destinations":{"description":"Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]`, all destinations will be allowed.","type":"array","items":{"description":"ISO 3166-1 alpha-2 country code.","type":"string","pattern":"^[A-Z]{2}$"}},"created_at":{"description":"ISO 8601 formatted date indicating when the resource was created.","type":"string","format":"date-time","readOnly":true},"updated_at":{"description":"ISO 8601 formatted date indicating when the resource was updated.","type":"string","format":"date-time","readOnly":true},"v1_secret":{"description":"Secret used to authenticate with v1 endpoints.","type":"string"},"number_pool_settings":{"$ref":"#/components/schemas/NumberPoolSettings"},"url_shortener_settings":{"$ref":"#/components/schemas/UrlShortenerSettings"},"alpha_sender":{"description":"The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID.","type":["string","null"],"pattern":"^[A-Za-z0-9 ]{1,11}$"},"daily_spend_limit":{"description":"The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"daily_spend_limit_enabled":{"description":"Whether to enforce the value configured by `daily_spend_limit`.","type":"boolean"},"redaction_enabled":{"description":"Indicates whether message content redaction is enabled for this profile.","type":"boolean","default":false},"redaction_level":{"description":"Determines how much information is redacted in messages for privacy or compliance purposes.","type":"integer","default":2},"mobile_only":{"description":"Send messages only to mobile phone numbers.","type":"boolean","default":false},"smart_encoding":{"description":"Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs.","type":"boolean","default":false},"organization_id":{"type":"string","description":"The organization that owns this messaging profile."},"ai_assistant_id":{"type":["string","null"],"description":"The AI assistant ID associated with this messaging profile.","example":"ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000"},"resource_group_id":{"type":["string","null"],"description":"The resource group ID associated with this messaging profile."}},"example":{"record_type":"messaging_profile","id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"Profile for Messages","webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","enabled":true,"webhook_api_version":"2","whitelisted_destinations":["US"],"created_at":"2019-01-23T18:10:02.574Z","updated_at":"2019-01-23T18:10:02.574Z","number_pool_settings":{"toll_free_weight":10,"long_code_weight":2,"skip_unhealthy":false,"sticky_sender":true,"geomatch":false},"url_shortener_settings":{"domain":"example.ex","prefix":"cmpny","replace_blacklist_only":true,"send_webhooks":false},"v1_secret":"rP1VamejkU2v0qIUxntqLW2c","health_webhook_url":null,"mms_fall_back_to_sms":false,"mms_transcoding":false,"daily_spend_limit":"100.00","daily_spend_limit_enabled":false,"redaction_enabled":false,"redaction_level":2,"mobile_only":false}},"MessagingProfileFeatures":{"type":["object","null"],"description":"Telnyx product features the messaging customer can enable on the messaging profile. Keys map to individual feature flags; unknown keys are accepted and preserved for forward compatibility with rolling deployments.","additionalProperties":true,"properties":{"ai_opt_out_detection_enabled":{"type":"boolean","description":"Enables AI detection of inbound opt-out messages that do not follow the standard STOP/UNSTOP/HELP opt-out keyword pattern. When enabled, the messaging platform applies an AI model to identify non-standard opt-out requests (e.g. natural-language phrases) and treats them as opt-outs."}},"example":{"ai_opt_out_detection_enabled":true}},"MessagingSettings":{"properties":{"default_messaging_profile_id":{"type":"string","description":"Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation."},"delivery_status_webhook_url":{"type":"string","description":"The URL where webhooks related to delivery statused for assistant messages will be sent."},"conversation_inactivity_minutes":{"type":"integer","minimum":1,"maximum":10000000,"description":"If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one."}},"type":"object"},"MessagingUrlDomain":{"type":"object","properties":{"record_type":{"type":"string"},"id":{"type":"string"},"url_domain":{"type":"string"},"use_case":{"type":"string"}},"example":{"record_type":"messaging_url_domain","id":"464bd54e-a328-4b11-a131-28e6793cb6f2","url_domain":"http://example.com","use_case":"test"}},"Meta":{"properties":{"total_pages":{"type":"integer"},"total_results":{"type":"integer"},"page_number":{"type":"integer"},"page_size":{"type":"integer"}},"type":"object","required":["total_pages","total_results","page_number","page_size"],"title":"Meta"},"MetaResponse":{"type":"object","properties":{"url":{"type":"string","description":"This should likely be a URL to the relevant documentation","example":"https://developers.telnyx.com/docs/overview/errors/10001"}}},"Metadata":{"type":"object","title":"Metadata","properties":{"total_pages":{"type":"number","description":"Total number of pages based on pagination settings","example":13,"format":"integer"},"total_results":{"type":"number","description":"Total number of results","example":13,"format":"integer"},"page_number":{"type":"number","description":"Current Page based on pagination settings (included when defaults are used.)","example":3,"format":"integer"},"page_size":{"type":"number","description":"Number of results to return per page based on pagination settings (included when defaults are used.)","example":1,"format":"integer"}}},"MetadataFieldMapping":{"type":"object","required":["local_field","parent_field"],"properties":{"local_field":{"type":"string"},"parent_field":{"type":"string"}}},"MetadataInfo":{"type":"object","required":["total_record_types","last_updated"],"properties":{"total_record_types":{"type":"integer"},"last_updated":{"type":"string","format":"date-time"}}},"MetadataOverviewResponse":{"type":"object","required":["record_types","query_parameters","meta"],"properties":{"record_types":{"type":"array","items":{"$ref":"#/components/schemas/RecordTypeInfo"}},"query_parameters":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/QueryParameterInfo"},"description":"Map of supported query parameter names to their definitions."},"meta":{"$ref":"#/components/schemas/MetadataInfo"}}},"MigrationParams":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data migration.","readOnly":true},"source_id":{"type":"string","description":"ID of the Migration Source from which to migrate data."},"target_bucket_name":{"type":"string","description":"Bucket name to migrate the data into. Will default to the same name as the `source_bucket_name`."},"target_region":{"type":"string","description":"Telnyx Cloud Storage region to migrate the data to."},"refresh":{"type":"boolean","description":"If true, will continue to poll the source bucket to ensure new data is continually migrated over."},"last_copy":{"type":"string","format":"date-time","description":"Time when data migration was last copied from the source.","readOnly":true,"example":"2020-01-01T00:00:00Z"},"status":{"type":"string","enum":["pending","checking","migrating","complete","error","stopped"],"readOnly":true,"description":"Status of the migration."},"bytes_to_migrate":{"type":"integer","readOnly":true,"description":"Total amount of data found in source bucket to migrate."},"bytes_migrated":{"type":"integer","readOnly":true,"description":"Total amount of data that has been succesfully migrated."},"speed":{"type":"integer","readOnly":true,"description":"Current speed of the migration."},"eta":{"type":"string","format":"date-time","readOnly":true,"description":"Estimated time the migration will complete.","example":"2020-01-01T00:00:00Z"},"created_at":{"type":"string","format":"date-time","description":"Time when data migration was created","readOnly":true,"example":"2020-01-01T00:00:00Z"}},"required":["source_id","target_bucket_name","target_region"]},"MigrationSourceCoverageParams":{"type":"object","properties":{"provider":{"type":"string","enum":["aws"],"description":"Cloud provider from which to migrate data."},"source_region":{"type":"string","description":"Provider region from which to migrate data."}}},"MigrationSourceParams":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data migration source.","readOnly":true},"provider":{"type":"string","enum":["aws","telnyx"],"description":"Cloud provider from which to migrate data. Use 'telnyx' if you want to migrate data from one Telnyx bucket to another."},"source_region":{"type":"string","description":"For intra-Telnyx buckets migration, specify the source bucket region in this field."},"provider_auth":{"type":"object","properties":{"access_key":{"type":"string","description":"AWS Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here."},"secret_access_key":{"type":"string","description":"AWS Secret Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here as well."}}},"bucket_name":{"type":"string","description":"Bucket name to migrate the data from."}},"required":["provider","provider_auth","bucket_name"]},"MinimaxClone":{"type":"object","description":"Upload-based voice clone using the Minimax provider.","required":["audio_file","name","language","gender","provider"],"properties":{"audio_file":{"type":"string","format":"binary","description":"Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality, provide 5–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,"default":1},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1},"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.<br/><br/>\nThis code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.","example":"310"},"mnc":{"type":"string","description":"MNC stands for Mobile Network Code. It's a two to three decimal digits that identify a network.<br/><br/>\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":"Maximum completion (output) tokens the model may generate per request. This value caps the Chat Completions `max_tokens` default and any larger explicit value on that model. `null` if unconstrained beyond `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"},"Monochrome":{"description":"The flag to enable monochrome, true black and white fax results.","type":"boolean","default":false},"MonthDetail":{"type":"object","properties":{"quantity":{"type":"integer","description":"Number of items","example":10},"mrc":{"type":"string","description":"Monthly recurring charge amount as decimal string","example":"25.50"},"otc":{"type":["string","null"],"description":"One-time charge amount as decimal string","example":"5.00"}},"required":["quantity","mrc"]},"MonthlyChargesBreakdownResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BreakdownData"}},"required":["data"]},"MonthlyChargesSummaryResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SummaryAndTotal"}},"required":["data"]},"MutateInboxFiltersRequest":{"type":"object","properties":{"type":{"type":"string","enum":["allowlist","blocklist"],"description":"The list to change."},"entries":{"$ref":"#/components/schemas/InboxFilterEntryList"}},"required":["type","entries"]},"Namespace":{"properties":{"id":{"type":"string","title":"Id","description":"The namespace's unique identifier."},"name":{"type":"string","title":"Name","description":"The namespace's name, used in the path. `default` exists for every organization."}},"type":"object","required":["id","name"],"title":"Namespace","description":"An isolated memory store within your organization."},"NamespaceCreate":{"properties":{"name":{"type":"string","title":"Name","description":"A name for the new namespace, unique within your organization."}},"type":"object","required":["name"],"title":"NamespaceCreate"},"NamespaceListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Namespace"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"NamespaceListResponse"},"NamespaceResponse":{"properties":{"data":{"$ref":"#/components/schemas/Namespace"}},"type":"object","required":["data"],"title":"NamespaceResponse"},"NamespaceSettings":{"properties":{"summary":{"$ref":"#/components/schemas/SummarySettings","description":"Settings that shape this namespace's summaries."}},"type":"object","title":"NamespaceSettings","description":"A namespace's settings, grouped by what they affect."},"NamespaceSettingsPatch":{"properties":{"summary":{"anyOf":[{"$ref":"#/components/schemas/SummarySettingsPatch"},{"type":"null"}],"description":"Summary settings to change. Omit to change nothing."}},"type":"object","title":"NamespaceSettingsPatch"},"NamespaceSettingsResponse":{"properties":{"data":{"$ref":"#/components/schemas/NamespaceSettings"}},"type":"object","required":["data"],"title":"NamespaceSettingsResponse"},"Network":{"allOf":[{"$ref":"#/components/schemas/Record"},{"type":"object","title":"Network","properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"network"},"name":{"type":"string","description":"A user specified name for the network.","example":"test network"}}}]},"NetworkCoverage":{"type":"object","title":"NetworkCoverage","properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"network_coverage"},"location":{"$ref":"#/components/schemas/netapps_Location_17904fcfbc"},"available_services":{"type":"array","description":"List of interface types supported in this region.","items":{"oneOf":[{"$ref":"#/components/schemas/AvailableService"}]}}}},"NetworkCreate":{"allOf":[{"$ref":"#/components/schemas/Network"},{"type":"object","title":"NetworkCreate","required":["name"]}]},"NetworkInterface":{"allOf":[{"$ref":"#/components/schemas/Record"},{"$ref":"#/components/schemas/Interface"},{"$ref":"#/components/schemas/RegionOut"},{"type":"object","title":"NetworkInterface","properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"network_interface"},"type":{"type":"string","description":"Identifies the type of the interface.","readOnly":true,"example":"wireguard_interface"}}}]},"NewBillingGroup":{"type":"object","properties":{"name":{"type":"string","description":"A name for the billing group"}},"example":{"name":"string"}},"NewLedgerBillingGroupReport":{"type":"object","properties":{"year":{"type":"integer","description":"Year of the ledger billing group report","example":2019},"month":{"type":"integer","description":"Month of the ledger billing group report","example":10}},"example":{"year":2019,"month":10}},"NewParticipantResource":{"type":"object","title":"New participant resource","example":{"account_sid":"4e71926f-8f13-450e-b91c-23c2ef786aa6","call_sid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","coaching":false,"conference_sid":"cd5a70f4-759b-4d5e-9c06-88c00f16f3c1","end_conference_on_exit":false,"hold":false,"muted":false,"status":"completed","uri":"/v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json"},"properties":{"account_sid":{"type":"string","description":"The id of the account the resource belongs to.","example":"61bf923e-5e4d-4595-a110-56190ea18a1b"},"call_sid":{"type":"string","description":"The identifier of this participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"coaching":{"type":"boolean","description":"Whether the participant is coaching another call.","example":false},"coaching_call_sid":{"type":"string","description":"The identifier of the coached participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"end_conference_on_exit":{"type":"boolean","description":"Whether the conference ends when the participant leaves.","example":false},"hold":{"type":"boolean","description":"Whether the participant is on hold.","example":false},"muted":{"type":"boolean","description":"Whether the participant is muted.","example":false},"status":{"type":"string","description":"The status of the participant's call in the conference.","enum":["connecting","connected","completed"],"example":"connected"},"uri":{"type":"string","description":"The relative URI for this participant.","example":"/v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json"},"conference_sid":{"type":"string","format":"uuid","description":"The unique identifier for the conference.","example":"cd5a70f4-759b-4d5e-9c06-88c00f16f3c1"}}},"NodePosition":{"description":"2D coordinates for a node, used by authoring UIs to lay out the graph.\n\nPurely a presentation aid. The runtime ignores `position`; it round-trips\nthrough the API so frontends can persist the graph layout customers\narrange in the editor.","properties":{"x":{"description":"Horizontal coordinate in the authoring canvas.","title":"X","type":"number"},"y":{"description":"Vertical coordinate in the authoring canvas.","title":"Y","type":"number"}},"required":["x","y"],"title":"NodePosition","type":"object"},"NodeTarget":{"description":"Edge target referencing another node within the same flow.\n\nThe runtime transitions the active node to `node_id` and continues\nprocessing within the current assistant's flow.","properties":{"node_id":{"description":"ID of the node this edge transitions into.","example":"n_billing","title":"Node Id","type":"string"},"type":{"const":"node","title":"Type","type":"string"}},"required":["type","node_id"],"title":"NodeTarget","type":"object"},"NoiseSuppressionDirection":{"type":"string","title":"Noise Suppression Direction","description":"The direction of the audio stream to be noise suppressed.","enum":["inbound","outbound","both"],"default":"inbound","example":"outbound"},"NoiseSuppressionEngine":{"type":"string","title":"Noise Suppression Engine","description":"The engine to use for noise suppression.\nFor backward compatibility, engines A, B, C, and D are also supported, but are deprecated:\n A - Denoiser\n B - DeepFilterNet\n C - Krisp\n D - AiCoustics","enum":["Denoiser","DeepFilterNet","Krisp","AiCoustics","aic_l_quail","aic_l_rook","aic_s_quail","aic_s_rook","quail_voice_focus_s","quail_voice_focus_xs"],"default":"Denoiser","example":"Denoiser"},"NoiseSuppressionEngineConfig":{"type":"object","title":"Noise Suppression Engine Configuration","description":"Configuration parameters for noise suppression engines. Different engines support different parameters.","properties":{"attenuation_limit":{"type":"integer","description":"The attenuation limit for noise suppression (0-100). Only applicable for DeepFilterNet.","minimum":0,"maximum":100,"default":100,"example":100},"mode":{"type":"string","description":"Processing mode. Only applicable for DeepFilterNet.","enum":["standard","advanced"],"example":"standard"},"model":{"type":"string","description":"The Krisp model to use. Only applicable for Krisp.","enum":["krisp-viva-tel-v2.kef","krisp-viva-tel-lite-v1.kef","krisp-viva-pro-v1.kef","krisp-viva-ss-v1.kef"],"example":"krisp-viva-tel-v2.kef"},"suppression_level":{"type":"number","description":"Suppression level (0.0-100.0). Only applicable for Krisp.","minimum":0,"maximum":100,"example":50},"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,"maximum":1,"example":0.5},"voice_gain":{"type":"number","description":"Voice gain multiplier (0.1-4.0). Only applicable for AiCoustics.","minimum":0.1,"maximum":4,"example":1}}},"NoiseSuppressionEnginesListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/noise-suppression-engines_NoiseSuppressionEngine"}}},"required":["data"]},"NoiseSuppressionStart":{"type":"object","title":"Noise Suppression Start Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"direction":{"$ref":"#/components/schemas/NoiseSuppressionDirection"},"noise_suppression_engine":{"$ref":"#/components/schemas/NoiseSuppressionEngine"},"noise_suppression_engine_config":{"$ref":"#/components/schemas/NoiseSuppressionEngineConfig"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","direction":"both","noise_suppression_engine":"DeepFilterNet","noise_suppression_engine_config":{"attenuation_limit":100}}},"NoiseSuppressionStop":{"type":"object","title":"Noise Suppression Stop Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"NotFoundError":{"properties":{"code":{"type":"string","title":"Telnyx error code"},"detail":{"type":"string","title":"Error details"},"title":{"type":"string","title":"Error title"}},"type":"object","required":["detail"],"title":"NotFoundError"},"NotificationChannel":{"description":"A Notification Channel","properties":{"id":{"type":"string","description":"A UUID.","readOnly":true,"example":"12455643-3cf1-4683-ad23-1cd32f7d5e0a"},"notification_profile_id":{"type":"string","description":"A UUID reference to the associated Notification Profile.","example":"12455643-3cf1-4683-ad23-1cd32f7d5e0a"},"channel_type_id":{"type":"string","description":"A Channel Type ID","enum":["sms","voice","email","webhook"]},"channel_destination":{"type":"string","description":"The destination associated with the channel type.","example":"+13125550000"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z","readOnly":true}},"type":"object"},"NotificationEvent":{"description":"An object representing the available notifications.","properties":{"id":{"type":"string","description":"A UUID.","readOnly":true,"example":"d5c395cd-9864-4609-b5e2-3f9fd4ce201a"},"name":{"type":"string","description":"A human readable name.","example":"Emergency Number Dialed"},"notification_category":{"type":"string","example":"Calls"},"enabled":{"type":"boolean","example":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z"}},"type":"object"},"NotificationEventCondition":{"properties":{"id":{"type":"string","description":"A UUID.","readOnly":true,"example":"70c7c5cb-dce2-4124-accb-870d39dbe852"},"name":{"type":"string","example":"from phone number"},"description":{"type":"string","example":"When emergency number dialed from phone number X"},"notification_event_id":{"type":"string","example":"d5c395cd-9864-4609-b5e2-3f9fd4ce201a"},"associated_record_type":{"type":"string","enum":["account","phone_number"],"example":"phone_number"},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"phone_number"},"optional":{"type":"boolean","example":false},"data_type":{"type":"string","example":"string"}}}},"enabled":{"type":"boolean","example":true},"allow_multiple_channels":{"description":"Dictates whether a notification channel id needs to be provided when creating a notficiation setting.","type":"boolean","example":false},"asynchronous":{"description":"Dictates whether a notification setting will take effect immediately.","type":"boolean","example":true},"supported_channels":{"description":"Dictates the supported notification channel types that can be emitted.","type":"array","items":{"type":"string"},"example":["webhook","sms","email","voice"]},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z"}},"type":"object"},"NotificationProfile":{"description":"A Collection of Notification Channels","properties":{"id":{"type":"string","description":"A UUID.","readOnly":true,"example":"12455643-3cf1-4683-ad23-1cd32f7d5e0a"},"name":{"type":"string","description":"A human readable name."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z","readOnly":true}},"type":"object"},"NotificationSetting":{"properties":{"id":{"type":"string","description":"A UUID.","readOnly":true,"example":"8eb5b5f9-5893-423c-9f15-b487713d44d4"},"notification_event_condition_id":{"type":"string","description":"A UUID reference to the associated Notification Event Condition.","example":"70c7c5cb-dce2-4124-accb-870d39dbe852"},"notification_profile_id":{"type":"string","description":"A UUID reference to the associated Notification Profile.","example":"12455643-3cf1-4683-ad23-1cd32f7d5e0a"},"associated_record_type":{"type":"string","example":"phone_number","readOnly":true},"associated_record_type_value":{"type":"string","example":"+13125550000","readOnly":true},"status":{"type":"string","description":"Most preferences apply immediately; however, other may needs to propagate.","enum":["enabled","enable-received","enable-pending","enable-submtited","delete-received","delete-pending","delete-submitted","deleted"],"example":"enable-received","readOnly":true},"notification_channel_id":{"type":"string","description":"A UUID reference to the associated Notification Channel.","example":"12455643-3cf1-4683-ad23-1cd32f7d5e0a"},"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"phone_number"},"value":{"type":"string","example":"+13125550000"}}}},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2019-10-15T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2019-10-15T10:07:15.527Z","readOnly":true}},"type":"object"},"NumberBlockOrder":{"properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"record_type":{"type":"string","example":"number_block_order","readOnly":true},"starting_number":{"type":"string","description":"Starting phone number block","example":"+19705555000"},"range":{"type":"integer","description":"The phone number range included in the block.","example":10},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1,"readOnly":true},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated to all numbers in the phone number block."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated to all numbers in the phone number block."},"status":{"type":"string","enum":["pending","success","failure"],"example":"success","description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true}},"example":{"id":"12ade33a-21c0-473b-b055-b3c836e1c292","starting_number":"+19705555000","range":10,"record_type":"number_block_order","connection_id":"346789098765567","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600","phone_numbers_count":10,"status":"pending","customer_reference":"MY REF 001","created_at":"2018-01-01T00:00:00.000000Z","updated_at":"2018-01-01T00:00:00.000000Z","requirements_met":true},"type":"object"},"NumberBreakdownResult":{"type":"object","properties":{"tn":{"type":"string","description":"Phone number","example":"+15551234567"},"charge_type":{"type":"string","description":"Type of charge for the number","example":"local"},"service_owner_user_id":{"type":"string","description":"User ID of the service owner","example":"0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8"},"service_owner_email":{"type":"string","format":"email","description":"Email address of the service owner","example":"user@example.com"},"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDetail"},"description":"List of services associated with this number"}},"required":["tn","charge_type","service_owner_user_id","service_owner_email","services"]},"NumberHealthMetrics":{"type":"object","required":["message_count","inbound_outbound_ratio","success_ratio","spam_ratio"],"description":"High level health metrics about the number and it's messaging sending patterns.\n","properties":{"message_count":{"type":"integer","description":"The number of messages analyzed for the health metrics."},"inbound_outbound_ratio":{"type":"number","format":"float","description":"The ratio of messages received to the number of messages sent."},"success_ratio":{"type":"number","format":"float","description":"The ratio of messages sucessfully delivered to the number of messages attempted."},"spam_ratio":{"type":"number","format":"float","description":"The ratio of messages blocked for spam to the number of messages attempted."}},"example":{"message_count":10,"inbound_outbound_ratio":1,"success_ratio":2,"spam_ratio":10}},"NumberLiteralExpression":{"description":"Constant numeric value (float; integers are accepted and stored as float).","example":{"type":"number_literal","value":18},"properties":{"type":{"const":"number_literal","title":"Type","type":"string"},"value":{"description":"Literal numeric value.","example":18,"title":"Value","type":"number"}},"required":["type","value"],"title":"NumberLiteralExpression","type":"object"},"NumberLookupRecord":{"type":"object","title":"NumberLookup","properties":{"record_type":{"type":"string","description":"Identifies the type of record","example":"number_lookup"},"country_code":{"type":"string","description":"Region code that matches the specific country calling code","example":"US"},"national_format":{"type":"string","description":"Hyphen-separated national number, preceded by the national destination code (NDC), with a 0 prefix, if an NDC is found","example":"(0312) 945-7420"},"phone_number":{"type":"string","description":"E164-formatted phone number","example":"+13129457420"},"fraud":{"type":["string","null"],"description":"Unused","example":null},"carrier":{"$ref":"#/components/schemas/Carrier"},"caller_name":{"$ref":"#/components/schemas/CallerName"},"portability":{"$ref":"#/components/schemas/Portability"}}},"NumberOrder":{"title":"Number Order With Phone Numbers","type":"object","properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"record_type":{"type":"string","example":"number_order","readOnly":true},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1,"readOnly":true},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated with this phone number."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"billing_group_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"phone_numbers":{"type":"array","items":{"description":"The unique phone numbers given as arguments in the job creation.","$ref":"#/components/schemas/PhoneNumbersJobPhoneNumber"}},"sub_number_orders_ids":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true}}},"NumberOrderPhoneNumber":{"properties":{"id":{"type":"string","format":"uuid","example":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","readOnly":true},"record_type":{"type":"string","example":"number_order_phone_number","readOnly":true},"phone_number":{"type":"string","example":"+19705555098"},"order_request_id":{"type":"string","format":"uuid","example":"dc8e4d67-33a0-4cbb-af74-7b58f05bd495"},"sub_number_order_id":{"type":"string","format":"uuid","example":"dc8e4d67-33a0-4cbb-af74-7b58f05bd496"},"country_code":{"type":"string","example":"US"},"phone_number_type":{"type":"string","example":"local","enum":["local","toll_free","mobile","national","shared_cost","landline"]},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue"}},"requirements_met":{"type":"boolean","description":"True if all requirements are met for a phone number, false otherwise.","example":true,"readOnly":true},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the phone number in the order.","readOnly":true},"bundle_id":{"type":["string","null"],"format":"uuid","example":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","readOnly":true},"locality":{"type":"string","example":"San Francisco"},"deadline":{"type":"string","format":"date-time","example":"2024-05-31T11:14:00Z"},"requirements_status":{"type":"string","enum":["pending","approved","cancelled","deleted","requirement-info-exception","requirement-info-pending","requirement-info-under-review"],"description":"Status of requirements (if applicable)","readOnly":true},"is_block_number":{"type":"boolean","example":false}},"type":"object"},"NumberOrderPhoneNumberRequirementGroupResponse":{"type":"object","properties":{"status":{"type":"string","example":"pending"},"order_request_id":{"type":"string","format":"uuid","example":"a11d58fe-88a4-494a-b752-8dea411993c6"},"country_code":{"type":"string","example":"AT"},"is_block_number":{"type":"boolean","example":false},"regulatory_requirements":{"type":"array","items":{"type":"object","properties":{"requirement_id":{"type":"string","format":"uuid"},"field_value":{"type":"string","example":"1234567890"},"field_type":{"type":"string","example":"textual"},"status":{"type":"string","example":"pending-approval"}}}},"locality":{"type":"string","example":"AUSTRIA"},"phone_number_type":{"type":"string","example":"toll_free"},"bundle_id":{"type":["string","null"],"format":"uuid"},"sub_number_order_id":{"type":"string","format":"uuid","example":"f826ed66-b27c-4340-9dc0-57dc3459f1bd"},"deadline":{"type":"string","format":"date-time"},"requirements_status":{"type":"string","example":"requirement-info-under-review"},"id":{"type":"string","format":"uuid","example":"613d517a-0432-4bae-a785-c11033bd0985"},"phone_number":{"type":"string","example":"+43800300238"},"requirements_met":{"type":"boolean","example":false},"record_type":{"type":"string","example":"number_order_phone_number"}}},"NumberOrderWebhookEvent":{"type":"object","title":"Number Order Event","properties":{"data":{"type":"object","properties":{"event_type":{"type":"string","enum":["number_order.complete"],"example":"number_order.complete","description":"The type of event being sent"},"id":{"type":"string","format":"uuid","example":"d578b093-a0e7-4b64-b0d3-6b689a6ff170","description":"Unique identifier for the event"},"occurred_at":{"type":"string","format":"date-time","example":"2025-08-22T16:23:54.496464Z","description":"ISO 8601 timestamp of when the event occurred"},"payload":{"$ref":"#/components/schemas/NumberOrderWithPhoneNumbers"},"record_type":{"type":"string","example":"event","description":"Type of record"}},"required":["event_type","id","occurred_at","payload","record_type"]},"meta":{"type":"object","properties":{"attempt":{"type":"integer","example":1,"description":"Webhook delivery attempt number"},"delivered_to":{"type":"string","format":"uri","example":"https://sample-api.com/webhook","description":"URL where the webhook was delivered"}},"required":["attempt","delivered_to"]}},"required":["data","meta"]},"NumberOrderWebhookPayload":{"title":"Number Order Webhook Payload","type":"object","properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292"},"record_type":{"type":"string","example":"number_order"},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated with this phone number."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"billing_group_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"phone_numbers":{"type":"array","items":{"description":"The unique phone numbers given as arguments in the job creation.","$ref":"#/components/schemas/NumberOrderWebhookPhoneNumber"}},"sub_number_orders_ids":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z"},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z"},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true}},"description":"Number order data delivered in a webhook. Server-generated fields are valid in this outbound webhook request."},"NumberOrderWebhookPhoneNumber":{"properties":{"id":{"type":"string","format":"uuid","example":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494"},"record_type":{"type":"string","example":"number_order_phone_number"},"phone_number":{"type":"string","example":"+19705555098"},"country_iso_alpha2":{"type":"string","description":"The ISO 3166-1 alpha-2 country code of the phone number.","example":"US"},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/NumberOrderWebhookRegulatoryRequirement"}},"requirements_met":{"type":"boolean","description":"True if all requirements are met for a phone number, false otherwise.","example":true},"requirements_status":{"type":"string","enum":["pending","approved","cancelled","deleted","requirement-info-exception","requirement-info-pending","requirement-info-under-review"],"description":"Status of document requirements (if applicable)"},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the phone number in the order."},"bundle_id":{"type":"string","format":"uuid","example":"bc8e4d67-33a0-4cbb-af74-7b58f05bd494"},"phone_number_type":{"type":"string","enum":["local","mobile","national","shared_cost","toll_free"],"description":"Phone number type"},"country_code":{"type":"string","example":"US","description":"Country code of the phone number"}},"example":{"id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","record_type":"number_order_phone_number","phone_number":"+19705555098","bundle_id":"bc8e4d67-33a0-4cbb-af74-7b58f05bd474","regulatory_requirements":[{"record_type":"phone_number_regulatory_requirement","requirement_id":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576","field_value":"45f45a04-b4be-4592-95b1-9306b9db2b21","field_type":"address"}],"requirements_met":true,"status":"success"},"type":"object","title":"Number Order Webhook Phone Number","description":"Phone number data delivered in a number order webhook."},"NumberOrderWebhookRegulatoryRequirement":{"properties":{"record_type":{"type":"string","example":"phone_number_regulatory_requirement"},"requirement_id":{"type":"string","format":"uuid","description":"Unique id for a requirement.","example":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576"},"field_type":{"type":"string","enum":["textual","datetime","address","document"],"example":"address"},"field_value":{"type":"string","description":"The value of the requirement, this could be an id to a resource or a string value.","example":"45f45a04-b4be-4592-95b1-9306b9db2b21"}},"type":"object","title":"Number Order Webhook Regulatory Requirement","description":"Regulatory requirement data delivered in a number order webhook."},"NumberOrderWithPhoneNumbers":{"title":"NumberOrder","type":"object","properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"record_type":{"type":"string","example":"number_order","readOnly":true},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1,"readOnly":true},"connection_id":{"type":"string","example":"346789098765567","description":"Identifies the connection associated with this phone number."},"messaging_profile_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"billing_group_id":{"type":"string","example":"abc85f64-5717-4562-b3fc-2c9600","description":"Identifies the messaging profile associated with the phone number."},"phone_numbers":{"type":"array","items":{"description":"The unique phone numbers given as arguments in the job creation.","$ref":"#/components/schemas/PhoneNumber"}},"sub_number_orders_ids":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true}}},"NumberPoolSettings":{"type":["object","null"],"required":["toll_free_weight","long_code_weight","skip_unhealthy"],"description":"Number Pool allows you to send messages from a pool of numbers of different types, assigning\nweights to each type. The pool consists of all the long code and toll free numbers\nassigned to the messaging profile.\n\nTo disable this feature, set the object field to `null`.\n","properties":{"toll_free_weight":{"type":"number","example":10,"description":"Defines the probability weight for a Toll Free number to be selected when sending a message.\nThe higher the weight the higher the probability. The sum of the weights for all number types\ndoes not necessarily need to add to 100. Weight must be a non-negative number, and when equal\nto zero it will remove the number type from the pool.\n"},"long_code_weight":{"type":"number","example":1,"description":"Defines the probability weight for a Long Code number to be selected when sending a message.\nThe higher the weight the higher the probability. The sum of the weights for all number types\ndoes not necessarily need to add to 100.  Weight must be a non-negative number, and when equal\nto zero it will remove the number type from the pool.\n"},"skip_unhealthy":{"type":"boolean","example":true,"description":"If set to true all unhealthy numbers will be automatically excluded from the pool.\nHealth metrics per number are calculated on a regular basis, taking into account the deliverability\nrate and the amount of messages marked as spam by upstream carriers.\nNumbers with a deliverability rate below 25% or spam ratio over 75% will be considered unhealthy.\n"},"sticky_sender":{"type":"boolean","default":false,"description":"If set to true, Number Pool will try to choose the same sending number for all messages to a particular\nrecipient. If the sending number becomes unhealthy and `skip_unhealthy` is set to true, a new\nnumber will be chosen.\n"},"geomatch":{"type":"boolean","default":false,"description":"If set to true, Number Pool will try to choose a sending number with the same area code as the destination\nnumber. If there are no such numbers available, a nunber with a different area code will be chosen. Currently\nonly NANP numbers are supported.\n"}},"example":{"toll_free_weight":10,"long_code_weight":1,"skip_unhealthy":true,"sticky_sender":false,"geomatch":false}},"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},"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},"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.<br/><br/> By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite.","default":"customer"},"tech_prefix":{"type":"string","description":"Numerical chars only, exactly 4 characters.","default":""},"ip_authentication_method":{"type":"string","default":"tech-prefixp-charge-info","example":"tech-prefixp-charge-info","enum":["tech-prefixp-charge-info","token"]},"ip_authentication_token":{"type":"string","default":null},"outbound_voice_profile_id":{"$ref":"#/components/schemas/connections_OutboundVoiceProfileId"}},"example":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","tech_prefix":"string","ip_authentication_method":"token","ip_authentication_token":"string","outbound_voice_profile_id":"1293384261075731499"}},"OutboundMessage":{"properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"event_type":{"type":"string","example":"message.sent","enum":["message.sent","message.finalized"],"description":"The type of event being delivered."},"occurred_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created."},"payload":{"$ref":"#/components/schemas/OutboundMessagePayload"}},"example":{"record_type":"event","id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","event_type":"message.sent","occurred_at":"2019-01-23T18:10:02.574Z","payload":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"MMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"queued","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[{"url":"https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png","content_type":null,"sha256":null,"size":null}],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}}},"OutboundMessageEvent":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OutboundMessage"},"meta":{"type":"object","properties":{"attempt":{"type":"integer","example":1,"description":"Number of attempts to deliver the webhook event."},"delivered_to":{"type":"string","format":"url","example":"https://www.example.com/hooks","description":"The webhook URL the event was delivered to."}}}}},"OutboundMessagePayload":{"type":"object","properties":{"record_type":{"type":"string","example":"message","enum":["message"],"description":"Identifies the type of the resource."},"direction":{"type":"string","example":"outbound","enum":["outbound"],"description":"The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"type":{"type":"string","enum":["SMS","MMS"],"description":"The type of message."},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"organization_id":{"type":"string","format":"uuid","description":"The id of the organization the messaging profile belongs to."},"from":{"type":"object","properties":{"phone_number":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}},"to":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","description":"The delivery status of the message.","enum":["queued","sending","sent","expired","sending_failed","delivery_unconfirmed","delivered","delivery_failed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"cc":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","enum":["queued","sending","sent","delivered","sending_failed","delivery_failed","delivery_unconfirmed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Subject of multimedia message"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":["string","null"],"x-format":"mime-type","description":"The MIME type of the requested media."},"sha256":{"type":["string","null"],"description":"The SHA256 hash of the requested media."},"size":{"type":["integer","null"],"description":"The size of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":"string","description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was sent."},"completed_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was finalized."},"valid_until":{"type":["string","null"],"description":"Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error"}},"smart_encoding_applied":{"type":"boolean","description":"Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks."},"wait_seconds":{"type":["number","null"],"format":"float","description":"Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.","example":0.5}},"example":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"MMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"queued","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[{"url":"https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png","content_type":null,"sha256":null,"size":null}],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[],"wait_seconds":0.5}},"OutboundMessagePayloadCancelled":{"type":"object","properties":{"record_type":{"type":"string","example":"message","enum":["message"],"description":"Identifies the type of the resource."},"direction":{"type":"string","example":"outbound","enum":["outbound"],"description":"The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from you."},"id":{"type":"string","format":"uuid","description":"Identifies the type of resource."},"type":{"type":"string","enum":["SMS","MMS"],"description":"The type of message."},"messaging_profile_id":{"type":"string","description":"Unique identifier for a messaging profile."},"organization_id":{"type":"string","format":"uuid","description":"The id of the organization the messaging profile belongs to."},"from":{"type":"object","properties":{"phone_number":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}},"to":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","description":"The delivery status of the message.","enum":["scheduled","queued","sending","sent","cancelled","expired","sending_failed","delivery_unconfirmed","delivered","delivery_failed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"cc":{"type":"array","items":{"type":"object","properties":{"phone_number":{"type":"string","description":"Receiving address (+E.164 formatted phone number or short code).","x-format":"address"},"status":{"type":"string","description":"The delivery status of the message.","enum":["scheduled","queued","sending","sent","cancelled","expired","sending_failed","delivery_unconfirmed","delivered","delivery_failed"]},"carrier":{"type":"string","description":"The carrier of the receiver."},"line_type":{"type":"string","description":"The line-type of the receiver.","enum":["Wireline","Wireless","VoWiFi","VoIP","Pre-Paid Wireless",""]}}}},"text":{"type":"string","description":"Message body (i.e., content) as a non-empty string.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Subject of multimedia message"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":["string","null"],"x-format":"mime-type","description":"The MIME type of the requested media."},"sha256":{"type":["string","null"],"description":"The SHA256 hash of the requested media."},"size":{"type":["integer","null"],"description":"The size of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":"string","description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was sent."},"completed_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was finalized."},"valid_until":{"type":["string","null"],"description":"Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error"}},"smart_encoding_applied":{"type":"boolean","description":"Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks."}},"example":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"SMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"cancelled","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0","currency":"USD"},"cost_breakdown":null,"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}},"OutboundMessageResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OutboundMessagePayload"}}},"OutboundVoiceProfile":{"type":"object","title":"Outbound Voice Profile","required":["name"],"example":{"id":"1293384261075731499","record_type":"outbound_voice_profile","name":"office","connections_count":12,"traffic_type":"conversational","service_plan":"global","concurrent_call_limit":10,"enabled":true,"tags":["office-profile"],"usage_payment_method":"rate-deck","whitelisted_destinations":["US","BR","AU"],"max_destination_rate":10,"daily_spend_limit":"100.00","daily_spend_limit_enabled":true,"call_recording":{"call_recording_type":"by_caller_phone_number","call_recording_caller_phone_numbers":["+19705555098"],"call_recording_channels":"dual","call_recording_format":"mp3"},"billing_group_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","calling_window":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5},"created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"},"properties":{"id":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"outbound_voice_profile"},"name":{"type":"string","description":"A user-supplied name to help with organization.","example":"office","minLength":3},"connections_count":{"type":"integer","description":"Amount of connections associated with this outbound voice profile.","example":12},"traffic_type":{"$ref":"#/components/schemas/TrafficType"},"service_plan":{"$ref":"#/components/schemas/ServicePlan"},"concurrent_call_limit":{"type":["integer","null"],"description":"Must be no more than your global concurrent call limit. Null means no limit.","example":10},"enabled":{"type":"boolean","description":"Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections.","example":true,"default":true},"tags":{"type":"array","items":{"type":"string"},"example":["office-profile"]},"usage_payment_method":{"$ref":"#/components/schemas/UsagePaymentMethod"},"whitelisted_destinations":{"type":"array","items":{"type":"string"},"description":"The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.","example":["US","BR","AU"],"default":["US","CA"]},"max_destination_rate":{"type":"number","description":"Maximum rate (price per minute) for a Destination to be allowed when making outbound calls."},"daily_spend_limit":{"type":"string","description":"The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls.","example":"100.00"},"daily_spend_limit_enabled":{"type":"boolean","description":"Specifies whether to enforce the daily_spend_limit on this outbound voice profile.","example":true,"default":false},"call_recording":{"$ref":"#/components/schemas/OutboundCallRecording"},"billing_group_id":{"type":["string","null"],"format":"uuid","description":"The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","default":null},"calling_window":{"type":"object","description":"Specifies the time window and call limits for calls made using this outbound voice profile. Note that all times are UTC in 24-hour clock time.","example":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5},"properties":{"start_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.","example":"08:00:00.00Z"},"end_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.","example":"20:00:00.00Z"},"calls_per_cld":{"type":"integer","description":"The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit.","example":5}}},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"}}},"OutboundVoiceProfileId":{"title":"Outbound Voice Profile ID","type":"string","description":"Identifies the associated outbound voice profile.","example":"1293384261075731499"},"PLMN":{"type":"object","title":"Public land mobile network","properties":{"code":{"type":"string","description":"Public land mobile network code (MCC + MNC).","example":"311210"},"name":{"type":"string","description":"The name of the network.","example":"Telnyx, LLC"}},"required":["code","name"]},"PLMNCode":{"type":"string","description":"Public land mobile network code (MCC + MNC).","example":"311210"},"PWGAssignedResourcesSummary":{"type":"object","description":"The summary of the resource that have been assigned to the Private Wireless Gateway.","properties":{"record_type":{"type":"string","description":"The type of the resource assigned to the Private Wireless Gateway.","example":"sim_card_group","readOnly":true},"count":{"type":"integer","description":"The current count of a resource type assigned to the Private Wireless Gateway.","example":1,"readOnly":true}}},"PageMeta":{"properties":{"page_number":{"type":"integer","title":"Page Number","description":"The page returned, counting from 1."},"page_size":{"type":"integer","title":"Page Size","description":"How many results a page holds."},"total_pages":{"type":"integer","title":"Total Pages","description":"Pages that can be requested; 0 when nothing matched. Page until `page_number` reaches it rather than until a page comes back short: a page can hold fewer than `page_size` results without being the last. Capped at the deepest page served, so on a very large listing it covers fewer results than `total_results`."},"total_results":{"type":"integer","title":"Total Results","description":"Results the request matched, including any past the deepest page."}},"type":"object","required":["page_number","page_size","total_pages","total_results"],"title":"PageMeta","description":"Where a listing's page sits in the whole.\n\nA page is a snapshot: the counts it reports and the order it is drawn in\nboth move as writes land, so paging through a busy namespace can repeat or\nmiss an entry at a page boundary."},"PaginatedAssistantTestList":{"properties":{"meta":{"allOf":[{"$ref":"#/components/schemas/Meta"}],"description":"Pagination metadata including total counts and current page info."},"data":{"items":{"$ref":"#/components/schemas/AssistantTestResponse"},"type":"array","title":"Data","description":"Array of assistant test objects for the current page."}},"type":"object","required":["meta","data"],"title":"PaginatedAssistantTestList","description":"Paginated list of assistant tests with metadata.\n\nReturns a subset of tests based on pagination parameters along with\nmetadata for implementing pagination controls in the UI."},"PaginatedBillingBundlesResponse":{"title":"PaginatedBillingBundlesResponse","required":["meta","data"],"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationResponse"},"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/BillingBundleSummary"}}}},"PaginatedDeletedAssistantsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DeletedAssistant"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"PaginatedDeletedAssistantsResponse","description":"Paginated list of Recently Deleted assistants."},"PaginatedScheduledEventList":{"properties":{"meta":{"$ref":"#/components/schemas/Meta"},"data":{"items":{"anyOf":[{"$ref":"#/components/schemas/ScheduledPhoneCallEventResponse"},{"$ref":"#/components/schemas/ScheduledSmsEventResponse"}]},"type":"array","title":"Data"}},"type":"object","required":["meta","data"],"title":"PaginatedScheduledEventList"},"PaginatedTestRunList":{"properties":{"meta":{"$ref":"#/components/schemas/Meta","description":"Pagination metadata including total counts and current page info."},"data":{"items":{"$ref":"#/components/schemas/TestRunResponse"},"type":"array","title":"Data","description":"Array of test run objects for the current page."}},"type":"object","required":["meta","data"],"title":"PaginatedTestRunList","description":"Paginated list of test runs with metadata.\n\nReturns test run execution results with pagination support for\nhandling large numbers of test executions."},"PaginatedUserBundlesResponse":{"title":"PaginatedUserBundlesResponse","required":["meta","data"],"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationResponse"},"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/UserBundle"}}}},"Paginated_VerificationRequestStatus_":{"title":"Paginated[VerificationRequestStatus]","type":"object","required":["records","total_records"],"properties":{"records":{"title":"Records","type":"array","items":{"$ref":"#/components/schemas/VerificationRequestStatus"},"description":"The records yielded by this request","default":[]},"total_records":{"title":"Total Records","type":"integer","description":"The total amount of records for these query parameters","default":0}},"description":"A paginated response"},"Paginated_VerificationStatusHistoryEntry_":{"title":"Paginated[VerificationStatusHistoryEntry]","type":"object","required":["records","total_records"],"properties":{"records":{"title":"Records","type":"array","items":{"$ref":"#/components/schemas/VerificationStatusHistoryEntry"},"description":"The records yielded by this request","default":[]},"total_records":{"title":"Total Records","type":"integer","description":"The total amount of records for these query parameters","default":0}},"description":"A paginated response"},"PaginationData":{"type":"object","properties":{"total_pages":{"type":"integer","description":"Total number of pages.","example":5},"total_results":{"type":"integer","description":"Total number of results.","example":100},"page_number":{"type":"integer","description":"Selected page number.","example":1},"page_size":{"type":"integer","description":"Records per single page","example":20}}},"PaginationMeta":{"type":"object","properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"PaginationMetaSimple":{"type":"object","properties":{"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25},"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55}}},"PaginationResponse":{"title":"PaginationResponse","required":["total_results","total_pages","page_number","page_size"],"type":"object","properties":{"total_results":{"title":"Total Results","type":"integer","example":55,"description":"Total number of results returned."},"total_pages":{"title":"Total Pages","type":"integer","example":3,"description":"Total number of pages from the results."},"page_number":{"title":"Page Number","type":"integer","example":2,"description":"The current page number."},"page_size":{"title":"Page Size","type":"integer","example":25,"description":"The number of results per page."}}},"ParentRelationshipInfo":{"type":"object","required":["relationship_type","via","cost_rollup","traversal_enabled","description","parent_product","parent_event","parent_record_type"],"properties":{"relationship_type":{"type":"string"},"via":{"$ref":"#/components/schemas/MetadataFieldMapping"},"cost_rollup":{"type":"boolean"},"traversal_enabled":{"type":"boolean"},"description":{"type":"string"},"parent_product":{"type":"string"},"parent_event":{"type":"string"},"parent_record_type":{"type":"string"}}},"Participant":{"type":"object","title":"Participant","required":["record_type","id","call_leg_id","call_control_id","conference","whisper_call_control_ids","created_at","updated_at","end_conference_on_exit","soft_end_conference_on_exit","status","muted","on_hold"],"properties":{"record_type":{"type":"string","enum":["participant"],"example":"participant"},"id":{"type":"string","description":"Uniquely identifies the participant","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"call_leg_id":{"type":"string","description":"Uniquely identifies the call leg associated with the participant","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"call_control_id":{"type":"string","description":"Call Control ID associated with the partiipant of the conference","example":"v2:v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ"},"conference":{"type":"object","description":"Info about the conference that the participant is in","properties":{"id":{"type":"string","description":"Uniquely identifies the conference","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"name":{"type":"string","description":"Name of the conference","example":"All hands meeting"}}},"whisper_call_control_ids":{"description":"Array of unique call_control_ids the participant can whisper to..","example":["v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ","v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw"],"type":"array","items":{"type":"string"}},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the participant was created","example":"2019-01-23T18:10:02.574Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the participant was last updated","example":"2019-01-23T18:10:02.574Z"},"end_conference_on_exit":{"type":"boolean","description":"Whether the conference will end and all remaining participants be hung up after the participant leaves the conference.","example":true},"soft_end_conference_on_exit":{"type":"boolean","description":"Whether the conference will end after the participant leaves the conference.","example":true},"status":{"type":"string","enum":["joining","joined","left"],"description":"The status of the participant with respect to the lifecycle within the conference","example":"joining"},"muted":{"type":"boolean","description":"Whether the participant is muted.","example":true},"on_hold":{"type":"boolean","description":"Whether the participant is put on_hold.","example":true}},"example":{"record_type":"participant","created_at":"2019-01-23T18:10:02.574Z","updated_at":"2019-01-23T18:10:02.574Z","end_conference_on_exit":true,"soft_end_conference_on_exit":true,"status":"joining","muted":false,"on_hold":true,"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","whisper_call_control_ids":["v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ","v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw"],"id":"dfadada7-af74-47bc-83a4-554275f55f5c","call_leg_id":"3a15df2d-c801-4729-adf5-b56dd42e2abb","conference":{"id":"41b9acd4-f4da-4ff5-a85c-e07e90b53f46","name":"1"}}},"ParticipantResource":{"type":"object","title":"Participant resource","example":{"account_sid":"4e71926f-8f13-450e-b91c-23c2ef786aa6","api_version":"v2/texml","call_sid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","call_sid_legacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","coaching":false,"conference_sid":"cd5a70f4-759b-4d5e-9c06-88c00f16f3c1","date_created":"Fri, 27 Oct 2023 07:41:58 +0000","date_updated":"Fri, 27 Oct 2023 07:41:58 +0000","end_conference_on_exit":false,"hold":false,"muted":false,"status":"completed","uri":"/v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json"},"properties":{"account_sid":{"type":"string","description":"The id of the account the resource belongs to.","example":"61bf923e-5e4d-4595-a110-56190ea18a1b"},"api_version":{"type":"string","description":"The version of the API that was used to make the request.","example":"v2/texml"},"call_sid":{"type":"string","description":"The identifier of this participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"call_sid_legacy":{"type":"string","description":"The identifier of this participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"coaching":{"type":"boolean","description":"Whether the participant is coaching another call.","example":false},"coaching_call_sid":{"type":"string","description":"The identifier of the coached participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"coaching_call_sid_legacy":{"type":"string","description":"The identifier of the coached participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"date_created":{"type":"string","description":"The timestamp of when the resource was created.","example":"Thu, 15 Jun 2023 09:56:45 +0000"},"date_updated":{"type":"string","description":"The timestamp of when the resource was last updated.","example":"Thu, 15 Jun 2023 09:56:45 +0000"},"end_conference_on_exit":{"type":"boolean","description":"Whether the conference ends when the participant leaves.","example":false},"hold":{"type":"boolean","description":"Whether the participant is on hold.","example":false},"muted":{"type":"boolean","description":"Whether the participant is muted.","example":false},"status":{"type":"string","description":"The status of the participant's call in the conference.","enum":["connecting","connected","completed"],"example":"connected"},"uri":{"type":"string","description":"The relative URI for this participant.","example":"/v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json"},"conference_sid":{"type":"string","format":"uuid","description":"The unique identifier for the conference.","example":"cd5a70f4-759b-4d5e-9c06-88c00f16f3c1"}}},"ParticipantResourceIndex":{"type":"object","title":"Multiple participant resources","example":{"participants":[],"end":0,"first_page_uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20","page":0,"page_size":20,"start":0,"uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20"},"properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantResource"}},"end":{"type":"integer","description":"The number of the last element on the page, zero-indexed.","example":19},"first_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20","example":"accepted"},"next_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ","example":"accepted"},"page":{"type":"integer","description":"Current page number, zero-indexed.","example":0},"page_size":{"type":"integer","description":"The number of items on the page","example":20},"start":{"type":"integer","description":"The number of the first element on the page, zero-indexed.","example":0},"uri":{"type":"string","description":"The URI of the current page.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=0&PageSize=1"}}},"PatchRoomRequest":{"type":"object","properties":{"unique_name":{"description":"The unique (within the Telnyx account scope) name of the room.","type":"string","example":"My room"},"max_participants":{"description":"The maximum amount of participants allowed in a room. If new participants try to join after that limit is reached, their request will be rejected.","type":"integer","example":10,"default":10,"minimum":2,"maximum":50},"enable_recording":{"description":"Enable or disable recording for that room.","type":"boolean","example":true,"default":false},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":"string","format":"uri","description":"The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":"integer","minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null}}},"PatchWabaSettingsRequest":{"type":"object","properties":{"name":{"type":"string"},"timezone":{"type":"string","description":"IANA timezone identifier","example":"America/New_York"},"webhook_url":{"type":"string","format":"url","description":"URL to send Whatsapp events"},"webhook_failover_url":{"type":"string","format":"url","description":"Failover URL to send Whatsapp events"},"webhook_enabled":{"type":"boolean","description":"Enable/disable receiving Whatsapp events"},"webhook_events":{"type":"array","items":{"type":"string","description":"Whatsapp event to subscribe to"}}}},"PatchWhatsappUserDataRequest":{"type":"object","properties":{"webhook_url":{"type":"string","format":"url","description":"URL to send Whatsapp signup events"},"webhook_failover_url":{"type":"string","format":"url","description":"Failover URL to send Whatsapp signup events"}}},"PauseConferenceRecordingRequest":{"type":"object","title":"Pause Recording Request","properties":{"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"recording_id":{"description":"Use this field to pause specific recording.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"region":{"$ref":"#/components/schemas/ConferenceRegion"}}},"PauseRecordingRequest":{"type":"object","title":"Pause Recording Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"recording_id":{"description":"Uniquely identifies the resource.","type":"string","format":"uuid","example":"6e00ab49-9487-4364-8ad6-23965965afb2"}}},"PayPrompt":{"type":"object","title":"Pay Prompt","description":"A text-to-speech prompt with optional matching qualifiers.","required":["text"],"properties":{"text":{"type":"string","minLength":1,"description":"Text spoken for the payment collection step.","example":"Please enter your card number."},"attempt":{"type":"string","description":"Space-separated 1-based attempt numbers for which this prompt applies.","example":"2 3"},"error_type":{"type":"string","description":"Step error for which this prompt applies.","enum":["timeout","invalid-card-number","invalid-card-type","invalid-date","invalid-security-code","invalid-postal-code","invalid-bank-routing-number","invalid-bank-account-number","input-matching-failed"],"example":"invalid-card-number"},"card_type":{"type":"string","description":"Lowercase, case-sensitive detected card type for which this prompt applies.","enum":["visa","mastercard","amex","optima","discover","diners-club","jcb","maestro","enroute"],"example":"amex"}},"additionalProperties":false},"PayPromptValue":{"title":"Pay Prompt Value","description":"A default prompt string or an ordered list of qualified prompts.","oneOf":[{"type":"string","minLength":1},{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/PayPrompt"}}]},"PayPrompts":{"type":"object","title":"Pay Prompts","description":"Custom text-to-speech prompts keyed by payment collection step.","properties":{"payment-card-number":{"$ref":"#/components/schemas/PayPromptValue"},"expiration-date":{"$ref":"#/components/schemas/PayPromptValue"},"postal-code":{"$ref":"#/components/schemas/PayPromptValue"},"security-code":{"$ref":"#/components/schemas/PayPromptValue"},"bank-routing-number":{"$ref":"#/components/schemas/PayPromptValue"},"bank-account-number":{"$ref":"#/components/schemas/PayPromptValue"}},"additionalProperties":false,"example":{"payment-card-number":[{"text":"Please enter your card number."},{"text":"That card number was not accepted. Please try again.","attempt":"2 3","error_type":"invalid-card-number"}]}},"PayRequest":{"type":"object","title":"Pay Request","properties":{"connector_name":{"type":"string","default":"Default","description":"Name of the Pay connector used to process the transaction.","example":"Default"},"amount":{"type":"number","minimum":0,"description":"Amount to charge. Required when `transaction_type` is `charge`.","example":10.5},"currency":{"type":"string","default":"USD","enum":["USD","usd"],"description":"Currency used for the transaction. Pay currently supports USD only.","example":"USD"},"payment_token":{"type":"string","description":"Existing payment token. When supplied, payment-detail collection is skipped.","example":"tok_abc123"},"payment_method":{"type":"string","default":"credit-card","enum":["credit-card","ach-debit"],"description":"Payment method to collect."},"valid_card_types":{"type":"array","items":{"type":"string","enum":["visa","mastercard","amex","maestro","discover","optima","jcb","diners-club","enroute"]},"minItems":1,"description":"Restricts accepted card numbers to the listed card types. When the caller enters a card number that does not match one of the listed types, Pay treats the input as invalid and re-prompts for the card number. Cannot be used together with `payment_token`.","example":["visa","mastercard"]},"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 `<Provider>.<Model>.<VoiceId>` 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":"Optional description of the pay tool that will be passed to the assistant."}},"required":["connector_name"],"type":"object","title":"PayToolParams"},"PhoneNumber":{"properties":{"id":{"type":"string","format":"uuid","example":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","readOnly":true},"record_type":{"type":"string","example":"number_order_phone_number","readOnly":true},"phone_number":{"type":"string","example":"+19705555098"},"country_iso_alpha2":{"type":"string","description":"The ISO 3166-1 alpha-2 country code of the phone number.","example":"US","readOnly":true},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue"}},"requirements_met":{"type":"boolean","description":"True if all requirements are met for a phone number, false otherwise.","example":true,"readOnly":true},"requirements_status":{"type":"string","enum":["pending","approved","cancelled","deleted","requirement-info-exception","requirement-info-pending","requirement-info-under-review"],"description":"Status of document requirements (if applicable)","readOnly":true},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the phone number in the order.","readOnly":true},"bundle_id":{"type":"string","format":"uuid","example":"bc8e4d67-33a0-4cbb-af74-7b58f05bd494","readOnly":true},"phone_number_type":{"type":"string","enum":["local","mobile","national","shared_cost","toll_free"],"description":"Phone number type","readOnly":true},"country_code":{"type":"string","example":"US","description":"Country code of the phone number","readOnly":true}},"example":{"id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","record_type":"number_order_phone_number","phone_number":"+19705555098","bundle_id":"bc8e4d67-33a0-4cbb-af74-7b58f05bd474","regulatory_requirements":[{"record_type":"phone_number_regulatory_requirement","requirement_id":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576","field_value":"45f45a04-b4be-4592-95b1-9306b9db2b21","field_type":"address"}],"requirements_met":true,"status":"success"},"type":"object"},"PhoneNumberBatch":{"type":"object","description":"A phone-number batch groups all numbers added in a single bulk-add request. Telnyx vets the batch as a unit. The response embeds the full `phone_numbers` array so you can read per-number status without a separate call, plus a batch-level `status` summarising the unit's progress.","properties":{"batch_id":{"type":"string","format":"uuid","example":"ba74cfc6-d32b-467a-9b08-86fd154c23f7","readOnly":true},"dir_id":{"type":"string","format":"uuid","example":"74e1d8ed-fbdb-45a7-bbb0-a09c1184eb3d"},"dir_display_name":{"type":"string","description":"The DIR's display name at the time the batch was read.","example":"Acme Plumbing","readOnly":true},"enterprise_id":{"type":"string","format":"uuid","example":"5c987b82-2e3b-442a-afbc-0ba3c515f561"},"status":{"$ref":"#/components/schemas/PhoneNumberStatus","description":"Aggregate batch status. Mirrors the values used on individual phone numbers (`submitted`, `in_review`, `verified`, `unsuccessful`, `permanently_rejected`, etc.)."},"total_count":{"type":"integer","description":"Number of phone numbers in this batch (length of `phone_numbers`).","example":1,"readOnly":true},"submitted_at":{"type":"string","format":"date-time","description":"When the batch was created (and implicitly submitted for vetting).","example":"2026-04-26T18:14:37.065870Z","readOnly":true},"documents":{"type":"array","items":{"$ref":"#/components/schemas/Document"},"description":"Documents attached to this batch (e.g. a Letter of Authorization). Empty when none were supplied at add time."},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/DirPhoneNumber"},"description":"All phone numbers in this batch, with per-number status."}}},"PhoneNumberBatchList":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberBatch"}},"meta":{"$ref":"#/components/schemas/branded-calling_PaginationMeta"}}},"PhoneNumberBatchWrapped":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PhoneNumberBatch"}}},"PhoneNumberBlocksJob":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"42587e44-3a3e-46de-9255-0c9a7a1d1ec7","description":"Identifies the resource.","readOnly":true},"record_type":{"type":"string","example":"phone_number_block_job","description":"Identifies the type of the resource.","readOnly":true},"status":{"type":"string","enum":["pending","in_progress","completed","failed"],"default":"pending","example":"pending","description":"Indicates the completion status of the background operation.","readOnly":true},"type":{"type":"string","enum":["delete_phone_number_block"],"example":"delete_phone_number_block","description":"Identifies the type of the background job.","readOnly":true},"etc":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the estimated time of completion of the background job.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"successful_operations":{"type":"array","items":{"description":"The phone numbers successfully updated.","$ref":"#/components/schemas/PhoneNumberBlocksJobSuccessfulOperation"},"readOnly":true},"failed_operations":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberBlocksJobFailedOperation"},"readOnly":true}},"example":{"id":"42587e44-3a3e-46de-9255-0c9a7a1d1ec7","record_type":"phone_numbers_job","status":"pending","type":"delete_phone_number_block","etc":"2020-10-30T18:10:00.000Z","created_at":"2020-10-23T18:10:00.000Z","updated_at":"2020-10-23T18:10:01.000Z","successful_operations":[],"failed_operations":[]}},"PhoneNumberBlocksJobDeletePhoneNumberBlockRequest":{"type":"object","required":["phone_number_block_id"],"properties":{"phone_number_block_id":{"type":"string"}},"example":{"phone_number_block_id":"f3946371-7199-4261-9c3d-81a0d7935146"}},"PhoneNumberBlocksJobFailedOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/numbers_Error"}}},"type":"object"},"PhoneNumberBlocksJobSuccessfulOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"}},"type":"object"},"PhoneNumberBulkDeleteResponse":{"type":"object","description":"Bulk-delete partial-success response. `data` is the list of phone numbers that were soft-deleted. `meta.errors` holds per-number failures (e.g. number not associated with this DIR). When EVERY number in the request fails, the endpoint instead returns 400 with the canonical Telnyx error envelope and `data`/`meta` are absent.","required":["data","meta"],"properties":{"data":{"type":"array","items":{"type":"string","example":"+19493253498"},"description":"Phone numbers that were successfully soft-deleted. Bare E.164 strings."},"meta":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumberItemError"},"description":"Per-number failures that did not block the call. Each entry has `phone_number`, `code`, `title`, `detail`."}}}}},"PhoneNumberBulkResponse":{"type":"object","description":"Bulk-add success response (HTTP 201). All numbers in the request were accepted into a single new batch. Every entry in `data` shares the same `batch_id` - read it from any element to obtain the batch id for subsequent `GET .../phone_number_batches/{batch_id}` calls. If any number in the request fails (schema-invalid, not in inventory, already attached to another DIR, etc.) the entire request is rejected with HTTP 400 and the canonical Telnyx error envelope; the success body described here is therefore an all-or-nothing payload.","required":["data"],"properties":{"data":{"type":"array","description":"Phone numbers accepted into the new batch. List order mirrors the request order. Each element shares the same `batch_id`.","items":{"$ref":"#/components/schemas/DirPhoneNumber"}}}},"PhoneNumberBundleStatusChangeRequest":{"type":"object","required":["bundle_id"],"properties":{"bundle_id":{"type":["string","null"],"description":"The new bundle_id setting for the number. If you are assigning the number to a bundle, this is the unique ID of the bundle you wish to use. If you are removing the number from a bundle, this must be null. You cannot assign a number from one bundle to another directly. You must first remove it from a bundle, and then assign it to a new bundle."}},"example":{"bundle_id":"5194d8fc-87e6-4188-baa9-1c434bbe861b"}},"PhoneNumberCampaign":{"title":"PhoneNumberCampaign","required":["phoneNumber","campaignId","createdAt","updatedAt"],"type":"object","properties":{"phoneNumber":{"title":"Phonenumber","type":"string","example":"+18005550199"},"brandId":{"description":"Brand ID. Empty if the number is associated to a shared campaign.","title":"BrandId","type":"string","example":"7ba705b7-22af-493f-addc-ac04b7ca071c"},"tcrBrandId":{"description":"TCR's alphanumeric ID for the brand.","title":"TcrBrandId","type":"string","example":"BBRAND1"},"campaignId":{"description":"For shared campaigns, this is the TCR campaign ID, otherwise it is the campaign ID ","title":"Campaignid","type":"string"},"tcrCampaignId":{"description":"TCR's alphanumeric ID for the campaign.","title":"TcrCampaignid","type":"string","example":"CCAMPA1"},"telnyxCampaignId":{"description":"Campaign ID. Empty if the number is associated to a shared campaign.","title":"Telnyxcampaignid","type":"string","example":"3008dd9f-66d7-40e0-bf23-bf2d8d1a96ba"},"assignmentStatus":{"description":"The assignment status of the number.","title":"AssignmentStatus","enum":["FAILED_ASSIGNMENT","PENDING_ASSIGNMENT","ASSIGNED","PENDING_UNASSIGNMENT","FAILED_UNASSIGNMENT"],"example":"ASSIGNED","type":"string"},"tmobileNumberMappingStatus":{"description":"The T-Mobile assignment status of the number.","title":"TMobileNumberMappingStatus","type":"string","example":"ADDED"},"nonTmobileNumberMappingStatus":{"description":"The assignment status of the number towards other carriers.","title":"NonTMobileNumberMappingStatus","type":"string","example":"ADDED"},"failureReasons":{"description":"Extra info about a failure to assign/unassign a number. Relevant only if the assignmentStatus is either FAILED_ASSIGNMENT or FAILED_UNASSIGNMENT","type":"string"},"createdAt":{"title":"Createdat","type":"string","example":"2021-03-08T17:57:48.801186"},"updatedAt":{"title":"Updatedat","type":"string","example":"2021-03-08T17:57:48.801186"}}},"PhoneNumberCampaignCreate":{"title":"PhoneNumberCampaignCreate","required":["phoneNumber","campaignId"],"type":"object","properties":{"phoneNumber":{"title":"Phonenumber","type":"string","description":"The phone number you want to link to a specified campaign.","example":"+18005550199"},"campaignId":{"title":"Campaignid","type":"string","description":"The ID of the campaign you want to link to the specified phone number.","example":"4b300178-131c-d902-d54e-72d90ba1620j"}}},"PhoneNumberCampaignPaginated":{"title":"PhoneNumberCampaignPaginated","required":["records","page","totalRecords"],"type":"object","properties":{"records":{"title":"Records","type":"array","items":{"$ref":"#/components/schemas/PhoneNumberCampaign"}},"page":{"title":"Page","type":"integer"},"totalRecords":{"title":"Totalrecords","type":"integer"}}},"PhoneNumberDeletedDetailed":{"type":"object","example":{"id":"1293384261075731499","record_type":"phone_number","phone_number":"+19705555098","status":"deleted","tags":["tag_1","tag_2"],"external_pin":"1234","connection_id":"1293384261075731499","connection_name":"connection-name","customer_reference":"customer-reference","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","messaging_profile_name":"regional-customers","billing_group_id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","emergency_enabled":true,"emergency_address_id":"1315261609962112019","call_forwarding_enabled":true,"cnam_listing_enabled":true,"caller_id_name_enabled":true,"call_recording_enabled":true,"t38_fax_gateway_enabled":true,"phone_number_type":"local","purchased_at":"2019-10-23T18:10:00.000Z","created_at":"2019-10-23T18:10:00.000Z","updated_at":"2019-10-24T18:10:00.000Z","hd_voice_enabled":true,"deletion_lock_enabled":false,"activated_at":"2019-10-23T18:10:00.000Z"},"properties":{"id":{"$ref":"#/components/schemas/numbers_IntId"},"record_type":{"type":"string","example":"phone_number","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","description":"The +E.164-formatted phone number associated with this record.","readOnly":true},"status":{"type":"string","description":"The phone number's current status.","enum":["purchase-pending","purchase-failed","port-pending","port-failed","active","deleted","emergency-only","ported-out","port-out-pending"],"readOnly":true},"tags":{"type":"array","description":"A list of user-assigned tags to help manage the phone number.","items":{"type":"string"}},"external_pin":{"type":"string","description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"connection_name":{"type":"string","description":"The user-assigned name of the connection to be associated with this phone number.","readOnly":true},"connection_id":{"type":"string","description":"Identifies the connection associated with the phone number."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"messaging_profile_id":{"type":"string","description":"Identifies the messaging profile associated with the phone number."},"messaging_profile_name":{"type":"string","description":"The name of the messaging profile associated with the phone number.","example":"regional-customers"},"billing_group_id":{"type":"string","description":"Identifies the billing group associated with the phone number."},"emergency_enabled":{"type":"boolean","description":"Indicates whether emergency services are enabled for this number.","readOnly":true},"emergency_address_id":{"type":"string","description":"Identifies the emergency address associated with the phone number.","readOnly":true},"call_forwarding_enabled":{"type":"boolean","default":true,"description":"Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.","readOnly":true},"cnam_listing_enabled":{"type":"boolean","description":"Indicates whether a CNAM listing is enabled for this number.","readOnly":true},"caller_id_name_enabled":{"type":"boolean","description":"Indicates whether caller ID is enabled for this number.","readOnly":true},"call_recording_enabled":{"type":"boolean","description":"Indicates whether call recording is enabled for this number.","readOnly":true},"t38_fax_gateway_enabled":{"type":"boolean","description":"Indicates whether T38 Fax Gateway for inbound calls to this number.","readOnly":true},"purchased_at":{"type":"string","description":"ISO 8601 formatted date indicating the time the request was made to purchase the number.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the time it took to activate after the purchase.","readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"phone_number_type":{"type":"string","description":"The phone number's type.","enum":["local","toll_free","mobile","national","shared_cost","landline"],"readOnly":true},"deletion_lock_enabled":{"type":"boolean","description":"Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal.","readOnly":true},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}}},"PhoneNumberDetailed":{"type":"object","example":{"id":"1293384261075731499","record_type":"phone_number","phone_number":"+19705555098","country_iso_alpha2":"US","status":"active","tags":["tag_1","tag_2"],"external_pin":"1234","connection_id":"1293384261075731499","connection_name":"connection-name","customer_reference":"customer-reference","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","messaging_profile_name":"regional-customers","billing_group_id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","emergency_enabled":true,"emergency_address_id":"1315261609962112019","emergency_status":"active","call_forwarding_enabled":true,"cnam_listing_enabled":true,"caller_id_name_enabled":true,"call_recording_enabled":true,"t38_fax_gateway_enabled":true,"phone_number_type":"local","inbound_call_screening":"disabled","purchased_at":"2019-10-23T18:10:00.000Z","created_at":"2019-10-23T18:10:00.000Z","updated_at":"2019-10-24T18:10:00.000Z","hd_voice_enabled":true,"source_type":"number_order","deletion_lock_enabled":false,"activated_at":"2019-10-23T18:10:00.000Z"},"properties":{"id":{"$ref":"#/components/schemas/numbers_IntId"},"record_type":{"type":"string","example":"phone_number","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","description":"The +E.164-formatted phone number associated with this record.","readOnly":true},"country_iso_alpha2":{"type":"string","description":"The ISO 3166-1 alpha-2 country code of the phone number.","example":"US","readOnly":true},"status":{"type":"string","description":"The phone number's current status.","enum":["purchase-pending","purchase-failed","port-pending","port-failed","active","deleted","emergency-only","ported-out","port-out-pending","requirement-info-pending","requirement-info-under-review","requirement-info-exception","provision-pending"],"readOnly":true},"tags":{"type":"array","description":"A list of user-assigned tags to help manage the phone number.","items":{"type":"string"}},"external_pin":{"type":["string","null"],"description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"connection_name":{"type":["string","null"],"description":"The user-assigned name of the connection to be associated with this phone number.","readOnly":true},"connection_id":{"type":["string","null"],"description":"Identifies the connection associated with the phone number."},"customer_reference":{"type":["string","null"],"description":"A customer reference string for customer look ups.","example":"MY REF 001"},"messaging_profile_id":{"type":["string","null"],"description":"Identifies the messaging profile associated with the phone number."},"messaging_profile_name":{"type":["string","null"],"description":"The name of the messaging profile associated with the phone number.","example":"regional-customers"},"billing_group_id":{"type":["string","null"],"description":"Identifies the billing group associated with the phone number."},"emergency_enabled":{"type":"boolean","description":"Indicates whether emergency services are enabled for this number.","readOnly":true},"emergency_address_id":{"type":["string","null"],"description":"Identifies the emergency address associated with the phone number.","readOnly":true},"emergency_status":{"type":"string","description":"Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled.","enum":["active","deprovisioning","disabled","provisioning","provisioning-failed"]},"call_forwarding_enabled":{"type":"boolean","default":true,"description":"Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.","readOnly":true},"cnam_listing_enabled":{"type":"boolean","description":"Indicates whether a CNAM listing is enabled for this number.","readOnly":true},"caller_id_name_enabled":{"type":"boolean","description":"Indicates whether caller ID is enabled for this number.","readOnly":true},"call_recording_enabled":{"type":"boolean","description":"Indicates whether call recording is enabled for this number.","readOnly":true},"t38_fax_gateway_enabled":{"type":"boolean","description":"Indicates whether T38 Fax Gateway for inbound calls to this number.","readOnly":true},"purchased_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was purchased.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true,"format":"date-time"},"phone_number_type":{"type":"string","description":"The phone number's type.\nNote: For numbers purchased prior to July 2023 or when fetching a number's details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.","enum":["local","toll_free","mobile","national","shared_cost","landline","tollfree","shortcode","longcode"],"readOnly":true},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"source_type":{"description":"Indicates if the phone number was purchased or ported in. For some numbers this information may not be available.","anyOf":[{"type":"string","enum":["number_order","port_request"]},{"type":"null"}],"readOnly":true},"deletion_lock_enabled":{"type":"boolean","description":"Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal."},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}},"required":["id","record_type","phone_number","country_iso_alpha2","status","tags","external_pin","created_at","phone_number_type","purchased_at","deletion_lock_enabled"]},"PhoneNumberEnableEmergencyRequest":{"type":"object","required":["emergency_enabled","emergency_address_id"],"properties":{"emergency_enabled":{"type":"boolean","description":"Indicates whether to enable emergency services on this number."},"emergency_address_id":{"type":"string","description":"Identifies the address to be used with emergency services."}},"example":{"emergency_enabled":true,"emergency_address_id":"53829456729313"}},"PhoneNumberItemError":{"type":"object","description":"Per-number error returned by the bulk-delete endpoint. Bulk-add does not use this shape - it returns a 400 with the canonical envelope grouping numbers by failure category.","required":["phone_number","code","title","detail"],"properties":{"phone_number":{"type":"string","example":"+19493253498"},"code":{"type":"string","enum":["not_associated"],"description":"Stable per-number error code. Currently only `not_associated` is emitted, when the number is not attached to this DIR.","example":"not_associated"},"title":{"type":"string","example":"Phone number not associated"},"detail":{"type":"string","example":"Phone number not associated with this DIR."}}},"PhoneNumberList":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DirPhoneNumber"}},"meta":{"$ref":"#/components/schemas/branded-calling_PaginationMeta"}}},"PhoneNumberStatus":{"type":"string","enum":["submitted","in_review","verified","unsuccessful","suspended","expired","permanently_rejected"],"description":"Phone-number lifecycle status.\n- `submitted` / `in_review` - Telnyx is reviewing the batch this number belongs to.\n- `verified` - approved; the DIR's display identity will be shown on outbound calls from this number.\n- `unsuccessful` - Telnyx rejected this submission; the customer may re-add to retry.\n- `suspended` - temporarily disabled (e.g. by an active infringement claim on the DIR).\n- `expired` - verification expired; re-add to renew.\n- `permanently_rejected` - terminal; cannot be re-added on this or any other DIR you own."},"PhoneNumberStatusResponsePaginated":{"title":"PhoneNumberStatusResponsePaginated","required":["records"],"type":"object","properties":{"records":{"title":"Records","type":"array","items":{"$ref":"#/components/schemas/ProfileAssignmentPhoneNumbers"}}}},"PhoneNumberVerifyOwnershipRequest":{"type":"object","required":["phone_numbers"],"properties":{"phone_numbers":{"type":"array","description":"Array of phone numbers to verify ownership for","items":{"type":"string","description":"Phone number in E.164 format","example":"+15551234567"},"minItems":1,"maxItems":1000}}},"PhoneNumberVerifyOwnershipResponse":{"type":"object","properties":{"found":{"type":"array","description":"The list of phone numbers which you own and are in an editable state","items":{"type":"object","properties":{"number_val_e164":{"type":"string","description":"The phone number in E.164 format","example":"+15551234567"},"id":{"$ref":"#/components/schemas/numbers_IntId"}}}},"not_found":{"type":"array","description":"Phone numbers that are not found in the account","items":{"type":"string","description":"Phone number in E.164 format","example":"+15551234568"}},"record_type":{"type":"string","example":"number_ownership_verification","description":"Identifies the type of the resource.","readOnly":true}}},"PhoneNumberWithMessagingSettings":{"type":"object","example":{"record_type":"messaging_settings","id":"1293384261075731499","phone_number":"+18005550001","messaging_profile_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","created_at":"2019-01-23T18:10:02.574Z","updated_at":"2019-01-23T18:10:02.574Z","country_code":"US","type":"tollfree","health":{"message_count":122,"inbound_outbound_ratio":0.43,"success_ratio":0.94,"spam_ratio":0.06},"eligible_messaging_products":["A2P"],"traffic_type":"A2P","messaging_product":"A2P","features":{"sms":{"domestic_two_way":true,"international_inbound":true,"international_outbound":true},"mms":null}},"properties":{"record_type":{"type":"string","example":"messaging_settings","enum":["messaging_phone_number","messaging_settings"],"description":"Identifies the type of the resource.","readOnly":true},"id":{"type":"string","description":"Identifies the type of resource.","readOnly":true},"phone_number":{"type":"string","description":"+E.164 formatted phone number.","readOnly":true,"x-format":"e164"},"messaging_profile_id":{"type":["string","null"],"description":"Unique identifier for a messaging profile."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"country_code":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","example":"US","readOnly":true},"type":{"type":"string","description":"The type of the phone number","enum":["long-code","toll-free","short-code","longcode","tollfree","shortcode"],"readOnly":true},"health":{"$ref":"#/components/schemas/NumberHealthMetrics"},"eligible_messaging_products":{"type":"array","description":"The messaging products that this number can be registered to use","readOnly":true,"items":{"type":"string"}},"traffic_type":{"type":"string","description":"The messaging traffic or use case for which the number is currently configured.","example":"P2P","readOnly":true},"messaging_product":{"type":"string","description":"The messaging product that the number is registered to use","example":"P2P"},"features":{"type":"object","readOnly":true,"properties":{"sms":{"$ref":"#/components/schemas/MessagingFeatureSet"},"mms":{"$ref":"#/components/schemas/MessagingFeatureSet"}}},"organization_id":{"type":"string","description":"The organization that owns this phone number."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with this phone number."}}},"PhoneNumberWithVoiceSettings":{"type":"object","properties":{"id":{"type":"string","example":"1293384261075731499","description":"Identifies the type of resource.","readOnly":true},"record_type":{"type":"string","example":"voice_settings","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","example":"+13035551234","description":"The phone number in +E164 format.","readOnly":true},"connection_id":{"type":"string","example":"1d0e6cb8-8668-462e-94c6-49ae0f0ed48b","description":"Identifies the connection associated with this phone number."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"tech_prefix_enabled":{"type":"boolean","default":false,"example":false,"description":"Controls whether a tech prefix is enabled for this phone number."},"translated_number":{"type":"string","example":"+13035559999","default":"","description":"This field allows you to rewrite the destination number of an inbound call before the call is routed to you. The value of this field may be any alphanumeric value, and the value will replace the number originally dialed."},"call_forwarding":{"$ref":"#/components/schemas/CallForwarding"},"cnam_listing":{"$ref":"#/components/schemas/CnamListing"},"emergency":{"$ref":"#/components/schemas/EmergencySettings"},"usage_payment_method":{"type":"string","enum":["pay-per-minute","channel"],"default":"pay-per-minute","example":"pay-per-minute","description":"Controls whether a number is billed per minute or uses your concurrent channels."},"media_features":{"$ref":"#/components/schemas/MediaFeatures"},"call_recording":{"$ref":"#/components/schemas/CallRecording"},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."}},"example":{"id":"1293384261075731499","record_type":"voice_settings","connection_id":"1d0e6cb8-8668-462e-94c6-49ae0f0ed48b","customer_reference":"customer-reference","tech_prefix_enabled":false,"translated_number":"+13035559999","call_forwarding":{"call_forwarding_enabled":true,"forwards_to":"+13035559123","forwarding_type":"always"},"cnam_listing":{"cnam_listing_enabled":true,"cnam_listing_details":"example"},"emergency":{"emergency_enabled":true,"emergency_address_id":"1315261609962112019","emergency_status":"active"},"usage_payment_method":"pay-per-minute","media_features":{"rtp_auto_adjust_enabled":true,"accept_any_rtp_packets_enabled":true,"t38_fax_gateway_enabled":true},"call_recording":{"inbound_call_recording_enabled":true,"inbound_call_recording_format":"wav","inbound_call_recording_channels":"single"},"inbound_call_screening":"disabled"}},"PhoneNumbersJob":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"42587e44-3a3e-46de-9255-0c9a7a1d1ec7","description":"Identifies the resource.","readOnly":true},"record_type":{"type":"string","example":"phone_numbers_job","description":"Identifies the type of the resource.","readOnly":true},"status":{"type":"string","enum":["pending","in_progress","completed","failed","expired"],"default":"pending","example":"pending","description":"Indicates the completion status of the background update.","readOnly":true},"type":{"type":"string","enum":["update_emergency_settings","delete_phone_numbers","update_phone_numbers"],"example":"update_emergency_settings","description":"Identifies the type of the background job.","readOnly":true},"etc":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the estimated time of completion of the background job.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"phone_numbers":{"type":"array","items":{"description":"The unique phone numbers given as arguments in the job creation.","$ref":"#/components/schemas/PhoneNumbersJobPhoneNumber"}},"successful_operations":{"type":"array","items":{"description":"The phone numbers successfully updated.","$ref":"#/components/schemas/PhoneNumbersJobSuccessfulOperation"},"readOnly":true},"pending_operations":{"type":"array","items":{"description":"The phone numbers pending confirmation on update results. Entries in this list are transient, and will be moved to either successful_operations or failed_operations once the processing is done.","$ref":"#/components/schemas/PhoneNumbersJobPendingOperation"},"readOnly":true},"failed_operations":{"type":"array","items":{"$ref":"#/components/schemas/PhoneNumbersJobFailedOperation"},"readOnly":true}},"example":{"id":"42587e44-3a3e-46de-9255-0c9a7a1d1ec7","record_type":"phone_numbers_job","status":"pending","type":"update_emergency_settings","etc":"2020-10-30T18:10:00.000Z","created_at":"2020-10-23T18:10:00.000Z","updated_at":"2020-10-23T18:10:01.000Z","phone_numbers":[{"id":"2637816387126861836"},{"phone_number":"+19715555098"},{"phone_number":"+19705555099"},{"id":"3388768018273"}],"successful_operations":[{"id":"2637816387126861836","phone_number":"+19705555098"},{"id":"33081887126861836","phone_number":"+19715555098"}],"pending_operations":[{"id":"2637816387126861837","phone_number":"+19705555099"}],"failed_operations":[{"id":"3388768018273","phone_number":"+19705551234","errors":[{"code":"10015","title":"Bad Request","detail":"The field is invalid.","source":{"pointer":"/emergency_address_id"}}]}]}},"PhoneNumbersJobDeletePhoneNumbersRequest":{"type":"object","required":["phone_numbers"],"properties":{"phone_numbers":{"type":"array","items":{"description":"Array of phone number ids and/or phone numbers in E164 format to update","type":"string"}}},"example":{"phone_numbers":["+19705555098","+19715555098","32873127836"]}},"PhoneNumbersJobFailedOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/numbers_Error"}}},"type":"object"},"PhoneNumbersJobPendingOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"}},"type":"object"},"PhoneNumbersJobPhoneNumber":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format.","example":"+19705555000"},"id":{"type":"string","description":"The phone number's ID"}},"type":"object"},"PhoneNumbersJobSuccessfulOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"}},"type":"object"},"PhoneNumbersJobUpdateEmergencySettingsRequest":{"type":"object","required":["emergency_enabled","phone_numbers"],"properties":{"phone_numbers":{"type":"array","items":{"description":"Array of phone number ids and/or phone numbers in E164 format to update","type":"string"}},"emergency_enabled":{"type":"boolean","description":"Indicates whether to enable or disable emergency services on the numbers."},"emergency_address_id":{"type":["string","null"],"description":"Identifies the address to be used with emergency services. Required if emergency_enabled is true, must be null or omitted if emergency_enabled is false."}},"example":{"emergency_enabled":true,"emergency_address_id":"53829456729313","phone_numbers":["+19705555098","+19715555098","32873127836"]}},"PhoneNumbersJobUpdatePhoneNumbersRequest":{"type":"object","required":["phone_numbers"],"properties":{"phone_numbers":{"type":"array","description":"Array of phone number ids and/or phone numbers in E164 format to update. This parameter is required if no filter parameters are provided. If you want to update specific numbers rather than all numbers matching a filter, you must use this parameter. Each item must be either a valid phone number ID or a phone number in E164 format (e.g., '+13127367254').","items":{"type":"string"}},"tags":{"type":"array","description":"A list of user-assigned tags to help organize phone numbers.","items":{"type":"string"}},"external_pin":{"type":"string","description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"connection_id":{"type":"string","description":"Identifies the connection associated with the phone number."},"billing_group_id":{"type":"string","description":"Identifies the billing group associated with the phone number."},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether to enable or disable HD Voice on each phone number. HD Voice is a paid feature and may not be available for all phone numbers, more details about it can be found in the Telnyx support documentation."},"deletion_lock_enabled":{"type":"boolean","description":"Indicates whether to enable or disable the deletion lock on each phone number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal."},"voice":{"$ref":"#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest"}},"example":{"phone_numbers":["1583466971586889004","+13127367254"],"tags":["tag"],"external_pin":"123456","customer_reference":"customer-reference","connection_id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","billing_group_id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","deletion_lock_enabled":true,"voice":{"call_forwarding":{"call_forwarding_enabled":true,"forwards_to":"+13035559123","forwarding_type":"always"}}}},"PhysicalAddress":{"type":"object","required":["country","administrative_area","city","postal_code","street_address"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 code (currently `US` or `CA`).","example":"US"},"administrative_area":{"type":"string","description":"State or province code (e.g. `IL`, `ON`).","example":"IL"},"city":{"type":"string","maxLength":100,"description":"The city of your registered business address.","example":"Chicago"},"postal_code":{"type":"string","maxLength":20,"description":"The postal or ZIP code of your registered business address.","example":"60601"},"street_address":{"type":"string","maxLength":255,"description":"The street address of your registered business, including the building number and street name.","example":"100 Main St"},"extended_address":{"type":"string","maxLength":255,"description":"An optional second address line, such as a suite, unit, or floor. Leave blank if it does not apply.","example":"Suite 504","nullable":true}}},"PlanResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PlanStepData"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"PlanResponse"},"PlanStepData":{"properties":{"step_id":{"type":"string","title":"Step Id"},"run_id":{"type":"string","format":"uuid","title":"Run Id"},"parent_step_id":{"title":"Parent Step Id","type":"string"},"sequence":{"type":"integer","title":"Sequence"},"description":{"type":"string","title":"Description"},"status":{"$ref":"#/components/schemas/StepStatus"},"started_at":{"title":"Started At","type":"string","format":"date-time"},"completed_at":{"title":"Completed At","type":"string","format":"date-time"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","required":["step_id","run_id","sequence","description","status"],"title":"PlanStepData"},"PlanStepResponse":{"properties":{"data":{"$ref":"#/components/schemas/PlanStepData"}},"type":"object","required":["data"],"title":"PlanStepResponse"},"PlanStepsCreatedResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PlanStepData"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"PlanStepsCreatedResponse"},"PlayAudioUrlRequest":{"type":"object","title":"Play Audio URL Request","properties":{"audio_url":{"type":"string","example":"http://example.com/message.wav","description":"The URL of a file to be played back on the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request."},"media_name":{"type":"string","example":"my_media_uploaded_to_media_storage_api","description":"The media_name of a file to be played back on the call. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file."},"loop":{"description":"The number of times the audio file should be played. If supplied, the value must be an integer between 1 and 100, or the special string `infinity` for an endless loop.","$ref":"#/components/schemas/Loopcount","example":"infinity","default":1},"overlay":{"description":"When enabled, audio will be mixed on top of any other audio that is actively being played back. Note that `overlay: true` will only work if there is another audio file already being played on the call.","type":"boolean","example":true,"default":false},"stop":{"description":"When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue.","type":"string","example":"current"},"target_legs":{"description":"Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`, `opposite` or `both`.","type":"string","default":"self","example":"self"},"cache_audio":{"description":"Caches the audio file. Useful when playing the same audio file multiple times during the call.","type":"boolean","default":true,"example":true},"audio_type":{"description":"Specifies the type of audio provided in `audio_url` or `playback_content`.","type":"string","enum":["mp3","wav"],"default":"mp3","example":"wav"},"playback_content":{"description":"Allows a user to provide base64 encoded mp3 or wav. Note: when using this parameter, `media_url` and `media_name` in the `playback_started` and `playback_ended` webhooks will be empty","type":"string","example":"SUQzAwAAAAADf1..."},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"audio_url":"http://www.example.com/sounds/greeting.wav","loop":"infinity","overlay":true,"stop":"current","target_legs":"self","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"PlayBeep":{"type":"boolean","description":"Whether to play a beep when recording is started.","example":false,"default":true},"PlaybackStopRequest":{"type":"object","title":"Playback Stop Request","properties":{"overlay":{"description":"When enabled, it stops the audio being played in the overlay queue.","type":"boolean","example":true,"default":false},"stop":{"description":"Use `current` to stop the current audio being played. Use `all` to stop the current audio file being played and clear all audio files from the queue.","type":"string","example":"current","default":"all"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"overlay":false,"stop":"all","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"PortOutSupportingDocument":{"required":["id","record_type","type","portout_id","document_id","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","example":"5a16902a-2ee9-4882-a247-420fc6627b62"},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"supporting_document"},"type":{"type":"string","enum":["loa","invoice"],"description":"Identifies the type of the document","readOnly":true,"example":"loa"},"portout_id":{"type":"string","format":"uuid","description":"Identifies the associated port request","readOnly":true,"example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"document_id":{"format":"uuid","type":"string","description":"Identifies the associated document","example":"f1c5e079-9d82-4f50-95bc-ae2f6b8d84d7"},"created_at":{"type":"string","description":"Supporting document creation timestamp in ISO 8601 format","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"Supporting document last changed timestamp in ISO 8601 format","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"5a16902a-2ee9-4882-a247-420fc6627b62","record_type":"supporting_document","type":"loa","portout_id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","document_id":"f1c5e079-9d82-4f50-95bc-ae2f6b8d84d7","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"},"type":"object"},"Portability":{"type":"object","properties":{"lrn":{"type":"string","description":"Local Routing Number, if assigned to the requested phone number","example":"2245701999"},"ported_status":{"type":"string","description":"Indicates whether or not the requested phone number has been ported","enum":["Y","N",""],"example":"Y"},"ported_date":{"type":"string","description":"ISO-formatted date when the requested phone number has been ported","example":"2017-10-20"},"ocn":{"type":"string","description":"Operating Company Name (OCN) as per the Local Exchange Routing Guide (LERG) database","example":"073H"},"line_type":{"type":"string","description":"Type of number","example":"voip"},"spid":{"type":"string","description":"SPID (Service Provider ID)","example":"073H"},"spid_carrier_name":{"type":"string","description":"Service provider name","example":"Telnyx/4"},"spid_carrier_type":{"type":"string","description":"Service provider type","example":"3"},"altspid":{"type":"string","description":"Alternative SPID (Service Provider ID). Often used when a carrier is using a number from another carrier","example":"073H"},"altspid_carrier_name":{"type":"string","description":"Alternative service provider name","example":"Telnyx/4"},"altspid_carrier_type":{"type":"string","description":"Alternative service provider type","example":"3"},"city":{"type":"string","description":"City name extracted from the locality in the Local Exchange Routing Guide (LERG) database","example":"WAUKEGAN"},"state":{"type":"string","example":"Illinois"}}},"PortabilityCheckDetails":{"type":"object","properties":{"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"portability_check_result"},"fast_portable":{"type":"boolean","description":"Indicates whether this phone number is FastPort eligible","example":true,"readOnly":true},"not_portable_reason":{"type":"string","description":"If this phone number is not portable, explains why. Empty string if the number is portable.","example":"No coverage","readOnly":true},"phone_number":{"type":"string","description":"The +E.164 formatted phone number this result is about","example":"+13125550123","readOnly":true},"portable":{"type":"boolean","description":"Indicates whether this phone number is portable","example":true,"readOnly":true}}},"PortabilityStatus":{"type":"string","description":"Specifies whether Telnyx is able to confirm portability this number in the United States & Canada. International phone numbers are provisional by default.","enum":["pending","confirmed","provisional"],"example":"confirmed"},"PortingActionRequirement":{"type":"object","properties":{"id":{"type":"string","description":"Identifies the action requirement","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","description":"Identifies the type of the resource","example":"porting_action_requirement","enum":["porting_action_requirement"]},"porting_order_id":{"type":"string","description":"The ID of the porting order this action requirement belongs to","example":"12ade33a-21c0-473b-b055-b3c836e1c292"},"requirement_type_id":{"type":"string","description":"The ID of the requirement type","example":"53970723-fbff-4f46-a975-f62be6c1a585"},"action_type":{"type":"string","description":"The type of action required","example":"document_upload"},"action_url":{"type":["string","null"],"description":"Optional URL for the action","example":"https://example.com/action"},"status":{"type":"string","description":"Current status of the action requirement","example":"created","enum":["created","pending","completed","cancelled","failed"]},"cancel_reason":{"type":["string","null"],"description":"Reason for cancellation if status is 'cancelled'","example":null},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date-time indicating when the resource was created","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date-time indicating when the resource was updated","example":"2018-02-02T22:25:27.521Z"}}},"PortingAdditionalDocument":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies this additional document","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"document_type":{"type":"string","description":"Identifies the type of additional document","enum":["loa","invoice","csr","other"],"example":"loa"},"document_id":{"type":"string","format":"uuid","description":"Identifies the associated document","example":"f1486bae-f067-460c-ad43-73a92848f902"},"filename":{"type":"string","description":"The filename of the related document.","example":"file.txt"},"content_type":{"type":"string","description":"The content type of the related document.","example":"text/plain"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the associated porting order","example":"f1486bae-f067-460c-ad43-73a92848f902"},"record_type":{"type":"string","example":"porting_additional_document","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingAssociatedPhoneNumber":{"type":"object","properties":{"id":{"description":"Uniquely identifies this associated phone number.","type":"string","format":"uuid","example":"f24151b6-3389-41d3-8747-7dd8c681e5e2","readOnly":true},"porting_order_id":{"description":"Identifies the porting order associated with this phone number.","type":"string","format":"uuid","example":"a24151b6-3389-41d3-8747-7dd8c681e5e2"},"country_code":{"description":"Specifies the country code for this associated phone number. It is a two-letter ISO 3166-1 alpha-2 country code.","type":"string","example":"GB"},"phone_number_type":{"description":"Specifies the phone number type for this associated phone number.","type":"string","example":"local","enum":["landline","local","mobile","national","shared_cost","toll_free"]},"phone_number_range":{"description":"Specifies the phone number range for this associated phone number.","type":"object","properties":{"start_at":{"description":"Specifies the start of the phone number range for this associated phone number.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+441234567890"},"end_at":{"description":"Specifies the end of the phone number range for this associated phone number.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+441234567899"}}},"action":{"description":"Specifies the action to take with this phone number during partial porting.","type":"string","enum":["keep","disconnect"],"example":"keep"},"record_type":{"type":"string","example":"porting_associated_phone_number","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was last updated.","example":"2021-03-19T10:07:15.527Z","readOnly":true}}},"PortingEvent":{"type":"object","oneOf":[{"$ref":"#/components/schemas/PortingEventDeletedPayload"},{"$ref":"#/components/schemas/PortingEventMessagingChangedPayload"},{"$ref":"#/components/schemas/PortingEventStatusChangedEvent"},{"$ref":"#/components/schemas/PortingEventNewCommentEvent"},{"$ref":"#/components/schemas/PortingEventSplitEvent"},{"$ref":"#/components/schemas/PortingEventWithoutWebhook"}],"discriminator":{"propertyName":"event_type","mapping":{"porting_order.deleted":"#/components/schemas/PortingEventDeletedPayload","porting_order.messaging_changed":"#/components/schemas/PortingEventMessagingChangedPayload","porting_order.status_changed":"#/components/schemas/PortingEventStatusChangedEvent","porting_order.new_comment":"#/components/schemas/PortingEventNewCommentEvent","porting_order.split":"#/components/schemas/PortingEventSplitEvent","porting_order.loa_updated":"#/components/schemas/PortingEventWithoutWebhook","porting_order.sharing_token_expired":"#/components/schemas/PortingEventWithoutWebhook"}}},"PortingEventDeletedPayload":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.deleted"],"example":"porting_order.deleted"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that was deleted."},"customer_reference":{"type":"string","description":"Identifies the customer reference associated with the porting order.","example":"my-ref-001"},"deleted_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the porting order was deleted.","example":"2021-03-19T10:07:15.527Z"},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}}}},"PortingEventMessagingChangedPayload":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.messaging_changed"],"example":"porting_order.messaging_changed"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"object","description":"The webhook payload for the porting_order.messaging_changed event","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that was moved."},"customer_reference":{"type":"string","description":"Identifies the customer reference associated with the porting order.","example":"my-ref-001"},"support_key":{"type":"string","description":"Identifies the support key associated with the porting order.","example":"sr_b1a2c3"},"messaging":{"type":"object","description":"The messaging portability status of the porting order.","properties":{"messaging_capable":{"type":"boolean","description":"Indicates whether the porting order is messaging capable.","example":true},"enable_messaging":{"type":"boolean","description":"Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging capabilities will stay with their current provider.","example":true},"messaging_port_status":{"type":"string","description":"Indicates the messaging port status of the porting order.","enum":["not_applicable","pending","activating","exception","canceled","partial_port_complete","ported"],"example":"ported"},"messaging_port_completed":{"type":"boolean","description":"Indicates whether the messaging port is completed.","example":true}}}}},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingEventNewCommentEvent":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.new_comment"],"example":"porting_order.new_comment"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"object","description":"The webhook payload for the porting_order.new_comment event","properties":{"porting_order_id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that the comment was added to."},"support_key":{"type":"string","description":"Identifies the support key associated with the porting order.","example":"sr_b1a2c3"},"comment":{"type":"object","description":"The comment that was added to the porting order.","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the comment."},"body":{"type":"string","description":"The body of the comment.","example":"This is a comment."},"user_id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the user that create the comment."},"user_type":{"type":"string","example":"user","description":"Identifies the type of the user that created the comment.","enum":["user","admin","system"]},"inserted_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the comment was created.","example":"2021-03-19T10:07:15.527Z"}}}}},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingEventSplitEvent":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.split"],"example":"porting_order.split"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"object","description":"The webhook payload for the porting_order.split event","properties":{"from":{"type":"object","description":"The porting order that was split.","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that was split."}}},"to":{"type":"object","description":"The new porting order that the phone numbers was moved to.","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that was split."}}},"porting_phone_numbers":{"type":"array","description":"The list of porting phone numbers that were moved to the new porting order.","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting phone number that was moved."}}}}}},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingEventStatusChangedEvent":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.status_changed"],"example":"porting_order.status_changed"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"object","description":"The webhook payload for the porting_order.status_changed event","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the porting order that was moved."},"customer_reference":{"type":"string","description":"Identifies the customer reference associated with the porting order.","example":"my-ref-001"},"status":{"$ref":"#/components/schemas/PortingOrderStatus"},"support_key":{"type":"string","description":"Identifies the support key associated with the porting order.","example":"sr_b1a2c3"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the porting order was moved.","example":"2021-03-19T10:07:15.527Z"},"webhook_url":{"type":"string","description":"The URL to send the webhook to.","example":"https://example.com/webhook"}}},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingEventWithoutWebhook":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the event.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"event_type":{"type":"string","description":"Identifies the event type","enum":["porting_order.loa_updated","porting_order.sharing_token_expired"],"example":"porting_order.loa_updated"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order associated with the event.","example":"9471c873-e3eb-4ca1-957d-f9a451334d52"},"available_notification_methods":{"type":"array","items":{"type":"string","enum":["email","webhook","webhook_v1"]},"description":"Indicates the notification methods used."},"payload_status":{"type":"string","description":"The status of the payload generation.","enum":["created","completed"],"example":"created"},"payload":{"type":"null"},"record_type":{"type":"string","example":"porting_event","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingLOAConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the LOA configuration.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"company_name":{"type":"string","description":"The name of the company","example":"Telnyx"},"organization_id":{"type":"string","description":"The organization that owns the LOA configuration","example":"f1486bae-f067-460c-ad43-73a92848f902"},"name":{"type":"string","description":"The name of the LOA configuration","example":"My LOA Configuration"},"logo":{"type":"object","description":"The logo to be used in the LOA.","properties":{"document_id":{"type":"string","format":"uuid","description":"Identifies the document that contains the logo.","example":"f1486bae-f067-460c-ad43-73a92848f902"},"content_type":{"type":"string","description":"The content type of the logo.","enum":["image/png"],"example":"image/png"}}},"address":{"type":"object","description":"The address of the company.","properties":{"street_address":{"type":"string","description":"The street address of the company","example":"600 Congress Avenue"},"extended_address":{"type":"string","description":"The extended address of the company","example":"14th Floor"},"city":{"type":"string","description":"The locality of the company","example":"Austin"},"state":{"type":"string","description":"The administrative area of the company","example":"TX","pattern":"^[A-Z]{2}$"},"zip_code":{"type":"string","description":"The postal code of the company","example":"78701","pattern":"^[0-9]{5}(?:-[0-9]{4})?$"},"country_code":{"type":"string","description":"The country code of the company","example":"US","pattern":"^[A-Z]{2}$"}}},"contact":{"type":"object","description":"The contact information of the company.","properties":{"email":{"type":"string","description":"The email address of the contact","example":"testing@telnyx.com"},"phone_number":{"type":"string","description":"The phone number of the contact","example":"+12003270001","pattern":"^\\+\\d{11,15}$"}}},"record_type":{"type":"string","example":"porting_loa_configuration","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingOrder":{"type":"object","properties":{"id":{"description":"Uniquely identifies this porting order","type":"string","format":"uuid","example":"f1486bae-f067-460c-ad43-73a92848f902","readOnly":true},"customer_reference":{"type":["string","null"],"description":"A customer-specified reference number for customer bookkeeping purposes","example":"Acct 123abc"},"customer_group_reference":{"type":["string","null"],"description":"A customer-specified group reference for customer bookkeeping purposes","example":"Group-456"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"status":{"$ref":"#/components/schemas/PortingOrderStatus"},"support_key":{"type":["string","null"],"description":"A key to reference this porting order when contacting Telnyx customer support. This information is not available in draft porting orders.","example":"sr_123abc","readOnly":true},"parent_support_key":{"type":["string","null"],"description":"A key to reference for the porting order group when contacting Telnyx customer support. This information is not available for porting orders in `draft` state","example":"pr_123abc","readOnly":true},"porting_phone_numbers_count":{"type":"integer","description":"Count of phone numbers associated with this porting order","example":1,"readOnly":true},"old_service_provider_ocn":{"type":"string","description":"Identifies the old service provider","example":"Unreal Communications","readOnly":true},"phone_numbers":{"type":"array","description":"List of phone numbers associated with this porting order","items":{"$ref":"#/components/schemas/PortingPhoneNumber"}},"documents":{"$ref":"#/components/schemas/PortingOrderDocuments"},"misc":{"anyOf":[{"$ref":"#/components/schemas/PortingOrderMisc"},{"type":"null"}]},"end_user":{"$ref":"#/components/schemas/PortingOrderEndUser"},"activation_settings":{"$ref":"#/components/schemas/PortingOrderActivationSettings"},"phone_number_configuration":{"$ref":"#/components/schemas/PortingOrderPhoneNumberConfiguration"},"phone_number_type":{"type":"string","description":"The type of the phone number","example":"local","enum":["landline","local","mobile","multipurpose","national","other","shared_cost","toll_free"]},"description":{"type":"string","description":"A description of the porting order","example":"FP Telnyx","readOnly":true},"requirements":{"type":"array","description":"List of documentation requirements for porting numbers. Can be set directly or via the `requirement_group_id` parameter.","items":{"$ref":"#/components/schemas/PortingOrderRequirement"}},"requirements_met":{"type":"boolean","description":"Is true when the required documentation is met","example":false},"user_feedback":{"$ref":"#/components/schemas/PortingOrderUserFeedback"},"user_id":{"type":"string","format":"uuid","description":"Identifies the user (or organization) who requested the porting order","example":"40d68ba2-0847-4df2-be9c-b0e0cb673e75"},"webhook_url":{"type":["string","null"],"format":"uri","example":"https://example.com/porting_webhooks"},"record_type":{"type":"string","example":"porting_order","description":"Identifies the type of the resource.","readOnly":true},"messaging":{"$ref":"#/components/schemas/PortingOrderMessaging"},"additional_steps":{"type":"array","description":"For specific porting orders, we may require additional steps to be taken before submitting the porting order.","items":{"type":"string","enum":["associated_phone_numbers","phone_number_verification_codes"]}}}},"PortingOrderActivationSettings":{"type":"object","properties":{"foc_datetime_requested":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted Date/Time requested for the FOC date","example":"2021-03-19T10:07:15.527Z"},"foc_datetime_actual":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted Date/Time of the FOC date","example":"2021-03-19T10:07:15.527Z"},"fast_port_eligible":{"type":"boolean","readOnly":true,"description":"Indicates whether this porting order is eligible for FastPort","example":true},"activation_status":{"anyOf":[{"$ref":"#/components/schemas/PortingOrderActivationStatus"},{"type":"null"}]}}},"PortingOrderActivationStatus":{"type":"string","description":"Activation status","enum":["New","Pending","Conflict","Cancel Pending","Failed","Concurred","Activate RDY","Disconnect Pending","Concurrence Sent","Old","Sending","Active","Cancelled"],"example":"Active"},"PortingOrderDocuments":{"type":"object","description":"Can be specified directly or via the `requirement_group_id` parameter.","properties":{"loa":{"type":["string","null"],"format":"uuid","description":"Returned ID of the submitted LOA via the Documents endpoint","example":"64ffb720-04c7-455b-92d6-20fcca92e935"},"invoice":{"type":["string","null"],"format":"uuid","description":"Returned ID of the submitted Invoice via the Documents endpoint","example":"ce74b771-d23d-4960-81ec-8741b3862146"}}},"PortingOrderEndUser":{"type":"object","properties":{"admin":{"$ref":"#/components/schemas/PortingOrderEndUserAdmin"},"location":{"$ref":"#/components/schemas/PortingOrderEndUserLocation"}}},"PortingOrderEndUserAdmin":{"type":"object","properties":{"entity_name":{"type":["string","null"],"description":"Person Name or Company name requesting the port","example":"Porter McPortersen"},"auth_person_name":{"type":["string","null"],"description":"Name of person authorizing the porting order","example":"Porter McPortersen II"},"billing_phone_number":{"type":["string","null"],"description":"Billing phone number associated with these phone numbers","example":"13035551234"},"account_number":{"type":["string","null"],"description":"The authorized person's account number with the current service provider","example":"123abc"},"tax_identifier":{"type":["string","null"],"description":"European tax identification number. Applicable only in the European Union","example":"1234abcd"},"pin_passcode":{"type":["string","null"],"description":"PIN/passcode possibly required by the old service provider for extra verification","example":"1234"},"business_identifier":{"type":["string","null"],"description":"European business identification number. Applicable only in the European Union","example":"abc123"}}},"PortingOrderEndUserLocation":{"type":"object","properties":{"street_address":{"type":["string","null"],"description":"First line of billing address","example":"600 Congress Avenue"},"extended_address":{"type":["string","null"],"description":"Second line of billing address","example":"14th Floor"},"locality":{"type":["string","null"],"description":"City or municipality of billing address","example":"Austin"},"administrative_area":{"type":["string","null"],"description":"State, province, or similar of billing address","example":"TX"},"postal_code":{"type":["string","null"],"description":"Postal Code of billing address","example":"78701"},"country_code":{"type":["string","null"],"description":"ISO3166-1 alpha-2 country code of billing address","example":"US"}}},"PortingOrderMessaging":{"type":"object","description":"Information about messaging porting process.","properties":{"messaging_capable":{"type":"boolean","description":"Indicates whether the porting order can also port messaging capabilities.","example":true},"enable_messaging":{"type":"boolean","description":"Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging capabilities will stay with their current provider.","example":true},"messaging_port_status":{"type":"string","description":"The current status of the messaging porting.","enum":["not_applicable","pending","activating","exception","canceled","partial_port_complete","ported"],"example":"pending"},"messaging_port_completed":{"type":"boolean","description":"Indicates whether the messaging porting has been completed.","example":false}}},"PortingOrderMisc":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/PortingOrderType"},"remaining_numbers_action":{"type":["string","null"],"description":"Remaining numbers can be either kept with their current service provider or disconnected. 'new_billing_telephone_number' is required when 'remaining_numbers_action' is 'keep'.","enum":["keep","disconnect",null],"example":"disconnect"},"new_billing_phone_number":{"type":["string","null"],"description":"New billing phone number for the remaining numbers. Used in case the current billing phone number is being ported to Telnyx. This will be set on your account with your current service provider and should be one of the numbers remaining on that account."}}},"PortingOrderPhoneNumberConfiguration":{"type":"object","properties":{"billing_group_id":{"type":["string","null"],"description":"identifies the billing group to set on the numbers when ported","example":"f1486bae-f067-460c-ad43-73a92848f902"},"connection_id":{"type":["string","null"],"description":"identifies the connection to set on the numbers when ported","example":"f1486bae-f067-460c-ad43-73a92848f902"},"messaging_profile_id":{"type":["string","null"],"description":"identifies the messaging profile to set on the numbers when ported","example":"f1486bae-f067-460c-ad43-73a92848f901"},"emergency_address_id":{"type":["string","null"],"description":"identifies the emergency address to set on the numbers when ported","example":"f1486bae-f067-460c-ad43-73a92848f902"},"tags":{"type":"array","items":{"type":"string","description":"Tag to set on the numbers when ported"},"example":["abc","123"]}}},"PortingOrderRequirement":{"type":"object","properties":{"field_type":{"type":"string","description":"Type of value expected on field_value field","enum":["document"],"example":"document"},"field_value":{"type":"string","description":"identifies the document that satisfies this requirement","example":"9787fb5f-cbe5-4de4-b765-3303774ee9fe"},"requirement_type_id":{"type":"string","description":"Identifies the requirement type that meets this requirement","example":"59b0762a-b274-4f76-ac32-4d5cf0272e66"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"porting_requirement"}}},"PortingOrderRequirementDetail":{"type":"object","properties":{"field_type":{"type":"string","description":"Type of value expected on field_value field","enum":["document","textual"],"example":"document"},"field_value":{"type":"string","description":"Identifies the document that satisfies this requirement","example":"9787fb5f-cbe5-4de4-b765-3303774ee9fe"},"requirement_type":{"type":"object","description":"Identifies the requirement type that meets this requirement","properties":{"acceptance_criteria":{"type":"object","description":"The acceptance criteria for the requirement type","example":{"acceptable_values":[]},"additionalProperties":true},"description":{"type":"string","description":"A description of the requirement type","example":"A copy of the latest phone bill from the current provider"},"example":{"type":"string","description":"An example of the requirement type","example":"Most recent phone bill"},"id":{"type":"string","description":"Identifies the requirement type","example":"53970723-fbff-4f46-a975-f62be6c1a585"},"name":{"type":"string","description":"The name of the requirement type","example":"Latest Invoice"},"type":{"type":"string","description":"The type of the requirement type","example":"document"}}},"requirement_status":{"type":"string","description":"Status of the requirement","example":"approved"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"porting_requirement"}}},"PortingOrderSharingToken":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies this sharing token","format":"uuid","example":"0a4b78a0-d416-4761-94f7-46c72ec56547"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the porting order resource being shared","example":"f1486bae-f067-460c-ad43-73a92848f902"},"expires_in_seconds":{"type":"integer","minimum":1,"description":"The number of seconds until the sharing token expires","example":3600},"permissions":{"type":"array","description":"The permissions granted to the sharing token","items":{"type":"string","enum":["porting_order.document.read","porting_order.document.update"]},"example":["porting_order.document.read","porting_order.document.update"]},"token":{"type":"string","description":"A signed JWT token that can be used to access the shared resource","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc"},"expires_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the sharing token expires.","example":"2021-03-19T10:07:15.527000Z"},"record_type":{"type":"string","example":"porting_order_sharing_token","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingOrderStatus":{"type":"object","description":"Porting order status","properties":{"details":{"type":"array","items":{"$ref":"#/components/schemas/PortingOrdersExceptionType"},"description":"A list of 0 or more details about this porting order's status"},"value":{"type":"string","description":"The current status of the porting order","example":"ported","enum":["draft","in-process","submitted","exception","foc-date-confirmed","ported","cancelled","cancel-pending"]}}},"PortingOrderType":{"type":"string","description":"A port can be either 'full' or 'partial'. When type is 'full' the other attributes should be omitted.","enum":["full","partial"],"example":"full"},"PortingOrderUserFeedback":{"type":"object","properties":{"user_rating":{"type":["integer","null"],"description":"Once an order is ported, cancellation is requested or the request is cancelled, the user may rate their experience","example":5},"user_comment":{"type":["string","null"],"description":"A comment related to the customer rating.","example":"I loved my experience porting numbers with Telnyx"}}},"PortingOrdersActivationJob":{"type":"object","properties":{"id":{"description":"Uniquely identifies this activation job","type":"string","format":"uuid","example":"f1486bae-f067-460c-ad43-73a92848f902","readOnly":true},"status":{"type":"string","description":"Specifies the status of this activation job","enum":["created","in-process","completed","failed"]},"activation_type":{"type":"string","description":"Specifies the type of this activation job","enum":["scheduled","on-demand"]},"activate_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the activation job should be executed. This time should be between some activation window.","example":"2021-03-19T10:07:15.527Z"},"activation_windows":{"type":"array","description":"List of allowed activation windows for this activation job","items":{"type":"object","properties":{"start_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the activation window starts","example":"2021-03-19T10:07:15.527Z"},"end_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the activation window ends","example":"2021-03-19T10:07:15.527Z"}}}},"record_type":{"type":"string","example":"porting_activation_job","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true}}},"PortingOrdersAllowedFocWindow":{"type":"object","title":"PortingOrdersAllowedFocWindow","properties":{"started_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating the start of the range of foc window.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"ended_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating the end of the range of foc window","example":"2021-03-19T10:07:15.527Z","readOnly":true},"record_type":{"type":"string","example":"porting_order","description":"Identifies the type of the resource.","readOnly":true}}},"PortingOrdersComment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"f1486bae-f067-460c-ad43-73a92848f902"},"body":{"type":"string","description":"Body of comment","example":"Great experience so far"},"porting_order_id":{"type":"string","format":"uuid","example":"f1486bae-f067-460c-ad43-73a92848f902"},"user_type":{"type":"string","description":"Indicates whether this comment was created by a Telnyx Admin, user, or system","enum":["admin","user","system"],"example":"user"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"porting_comment"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z"}}},"PortingOrdersExceptionType":{"type":"object","properties":{"code":{"type":"string","description":"Identifier of an exception type","enum":["ACCOUNT_NUMBER_MISMATCH","AUTH_PERSON_MISMATCH","BTN_ATN_MISMATCH","ENTITY_NAME_MISMATCH","FOC_EXPIRED","FOC_REJECTED","LOCATION_MISMATCH","LSR_PENDING","MAIN_BTN_PORTING","OSP_IRRESPONSIVE","OTHER","PASSCODE_PIN_INVALID","PHONE_NUMBER_HAS_SPECIAL_FEATURE","PHONE_NUMBER_MISMATCH","PHONE_NUMBER_NOT_PORTABLE","PORT_TYPE_INCORRECT","PORTING_ORDER_SPLIT_REQUIRED","POSTAL_CODE_MISMATCH","RATE_CENTER_NOT_PORTABLE","SV_CONFLICT","SV_UNKNOWN_FAILURE"],"example":"ENTITY_NAME_MISMATCH"},"description":{"type":"string","description":"Description of an exception type","example":"Entity name does not match that on the CSR"}}},"PortingPhoneNumber":{"type":"object","properties":{"porting_order_status":{"type":"string","description":"The current status of the porting order","enum":["draft","in-process","submitted","exception","foc-date-confirmed","cancel-pending","ported","cancelled"],"example":"in-process"},"phone_number_type":{"type":"string","description":"The type of the phone number","enum":["landline","local","mobile","multipurpose","national","other","shared_cost","toll_free"],"example":"local"},"phone_number":{"type":"string","description":"E164 formatted phone number","example":"13035550987"},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the associated port request","example":"f1486bae-f067-460c-ad43-73a92848f902"},"support_key":{"type":"string","description":"A key to reference this porting order when contacting Telnyx customer support","example":"sr_a12345"},"activation_status":{"$ref":"#/components/schemas/PortingOrderActivationStatus"},"portability_status":{"$ref":"#/components/schemas/PortabilityStatus"},"requirements_status":{"type":"string","description":"The current status of the requirements in a INTL porting order","enum":["requirement-info-pending","requirement-info-under-review","requirement-info-exception","approved"],"example":"approved"},"record_type":{"type":"string","example":"porting_phone_number","description":"Identifies the type of the resource.","readOnly":true}}},"PortingPhoneNumberBlock":{"type":"object","properties":{"id":{"description":"Uniquely identifies this porting phone number block.","type":"string","format":"uuid","example":"f24151b6-3389-41d3-8747-7dd8c681e5e2","readOnly":true},"country_code":{"description":"Specifies the country code for this porting phone number block. It is a two-letter ISO 3166-1 alpha-2 country code.","type":"string","example":"DE"},"phone_number_type":{"description":"Specifies the phone number type for this porting phone number block.","type":"string","example":"local","enum":["landline","local","mobile","multipurpose","national","other","shared_cost","toll_free"]},"phone_number_range":{"description":"Specifies the phone number range for this porting phone number block.","type":"object","properties":{"start_at":{"description":"Specifies the start of the phone number range for this porting phone number block.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+4930244999901"},"end_at":{"description":"Specifies the end of the phone number range for this porting phone number block.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+4930244999910"}}},"activation_ranges":{"description":"Specifies the activation ranges for this porting phone number block. The activation range must be within the phone number range and should not overlap with other activation ranges.","type":"array","items":{"type":"object","properties":{"start_at":{"description":"Specifies the start of the activation range. Must be greater or equal the start of the phone number range.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+4930244999901"},"end_at":{"description":"Specifies the end of the activation range. It must be no more than the end of the phone number range.","type":"string","pattern":"^\\+\\d{7,15}$","example":"+4930244999910"}}}},"record_type":{"type":"string","example":"porting_phone_number_block","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was last updated.","example":"2021-03-19T10:07:15.527Z","readOnly":true}}},"PortingPhoneNumberConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies this phone number configuration","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"user_bundle_id":{"type":"string","format":"uuid","description":"Identifies the associated user bundle","example":"daa4308e-742f-4867-97f2-3073db13319a"},"porting_phone_number_id":{"type":"string","format":"uuid","description":"Identifies the associated porting phone number","example":"f1486bae-f067-460c-ad43-73a92848f902"},"record_type":{"type":"string","example":"porting_phone_number_configuration","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingPhoneNumberExtension":{"type":"object","properties":{"id":{"description":"Uniquely identifies this porting phone number extension.","type":"string","format":"uuid","example":"f24151b6-3389-41d3-8747-7dd8c681e5e2","readOnly":true},"porting_phone_number_id":{"description":"Identifies the porting phone number associated with this porting phone number extension.","type":"string","format":"uuid","example":"f24151b6-3389-41d3-8747-7dd8c681e5e2"},"extension_range":{"description":"Specifies the extension range for this porting phone number extension.","type":"object","properties":{"start_at":{"description":"Specifies the start of the extension range for this porting phone number extension.","type":"integer","example":1},"end_at":{"description":"Specifies the end of the extension range for this porting phone number extension.","type":"integer","example":10}}},"activation_ranges":{"description":"Specifies the activation ranges for this porting phone number extension. The activation range must be within the extension range and should not overlap with other activation ranges.","type":"array","items":{"type":"object","properties":{"start_at":{"description":"Specifies the start of the activation range. Must be greater or equal the start of the extension range.","type":"integer","example":1},"end_at":{"description":"Specifies the end of the activation range. It must be no more than the end of the extension range.","type":"integer","example":10}}}},"record_type":{"type":"string","example":"porting_phone_number_extension","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was last updated.","example":"2021-03-19T10:07:15.527Z","readOnly":true}}},"PortingReport":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the report.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"report_type":{"type":"string","description":"Identifies the type of report","enum":["export_porting_orders_csv"],"example":"export_porting_orders_csv"},"status":{"type":"string","description":"The current status of the report generation.","enum":["pending","completed"],"example":"completed"},"params":{"oneOf":[{"$ref":"#/components/schemas/ExportPortingOrdersCSVReport"}]},"document_id":{"type":"string","format":"uuid","description":"Identifies the document that was uploaded when report was generated. This field is only populated when the report is under completed status.","example":"f1486bae-f067-460c-ad43-73a92848f902"},"record_type":{"type":"string","example":"porting_report","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingUKCarrier":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"96dfa9e4-c753-4fd3-97cd-42d66f26cf0c","description":"Identifies the UK carrier."},"cupid":{"type":"string","description":"The CUPID of the carrier. This is a 3 digit number code that identifies the carrier in the UK.","example":"895"},"name":{"type":"string","description":"The name of the carrier.","example":"Telnyx UK Limited"},"alternative_cupids":{"type":"array","description":"Alternative CUPIDs of the carrier.","items":{"type":"string","description":"An alternative CUPID of the carrier.","example":"895"}},"record_type":{"type":"string","example":"porting_uk_carrier","description":"Identifies the type of the resource."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortingVerificationCode":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies this porting verification code","format":"uuid","example":"f1486bae-f067-460c-ad43-73a92848f902"},"phone_number":{"type":"string","description":"E164 formatted phone number","example":"+13035550987"},"verified":{"type":"boolean","description":"Indicates whether the verification code has been verified","example":true},"porting_order_id":{"type":"string","format":"uuid","description":"Identifies the associated porting order","example":"f1486bae-f067-460c-ad43-73a92848f902"},"record_type":{"type":"string","example":"porting_verification_code","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PortoutComment":{"required":["id","body","user_id","created_at"],"properties":{"id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"portout"},"body":{"type":"string","description":"Comment body","example":"This is a comment"},"portout_id":{"type":"string","description":"Identifies the associated port request","default":null,"example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"user_id":{"type":"string","description":"Identifies the user who created the comment. Will be null if created by Telnyx Admin","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"created_at":{"type":"string","description":"Comment creation timestamp in ISO 8601 format","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","record_type":"portout","body":"This is a comment","portout_id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","user_id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","created_at":"2018-02-02T22:25:27.521Z"},"type":"object"},"PortoutDetails":{"type":"object","properties":{"id":{"type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"portout"},"phone_numbers":{"description":"Phone numbers associated with this portout","type":"array","items":{"type":"string","description":"E164 formatted phone number"},"example":["+35312345678"]},"authorized_name":{"type":"string","description":"Name of person authorizing the porting order","example":"McPortersen"},"carrier_name":{"type":"string","description":"Carrier the number will be ported out to","example":"test"},"current_carrier":{"type":"string","description":"The current carrier","example":"telnyx"},"end_user_name":{"type":"string","description":"Person name or company name requesting the port","example":"McPortersen"},"city":{"type":"string","description":"City or municipality of billing address","example":"Chicago"},"state":{"type":"string","description":"State, province, or similar of billing address","example":"IL"},"zip":{"type":"string","description":"Postal Code of billing address","example":"00000"},"lsr":{"type":"array","description":"The Local Service Request","items":{"type":"string","format":"uri","description":"A link to the Local Service Request"},"example":["https://example.com/files/lsr.pdf"]},"pon":{"type":"string","description":"Port order number assigned by the carrier the number will be ported out to","example":"00000000"},"reason":{"type":["string","null"],"description":"The reason why the order is being rejected by the user. If the order is authorized, this field can be left null","example":null},"rejection_code":{"type":"integer","description":"The rejection code for one of the valid rejections to reject a port out order","example":1002},"service_address":{"type":"string","description":"First line of billing address (street address)","example":"000 Example Street"},"foc_date":{"type":"string","description":"ISO 8601 formatted Date/Time of the FOC date","example":"2018-02-02T22:25:27.521Z"},"requested_foc_date":{"type":"string","description":"ISO 8601 formatted Date/Time of the user requested FOC date","example":"2018-02-02T22:25:27.521Z"},"spid":{"type":"string","description":"New service provider spid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"support_key":{"type":"string","description":"A key to reference this port out request when contacting Telnyx customer support","example":"PO_764725"},"status":{"type":"string","description":"Status of portout request","enum":["pending","authorized","ported","rejected","rejected-pending","canceled"],"example":"rejected"},"already_ported":{"type":"boolean","description":"Is true when the number is already ported","example":false},"user_id":{"type":"string","format":"uuid","description":"Identifies the user (or organization) who requested the port out","example":"7865816a-ee85-4e50-b19e-52983dcc6d4a"},"vendor":{"type":"string","description":"Telnyx partner providing network coverage","format":"uuid","example":"0e66ed3b-37e6-4fed-93d6-a30ce2493661"},"created_at":{"type":"string","description":"ISO 8601 formatted date of when the portout was created","example":"2018-02-02T22:25:27.521Z"},"inserted_at":{"type":"string","description":"ISO 8601 formatted date of when the portout was created","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date of when the portout was last updated","example":"2018-02-02T22:25:27.521Z"},"host_messaging":{"type":"boolean","description":"Indicates whether messaging services should be maintained with Telnyx after the port out completes","default":false,"example":false}}},"PortoutEvent":{"type":"object","oneOf":[{"$ref":"#/components/schemas/WebhookPortoutStatusChanged"},{"$ref":"#/components/schemas/WebhookPortoutNewComment"},{"$ref":"#/components/schemas/WebhookPortoutFocDateChanged"}],"discriminator":{"propertyName":"event_type","mapping":{"portout.status_changed":"#/components/schemas/WebhookPortoutStatusChanged","portout.new_comment":"#/components/schemas/WebhookPortoutNewComment","portout.foc_date_changed":"#/components/schemas/WebhookPortoutFocDateChanged"}}},"PortoutRejection":{"type":"object","properties":{"code":{"type":"integer","example":1002},"description":{"type":"string","example":"Invalid PIN"},"reason_required":{"type":"boolean","example":false}}},"PortoutReport":{"type":"object","properties":{"id":{"type":"string","description":"Uniquely identifies the report.","format":"uuid","example":"eef3340b-8903-4466-b445-89b697315a3a"},"report_type":{"type":"string","description":"Identifies the type of report","enum":["export_portouts_csv"],"example":"export_portouts_csv"},"status":{"type":"string","description":"The current status of the report generation.","enum":["pending","completed"],"example":"completed"},"params":{"oneOf":[{"$ref":"#/components/schemas/ExportPortoutsCSVReport"}]},"document_id":{"type":"string","format":"uuid","description":"Identifies the document that was uploaded when report was generated. This field is only populated when the report is under completed status.","example":"f1486bae-f067-460c-ad43-73a92848f902"},"record_type":{"type":"string","example":"portout_report","description":"Identifies the type of the resource.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2021-03-19T10:07:15.527000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2021-03-19T10:07:15.527000Z"}}},"PostConversationSettings":{"type":"object","description":"Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control tools (e.g. hangup, transfer) are also unavailable. Beta feature.","properties":{"enabled":{"type":"boolean","description":"Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.","default":false}}},"PostConversationSettingsReq":{"type":"object","description":"Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control tools (e.g. hangup, transfer) are also unavailable. Beta feature.","properties":{"enabled":{"type":"boolean","description":"Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.","default":false}}},"PresignedObjectUrl":{"type":"object","properties":{"content":{"type":"object","properties":{"token":{"type":"string","description":"The token for the object"},"presigned_url":{"type":"string","description":"The presigned URL for the object"},"expires_at":{"type":"string","description":"The expiration time of the token","format":"date-time"}}}}},"PresignedObjectUrlParams":{"type":"object","properties":{"ttl":{"type":"integer","description":"The time to live of the token in seconds","minimum":1,"maximum":604800,"example":60}}},"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."},"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. <ul>\n <li><code>provisioning</code> - the Private Wireless Gateway is being provisioned.</li>\n <li><code>provisioned</code> - the Private Wireless Gateway was provisioned and able to receive connections.</li>\n <li><code>failed</code> - the provisioning had failed for a reason and it requires an intervention.</li>\n <li><code>decommissioning</code> - the Private Wireless Gateway is being removed from the network.</li>\n </ul>\n Transitioning between the provisioning and provisioned states may take some time.","enum":["provisioning","provisioned","failed","decommissioning"],"readOnly":true,"default":"provisioning","example":"provisioned"},"error_description":{"type":["string","null"],"description":"This attribute provides a human-readable explanation of why a failure happened.","readOnly":true,"default":null,"example":null},"error_code":{"type":["string","null"],"description":"This attribute is an [error code](https://developers.telnyx.com/docs/development/api-fundamentals/api-errors) related to the failure reason.","readOnly":true,"default":null,"example":null}}},"Profile":{"properties":{"profile_id":{"type":"string","title":"Profile Id"},"memory_count":{"type":"integer","title":"Memory Count","description":"Memories stored under this profile, including the consolidated ones that paraphrase others. Listings are ordered by it."}},"type":"object","required":["profile_id","memory_count"],"title":"Profile"},"ProfileAssignmentPhoneNumbers":{"title":"ProfileAssignmentPhoneNumbers","required":["taskId","phoneNumber","status"],"type":"object","properties":{"taskId":{"title":"Taskid","type":"string","description":"The ID of the task associated with the phone number.","example":"667a80f8-b0a9-49d0-b9ab-a7a1bcc45086"},"phoneNumber":{"title":"Phonenumber","type":"string","description":"The phone number that the status is being checked for.","example":"+12024567890"},"status":{"title":"Status","type":"string","description":"The status of the associated phone number assignment.","example":"pending"}}},"ProfileListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Profile"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/PageMeta"}},"type":"object","required":["data","meta"],"title":"ProfileListResponse"},"ProfileMetrics":{"type":"object","description":"Detailed metrics for a messaging profile.","additionalProperties":true},"ProfileMetricsHighLevel":{"type":"object","description":"High-level metrics summary for a messaging profile.","additionalProperties":true},"ProfileSummary":{"properties":{"profile_id":{"type":"string","title":"Profile Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"The precomputed summary, ready to place in an assistant's context at the start of a session."},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At","description":"When the summary was last generated. Null while none is ready."},"is_stale":{"type":"boolean","title":"Is Stale","description":"Whether newer memories have arrived since the summary was generated. The summary is regenerated in the background, so a true here is ordinary and the summary is still usable."}},"type":"object","required":["profile_id","is_stale"],"title":"ProfileSummary"},"PromptSyncStatus":{"type":"string","enum":["enabled","disabled"],"title":"PromptSyncStatus","description":"Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version."},"PronunciationDictAliasItem":{"type":"object","description":"An alias pronunciation item. When the `text` value is found in input, it is replaced with the `alias` before speech synthesis.","required":["text","type","alias"],"additionalProperties":false,"properties":{"text":{"type":"string","description":"The text to match in the input. Case-insensitive matching is used during synthesis.","minLength":1,"maxLength":200,"example":"Telnyx"},"type":{"type":"string","description":"The item type.","enum":["alias"],"example":"alias"},"alias":{"type":"string","description":"The replacement text that will be spoken instead.","minLength":1,"maxLength":500,"example":"tel-nicks"}}},"PronunciationDictData":{"type":"object","description":"A pronunciation dictionary record.","properties":{"record_type":{"type":"string","description":"Identifies the resource type.","enum":["pronunciation_dict"],"example":"pronunciation_dict"},"id":{"type":"string","format":"uuid","description":"Unique identifier for the pronunciation dictionary.","example":"c215a3e1-be41-4701-97e8-1d3c22f9a5b7"},"name":{"type":"string","description":"Human-readable name for the dictionary. Must be unique within the organization.","example":"Brand Names"},"items":{"type":"array","description":"List of pronunciation items (alias or phoneme type).","items":{"$ref":"#/components/schemas/PronunciationDictItem"}},"version":{"type":"integer","description":"Auto-incrementing version number. Increases by 1 on each update. Used for optimistic concurrency control and cache invalidation.","example":1},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp with millisecond precision.","example":"2026-03-25T12:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp with millisecond precision.","example":"2026-03-25T12:00:00.000Z"}}},"PronunciationDictItem":{"description":"A single pronunciation dictionary item. Use type 'alias' to replace matched text with a spoken alias, or type 'phoneme' to specify exact pronunciation using IPA notation.","oneOf":[{"$ref":"#/components/schemas/PronunciationDictAliasItem"},{"$ref":"#/components/schemas/PronunciationDictPhonemeItem"}],"discriminator":{"propertyName":"type","mapping":{"alias":"#/components/schemas/PronunciationDictAliasItem","phoneme":"#/components/schemas/PronunciationDictPhonemeItem"}}},"PronunciationDictListResponse":{"type":"object","description":"Paginated list of pronunciation dictionaries.","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PronunciationDictData"},"description":"Array of pronunciation dictionary objects."},"meta":{"$ref":"#/components/schemas/pronunciation-dicts_PaginationMeta"}}},"PronunciationDictPhonemeItem":{"type":"object","description":"A phoneme pronunciation item. When the `text` value is found in input, it is pronounced using the specified IPA phoneme notation.","required":["text","type","phoneme","alphabet"],"additionalProperties":false,"properties":{"text":{"type":"string","description":"The text to match in the input. Case-insensitive matching is used during synthesis.","minLength":1,"maxLength":200,"example":"Telnyx"},"type":{"type":"string","description":"The item type.","enum":["phoneme"],"example":"phoneme"},"phoneme":{"type":"string","description":"The phoneme notation representing the desired pronunciation.","minLength":1,"maxLength":500,"example":"ˈ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 <code>ios</code> or <code>android</code>","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,"minimum":1},{"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":{"type":"object","title":"RecursiveCluster","description":"Recursive reference to RecursiveCluster. Nesting is elided here so every $ref chain stays finite for function-calling tooling; see #/components/schemas/RecursiveCluster for the full structure.","additionalProperties":true},"type":"array"}},"type":"object","required":["cluster_id","cluster_summary","total_number_of_nodes"],"title":"RecursiveCluster"},"ReferRequest":{"type":"object","title":"Refer request","required":["sip_address"],"properties":{"sip_address":{"description":"The SIP URI to which the call will be referred to.","type":"string","example":"sip:username@sip.non-telnyx-address.com"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","type":"string"},"command_id":{"description":"Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.","example":"891510ac-f3e4-11e8-af5b-de00688a4901","type":"string"},"custom_headers":{"description":"Custom headers to be added to the SIP INVITE.","type":"array","example":[{"name":"head_1","value":"val_1"},{"name":"head_2","value":"val_2"}],"items":{"$ref":"#/components/schemas/CustomSipHeader"}},"sip_auth_username":{"description":"SIP Authentication username used for SIP challenges.","type":"string"},"sip_auth_password":{"description":"SIP Authentication password used for SIP challenges.","type":"string"},"sip_headers":{"description":"SIP headers to be added to the request. Currently only User-to-User header is supported.","type":"array","example":[{"name":"User-to-User","value":"value"}],"items":{"$ref":"#/components/schemas/SipHeader"}}},"example":{"sip_address":"sip:username@sip.non-telnyx-address.com"}},"Reference":{"type":"object","description":"A reference (business or financial) on a DIR, in the customer-facing shape. No internal identifiers are exposed.","required":["record_type","ref_type","slot","full_name","phone_e164","timezone"],"properties":{"record_type":{"type":"string","enum":["dir_reference"],"description":"Always `dir_reference`.","example":"dir_reference","readOnly":true},"ref_type":{"type":"string","enum":["business","financial"],"description":"Whether this is a business reference or the financial reference.","example":"business"},"slot":{"type":"integer","minimum":1,"maximum":2,"description":"Position within the reference type, counting from 1. Business references occupy slots 1 and 2, in the order they were sent in the `business_references` array; the financial reference occupies slot 1. Use this value together with `ref_type` to address the reference when updating it.","example":1},"full_name":{"type":"string","maxLength":255,"description":"Full name of the reference contact.","example":"Dana Reyes"},"job_title":{"type":"string","maxLength":255,"nullable":true,"description":"Job title of the reference contact.","example":"VP of Operations"},"organization":{"type":"string","maxLength":255,"nullable":true,"description":"Organization the reference contact belongs to.","example":"Acme Logistics"},"relationship_to_registrant":{"type":"string","maxLength":255,"nullable":true,"description":"How the reference contact is related to the registering business.","example":"Supplier"},"phone_e164":{"type":"string","description":"Reference phone number in E.164 format.","example":"+14155550123"},"email":{"type":"string","format":"email","nullable":true,"description":"Reference contact email address.","example":"dana.reyes@example.com"},"timezone":{"type":"string","description":"IANA timezone id for the reference. Calls are only placed within the reference's local 8am-9pm window.","example":"America/New_York"}}},"ReferenceInput":{"type":"object","description":"One reference supplied at submit. The reference type is implied by the field that carries it (business_references vs financial_reference).","required":["full_name","phone_e164","email","timezone"],"properties":{"full_name":{"type":"string","minLength":1,"maxLength":255,"description":"Full name of the reference contact.","example":"Dana Reyes"},"job_title":{"type":"string","maxLength":255,"nullable":true,"description":"Job title of the reference contact.","example":"VP of Operations"},"organization":{"type":"string","maxLength":255,"nullable":true,"description":"Organization the reference contact belongs to.","example":"Acme Logistics"},"relationship_to_registrant":{"type":"string","maxLength":255,"nullable":true,"description":"How the reference contact is related to the registering business.","example":"Supplier"},"phone_e164":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"Reference phone number in E.164 format, e.g. +14155550123.","example":"+14155550123"},"email":{"type":"string","format":"email","description":"Reference contact email address. Required: the reference is emailed scheduling and dial-in notices.","example":"dana.reyes@example.com"},"timezone":{"type":"string","description":"IANA timezone id for the reference (e.g. America/New_York). Required: calls are only placed within the reference's local 8am-9pm window.","example":"America/New_York"}}},"ReferenceList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}}}},"ReferenceSubmissionRequest":{"type":"object","description":"Exactly two business references plus one financial reference. The DIR's authorizer email must be verified before this is accepted.","required":["business_references","financial_reference"],"properties":{"business_references":{"type":"array","minItems":2,"maxItems":2,"description":"Exactly two business references. Array order determines each one's slot: the first entry becomes slot 1 and the second becomes slot 2. Those slots are what you pass when updating a single reference later. Each should be a senior contact who can speak to your company's reputation and operations: a C-suite executive (CEO, CFO, CTO, COO), an owner or founder as reflected in your corporate records, or a senior manager, director, or executive at an organization you work with, such as a vendor, partner, or client.","items":{"$ref":"#/components/schemas/ReferenceInput"}},"financial_reference":{"description":"One financial reference who can confirm the company pays its bills: a licensed certified public accountant (CPA) the company uses, a contact at a bank or financial institution that has a relationship with the company, or a reasonable alternative banking or financial reference.","allOf":[{"$ref":"#/components/schemas/ReferenceInput"}]}}},"ReferenceUpdateRequest":{"type":"object","minProperties":1,"description":"Partial update for a single reference; supply at least one field. Cosmetic fields are always editable. phone_e164 and timezone may only be changed while a scheduled call has not yet been dialed.","properties":{"full_name":{"type":"string","minLength":1,"maxLength":255,"description":"The full name of the person we should contact as your reference.","example":"Dana Reyes"},"job_title":{"type":"string","maxLength":255,"nullable":true,"description":"The reference contact's job title, for example CFO or Owner.","example":"VP of Operations"},"organization":{"type":"string","maxLength":255,"nullable":true,"description":"The name of the organization the reference contact works for.","example":"Acme Logistics"},"relationship_to_registrant":{"type":"string","maxLength":255,"nullable":true,"description":"How the reference contact is related to the registering business.","example":"Supplier"},"phone_e164":{"type":"string","pattern":"^\\+[1-9]\\d{1,14}$","description":"The reference's phone number in E.164 format, for example +14155550123. We call this number during their local business hours.","example":"+14155550123"},"email":{"type":"string","format":"email","description":"The reference's email address. We email them scheduling and dial-in instructions before we call, so use an address they check.","example":"dana.reyes@example.com"},"timezone":{"type":"string","description":"The reference's IANA time zone, for example America/New_York. We only call during their local 8am to 9pm hours, which is why we need it.","example":"America/New_York"}}},"ReferenceWrapped":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Reference"}}},"RefreshReputationRequest":{"type":"object","required":["phone_numbers"],"additionalProperties":false,"properties":{"phone_numbers":{"type":"array","items":{"type":"string","example":"+19493253498"},"minItems":1,"maxItems":100,"description":"Phone numbers to refresh reputation data for. 1–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","nullable":true,"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","format":"email","nullable":true,"example":"ops@example.com"},"webhook_url":{"type":"string","format":"uri","nullable":true,"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","format":"date-time","nullable":true},"tier2_completed_at":{"type":"string","format":"date-time","nullable":true},"results":{"$ref":"#/components/schemas/RemediationPerNumberResults","nullable":true,"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","format":"date-time","nullable":true},"tier2_completed_at":{"type":"string","format":"date-time","nullable":true}}},"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/EmailTemplate"},{"type":"object","description":"Template object with `subject`, `html_body`, and `text_body` replaced by their Liquid-rendered values. All other template fields (id, name, variables, etc.) remain unchanged."}]},"RenderedEmailTemplateResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RenderedEmailTemplate"}},"required":["data"]},"ReplaceInboxFiltersRequest":{"type":"object","description":"The complete filter configuration. An omitted list is replaced with an\nempty list. Unknown keys are ignored by the controller.\n","properties":{"allowlist":{"$ref":"#/components/schemas/InboxFilterEntryList"},"blocklist":{"$ref":"#/components/schemas/InboxFilterEntryList"}}},"ReplaceSourcesRequest":{"type":"object","required":["sources"],"properties":{"sources":{"type":"array","items":{"$ref":"#/components/schemas/SourceRequest"}}}},"ReplacedLinkClick":{"type":"object","properties":{"record_type":{"type":"string","example":"link_clicked","description":"Identifies the type of the resource."},"url":{"type":"string","example":"link_clicked","description":"The original link that was sent in the message."},"to":{"type":"string","description":"Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).","x-format":"address"},"message_id":{"type":"string","format":"uuid","description":"The message ID associated with the clicked link."},"time_clicked":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."}},"example":{"record_type":"link_clicked","url":"https://telnyx.com","to":"18445550001","message_id":"7ee4241c-f127-47e5-9c34-3aac291f8058","time_clicked":"2019-04-01T14:45:45.450Z"}},"ReplacedLinkClickEvent":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ReplacedLinkClick"}}},"ReplyEmailInboxMessageRequest":{"type":"object","description":"At least one of `text` or `html` must contain a non-whitespace body. Recipients are derived from the source message; caller-supplied `to`, `cc`, or `bcc` values are ignored.","properties":{"text":{"type":"string","minLength":1,"pattern":"\\S","description":"Plain-text reply body."},"html":{"type":"string","minLength":1,"pattern":"\\S","description":"HTML reply body."}},"anyOf":[{"required":["text"]},{"required":["html"]}]},"ReputationCheckFrequency":{"type":"string","enum":["business_daily","daily","weekly","biweekly","monthly","never"],"description":"How often Telnyx refreshes the stored reputation data for this enterprise's registered numbers."},"ReputationData":{"type":"object","description":"Reputation snapshot for a phone number. Each metric is a 0–100 score; `spam_risk` is a coarse bucket. Field set may grow over time - read by key.","properties":{"spam_risk":{"type":"string","enum":["low","medium","high"],"nullable":true,"description":"Overall spam-risk classification.","example":"low"},"spam_category":{"type":"string","nullable":true,"description":"Category label from the reputation feed when the number is flagged.","example":null},"maturity_score":{"type":"integer","minimum":0,"maximum":100,"nullable":true,"example":72},"connection_score":{"type":"integer","minimum":0,"maximum":100,"nullable":true,"example":80},"engagement_score":{"type":"integer","minimum":0,"maximum":100,"nullable":true,"example":64},"sentiment_score":{"type":"integer","minimum":0,"maximum":100,"nullable":true,"example":75},"last_refreshed_at":{"type":"string","format":"date-time","nullable":true,"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"},"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"},"reputation_data":{"$ref":"#/components/schemas/ReputationData","nullable":true,"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"}}},"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"}}}}}},"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,"maximum":100}},"type":"object","required":["version_id","weight"],"title":"RolloutSlot","description":"One slot in a percentage rollout."},"Room":{"type":"object","properties":{"id":{"description":"A unique identifier for the room.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"max_participants":{"description":"Maximum participants allowed in the room.","type":"integer","example":50},"unique_name":{"description":"The unique (within the Telnyx account scope) name of the room.","type":"string","example":"My room"},"created_at":{"description":"ISO 8601 timestamp when the room was created.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"updated_at":{"description":"ISO 8601 timestamp when the room was updated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"active_session_id":{"description":"The identifier of the active room session if any.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/RoomSession"}},"enable_recording":{"description":"Enable or disable recording for that room.","type":"boolean","example":true,"default":false},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":"string","format":"uri","description":"The failover URL where webhooks related to this room will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":"integer","minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"record_type":{"type":"string","example":"room","readOnly":true}},"example":{"id":"7b61621f-62e0-4aad-ab11-9fd19e272e73","max_participants":50,"unique_name":"My Room","created_at":"2021-04-16T09:46:20.954863Z","updated_at":"2021-04-16T10:24:55.962200Z","active_session_id":"7b61621f-62e0-4aad-ab11-9fd19e272e74","enable_recording":true,"webhook_event_failover_url":"https://failover.example.com","webhook_timeout_secs":25,"webhook_event_url":"https://www.example.com","sessions":[{"id":"7b61621f-62e0-4aad-ab11-9fd19e272e74","room_id":"7b61621f-62e0-4aad-ab11-9fd19e272e73","active":true,"created_at":"2021-04-16T09:46:20.954863Z","updated_at":"2021-04-16T10:24:55.962200Z","participants":[],"record_type":"room_session"}],"record_type":"room"}},"RoomComposition":{"type":"object","properties":{"id":{"description":"A unique identifier for the room composition.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"room_id":{"description":"Identify the room associated with the room composition.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"session_id":{"description":"Identify the room session associated with the room composition.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"user_id":{"description":"Identify the user associated with the room composition.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"status":{"description":"Shows the room composition status.","type":"string","example":"completed","enum":["completed","enqueued","processing"]},"size_mb":{"description":"Shows the room composition size in MB.","type":"number","format":"float","example":10.5},"download_url":{"description":"Url to download the composition.","type":"string","example":"https://www.example.com"},"duration_secs":{"description":"Shows the room composition duration in seconds.","type":"integer","example":67},"format":{"description":"Shows format of the room composition.","type":"string","example":"mp4","enum":["mp4"]},"created_at":{"description":"ISO 8601 timestamp when the room composition was created.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"updated_at":{"description":"ISO 8601 timestamp when the room composition was updated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"ended_at":{"description":"ISO 8601 timestamp when the room composition has ended.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"started_at":{"description":"ISO 8601 timestamp when the room composition has stated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"completed_at":{"description":"ISO 8601 timestamp when the room composition has completed.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"video_layout":{"description":"Describes the video layout of the room composition in terms of regions. Limited to 2 regions.","type":"object","additionalProperties":{"$ref":"#/components/schemas/VideoRegion"}},"webhook_event_url":{"description":"The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'.","type":"string","format":"uri","example":"https://example.com"},"webhook_event_failover_url":{"type":"string","format":"uri","description":"The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":"integer","minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"resolution":{"type":"string","description":"The resolution of the room composition.","example":"1280x720"},"record_type":{"type":"string","example":"room_composition","readOnly":true}},"example":{"completed_at":"2022-02-25T05:39:56.377426Z","download_url":"https://example.com","duration_secs":84,"ended_at":"2022-02-24T23:22:24.577677Z","format":"mp4","id":"7103dc53-ee59-4b54-a58b-c77d99ceb037","record_type":"composition","resolution":"1280x720","room_id":"f981dbb3-228a-44e9-ac54-e87f0e2658b0","session_id":"8f728d7b-00e2-4c59-8c27-f564b828df87","size_mb":6,"started_at":"2022-02-24T23:21:00.077209Z","status":"enqueued","user_id":"12a04ec9-0f91-4a91-9f3a-a19d9931182e","video_layout":{"first":{"height":720,"video_sources":["7b61621f-62e0-4aad-ab11-9fd19e272e73"],"width":1280,"x_pos":0,"y_pos":0,"z_pos":0}},"webhook_event_url":"https://webhook.site/544663ce-b692-4f9c-80ed-e5ad97cd5c02"}},"RoomParticipant":{"type":"object","properties":{"id":{"description":"A unique identifier for the room participant.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"session_id":{"description":"Identify the room session that participant is part of.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"context":{"description":"Context provided to the given participant through the client SDK","type":"string","example":"Alice"},"joined_at":{"description":"ISO 8601 timestamp when the participant joined the session.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"updated_at":{"description":"ISO 8601 timestamp when the participant was updated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"left_at":{"description":"ISO 8601 timestamp when the participant left the session.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"record_type":{"type":"string","example":"room_participant","readOnly":true}},"example":{"id":"7b61621f-62e0-4aad-ab11-9fd19e272e73","session_id":"7b61621f-5fe4-4aad-ab11-9fd19e272e73","context":"Alice","joined_at":"2021-04-16T09:46:20.954863Z","updated_at":"2021-04-16T10:24:55.962200Z","left_at":"2021-04-16T10:24:55.962200Z","record_type":"room_participant"}},"RoomRecording":{"type":"object","properties":{"id":{"description":"A unique identifier for the room recording.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"room_id":{"description":"Identify the room associated with the room recording.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"session_id":{"description":"Identify the room session associated with the room recording.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"participant_id":{"description":"Identify the room participant associated with the room recording.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"status":{"description":"Shows the room recording status.","type":"string","example":"completed","enum":["completed","processing"]},"type":{"description":"Shows the room recording type.","type":"string","example":"audio","enum":["audio","video"]},"size_mb":{"description":"Shows the room recording size in MB.","type":"number","format":"float","example":10.5},"download_url":{"description":"Url to download the recording.","type":"string","example":"https://www.example.com"},"codec":{"description":"Shows the codec used for the room recording.","type":"string","example":"opus"},"duration_secs":{"description":"Shows the room recording duration in seconds.","type":"integer","example":67},"created_at":{"description":"ISO 8601 timestamp when the room recording was created.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"updated_at":{"description":"ISO 8601 timestamp when the room recording was updated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"ended_at":{"description":"ISO 8601 timestamp when the room recording has ended.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"started_at":{"description":"ISO 8601 timestamp when the room recording has stated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"completed_at":{"description":"ISO 8601 timestamp when the room recording has completed.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"record_type":{"type":"string","example":"room_recording","readOnly":true}},"example":{"id":"6b61621f-62e0-4aad-ab11-9fd19e272e73","room_id":"7b61621f-5fe4-4aad-ab11-9fd19e272e73","session_id":"8b61621f-5fe4-4aad-ab11-9fd19e272e73","participant_id":"9b61621f-5fe4-4aad-ab11-9fd19e272e73","status":"completed","download_url":"https://www.example.com","type":"audio","duration_secs":3660,"size_mb":5.6,"codec":"opus","created_at":"2021-04-16T09:46:20.954863Z","updated_at":"2021-04-16T10:24:55.962200Z","started_at":"2021-04-16T09:24:55.962200Z","ended_at":"2021-04-16T10:24:55.962200Z","completed_at":"2021-04-16T10:25:55.962200Z","record_type":"room_session"}},"RoomSession":{"type":"object","properties":{"id":{"description":"A unique identifier for the room session.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"room_id":{"description":"Identify the room hosting that room session.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777b0"},"active":{"description":"Shows if the room session is active or not.","type":"boolean","example":false},"created_at":{"description":"ISO 8601 timestamp when the room session was created.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"updated_at":{"description":"ISO 8601 timestamp when the room session was updated.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"ended_at":{"description":"ISO 8601 timestamp when the room session has ended.","type":"string","format":"date-time","example":"2021-03-26T17:51:59.588408Z"},"participants":{"type":"array","items":{"$ref":"#/components/schemas/RoomParticipant"}},"record_type":{"type":"string","example":"room_session","readOnly":true}},"example":{"id":"7b61621f-62e0-4aad-ab11-9fd19e272e73","room_id":"7b61621f-5fe4-4aad-ab11-9fd19e272e73","active":false,"created_at":"2021-04-16T09:46:20.954863Z","updated_at":"2021-04-16T10:24:55.962200Z","ended_at":"2021-04-16T10:24:55.962200Z","participants":[],"record_type":"room_session"}},"Rule-Input":{"properties":{"match":{"items":{"$ref":"#/components/schemas/Clause"},"type":"array","title":"Match"},"serve":{"$ref":"#/components/schemas/Serve"}},"type":"object","required":["serve"],"title":"Rule","description":"A targeting rule: ``match`` clauses (AND) gate ``serve``.\n\nAn empty ``match`` is a catch-all (always fires)."},"Rule-Output":{"properties":{"match":{"items":{"$ref":"#/components/schemas/Clause"},"type":"array","title":"Match"},"serve":{"$ref":"#/components/schemas/Serve"}},"type":"object","required":["serve"],"title":"Rule","description":"A targeting rule: ``match`` clauses (AND) gate ``serve``.\n\nAn empty ``match`` is a catch-all (always fires)."},"RunStatus":{"type":"string","enum":["pending","running","paused","succeeded","failed","cancelled"],"title":"RunStatus"},"S3ConfigurationData":{"type":"object","title":"AWS S3 Storage Configuration Data","properties":{"backend":{"type":"string","enum":["s3"],"description":"Storage backend type"},"bucket":{"$ref":"#/components/schemas/Bucket"},"region":{"$ref":"#/components/schemas/Region"},"aws_access_key_id":{"$ref":"#/components/schemas/AwsAccessKeyId"},"aws_secret_access_key":{"$ref":"#/components/schemas/AwsSecretAccessKey"}},"required":["backend","bucket","region","aws_access_key_id","aws_secret_access_key"]},"S3GenericConfigurationData":{"type":"object","title":"S3-Compatible (Generic) Storage Configuration Data","properties":{"backend":{"type":"string","enum":["s3-generic"],"description":"Storage backend type"},"bucket":{"$ref":"#/components/schemas/Bucket"},"region":{"$ref":"#/components/schemas/Region"},"endpoint":{"$ref":"#/components/schemas/Endpoint"},"aws_access_key_id":{"$ref":"#/components/schemas/AwsAccessKeyId"},"aws_secret_access_key":{"$ref":"#/components/schemas/AwsSecretAccessKey"}},"required":["backend","bucket","region","endpoint","aws_access_key_id","aws_secret_access_key"]},"SIMCard":{"type":"object","title":"SIMCard","properties":{"id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","example":"sim_card","readOnly":true},"status":{"$ref":"#/components/schemas/SIMCardStatus"},"type":{"type":"string","description":"The type of SIM card","readOnly":true,"example":"physical","enum":["physical","esim"]},"iccid":{"type":"string","description":"The ICCID is the identifier of the specific SIM card/chip. Each SIM is internationally identified by its integrated circuit card identifier (ICCID). ICCIDs are stored in the SIM card's memory and are also engraved or printed on the SIM card body during a process called personalization.\n","readOnly":true,"example":"89310410106543789301"},"imsi":{"type":"string","description":"SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI). <br/>\nMobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber  Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home  Location Register (HLR) or the Visitor Location Register (VLR).\n","readOnly":true,"example":"081932214823362973"},"msisdn":{"type":"string","description":"Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally. <br/>\nMSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber's operator.\n","readOnly":true,"example":"+13109976224"},"sim_card_group_id":{"type":"string","format":"uuid","description":"The group SIMCardGroup identification. This attribute can be <code>null</code> when it's present in an associated resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"tags":{"type":"array","description":"Searchable tags associated with the SIM card","items":{"type":"string"},"example":["personal","customers","active-customers"]},"authorized_imeis":{"type":["array","null"],"description":"List of IMEIs authorized to use a given SIM card.","items":{"type":"string"},"example":["106516771852751","534051870479563","508821468377961"]},"current_imei":{"type":"string","description":"IMEI of the device where a given SIM card is currently being used.","readOnly":true,"example":"457032284023794"},"data_limit":{"type":"object","description":"The SIM card individual data limit configuration.","properties":{"amount":{"type":"string","example":"2048.1"},"unit":{"type":"string","example":"MB","enum":["MB","GB"]}}},"current_billing_period_consumed_data":{"type":"object","description":"The SIM card consumption so far in the current billing cycle.","readOnly":true,"properties":{"amount":{"type":"string","example":"2049.0"},"unit":{"type":"string","example":"MB","default":"MB"}}},"actions_in_progress":{"type":"boolean","description":"Indicate whether the SIM card has any pending (in-progress) actions.","readOnly":true,"example":true,"default":false},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was updated.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"ipv4":{"type":"string","description":"The SIM's address in the currently connected network. This IPv4 address is usually obtained dynamically, so it may vary according to the location or new connections.\n","readOnly":true,"example":"192.168.0.0"},"ipv6":{"type":"string","description":"The SIM's address in the currently connected network. This IPv6 address is usually obtained dynamically, so it may vary according to the location or new connections.\n","readOnly":true,"example":"2001:cdba:0000:0000:0000:0000:3257:9652"},"current_device_location":{"type":"object","description":"Current physical location data of a given SIM card. Accuracy is given in meters.","readOnly":true,"properties":{"latitude":{"type":"string","example":"41.143"},"longitude":{"type":"string","example":"-8.605"},"accuracy":{"type":"integer","example":1250},"accuracy_unit":{"type":"string","example":"m","default":"m"}}},"current_mnc":{"type":"string","readOnly":true,"description":"Mobile Network Code of the current network to which the SIM card is connected. It's a two to three decimal digits that identify a network.<br/><br/>\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.<br/><br/>\nThis code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.","example":"410"},"live_data_session":{"type":"string","enum":["connected","disconnected","unknown"],"readOnly":true,"description":"Indicates whether the device is actively connected to a network and able to run data.","example":"connected"},"pin_puk_codes":{"type":"object","description":"PIN and PUK codes for the SIM card. Only available when include_pin_puk_codes=true is set in the request.","readOnly":true,"properties":{"pin1":{"type":"string","description":"The primary Personal Identification Number (PIN) for the SIM card. This is a 4-digit code used to protect the SIM card from unauthorized use.","example":"1234","readOnly":true},"pin2":{"type":"string","description":"The secondary Personal Identification Number (PIN2) for the SIM card. This is a 4-digit code used for additional security features.","example":"5678","readOnly":true},"puk1":{"type":"string","description":"The primary Personal Unblocking Key (PUK1) for the SIM card. This is an 8-digit code used to unlock the SIM card if PIN1 is entered incorrectly multiple times.","example":"12345678","readOnly":true},"puk2":{"type":"string","description":"The secondary Personal Unblocking Key (PUK2) for the SIM card. This is an 8-digit code used to unlock the SIM card if PIN2 is entered incorrectly multiple times.","example":"87654321","readOnly":true}}},"esim_installation_status":{"type":["string","null"],"description":"The installation status of the eSIM. Only applicable for eSIM cards.","readOnly":true,"example":"released","enum":["released","disabled"]},"version":{"type":"string","description":"The version of the SIM card.","readOnly":true,"example":"4.3"},"resources_with_in_progress_actions":{"type":"array","description":"List of resources with actions in progress.","readOnly":true,"items":{"type":"object"},"example":[]},"eid":{"type":["string","null"],"description":"The Embedded Identity Document (eID) for eSIM cards.","readOnly":true,"example":null},"voice_enabled":{"type":"boolean","description":"Indicates whether voice services are enabled for the SIM card.","readOnly":true,"example":false,"default":false}}},"SIMCardAction":{"type":"object","title":"SIMCardAction","description":"This object represents a SIM card action. It allows tracking the current status of an operation that impacts the SIM card.","properties":{"id":{"$ref":"#/components/schemas/wireless_Id"},"record_type":{"type":"string","example":"sim_card_action","readOnly":true},"sim_card_id":{"type":"string","format":"uuid","description":"The related SIM card identifier.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"action_type":{"type":"string","description":"The operation type. It can be one of the following: <br/>\n<ul>\n <li><code>enable</code> - move the SIM card to the <code>enabled</code> status</li>\n <li><code>enable_standby_sim_card</code> - move a SIM card previously on the <code>standby</code> status to the <code>enabled</code> status after it consumes data.</li>\n <li><code>disable</code> - move the SIM card to the <code>disabled</code> status</li>\n <li><code>set_standby</code> - move the SIM card to the <code>standby</code> status</li>\n </ul>","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 <code>null</code> for self-explanatory statuses, such as <code>in-progress</code> and <code>completed</code> but will include further information on statuses like <code>interrupted</code> and <code>failed</code>.","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.<br/>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.<ul> <li><code>pending</code> - the order is waiting to be processed.</li> <li><code>processing</code> - the order is currently being processed.</li> <li><code>ready_to_ship</code> - the order is ready to be shipped to the specified <b>address</b>.</li> <li><code>shipped</code> - the order was shipped and is on its way to be delivered to the specified <b>address</b>.</li> <li><code>delivered</code> - the order was delivered to the specified <b>address</b>.</li> <li><code>canceled</code> - the order was canceled.</li> </ul>","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 <code>null</code> 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: <br/>\n<ul>\n <li><code>registering</code> - the card is being registered</li>\n <li><code>enabling</code> - the card is being enabled</li>\n <li><code>enabled</code> - the card is enabled and ready for use</li>\n <li><code>disabling</code> - the card is being disabled</li>\n <li><code>disabled</code> - the card has been disabled and cannot be used</li>\n <li><code>data_limit_exceeded</code> - the card has exceeded its data consumption limit</li>\n <li><code>setting_standby</code> - the process to set the card in stand by is in progress</li>\n <li><code>standby</code> - the card is in stand by</li>\n</ul>\nTransitioning between the enabled and disabled states may take a period of time.\n","readOnly":true,"example":"enabled"},"reason":{"type":"string","description":"It describes why the SIM card is in the current status.","readOnly":true,"example":"The SIM card is active, ready to connect to networks and consume data."}}},"SIPReferTool":{"properties":{"type":{"type":"string","enum":["refer"]},"shared":{"type":"boolean","description":"Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — 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\ndispatches. Phone-call events only. New per-call dispatch options should be\nadded here rather than as top-level event fields."},"ScheduledEventResponse":{"anyOf":[{"$ref":"#/components/schemas/ScheduledPhoneCallEventResponse"},{"$ref":"#/components/schemas/ScheduledSmsEventResponse"}],"title":"ScheduledEventResponse","description":"Union type for different scheduled event response types"},"ScheduledPhoneCallEventResponse":{"properties":{"telnyx_conversation_channel":{"$ref":"#/components/schemas/ConversationChannelType"},"telnyx_end_user_target":{"type":"string","title":"Telnyx End User Target"},"telnyx_agent_target":{"type":"string","title":"Telnyx Agent Target"},"scheduled_at_fixed_datetime":{"type":"string","format":"date-time","title":"Scheduled At Fixed Datetime"},"assistant_id":{"type":"string","title":"Assistant Id"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"retry_attempts":{"type":"integer","title":"Retry Attempts"},"scheduled_event_id":{"type":"string","title":"Scheduled Event Id"},"conversation_id":{"type":"string","title":"Conversation Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"status":{"allOf":[{"$ref":"#/components/schemas/EventStatus"}],"default":"pending"},"conversation_metadata":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"object","title":"Conversation Metadata"},"dynamic_variables":{"additionalProperties":{"type":"string"},"type":"object","description":"A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax.","title":"Dynamic Variables"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"},"call_status":{"title":"Call Status","type":"string","description":"Values: busy, canceled, no-answer, ringing, completed, failed, in-progress"},"call_duration":{"title":"Call Duration","type":"integer","description":"Duration of the call in seconds"},"max_retries_client_errors":{"type":"integer","title":"Max Retries Client Errors","description":"Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before the callee answered)","default":0},"retry_interval_secs":{"title":"Retry Interval Secs","type":"integer"},"call_attempts":{"title":"Call Attempts","items":{"$ref":"#/components/schemas/AssistantScheduledCallAttempt"},"type":"array"},"dispatched_at":{"title":"Dispatched At","type":"string","format":"date-time","description":"Date time at which call was sent"},"call_settings":{"$ref":"#/components/schemas/ScheduledCallSettings"}},"type":"object","required":["telnyx_conversation_channel","telnyx_end_user_target","telnyx_agent_target","scheduled_at_fixed_datetime","assistant_id"],"title":"ScheduledPhoneCallEventResponse"},"ScheduledSmsEventResponse":{"properties":{"telnyx_conversation_channel":{"$ref":"#/components/schemas/ConversationChannelType"},"telnyx_end_user_target":{"type":"string","title":"Telnyx End User Target"},"telnyx_agent_target":{"type":"string","title":"Telnyx Agent Target"},"scheduled_at_fixed_datetime":{"type":"string","format":"date-time","title":"Scheduled At Fixed Datetime"},"assistant_id":{"type":"string","title":"Assistant Id"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"text":{"type":"string","title":"Text"},"scheduled_event_id":{"type":"string","title":"Scheduled Event Id"},"conversation_id":{"type":"string","title":"Conversation Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"status":{"allOf":[{"$ref":"#/components/schemas/EventStatus"}],"default":"pending"},"conversation_metadata":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"boolean"}]},"type":"object","title":"Conversation Metadata"},"dynamic_variables":{"additionalProperties":{"type":"string"},"type":"object","description":"A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax.","title":"Dynamic Variables"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["telnyx_conversation_channel","telnyx_end_user_target","telnyx_agent_target","scheduled_at_fixed_datetime","assistant_id","text"],"title":"ScheduledSmsEventResponse"},"Scope":{"type":"string","enum":["account","domain","address"],"description":"Derived server-side from `domain_id`/`from`; never trusted from the caller."},"SearchedSIMCardGroup":{"title":"SIMCardGroup","type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","description":"Identifies the type of the resource.","readOnly":true,"example":"sim_card_group"},"default":{"description":"Indicates whether the SIM card group is the users default group.<br/>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.\n","readOnly":true,"example":"89310410106543789301"},"imsi":{"type":"string","description":"SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI). <br/>\nMobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber  Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home  Location Register (HLR) or the Visitor Location Register (VLR).\n","readOnly":true,"example":"081932214823362973"},"msisdn":{"type":"string","description":"Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally. <br/>\nMSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber's operator.\n","readOnly":true,"example":"+13109976224"},"sim_card_group_id":{"type":"string","format":"uuid","description":"The group SIMCardGroup identification. This attribute can be <code>null</code> 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. <br/><br/>","properties":{"id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","example":"ota_update","readOnly":true},"sim_card_id":{"type":"string","format":"uuid","description":"The identification UUID of the related SIM card resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"type":{"type":"string","description":"Represents the type of the operation requested. This will relate directly to the source of the request.","enum":["sim_card_network_preferences"],"example":"sim_card_network_preferences"},"status":{"type":"string","enum":["in-progress","completed","failed"],"example":"in-progress"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was updated.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"}}},"SingleManagedAccountGlobalOutboundChannels":{"title":"Global Outbound Channels Details for a Managed Account","properties":{"channel_limit":{"type":"integer","description":"Integer value that indicates the number of allocatable global outbound channels that are allocated to the managed account. If the value is 0 then the account will have no usable channels and will not be able to perform outbound calling.","example":30},"email":{"type":"string","description":"The email of the managed account.","example":"customer@example.org"},"id":{"type":"string","description":"The user ID of the managed account.","example":"096abcde-1122-3344-ab77-ff0123456789"},"manager_account_id":{"type":"string","description":"The user ID of the manager of the account.","example":"beeabcde-1122-3344-ab77-ff0123456789"},"record_type":{"type":"string","description":"The name of the type of data in the response.","example":"managed_account_global_outbound_settings"}},"example":{"channel_limit":30,"email":"allocate_demo@customer.com","id":"096abcde-1122-3344-ab77-ff0123456789","manager_account_id":"beeabcde-1122-3344-ab77-ff0123456789","record_type":"managed_account_global_outbound_settings"},"type":"object"},"SipHeader":{"type":"object","title":"SIP Header","required":["name","value"],"properties":{"name":{"description":"The name of the header to add.","type":"string","enum":["User-to-User"],"example":"User-to-User"},"value":{"description":"The value of the header.","type":"string","example":"value"}},"example":{"name":"User-to-User","value":"value"}},"SipRegion":{"type":"string","enum":["US","Europe","Canada","Australia","Middle East"],"title":"SipRegion","description":"SIP region passed to Telnyx when initiating an outbound call. Values\nmatch the Telnyx TeXML `SipRegion` parameter exactly. Telnyx defaults to\n`US` when omitted."},"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.\nNote: For numbers purchased prior to July 2023 or when fetching a number's details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.","enum":["local","toll_free","mobile","national","shared_cost","landline","tollfree","shortcode","longcode"],"readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}}},"SonioxProviderParams":{"type":"object","description":"Soniox provider-specific parameters. Every voice speaks all supported languages; set `language` to the language of the text.","required":["voice_id"],"properties":{"voice_id":{"type":"string","description":"Soniox voice name from the [voices listing](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices), for example `Emma`."},"model_id":{"type":"string","description":"Soniox model.","enum":["tts-rt-v2"],"default":"tts-rt-v2"},"language":{"type":"string","description":"Two-letter ISO 639-1 code of the text.","default":"en"},"speed":{"type":"number","format":"float","description":"Speaking rate. 1.0 is normal speed.","minimum":0.7,"maximum":1.3,"default":1},"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,"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.\n\nUnlike a prompt node, a speak node has no instructions or model — it isn't\nan LLM turn. Reaching it delivers `message` to the user verbatim (with\n`{{variable}}` interpolation), then routes via outgoing `llm` /\n`expression` edges.","example":{"id":"n_greeting","message":"Thanks for calling, {{caller_name}}. Connecting you now.","name":"Greeting","position":{"x":60,"y":80},"type":"speak"}},"SpeakRequest":{"type":"object","title":"Speak Request","required":["payload","voice"],"properties":{"payload":{"description":"The text or SSML to be converted into speech. There is a 3,000 character limit.","type":"string","example":"Say this on the call"},"payload_type":{"description":"The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML).","default":"text","type":"string","enum":["text","ssml"],"example":"ssml"},"service_level":{"description":"This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed.","default":"premium","type":"string","enum":["basic","premium"],"example":"premium"},"stop":{"description":"When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue.","type":"string","example":"current"},"voice":{"description":"Specifies the voice used in speech synthesis.\n\n- Define voices using the format `<Provider>.<Model>.<VoiceId>`. Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.<VoiceId>` (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.<VoiceId>` (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.<ModelId>.<VoiceId>` (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\": \"<secret_identifier>\"}`. 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.<model_id>.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<voice_id>` (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.<ModelId>.<VoiceId>` (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.<ModelId>.<VoiceId>` (e.g., `FishAudio.s2.1-pro.<reference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.<ModelId>.<VoiceId>` (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.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.<VoiceId>` (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\nFor service_level basic, you may define the gender of the speaker (male or female).","type":"string","example":"Telnyx.KokoroTTS.af"},"voice_settings":{"description":"The settings associated with the voice selected","oneOf":[{"$ref":"#/components/schemas/ElevenLabsVoiceSettings"},{"$ref":"#/components/schemas/TelnyxVoiceSettings"},{"$ref":"#/components/schemas/AWSVoiceSettings"},{"$ref":"#/components/schemas/MinimaxVoiceSettings"},{"$ref":"#/components/schemas/AzureVoiceSettings"},{"$ref":"#/components/schemas/ResembleVoiceSettings"},{"$ref":"#/components/schemas/InworldVoiceSettings"},{"$ref":"#/components/schemas/XAIVoiceSettings"},{"$ref":"#/components/schemas/SonioxVoiceSettings"}],"discriminator":{"propertyName":"type","mapping":{"elevenlabs":"#/components/schemas/ElevenLabsVoiceSettings","telnyx":"#/components/schemas/TelnyxVoiceSettings","aws":"#/components/schemas/AWSVoiceSettings","minimax":"#/components/schemas/MinimaxVoiceSettings","azure":"#/components/schemas/AzureVoiceSettings","resemble":"#/components/schemas/ResembleVoiceSettings","inworld":"#/components/schemas/InworldVoiceSettings","xai":"#/components/schemas/XAIVoiceSettings","soniox":"#/components/schemas/SonioxVoiceSettings"}}},"language":{"description":"The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.","type":"string","enum":["arb","cmn-CN","cy-GB","da-DK","de-DE","en-AU","en-GB","en-GB-WLS","en-IN","en-US","es-ES","es-MX","es-US","fr-CA","fr-FR","hi-IN","is-IS","it-IT","ja-JP","ko-KR","nb-NO","nl-NL","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sv-SE","tr-TR"],"example":"en-US"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"loop":{"$ref":"#/components/schemas/Loopcount","description":"The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1."},"target_legs":{"description":"Specifies which legs of the call should receive the spoken audio.","type":"string","enum":["self","opposite","both"],"default":"self","example":"both"}},"example":{"payload":"Say this on the call","payload_type":"text","service_level":"basic","stop":"current","voice":"female","language":"arb","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"SpeechmaticsTranscriptionLanguage":{"title":"Speechmatics transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["en","ba","eu","gl","ga","mt","mn","sw","ug","cy","ar_en","cmn_en","en_ms","en_ta","tl","es-bilingual-en","cmn_en_ms_ta"]},"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"]},"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, <udp:ip_address:port>, 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, <udp:ip_address:port>, 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,"description":"Minimum seconds to wait before the assistant starts speaking."},"transcription_endpointing_plan":{"$ref":"#/components/schemas/TranscriptionEndpointingPlan"}}},"StartStreamingRequest":{"type":"object","title":"Start Streaming Request","properties":{"stream_url":{"description":"The destination WebSocket address where the stream is going to be delivered.","type":"string","example":"wss://www.example.com/websocket"},"stream_track":{"description":"Specifies which track should be streamed.","type":"string","enum":["inbound_track","outbound_track","both_tracks"],"default":"inbound_track","example":"both_tracks"},"stream_codec":{"$ref":"#/components/schemas/StreamCodec"},"stream_bidirectional_mode":{"$ref":"#/components/schemas/StreamBidirectionalMode"},"stream_bidirectional_codec":{"$ref":"#/components/schemas/StreamBidirectionalCodec"},"stream_bidirectional_target_legs":{"$ref":"#/components/schemas/StreamBidirectionalTargetLegs"},"stream_bidirectional_sampling_rate":{"$ref":"#/components/schemas/StreamBidirectionalSamplingRate"},"enable_dialogflow":{"description":"Enables Dialogflow for the current call. The default value is false.","type":"boolean","default":false,"example":true},"dialogflow_config":{"$ref":"#/components/schemas/DialogflowConfig"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"custom_parameters":{"description":"Custom parameters to be sent as part of the WebSocket connection.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the custom parameter."},"value":{"type":"string","description":"The value of the custom parameter."}}},"example":[{"name":"param1","value":"value1"},{"name":"param2","value":"value2"}]},"stream_auth_token":{"description":"An authentication token to be sent as part of the WebSocket connection. Maximum length is 4000 characters.","type":"string","maxLength":4000,"example":"your-auth-token"}},"example":{"stream_url":"wss://www.example.com/websocket","stream_track":"both_tracks","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","enable_dialogflow":false,"dialogflow_config":{"analyze_sentiment":false,"partial_automated_agent_reply":false}}},"Status":{"type":"string","enum":["active","expired","removed"]},"StepStatus":{"type":"string","enum":["pending","in_progress","completed","skipped","failed"],"title":"StepStatus"},"StockExchange":{"title":"StockExchange","enum":["NONE","NASDAQ","NYSE","AMEX","AMX","ASX","B3","BME","BSE","FRA","ICEX","JPX","JSE","KRX","LON","NSE","OMX","SEHK","SSE","STO","SWX","SZSE","TSX","TWSE","VSE"],"description":"(Required for public company) stock exchange.","example":"NASDAQ","type":"string"},"StockSymbolBrandIdentifier":{"type":"object","additionalProperties":false,"properties":{"identifier_type":{"const":"STOCK_SYMBOL"},"value":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\S+:\\S+$","description":"A stock symbol using EXCHANGE:SYMBOL."}},"required":["identifier_type","value"]},"StopForkingRequest":{"type":"object","title":"Stop Forking Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"stream_type":{"description":"Optionally specify a `stream_type`. This should match the `stream_type` that was used in `fork_start` command to properly stop the fork.","type":"string","enum":["raw","decrypted"],"default":"raw","example":"decrypted"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"StopGatherRequest":{"type":"object","title":"Stop Gather Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"StopRecordingConferenceRequest":{"type":"object","title":"Stop Recording Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"recording_id":{"description":"Uniquely identifies the resource.","type":"string","format":"uuid","example":"6e00ab49-9487-4364-8ad6-23965965afb2"},"region":{"$ref":"#/components/schemas/ConferenceRegion"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","recording_id":"6e00ab49-9487-4364-8ad6-23965965afb2"}},"StopRecordingRequest":{"type":"object","title":"Stop Recording Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"recording_id":{"description":"Uniquely identifies the resource.","type":"string","format":"uuid","example":"6e00ab49-9487-4364-8ad6-23965965afb2"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","recording_id":"6e00ab49-9487-4364-8ad6-23965965afb2"}},"StopSiprecRequest":{"type":"object","title":"Stop Siprec Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}},"StopStreamingRequest":{"type":"object","title":"Stop Streaming Request","properties":{"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901"},"stream_id":{"type":"string","format":"uuid","example":"1edb94f9-7ef0-4150-b502-e0ebadfd9491","description":"Identifies the stream. If the `stream_id` is not provided the command stops all streams associated with a given `call_control_id`."}},"example":{"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","stream_id":"1edb94f9-7ef0-4150-b502-e0ebadfd9491"}},"StoreMedia":{"description":"Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.","type":"boolean","default":false},"StorePreview":{"description":"Should fax preview be stored on temporary URL.","type":"boolean","default":false},"StoredPaymentTransactionRequest":{"type":"object","required":["amount"],"properties":{"amount":{"type":"string","description":"Amount in dollars and cents, e.g. \"120.00\"","example":"120.00"}}},"StoredPaymentTransactionResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"record_type":{"type":"string","enum":["transaction"]},"amount_cents":{"type":"integer"},"processor_status":{"type":"string"},"amount_currency":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"auto_recharge":{"type":"boolean"},"transaction_processing_type":{"type":"string","enum":["stored_payment"]}}}}},"StreamBidirectionalCodec":{"type":"string","title":"Bidirectional Stream Codec","description":"Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.","enum":["PCMU","PCMA","G722","OPUS","AMR-WB","L16"],"default":"PCMU","example":"G722"},"StreamBidirectionalMode":{"type":"string","title":"Bidirectional Stream Mode","description":"Configures method of bidirectional streaming (mp3, rtp).","enum":["mp3","rtp"],"default":"mp3","example":"rtp"},"StreamBidirectionalSamplingRate":{"type":"integer","title":"Bidirectional Stream Sampling Rate","description":"Audio sampling rate.","enum":[8000,16000,22050,24000,48000],"default":8000,"example":16000},"StreamBidirectionalTargetLegs":{"type":"string","title":"Bidirectional Stream Target Legs","description":"Specifies which call legs should receive the bidirectional stream audio.","enum":["both","self","opposite"],"default":"opposite","example":"both"},"StreamCodec":{"description":"Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used.","title":"Stream Codec","type":"string","enum":["PCMU","PCMA","G722","OPUS","AMR-WB","L16","default"],"default":"default","example":"PCMA"},"StreamName":{"description":"The user specified name of Stream.","example":"My stream","type":"string"},"StreamStatus":{"description":"The status of the Stream you wish to update.","default":"stopped","example":"stopped","type":"string","enum":["stopped"]},"StreamTrack":{"description":"Tracks to be included in the stream","default":"inbound_track","example":"both_tracks","type":"string","enum":["inbound_track","outbound_track","both_tracks"]},"StringLiteralExpression":{"description":"Constant string value.","example":{"type":"string_literal","value":"gold"},"properties":{"type":{"const":"string_literal","title":"Type","type":"string"},"value":{"description":"Literal string value.","example":"gold","title":"Value","type":"string"}},"required":["type","value"],"title":"StringLiteralExpression","type":"object"},"SttClientEvent":{"type":"string","format":"binary","description":"Binary audio data in mp3, wav, linear16, or linear32 format, per `input_format`."},"SttDeleteDetailReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SttDetailReportResponse"}}},"SttDetailReportResponse":{"type":"object","properties":{"id":{"type":"string","description":"Identifies the resource","example":"ab76c3b6-80cd-11eb-9439-0242ac130002"},"created_at":{"type":"string","format":"date-time","example":"2020-07-01T00:00:00-06:00"},"start_date":{"type":"string","format":"date-time","example":"2020-07-01T00:00:00-06:00"},"end_date":{"type":"string","format":"date-time","example":"2020-07-01T00:00:00-06:00"},"download_link":{"type":"string","description":"URL to download the report","example":"https://portal-cdrs-usage.s3.amazonaws.com"},"status":{"type":"string","enum":["PENDING","COMPLETE","FAILED","EXPIRED"]},"record_type":{"type":"string","example":"speech_to_text_report"}}},"SttDetailedRequest":{"required":["start_date","end_date"],"type":"object","properties":{"start_date":{"type":"string","description":"Start date in ISO format with timezone","format":"date-time","example":"2020-07-01T00:00:00-06:00"},"end_date":{"type":"string","description":"End date in ISO format with timezone (date range must be up to one month)","format":"date-time","example":"2020-07-01T00:00:00-06:00"}},"description":"Request object for Speech to Text detailed report"},"SttErrorFrame":{"type":"object","description":"Server-to-client frame indicating an error during transcription. The connection may be closed shortly after.","properties":{"type":{"type":"string","const":"error","description":"Frame type identifier."},"error":{"type":"string","description":"Error message describing what went wrong."}},"required":["type","error"]},"SttGetDetailReportByIdResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SttDetailReportResponse"}}},"SttGetDetailReportResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SttDetailReportResponse"}}}},"SttPostDetailReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SttDetailReportResponse"}}},"SttServerEvent":{"description":"Union of all server-to-client WebSocket events for STT streaming.","oneOf":[{"$ref":"#/components/schemas/TranscriptFrame"},{"$ref":"#/components/schemas/SttErrorFrame"}],"discriminator":{"propertyName":"type","mapping":{"transcript":"#/components/schemas/TranscriptFrame","error":"#/components/schemas/SttErrorFrame"}}},"SttUsageReportResponse":{"type":"object","properties":{"data":{"type":"object"}}},"SubNumberOrder":{"properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"order_request_id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c293","readOnly":true},"country_code":{"type":"string","example":"US","readOnly":true},"phone_number_type":{"type":"string","example":"local","enum":["local","toll_free","mobile","national","shared_cost","landline"]},"user_id":{"type":"string","format":"uuid","example":"d70873cd-7c98-401a-81b6-b1ae08246995"},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/SubNumberOrderRegulatoryRequirement"}},"record_type":{"type":"string","example":"sub_number_order","readOnly":true},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1,"readOnly":true},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"is_block_sub_number_order":{"type":"boolean","description":"True if the sub number order is a block sub number order","example":false,"readOnly":true}},"type":"object"},"SubNumberOrderPhoneNumber":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"phone_number":{"type":"string"},"country_code":{"type":"string"},"phone_number_type":{"type":"string"},"requirements_met":{"type":"boolean"},"requirements_status":{"type":"string"},"status":{"type":"string"},"record_type":{"type":"string"},"bundle_id":{"type":["string","null"],"format":"uuid"},"regulatory_requirements":{"type":"array","items":{"type":"object","properties":{"requirement_id":{"type":"string","format":"uuid"},"field_type":{"type":"string"},"field_value":{"type":"string"},"status":{"type":"string"}}}}}},"SubNumberOrderRegulatoryRequirement":{"properties":{"record_type":{"type":"string","example":"phone_number_regulatory_requirement","readOnly":true},"requirement_id":{"type":"string","format":"uuid","description":"Unique id for a requirement.","example":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576"},"field_type":{"type":"string","enum":["textual","datetime","address","document"],"example":"address","readOnly":true}},"type":"object"},"SubNumberOrderRegulatoryRequirementWithValue":{"properties":{"record_type":{"type":"string","example":"phone_number_regulatory_requirement","readOnly":true},"requirement_id":{"type":"string","format":"uuid","description":"Unique id for a requirement.","example":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576"},"field_type":{"type":"string","enum":["textual","datetime","address","document"],"example":"address","readOnly":true},"field_value":{"type":"string","description":"The value of the requirement, this could be an id to a resource or a string value.","example":"45f45a04-b4be-4592-95b1-9306b9db2b21"}},"type":"object"},"SubNumberOrderRequirementGroupResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"order_request_id":{"type":"string","format":"uuid"},"country_code":{"type":"string"},"phone_number_type":{"type":"string"},"phone_numbers_count":{"type":"integer"},"requirements_met":{"type":"boolean"},"is_block_sub_number_order":{"type":"boolean"},"status":{"type":"string"},"customer_reference":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"record_type":{"type":"string"},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/RegulatoryRequirement"}},"phone_numbers":{"type":"array","items":{"$ref":"#/components/schemas/SubNumberOrderPhoneNumber"}}}}},"example":{"data":{"country_code":"AT","created_at":"2018-01-01T00:00:00.000000Z","updated_at":"2018-01-01T00:00:00.000000Z","regulatory_requirements":[{"record_type":"phone_number_regulatory_requirement","requirement_id":"2708e569-696a-4fc7-9305-5fdb3eb9c7dd","field_type":"textual"}],"phone_numbers_count":1,"phone_numbers":[{"country_code":"AT","regulatory_requirements":[{"field_value":"4804570924","requirement_id":"2708e569-696a-4fc7-9305-5fdb3eb9c7dd","field_type":"textual","status":"pending-approval"}],"bundle_id":"a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d","requirements_status":"requirement-info-under-review","phone_number_type":"toll_free","requirements_met":false,"record_type":"number_order_phone_number","status":"pending","id":"613d517a-0432-4bae-a785-c11033bd0985","phone_number":"+43800300238"}],"is_block_sub_number_order":false,"phone_number_type":"toll_free","requirements_met":false,"id":"f826ed66-b27c-4340-9dc0-57dc3459f1bd","order_request_id":"a11d58fe-88a4-494a-b752-8dea411993c6","status":"pending","customer_reference":"missing","record_type":"sub_number_order"}}},"SubNumberOrdersReport":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"cada7e84-122b-4b47-bc66-58c7c3becd40","description":"Identifies the resource.","readOnly":true},"order_type":{"type":"string","example":"sub_number_order","description":"The type of order report.","readOnly":true},"filters":{"type":"object","description":"The filters that were applied to generate this report","properties":{"status":{"type":"string","example":"success"},"country_code":{"type":"string","example":"US"},"created_at_gt":{"type":"string","format":"date-time","example":"2023-04-05T10:22:08.230549Z"},"created_at_lt":{"type":"string","format":"date-time","example":"2025-06-05T10:22:08.230549Z"},"order_request_id":{"type":"string","format":"uuid","example":"991b8ff5-4daf-4826-9a22-e3991b444a9c"},"customer_reference":{"type":"string","example":"STRING"}}},"status":{"type":"string","enum":["pending","success","failed","expired"],"default":"pending","example":"pending","description":"Indicates the completion level of the sub number orders report. The report must have a status of 'success' before it can be downloaded."},"user_id":{"type":"string","format":"uuid","example":"0d7ef697-df19-413a-b724-56b0539f5397","description":"The ID of the user who created the report.","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2025-06-11T13:21:40.967339+00:00","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true},"updated_at":{"type":"string","format":"date-time","example":"2025-06-11T13:21:45.753260+00:00","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true}},"example":{"order_type":"sub_number_order","filters":{"status":"success","country_code":"US","created_at_gt":"2023-04-05T10:22:08.230549Z","created_at_lt":"2025-06-05T10:22:08.230549Z","order_request_id":"991b8ff5-4daf-4826-9a22-e3991b444a9c","customer_reference":"STRING"},"status":"pending","created_at":"2025-06-11T13:21:40.967339+00:00","user_id":"0d7ef697-df19-413a-b724-56b0539f5397","updated_at":"2025-06-11T13:21:45.753260+00:00","id":"cada7e84-122b-4b47-bc66-58c7c3becd40"}},"SuccessResponse":{"type":"object","description":"Status envelope used by the signup and magic-link flows.","required":["success","message"],"properties":{"success":{"type":"boolean","description":"Whether the request was accepted.","example":true},"message":{"type":"string","description":"Human-readable status message.","example":"A one-time sign-in link has been sent to your email address."}}},"Summary":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/SummaryLine"},"description":"List of charge summary lines"},"adjustments":{"type":"array","items":{"$ref":"#/components/schemas/AdjustmentLine"},"description":"List of billing adjustments"}},"example":{"lines":[{"type":"comparative","name":"Local DIDs","alias":"local","new_this_month":{"quantity":10,"mrc":"25.50","otc":"5.00"},"existing_this_month":{"quantity":8,"mrc":"20.00"}},{"type":"simple","name":"Port Out","alias":"port_out","quantity":100,"amount":"15.75"}],"adjustments":[{"amount":"-10.00","description":"Credit for service outage","event_date":"2025-05-15"}]},"required":["lines","adjustments"]},"SummaryAndTotal":{"type":"object","properties":{"user_id":{"type":"string","description":"User identifier","example":"0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8"},"start_date":{"type":"string","format":"date","description":"Start date of the summary period","example":"2025-05-01"},"end_date":{"type":"string","format":"date","description":"End date of the summary period","example":"2025-06-01"},"user_email":{"type":"string","format":"email","description":"User email address","example":"user@example.com"},"currency":{"type":"string","description":"Currency code","example":"USD"},"summary":{"$ref":"#/components/schemas/Summary"},"total":{"$ref":"#/components/schemas/TotalSummary"}},"required":["user_id","start_date","end_date","user_email","currency","summary","total"]},"SummaryLine":{"oneOf":[{"$ref":"#/components/schemas/ComparativeLine"},{"$ref":"#/components/schemas/SimpleLine"}],"discriminator":{"propertyName":"type"}},"SummaryRequest":{"properties":{"bucket":{"type":"string","description":"The name of the bucket that contains the file to be summarized."},"filename":{"type":"string","description":"The name of the file to be summarized."},"system_prompt":{"type":"string","description":"A system prompt to guide the summary generation."}},"type":"object","required":["bucket","filename"],"title":"SummaryRequest"},"SummaryResponse":{"properties":{"data":{"$ref":"#/components/schemas/ProfileSummary"}},"type":"object","required":["data"],"title":"SummaryResponse"},"SummaryResponseData":{"properties":{"data":{"$ref":"#/components/schemas/inference-embedding_SummaryResponse"}},"type":"object","required":["data"],"title":"SummaryResponseData"},"SummarySettings":{"properties":{"instructions":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Instructions","description":"Free-form instructions that influence how this namespace's summaries are written, shared by every profile in the namespace. How you use them is up to you -- they steer the outcome, so try a phrasing and see how the summary comes out. Advisory: they steer the summary but never override or deny a profile's own facts, and they do not affect recall. Null or empty means none are set, and summaries use the neutral default. A change reaches each summary the next time it is regenerated."}},"type":"object","title":"SummarySettings","description":"A namespace's summary settings, shared by every profile in it."},"SummarySettingsPatch":{"properties":{"instructions":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Instructions","description":"Replace the namespace's summary instructions. Null or empty clears them and returns to the neutral default. Omit the field to leave the current instructions unchanged."}},"type":"object","title":"SummarySettingsPatch","description":"A partial update to a namespace's summary settings.\n\nOnly the fields present in the request are changed; the rest are left as\nthey are. Sending `instructions: null` (or empty) clears the instructions."},"SupportedEmbeddingLoaders":{"type":"string","enum":["default","intercom"],"title":"SupportedEmbeddingLoaders","description":"Supported types of custom document loaders for embeddings."},"SupportedEmbeddingModels":{"type":"string","enum":["thenlper/gte-large","intfloat/multilingual-e5-large"],"title":"SupportedEmbeddingModels","description":"Supported models to vectorize and embed documents."},"SuppressedRecipient":{"type":"object","properties":{"to":{"type":"string","format":"email","description":"Suppressed recipient email address."},"reason":{"type":"string","description":"Suppression reason returned by the recipient suppression service."},"scope":{"type":"string","description":"Scope at which the suppression applies."},"override_allowed":{"type":"boolean","description":"Whether an authorized send may override this suppression."}},"required":["to","reason","scope","override_allowed"]},"SwitchSupervisorRoleRequest":{"type":"object","title":"Switch Supervisor Role Request","required":["role"],"properties":{"role":{"description":"The supervisor role to switch to. 'barge' allows speaking to both parties, 'whisper' allows speaking to caller only, 'monitor' allows listening only.","type":"string","enum":["barge","whisper","monitor"],"example":"barge"}},"example":{"role":"barge"}},"SystemMessage":{"type":"object","title":"System Message","description":"Developer-provided instructions that the model should follow, regardless of messages sent by the user.","properties":{"role":{"description":"The role of the messages author, in this case `system`.","type":"string","enum":["system"]},"content":{"description":"The contents of the system message.","type":"string"},"metadata":{"$ref":"#/components/schemas/MessageMetadata"}},"required":["role","content"],"example":{"role":"system","content":"Get the user's favorite color"}},"T38Enabled":{"description":"The flag to disable the T.38 protocol.","type":"boolean","default":true},"TFPhoneNumber":{"title":"PhoneNumber","required":["phoneNumber"],"type":"object","properties":{"phoneNumber":{"title":"Phonenumber","type":"string"}},"description":"A phone number"},"TFVerificationRequest":{"title":"VerificationRequest","required":["businessName","corporateWebsite","businessAddr1","businessCity","businessState","businessZip","businessContactFirstName","businessContactLastName","businessContactEmail","businessContactPhone","messageVolume","phoneNumbers","useCase","useCaseSummary","productionMessageContent","optInWorkflow","optInWorkflowImageURLs","additionalInformation"],"type":"object","properties":{"businessName":{"title":"Businessname","type":"string","maxLength":500,"description":"Name of the business; there are no specific formatting requirements","example":"Telnyx LLC"},"corporateWebsite":{"title":"Corporatewebsite","type":"string","maxLength":500,"description":"A URL, including the scheme, pointing to the corporate website","example":"http://example.com"},"businessAddr1":{"title":"Businessaddr1","type":"string","maxLength":500,"description":"Line 1 of the business address","example":"600 Congress Avenue"},"businessAddr2":{"title":"Businessaddr2","type":"string","maxLength":500,"description":"Line 2 of the business address","example":"14th Floor"},"businessCity":{"title":"Businesscity","type":"string","maxLength":500,"description":"The city of the business address; the first letter should be capitalized","example":"Austin"},"businessState":{"title":"Businessstate","type":"string","maxLength":500,"description":"The full name of the state (not the 2 letter code) of the business address; the first letter should be capitalized","example":"Texas"},"businessZip":{"title":"Businesszip","type":"string","maxLength":500,"description":"The ZIP code of the business address","example":"78701"},"businessContactFirstName":{"title":"Businesscontactfirstname","type":"string","maxLength":500,"description":"First name of the business contact; there are no specific requirements on formatting","example":"John"},"businessContactLastName":{"title":"Businesscontactlastname","type":"string","maxLength":500,"description":"Last name of the business contact; there are no specific requirements on formatting","example":"Doe"},"businessContactEmail":{"title":"Businesscontactemail","type":"string","maxLength":500,"description":"The email address of the business contact","example":"email@example.com"},"businessContactPhone":{"title":"Businesscontactphone","type":"string","maxLength":500,"description":"The phone number of the business contact in E.164 format","example":"+18005550100"},"messageVolume":{"allOf":[{"$ref":"#/components/schemas/Volume"}],"description":"Estimated monthly volume of messages from the given phone numbers","example":"100,000"},"phoneNumbers":{"title":"Phonenumbers","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/TFPhoneNumber"},"description":"The phone numbers to request the verification of","example":[{"phoneNumber":"+18773554398"},{"phoneNumber":"+18773554399"}]},"useCase":{"allOf":[{"$ref":"#/components/schemas/UseCaseCategories"}],"description":"Machine-readable use-case for the phone numbers","example":"2FA"},"useCaseSummary":{"title":"Usecasesummary","type":"string","maxLength":500,"description":"Human-readable summary of the desired use-case","example":"This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to sign into the portal"},"productionMessageContent":{"title":"Productionmessagecontent","type":"string","maxLength":1000,"description":"An example of a message that will be sent from the given phone numbers","example":"Your Telnyx OTP is XXXX"},"optInWorkflow":{"title":"Optinworkflow","type":"string","maxLength":500,"description":"Human-readable description of how end users will opt into receiving messages from the given phone numbers","example":"User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA verification for security purposes. If they've opted in a confirmation message is sent out to the handset"},"optInWorkflowImageURLs":{"title":"Optinworkflowimageurls","minItems":1,"type":"array","items":{"$ref":"#/components/schemas/Url"},"description":"Images showing the opt-in workflow","example":[{"url":"https://telnyx.com/sign-up"},{"url":"https://telnyx.com/company/data-privacy"}]},"additionalInformation":{"title":"Additionalinformation","type":"string","maxLength":500,"description":"Any additional information"},"isvReseller":{"title":"Isvreseller","type":["string","null"],"maxLength":500,"description":"ISV name"},"webhookUrl":{"title":"Webhookurl","type":"string","maxLength":500,"description":"URL that should receive webhooks relating to this verification request","example":"http://example-webhook.com"},"businessRegistrationNumber":{"title":"Businessregistrationnumber","type":["string","null"],"maxLength":500,"description":"Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required from January 2026.","example":"12-3456789"},"businessRegistrationType":{"title":"Businessregistrationtype","type":["string","null"],"maxLength":500,"description":"Type of business registration being provided. Required from January 2026.","example":"EIN"},"businessRegistrationCountry":{"title":"Businessregistrationcountry","type":["string","null"],"maxLength":2,"pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code of the issuing business authority. Must be exactly 2 letters. Automatically converted to uppercase. Required from January 2026.","example":"US"},"doingBusinessAs":{"title":"Doingbusinessas","type":["string","null"],"maxLength":500,"description":"Doing Business As (DBA) name if different from legal name","example":"Acme Services"},"entityType":{"anyOf":[{"$ref":"#/components/schemas/toll-free-verification_EntityType"},{"type":"null"}],"description":"Business entity classification. Must be one of the 5 valid enum values."},"optInConfirmationResponse":{"title":"Optinconfirmationresponse","type":["string","null"],"maxLength":500,"description":"Message sent to users confirming their opt-in to receive messages","example":"You have successfully opted in to receive messages from Acme Corp"},"helpMessageResponse":{"title":"Helpmessageresponse","type":["string","null"],"maxLength":500,"description":"The message returned when users text 'HELP'","example":"Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com"},"privacyPolicyURL":{"title":"Privacypolicyurl","type":["string","null"],"maxLength":500,"description":"URL pointing to the business's privacy policy. Plain string, no URL format validation.","example":"https://example.com/privacy"},"termsAndConditionURL":{"title":"Termsandconditionurl","type":["string","null"],"maxLength":500,"description":"URL pointing to the business's terms and conditions. Plain string, no URL format validation.","example":"https://example.com/terms"},"ageGatedContent":{"title":"Agegatedcontent","type":"boolean","default":false,"description":"Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided."},"optInKeywords":{"title":"Optinkeywords","type":["string","null"],"maxLength":500,"description":"Keywords used to collect and process consumer opt-ins","example":"START, YES, SUBSCRIBE"},"campaignVerifyAuthorizationToken":{"title":"Campaignverifyauthorizationtoken","type":["string","null"],"maxLength":500,"description":"Campaign Verify Authorization Token required for Political use case submissions starting February 17, 2026. This token is validated by Zipwhip and must be provided for all Political use case verifications after the deadline.","example":"cv_token_abc123xyz"}},"description":"The body of a tollfree verification request"},"TFVerificationStatus":{"title":"VerificationStatus","enum":["Verified","Rejected","Waiting For Vendor","Waiting For Customer","Waiting For Telnyx","In Progress"],"type":"string","description":"Tollfree verification status"},"TagsResponse":{"properties":{"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["tags"],"title":"TagsResponse"},"TaskStatus":{"type":"string","enum":["pending","starting","running","completed","failed"],"title":"TaskStatus"},"TaskStatusResponse":{"properties":{"data":{"type":"object","properties":{"task_id":{"type":"string","format":"uuid","title":"Task ID"},"task_name":{"type":"string","title":"Task Name"},"status":{"$ref":"#/components/schemas/BackgroundTaskStatus"},"created_at":{"type":"string","title":"Created At"},"finished_at":{"type":"string","title":"Finished At"}}}},"type":"object","required":["data"],"title":"TaskStatusResponse"},"TelcoDataAggregation":{"type":"object","properties":{"type":{"type":"string","description":"Type of telco data lookup","example":"CNAM"},"total_dips":{"type":"integer","description":"Total number of lookups performed","example":3},"total_cost":{"type":"number","description":"Total cost for this aggregation","example":0.009},"currency":{"type":"string","description":"Currency code","example":"USD"}}},"TelcoDataGetUsageReportByIdResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TelcoDataUsageReportResponse"}}},"TelcoDataGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TelcoDataUsageReportResponse"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta"}}},"TelcoDataPostUsageReportResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TelcoDataUsageReportResponse"}}},"TelcoDataUsageRecord":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid","description":"User ID","example":"d37bdd47-f301-42ec-b2ad-5a0465bfb632"},"aggregations":{"type":"array","description":"List of aggregations by lookup type","items":{"$ref":"#/components/schemas/TelcoDataAggregation"}},"record_type":{"type":"string","description":"Record type identifier","example":"TelcoDataUsageRecord"}}},"TelcoDataUsageReportResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier for the report","example":"9783f4d7-0bfc-427a-9d6b-bc659ad16e5b"},"start_date":{"type":"string","format":"date","description":"Start date of the report period","example":"2025-11-01"},"end_date":{"type":"string","format":"date","description":"End date of the report period","example":"2025-12-01"},"aggregation_type":{"type":"string","description":"Type of aggregation used in the report","example":"ALL"},"status":{"type":"string","description":"Current status of the report","example":"COMPLETE"},"report_url":{"type":"string","description":"URL to download the complete report","example":"https://portal-cdrs-usage.s3.amazonaws.com/telco_data_usage_report_2025-12-02.csv"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the report was created","example":"2025-12-02T20:20:57.196925Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the report was last updated","example":"2025-12-02T20:21:08.237091Z"},"managed_accounts":{"type":"array","description":"List of managed account IDs included in the report","items":{"type":"string"},"example":[]},"result":{"type":"array","description":"Array of usage records","items":{"$ref":"#/components/schemas/TelcoDataUsageRecord"}},"record_type":{"type":"string","description":"Record type identifier","example":"TelcoDataUsageReport"}},"description":"Telco data usage report response"},"TelcoDataUsageRequest":{"type":"object","properties":{"startDate":{"type":"string","format":"date","description":"Start date for the usage report","example":"2025-02-10"},"endDate":{"type":"string","format":"date","description":"End date for the usage report","example":"2025-02-10"},"aggregationType":{"type":"string","description":"Type of aggregation for the report","enum":["ALL","BY_ORGANIZATION_MEMBER"],"example":"ALL"},"managedAccounts":{"type":"array","description":"List of managed accounts to include in the report","items":{"type":"string"},"example":["f47ac10b-58cc-4372-a567-0e02b2c3d479","6ba7b810-9dad-11d1-80b4-00c04fd430c8"]}}},"TelephonyCredential":{"type":"object","title":"On-demand Credential","properties":{"id":{"type":"string","description":"Identifies the resource.","example":"c215ade3-0d39-418e-94be-c5f780760199"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"credential"},"name":{"type":"string"},"resource_id":{"type":"string","description":"Identifies the resource this credential is associated with.","example":"connection:1234567890"},"expired":{"type":"boolean","description":"Defaults to false"},"sip_username":{"type":"string","description":"The randomly generated SIP username for the credential.","example":"gencrednCvHU5IYpSBPPsXI2iQsDX"},"sip_password":{"type":"string","description":"The randomly generated SIP password for the credential.","example":"a92dbcfb60184a8cb330b0acb2f7617b"},"created_at":{"type":"string","description":"ISO-8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"user_id":{"type":"string","description":"Identifies the user this credential is associated with.","example":"user-id"},"updated_at":{"type":"string","description":"ISO-8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"},"expires_at":{"type":"string","description":"ISO-8601 formatted date indicating when the resource will expire.","example":"2018-02-02T22:25:27.521Z"}},"example":{"id":"c215ade3-0d39-418e-94be-c5f780760199","record_type":"credential","name":"2020-06-18 21:32:38.917732Z","expired":false,"user_id":"user-id","resource_id":"connection:804252963366242252","sip_password":"a92dbcfb60184a8cb330b0acb2f7617b","sip_username":"gencrednCvHU5IYpSBPPsXI2iQsDX","created_at":"2020-06-18T21:32:38","expires_at":"2042-06-18T21:32:38","updated_at":"2020-06-18T21:32:38.000Z"}},"TelephonyCredentialCreateRequest":{"type":"object","title":"TelephonyCredentialCreateRequest","required":["connection_id"],"properties":{"name":{"type":"string"},"tag":{"type":"string","description":"Tags a credential. A single tag can hold at maximum 1000 credentials.","example":"some_tag"},"connection_id":{"type":"string","description":"Identifies the Credential Connection this credential is associated with.","example":"1234567890"},"expires_at":{"type":"string","description":"ISO-8601 formatted date indicating when the credential will expire.","example":"2018-02-02T22:25:27.521Z"}},"example":{"name":"My-new-credential","connection_id":"1234567890"}},"TelephonyCredentialUpdateRequest":{"type":"object","title":"TelephonyCredentialUpdateRequest","properties":{"name":{"type":"string"},"tag":{"type":"string","description":"Tags a credential. A single tag can hold at maximum 1000 credentials.","example":"some_tag"},"connection_id":{"type":"string","description":"Identifies the Credential Connection this credential is associated with.","example":"987654321"},"expires_at":{"type":"string","description":"ISO-8601 formatted date indicating when the credential will expire.","example":"2018-02-02T22:25:27.521Z"}},"example":{"name":"My-new-updated-credential","connection_id":"987654321"}},"TelephonySettings":{"properties":{"default_texml_app_id":{"type":"string","description":"Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation."},"supports_unauthenticated_web_calls":{"type":"boolean","description":"When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled."},"noise_suppression":{"type":"string","enum":["aicoustics","krisp","deepfilternet","disabled"],"description":"The noise suppression engine to use. 'aicoustics' is STT-optimized and recommended for AI assistants (configure through noise_suppression_config). Use 'disabled' to turn off noise suppression."},"noise_suppression_config":{"type":"object","description":"Configuration for noise suppression. Applicable fields depend on the engine: 'attenuation_limit' and 'mode' only when noise_suppression is 'deepfilternet'; 'family', 'size' and 'enhancement_level' only when noise_suppression is 'aicoustics'.","properties":{"attenuation_limit":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"Attenuation limit for noise suppression. Range: 0-100. Only applicable when noise_suppression is 'deepfilternet'."},"mode":{"type":"string","enum":["advanced"],"description":"Mode for noise suppression configuration. Only applicable when noise_suppression is 'deepfilternet'."},"family":{"type":"string","enum":["quail"],"description":"AiCoustics model family optimized for Voice AI and STT. Only applicable when noise_suppression is 'aicoustics'."},"size":{"type":"string","enum":["vf","vf_2_0_l"],"description":"AiCoustics model size. 'vf' tracks the latest model release; 'vf_2_0_l' is pinned to version 2.0 for consistent, predictable behavior. Only applicable when noise_suppression is 'aicoustics'."},"enhancement_level":{"type":"number","minimum":0,"maximum":1,"default":0.8,"description":"AiCoustics enhancement intensity. Range: 0-1. Only applicable when noise_suppression is 'aicoustics'."}}},"time_limit_secs":{"type":"integer","minimum":30,"maximum":14400,"default":1800,"description":"Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. 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. 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."},"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"},"TelnyxBrand":{"title":"TelnyxBrand","required":["entityType","displayName","country","email","brandRelationship","vertical"],"type":"object","properties":{"entityType":{"allOf":[{"$ref":"#/components/schemas/EntityType"}],"description":"Entity type behind the brand. This is the form of business establishment."},"cspId":{"title":"Cspid","type":"string","description":"Unique identifier assigned to the csp by the registry."},"brandId":{"title":"Brandid","type":"string","description":"Unique identifier assigned to the brand.","example":"4b20017f-8da9-a992-a6c0-683072fb7729"},"tcrBrandId":{"title":"TcrBrandid","type":"string","description":"Unique identifier assigned to the brand by the registry.","example":"BBRAND1"},"displayName":{"title":"Displayname","maxLength":100,"type":"string","description":"Display or marketing name of the brand.","example":"ABC Mobile"},"companyName":{"title":"Companyname","maxLength":100,"type":"string","description":"(Required for Non-profit/private/public) Legal company name.","example":"ABC Inc."},"firstName":{"title":"Firstname","maxLength":100,"type":"string","description":"First name of business contact.","example":"John"},"lastName":{"title":"Lastname","maxLength":100,"type":"string","description":"Last name of business contact.","example":"Smith"},"ein":{"title":"Ein","maxLength":20,"type":"string","description":"(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.","example":"111111111"},"phone":{"title":"Phone","maxLength":20,"type":"string","description":"Valid phone number in e.164 international format.","example":"+12024567890"},"street":{"title":"Street","maxLength":100,"type":"string","description":"Street number and name.","example":"123"},"city":{"title":"City","maxLength":100,"type":"string","description":"City name","example":"New York"},"state":{"title":"State","maxLength":20,"type":"string","description":"State. Must be 2 letters code for United States.","example":"NY"},"postalCode":{"title":"Postalcode","maxLength":10,"type":"string","description":"Postal codes. Use 5 digit zipcode for United States","example":"10001"},"country":{"title":"Country","maxLength":2,"type":"string","description":"ISO2 2 characters country code. Example: US - United States","example":"US"},"email":{"title":"Email","maxLength":100,"type":"string","description":"Valid email address of brand support contact."},"stockSymbol":{"title":"Stocksymbol","maxLength":10,"type":"string","description":"(Required for public company) stock symbol.","example":"ABC"},"stockExchange":{"allOf":[{"$ref":"#/components/schemas/StockExchange"}],"description":"(Required for public company) stock exchange.","example":"NASDAQ"},"ipAddress":{"title":"Ipaddress","maxLength":50,"type":"string","description":"IP address of the browser requesting to create brand identity."},"website":{"title":"Website","maxLength":100,"type":"string","description":"Brand website URL.","example":"http://www.abcmobile.com"},"brandRelationship":{"allOf":[{"$ref":"#/components/schemas/BrandRelationship"}],"description":"Brand relationship to the CSP"},"vertical":{"title":"Vertical","maxLength":50,"type":"string","description":"Vertical or industry segment of the brand."},"altBusinessId":{"title":"Altbusinessid","maxLength":50,"type":"string","description":"Alternate business identifier such as DUNS, LEI, or GIIN"},"altBusinessIdType":{"$ref":"#/components/schemas/AltBusinessIdType"},"universalEin":{"title":"Universalein","type":"string","description":"Universal EIN of Brand, Read Only."},"referenceId":{"title":"Referenceid","type":"string","description":"Unique identifier Telnyx assigned to the brand - the brandId"},"identityStatus":{"$ref":"#/components/schemas/BrandIdentityStatus"},"optionalAttributes":{"$ref":"#/components/schemas/BrandOptionalAttributes"},"mock":{"title":"Mock","type":"boolean","description":"Mock brand for testing purposes","default":false},"mobilePhone":{"title":"Mobilephone","maxLength":20,"type":"string","description":"Valid mobile phone number in e.164 international format.","example":"+12024567890"},"isReseller":{"title":"Isreseller","type":"boolean","description":"Indicates whether this brand is known to be a reseller","default":false},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook to which brand status updates are sent.","example":"https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93"},"businessContactEmail":{"title":"BusinessContactEmail","type":"string","description":"Business contact email.\n\nRequired if `entityType` is `PUBLIC_PROFIT`.","example":"name@example.com"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Failover webhook to which brand status updates are sent."},"createdAt":{"type":"string","description":"Date and time that the brand was created at.","example":"2021-03-08T17:57:48.801186"},"updatedAt":{"type":"string","description":"Date and time that the brand was last updated at.","example":"2021-03-08T17:57:48.801186"},"status":{"title":"status","description":"Status of the brand","enum":["OK","REGISTRATION_PENDING","REGISTRATION_FAILED"],"type":"string"},"failureReasons":{"title":"failureReasons","description":"Failure reasons for brand","type":"string"}},"description":"Telnyx-specific extensions to The Campaign Registry's `Brand` type"},"TelnyxBrandWithCampaignsCount":{"allOf":[{"$ref":"#/components/schemas/TelnyxBrand"},{"type":"object","title":"TelnyxBrandWithCampaignsCount","properties":{"assignedCampaignsCount":{"title":"AssignedCampaignsCount","description":"Number of campaigns associated with the brand","type":"number","example":3}}}]},"TelnyxCampaignWithAssignedCount_CSP":{"title":"TelnyxCampaignWithAssignedCount_CSP","type":"object","properties":{"ageGated":{"title":"Agegated","type":"boolean","description":"Age gated content in campaign."},"autoRenewal":{"title":"Autorenewal","type":"boolean","description":"Campaign subscription auto-renewal status."},"billedDate":{"title":"Billeddate","type":"string","description":"Campaign recent billed date."},"brandId":{"title":"Brandid","type":"string","description":"Unique identifier assigned to the brand.","example":"d2ca9d69-641b-4131-83fa-5d0744f4c8a9"},"brandDisplayName":{"title":"Branddisplayname","description":"Display or marketing name of the brand.","example":"ABC Mobile","type":"string"},"campaignId":{"title":"Campaignid","type":"string","description":"Unique identifier for a campaign.","example":"823d6b1a-6ed6-41a3-9c50-c8ff41b682ba"},"tcrBrandId":{"title":"TcrBrandid","type":"string","description":"Unique identifier assigned to the brand by the registry.","example":"BBRAND1"},"tcrCampaignId":{"title":"TcrCampaignid","type":"string","description":"Unique identifier assigned to the campaign by the registry.","example":"CCAMP1"},"createDate":{"title":"Createdate","type":"string","description":"Unix timestamp when campaign was created."},"cspId":{"title":"Cspid","type":"string","description":"Alphanumeric identifier of the CSP associated with this campaign."},"description":{"title":"Description","type":"string","description":"Summary description of this campaign."},"directLending":{"title":"Directlending","type":"boolean"},"embeddedLink":{"title":"Embeddedlink","type":"boolean","description":"Does message generated by the campaign include URL link in SMS?"},"embeddedPhone":{"title":"Embeddedphone","type":"boolean","description":"Does message generated by the campaign include phone number in SMS?"},"helpKeywords":{"title":"Helpkeywords","type":"string","description":"Subscriber help keywords. Multiple keywords are comma separated without space."},"helpMessage":{"title":"Helpmessage","type":"string","description":"Help message of the campaign."},"messageFlow":{"title":"Messageflow","type":"string","description":"Message flow description."},"mock":{"title":"Mock","type":"boolean","description":"Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP."},"nextRenewalOrExpirationDate":{"title":"Nextrenewalorexpirationdate","type":"string","description":"When the campaign would be due for its next renew/bill date."},"numberPool":{"title":"Numberpool","type":"boolean","description":"Does campaign utilize pool of phone numbers?"},"optinKeywords":{"title":"Optinkeywords","type":"string","description":"Subscriber opt-in keywords. Multiple keywords are comma separated without space."},"optinMessage":{"title":"Optinmessage","type":"string","description":"Subscriber opt-in message."},"optoutKeywords":{"title":"Optoutkeywords","type":"string","description":"Subscriber opt-out keywords. Multiple keywords are comma separated without space."},"optoutMessage":{"title":"Optoutmessage","type":"string","description":"Subscriber opt-out message."},"referenceId":{"title":"Referenceid","type":"string","description":"Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations."},"resellerId":{"title":"Resellerid","type":"string","description":"Alphanumeric identifier of the reseller that you want to associate with this campaign."},"sample1":{"title":"Sample1","type":"string","description":"Message sample. Some campaign tiers require 1 or more message samples."},"sample2":{"title":"Sample2","type":"string","description":"Message sample. Some campaign tiers require 2 or more message samples."},"sample3":{"title":"Sample3","type":"string","description":"Message sample. Some campaign tiers require 3 or more message samples."},"sample4":{"title":"Sample4","type":"string","description":"Message sample. Some campaign tiers require 4 or more message samples."},"sample5":{"title":"Sample5","type":"string","description":"Message sample. Some campaign tiers require 5 or more message samples."},"status":{"title":"Status","type":"string","description":"Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. "},"subUsecases":{"title":"Subusecases","uniqueItems":true,"type":"array","items":{"type":"string"},"description":"Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases"},"subscriberHelp":{"title":"Subscriberhelp","type":"boolean","description":"Does campaign responds to help keyword(s)?"},"subscriberOptin":{"title":"Subscriberoptin","type":"boolean","description":"Does campaign require subscriber to opt-in before SMS is sent to subscriber?"},"subscriberOptout":{"title":"Subscriberoptout","type":"boolean","description":"Does campaign support subscriber opt-out keyword(s)?"},"termsAndConditions":{"title":"Termsandconditions","type":"boolean","description":"Is terms & conditions accepted?"},"usecase":{"title":"Usecase","type":"string","description":"Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand."},"vertical":{"title":"Vertical","type":"string","description":"Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical` operation to retrieve verticals available for given brand, vertical combination.\n\nThis field is deprecated.","deprecated":true},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook to which campaign status updates are sent.","example":"https://example.com/webhook"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Failover webhook to which campaign status updates are sent.","example":"https://example.com/failover-webhook"},"isTMobileRegistered":{"title":"IsTMobileRegistered","type":"boolean","description":"Indicates whether the campaign is registered with T-Mobile."},"isTMobileSuspended":{"title":"isTMobileSuspended","type":"boolean","description":"Indicates whether the campaign is suspended with T-Mobile."},"isTMobileNumberPoolingEnabled":{"title":"isTMobileNumberPoolingEnabled","type":"boolean","description":"Indicates whether the campaign has a T-Mobile number pool ID associated with it."},"failureReasons":{"title":"failureReasons","description":"Failure reasons if campaign submission failed","type":"string"},"submissionStatus":{"title":"submissionStatus","description":"Campaign submission status","enum":["CREATED","FAILED","PENDING"],"type":"string"},"campaignStatus":{"title":"campaignStatus","description":"Campaign status","example":"TCR_ACCEPTED","enum":["TCR_PENDING","TCR_SUSPENDED","TCR_EXPIRED","TCR_ACCEPTED","TCR_FAILED","TELNYX_ACCEPTED","TELNYX_FAILED","MNO_PENDING","MNO_ACCEPTED","MNO_REJECTED","MNO_PROVISIONED","MNO_PROVISIONING_FAILED"],"type":"string"},"privacyPolicyLink":{"title":"PrivacyPolicyLink","type":"string","description":"Link to the campaign's privacy policy."},"termsAndConditionsLink":{"title":"TermsAndConditionsLink","type":"string","description":"Link to the campaign's terms and conditions."},"embeddedLinkSample":{"title":"EmbeddedLinkSample","type":"string","description":"Sample of an embedded link that will be sent to subscribers."},"assignedPhoneNumbersCount":{"title":"AssignedPhoneNumbersCount","description":"Number of phone numbers associated with the campaign","type":"number","example":3}}},"TelnyxCampaign_CSP":{"title":"TelnyxCampaign_CSP","required":["brandId","campaignId","cspId","description","mock","subUsecases","termsAndConditions","usecase"],"type":"object","properties":{"ageGated":{"title":"Agegated","type":"boolean","description":"Age gated content in campaign."},"autoRenewal":{"title":"Autorenewal","type":"boolean","description":"Campaign subscription auto-renewal status."},"billedDate":{"title":"Billeddate","type":"string","description":"Campaign recent billed date."},"brandId":{"title":"Brandid","type":"string","description":"Unique identifier assigned to the brand.","example":"d2ca9d69-641b-4131-83fa-5d0744f4c8a9"},"brandDisplayName":{"title":"Branddisplayname","description":"Display or marketing name of the brand.","example":"ABC Mobile","type":"string"},"campaignId":{"title":"Campaignid","type":"string","description":"Unique identifier for a campaign.","example":"823d6b1a-6ed6-41a3-9c50-c8ff41b682ba"},"tcrBrandId":{"title":"TcrBrandid","type":"string","description":"Unique identifier assigned to the brand by the registry.","example":"BBRAND1"},"tcrCampaignId":{"title":"TcrCampaignid","type":"string","description":"Unique identifier assigned to the campaign by the registry.","example":"CCAMP1"},"createDate":{"title":"Createdate","type":"string","description":"Unix timestamp when campaign was created."},"cspId":{"title":"Cspid","type":"string","description":"Alphanumeric identifier of the CSP associated with this campaign."},"description":{"title":"Description","type":"string","description":"Summary description of this campaign."},"directLending":{"title":"Directlending","type":"boolean"},"embeddedLink":{"title":"Embeddedlink","type":"boolean","description":"Does message generated by the campaign include URL link in SMS?"},"embeddedPhone":{"title":"Embeddedphone","type":"boolean","description":"Does message generated by the campaign include phone number in SMS?"},"helpKeywords":{"title":"Helpkeywords","type":"string","description":"Subscriber help keywords. Multiple keywords are comma separated without space."},"helpMessage":{"title":"Helpmessage","type":"string","description":"Help message of the campaign."},"messageFlow":{"title":"Messageflow","type":"string","description":"Message flow description."},"mock":{"title":"Mock","type":"boolean","description":"Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP."},"nextRenewalOrExpirationDate":{"title":"Nextrenewalorexpirationdate","type":"string","description":"When the campaign would be due for its next renew/bill date."},"numberPool":{"title":"Numberpool","type":"boolean","description":"Does campaign utilize pool of phone numbers?"},"optinKeywords":{"title":"Optinkeywords","type":"string","description":"Subscriber opt-in keywords. Multiple keywords are comma separated without space."},"optinMessage":{"title":"Optinmessage","type":"string","description":"Subscriber opt-in message."},"optoutKeywords":{"title":"Optoutkeywords","type":"string","description":"Subscriber opt-out keywords. Multiple keywords are comma separated without space."},"optoutMessage":{"title":"Optoutmessage","type":"string","description":"Subscriber opt-out message."},"referenceId":{"title":"Referenceid","type":"string","description":"Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations."},"resellerId":{"title":"Resellerid","type":"string","description":"Alphanumeric identifier of the reseller that you want to associate with this campaign."},"sample1":{"title":"Sample1","type":"string","description":"Message sample. Some campaign tiers require 1 or more message samples."},"sample2":{"title":"Sample2","type":"string","description":"Message sample. Some campaign tiers require 2 or more message samples."},"sample3":{"title":"Sample3","type":"string","description":"Message sample. Some campaign tiers require 3 or more message samples."},"sample4":{"title":"Sample4","type":"string","description":"Message sample. Some campaign tiers require 4 or more message samples."},"sample5":{"title":"Sample5","type":"string","description":"Message sample. Some campaign tiers require 5 or more message samples."},"status":{"title":"Status","type":"string","description":"Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. "},"subUsecases":{"title":"Subusecases","uniqueItems":true,"type":"array","items":{"type":"string"},"description":"Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases"},"subscriberHelp":{"title":"Subscriberhelp","type":"boolean","description":"Does campaign responds to help keyword(s)?"},"subscriberOptin":{"title":"Subscriberoptin","type":"boolean","description":"Does campaign require subscriber to opt-in before SMS is sent to subscriber?"},"subscriberOptout":{"title":"Subscriberoptout","type":"boolean","description":"Does campaign support subscriber opt-out keyword(s)?"},"termsAndConditions":{"title":"Termsandconditions","type":"boolean","description":"Is terms & conditions accepted?"},"usecase":{"title":"Usecase","type":"string","description":"Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand."},"vertical":{"title":"Vertical","type":"string","description":"Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical` operation to retrieve verticals available for given brand, vertical combination.\n\nThis field is deprecated.","deprecated":true},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook to which campaign status updates are sent.","example":"https://example.com/webhook"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Failover webhook to which campaign status updates are sent.","example":"https://example.com/failover-webhook"},"isTMobileRegistered":{"title":"IsTMobileRegistered","type":"boolean","description":"Indicates whether the campaign is registered with T-Mobile."},"isTMobileSuspended":{"title":"isTMobileSuspended","type":"boolean","description":"Indicates whether the campaign is suspended with T-Mobile."},"isTMobileNumberPoolingEnabled":{"title":"isTMobileNumberPoolingEnabled","type":"boolean","description":"Indicates whether the campaign has a T-Mobile number pool ID associated with it."},"failureReasons":{"title":"failureReasons","description":"Failure reasons if campaign submission failed","type":"string"},"submissionStatus":{"title":"submissionStatus","description":"Campaign submission status","enum":["CREATED","FAILED","PENDING"],"type":"string"},"campaignStatus":{"title":"campaignStatus","description":"Campaign status","example":"TCR_ACCEPTED","enum":["TCR_PENDING","TCR_SUSPENDED","TCR_EXPIRED","TCR_ACCEPTED","TCR_FAILED","TELNYX_ACCEPTED","TELNYX_FAILED","MNO_PENDING","MNO_ACCEPTED","MNO_REJECTED","MNO_PROVISIONED","MNO_PROVISIONING_FAILED"],"type":"string"},"privacyPolicyLink":{"title":"PrivacyPolicyLink","type":"string","description":"Link to the campaign's privacy policy."},"termsAndConditionsLink":{"title":"TermsAndConditionsLink","type":"string","description":"Link to the campaign's terms and conditions."},"embeddedLinkSample":{"title":"EmbeddedLinkSample","type":"string","description":"Sample of an embedded link that will be sent to subscribers."}},"description":"Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable, including **usecase**, **vertical**, **brandId** and **cspId**."},"TelnyxConversationChannel":{"type":"string","enum":["phone_call","web_call","sms_chat","web_chat"],"title":"TelnyxConversationChannel"},"TelnyxDesignClone":{"type":"object","description":"Create a voice clone from a voice design using the Telnyx provider.","required":["name","voice_design_id","language","gender"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"Name for the voice clone."},"voice_design_id":{"type":"string","format":"uuid","description":"UUID of the source voice design to clone."},"language":{"type":"string","description":"ISO 639-1 language code for the clone. Supports the combined Telnyx language set."},"gender":{"type":"string","enum":["male","female","neutral"],"description":"Gender of the voice clone."},"provider":{"type":"string","enum":["telnyx","Telnyx"],"default":"telnyx","description":"Voice synthesis provider. Defaults to `telnyx`."}},"example":{"name":"clone-narrator","voice_design_id":"550e8400-e29b-41d4-a716-446655440000","language":"en","gender":"male","provider":"telnyx"}},"TelnyxDownstreamCampaign":{"title":"TelnyxDownstreamCampaign","required":["tcrBrandId","tcrCampaignId"],"type":"object","properties":{"ageGated":{"title":"AgeGated","type":"boolean","description":"Age gated content in campaign."},"assignedPhoneNumbersCount":{"title":"AssignedPhoneNumbersCount","description":"Number of phone numbers associated with the campaign","type":"number","example":3},"brandDisplayName":{"title":"Branddisplayname","description":"Display or marketing name of the brand.","example":"ABC Mobile","type":"string"},"campaignStatus":{"title":"campaignStatus","description":"Campaign status","example":"TCR_ACCEPTED","enum":["TCR_PENDING","TCR_SUSPENDED","TCR_EXPIRED","TCR_ACCEPTED","TCR_FAILED","TELNYX_ACCEPTED","TELNYX_FAILED","MNO_PENDING","MNO_ACCEPTED","MNO_REJECTED","MNO_PROVISIONED","MNO_PROVISIONING_FAILED"],"type":"string"},"description":{"title":"Description","type":"string","description":"Summary description of this campaign."},"directLending":{"title":"Directlending","type":"boolean","description":"Direct lending or loan arrangement."},"embeddedLink":{"title":"Embeddedlink","type":"boolean","description":"Does message generated by the campaign include URL link in SMS?"},"embeddedLinkSample":{"title":"EmbeddedLinkSample","type":"string","description":"Sample of an embedded link that will be sent to subscribers."},"embeddedPhone":{"title":"Embeddedphone","type":"boolean","description":"Does message generated by the campaign include phone number in SMS?"},"failureReasons":{"title":"failureReasons","description":"Failure reasons if campaign submission failed","type":"string"},"helpKeywords":{"title":"Helpkeywords","type":"string","description":"Subscriber help keywords. Multiple keywords are comma separated without space."},"helpMessage":{"title":"Helpmessage","type":"string","description":"Help message of the campaign."},"isNumberPoolingEnabled":{"title":"isNumberPoolingEnabled","type":"boolean","description":"Indicates whether the campaign has a T-Mobile number pool ID associated with it."},"messageFlow":{"title":"Messageflow","type":"string","description":"Message flow description."},"numberPool":{"title":"Numberpool","type":"boolean","description":"Does campaign utilize pool of phone numbers?"},"optinKeywords":{"title":"Optinkeywords","type":"string","description":"Subscriber opt-in keywords. Multiple keywords are comma separated without space."},"optinMessage":{"title":"Optinmessage","type":"string","description":"Subscriber opt-in message."},"optoutKeywords":{"title":"Optoutkeywords","type":"string","description":"Subscriber opt-out keywords. Multiple keywords are comma separated without space."},"optoutMessage":{"title":"Optoutmessage","type":"string","description":"Subscriber opt-out message."},"privacyPolicyLink":{"title":"PrivacyPolicyLink","type":"string","description":"Link to the campaign's privacy policy."},"usecase":{"title":"Usecase","type":"string","description":"Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand."},"sample1":{"title":"Sample1","type":"string","description":"Message sample. Some campaign tiers require 1 or more message samples."},"sample2":{"title":"Sample2","type":"string","description":"Message sample. Some campaign tiers require 2 or more message samples."},"sample3":{"title":"Sample3","type":"string","description":"Message sample. Some campaign tiers require 3 or more message samples."},"sample4":{"title":"Sample4","type":"string","description":"Message sample. Some campaign tiers require 4 or more message samples."},"sample5":{"title":"Sample5","type":"string","description":"Message sample. Some campaign tiers require 5 or more message samples."},"subUsecases":{"title":"Subusecases","uniqueItems":true,"type":"array","items":{"type":"string"},"description":"Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases"},"subscriberOptin":{"title":"Subscriberoptin","type":"boolean","description":"Does campaign require subscriber to opt-in before SMS is sent to subscriber?"},"subscriberOptout":{"title":"Subscriberoptout","type":"boolean","description":"Does campaign support subscriber opt-out keyword(s)?"},"tcrBrandId":{"title":"TcrBrandid","type":"string","description":"Unique identifier assigned to the brand by the registry.","example":"BBRAND1"},"tcrCampaignId":{"title":"TcrCampaignid","type":"string","description":"Unique identifier assigned to the campaign by the registry.","example":"CCAMP1"},"termsAndConditions":{"title":"Termsandconditions","type":"boolean","description":"Is terms & conditions accepted?"},"termsAndConditionsLink":{"title":"TermsAndConditionsLink","type":"string","description":"Link to the campaign's terms and conditions."},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook to which campaign status updates are sent.","example":"https://example.com/webhook"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Failover webhook to which campaign status updates are sent.","example":"https://example.com/failover-webhook"},"createdAt":{"type":"string","description":"Date and time that the brand was created at.","example":"2021-03-08T17:57:48.801186"},"updatedAt":{"type":"string","description":"Date and time that the brand was last updated at.","example":"2021-03-08T17:57:48.801186"}},"description":"Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service."},"TelnyxDownstreamCampaignRecordSet":{"title":"TelnyxDownstreamCampaignRecordSet","type":"object","properties":{"records":{"title":"Records","type":"array","items":{"$ref":"#/components/schemas/TelnyxDownstreamCampaign"}},"page":{"title":"Page","type":"integer"},"totalRecords":{"title":"Totalrecords","type":"integer"}}},"TelnyxError":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","properties":{"url":{"type":"string"}}}}},"TelnyxErrors":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/TelnyxError"}}}},"TelnyxProviderParams":{"type":"object","description":"Telnyx provider-specific parameters. For the `Ultra` model, use `voice_speed`, `volume`, and `emotion`. `Bayan` and `Sukhan` don't use `temperature`, `volume`, or `emotion`, and don't support `voice_speed`. `Sukhan`'s `response_format` is restricted to `mp3` or `pcm` (no `wav`).","properties":{"voice_speed":{"type":"number","format":"float","description":"Voice speed multiplier. Telnyx `Ultra` voices accept values from 0.6 to 1.5 — 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,"default":1},"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,"maximum":2,"default":1},"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,"format":"float","example":1,"minimum":0.1,"maximum":2}},"required":["type"]},"TemplateType":{"type":"string","enum":["custom","default"],"title":"TemplateType"},"TermsOfServiceInfo":{"type":"object","properties":{"agreements":{"type":"array","items":{"$ref":"#/components/schemas/TermsOfServiceInfoItem"}}}},"TermsOfServiceInfoItem":{"type":"object","properties":{"product_type":{"$ref":"#/components/schemas/TosProductType"},"current_version":{"type":"string","description":"The latest published version of these terms.","example":"v1.0.0"},"terms_url":{"type":"string","description":"A link to the full terms text.","example":"https://telnyx.com/terms/reputation-services"},"effective_date":{"type":"string","format":"date","description":"The date this version took effect.","example":"2025-07-10"},"description":{"type":"string","description":"A short summary of the product these terms cover.","example":"Terms and Conditions for Telnyx Number Reputation service"}}},"TestDeviceCreateRequest":{"type":"object","additionalProperties":false,"properties":{"phone_number":{"type":"string","maxLength":16,"pattern":"^\\+[1-9][0-9]{1,14}$"}},"required":["phone_number"],"example":{"phone_number":"+13125550123"}},"TestDeviceInviteStatus":{"type":"string","enum":["PENDING","ACCEPTED","DECLINED"]},"TestDeviceResponse":{"type":"object","additionalProperties":false,"properties":{"test_device_id":{"type":"string","format":"uuid"},"phone_number":{"type":"string"},"invite_status":{"$ref":"#/components/schemas/TestDeviceInviteStatus"}},"required":["test_device_id","phone_number","invite_status"],"example":{"test_device_id":"44444444-4444-4444-8444-444444444444","phone_number":"+13125550123","invite_status":"ACCEPTED"}},"TestRunDetailResult":{"properties":{"name":{"type":"string","title":"Name"},"status":{"$ref":"#/components/schemas/TestStatus"}},"type":"object","required":["name","status"],"title":"TestRunDetailResult"},"TestRunResponse":{"properties":{"run_id":{"type":"string","format":"uuid","title":"Run Id","description":"Unique identifier for this specific test run execution.","example":"987fcdeb-51a2-43d1-b456-426614174000"},"test_id":{"type":"string","format":"uuid","title":"Test Id","description":"Identifier of the assistant test that was executed.","example":"123e4567-e89b-12d3-a456-426614174000"},"status":{"$ref":"#/components/schemas/TestStatus"},"triggered_by":{"type":"string","title":"Triggered By","description":"How this test run was initiated (manual, scheduled, or API).","example":"cron"},"completed_at":{"type":"string","format":"date-time","title":"Completed At","description":"Timestamp when the test run finished execution."},"logs":{"type":"string","title":"Logs","description":"Detailed execution logs and debug information."},"conversation_id":{"type":"string","title":"Conversation Id","description":"Identifier of the conversation created during test execution."},"conversation_insights_id":{"type":"string","title":"Conversation Insights Id","description":"Identifier for conversation analysis and insights data."},"test_suite_run_id":{"type":"string","format":"uuid","title":"Test Suite Run Id","description":"Identifier linking this run to a test suite execution batch."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Timestamp when the test run was created and queued.","example":"2024-01-24T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Timestamp of the last update to this test run."},"detail_status":{"items":{"$ref":"#/components/schemas/TestRunDetailResult"},"type":"array","title":"Detail Status","description":"Detailed evaluation results for each rubric criteria. Name is name of the criteria from the rubric and status is the result of the evaluation. This list will have a result for every criteria in the rubric section."}},"type":"object","required":["run_id","test_id","status","triggered_by","created_at"],"title":"TestRunResponse","description":"Response model containing test run execution details and results.\n\nProvides comprehensive information about a test execution including\nstatus, timing, logs, and detailed evaluation results."},"TestStatus":{"type":"string","enum":["pending","starting","running","passed","failed","error"],"title":"TestStatus","description":"Represents the lifecycle of a test:\n  - 'pending': Test is waiting to be executed.\n  - 'starting': Test execution is initializing.\n  - 'running': Test is currently executing.\n  - 'passed': Test completed successfully.\n  - 'failed': Test executed but did not pass.\n  - 'error': An error occurred during test execution."},"TestSuitesResponse":{"properties":{"data":{"items":{"type":"string"},"type":"array","title":"Data","description":"Array of unique test suite names available to the user.","example":["customer-support","sales-flow","onboarding"]}},"type":"object","required":["data"],"title":"TestSuitesResponse","description":"Response containing all available test suite names.\n\nReturns a list of distinct test suite names that can be used for\nfiltering and organizing tests."},"TestWebhookToolRequest":{"properties":{"arguments":{"type":"object","title":"Arguments","description":"Key-value arguments to use for the webhook test","additionalProperties":true},"dynamic_variables":{"type":"object","title":"Dynamic Variables","description":"Key-value dynamic variables to use for the webhook test","additionalProperties":true}},"type":"object","title":"TestWebhookToolRequest","description":"Request model for testing a webhook tool"},"TestWebhookToolResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"status_code":{"type":"integer","title":"Status Code"},"content_type":{"type":"string","title":"Content Type"},"response":{"type":"string","title":"Response"},"request":{"type":"object","title":"Request","additionalProperties":true}},"type":"object","required":["success","status_code","content_type","response","request"],"title":"TestWebhookToolResponse","description":"Response model for webhook tool test results"},"TestWebhookToolResponseData":{"properties":{"data":{"$ref":"#/components/schemas/TestWebhookToolResponse"}},"type":"object","required":["data"],"title":"TestWebhookToolResponseData","description":"Response model for webhook tool test results"},"TexmlAiGatherWebhookSchema":{"type":"object","title":"TeXML AI Gather Webhook","description":"Webhook sent to the action URL when AI Gather completes. Contains standard call parameters plus AI conversation results in base64-encoded JSON format.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"Base64MessageHistory":{"type":"string","description":"Base64-encoded JSON array of message history (conditional).","example":"W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0="},"Base64Result":{"type":"string","description":"Base64-encoded JSON object containing AI gather result (conditional).","example":"eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"Status":{"type":"string","description":"The status of the AI gather operation.","example":"valid"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"}},"required":["AccountSid","CallSid","CallSidLegacy","From","To","ConnectionId","Status"]},"TexmlApplication":{"type":"object","title":"Texml Application","properties":{"id":{"$ref":"#/components/schemas/IntId"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"texml_application"},"friendly_name":{"$ref":"#/components/schemas/ApplicationName"},"active":{"$ref":"#/components/schemas/ConnectionActive"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"first_command_timeout":{"$ref":"#/components/schemas/FirstCommandTimeout"},"first_command_timeout_secs":{"$ref":"#/components/schemas/FirstCommandTimeoutSecs"},"voice_url":{"type":"string","description":"URL to which Telnyx will deliver your XML Translator webhooks.","format":"uri","example":"https://example.com"},"voice_fallback_url":{"type":"string","description":"URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your voice_url.","default":null,"format":"uri","example":"https://fallback.example.com"},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this TeXML Application.","default":false},"voice_method":{"type":"string","description":"HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or 'post'.","enum":["get","post"],"default":"post","example":"get"},"status_callback":{"type":"string","description":"URL for Telnyx to send requests to containing information about call progress events.","default":null,"format":"uri","example":"https://example.com"},"status_callback_method":{"type":"string","description":"HTTP request method Telnyx should use when requesting the status_callback URL.","enum":["get","post"],"default":"post","example":"get"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the Texml Application.","example":["tag1","tag2"]},"inbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of inbound calls to phone numbers associated with this connection.","default":null,"example":10},"shaken_stir_enabled":{"type":"boolean","description":"When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.","default":false,"example":false},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls.","default":null,"example":"example"},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"default":"from_anyone","example":"only_my_connections"}}},"outbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the total number of outbound calls to phone numbers associated with this connection.","default":null,"example":10},"outbound_voice_profile_id":{"$ref":"#/components/schemas/OutboundVoiceProfileId"}}},"created_at":{"$ref":"#/components/schemas/CreatedAt"},"updated_at":{"$ref":"#/components/schemas/UpdatedAt"}},"example":{"id":"1293384261075731499","record_type":"texml_application","active":false,"friendly_name":"call-router","anchorsite_override":"Amsterdam, Netherlands","dtmf_type":"Inband","first_command_timeout":true,"first_command_timeout_secs":10,"voice_url":"https://example.com","voice_fallback_url":"https://fallback.example.com","call_cost_in_webhooks":false,"voice_method":"get","status_callback":"https://example.com","status_callback_method":"get","tags":["tag1","tag2"],"inbound":{"channel_limit":10,"shaken_stir_enabled":true,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"},"created_at":"2020-02-02T22:25:27.521Z","updated_at":"2020-02-03T22:25:27.521Z"}},"TexmlBidirectionalStreamCodec":{"type":"string","title":"Stream Bidirectional Codec","description":"Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.","enum":["PCMU","PCMA","G722"],"default":"PCMU","example":"G722"},"TexmlBidirectionalStreamMode":{"type":"string","title":"Stream Bidirectional Mode","description":"Configures method of bidirectional streaming (mp3, rtp).","enum":["mp3","rtp"],"default":"mp3","example":"rtp"},"TexmlCallAmdWebhookSchema":{"type":"object","title":"TeXML Call AMD Webhook","description":"Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"AnsweredBy":{"type":"string","description":"The result of the answering machine detection.","enum":["human","machine_start","machine_end_beep","machine_end_silence","machine_end_other","fax","unknown"],"example":"human"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"MachineDetectionDuration":{"type":"string","description":"The duration of the machine detection in milliseconds.","example":"2500"}},"required":["AccountSid","AnsweredBy","CallSid","CallSidLegacy","ConnectionId","MachineDetectionDuration"]},"TexmlCallAnsweredWebhookSchema":{"type":"object","title":"TeXML Call Answered Webhook","description":"Webhook sent when a TeXML call is answered.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallDuration":{"type":"string","description":"The duration of the call in seconds (conditional, only present if start_time and end_time are available).","example":"15"},"CallInitiatedAt":{"type":"string","format":"date-time","description":"The timestamp when the call was initiated.","example":"2024-01-15T10:30:26.028Z"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallStatus":{"type":"string","description":"The status of the call.","enum":["in-progress"],"example":"in-progress"},"CallbackSource":{"type":"string","description":"The source of the callback.","enum":["call-progress-events"],"example":"call-progress-events"},"CallerId":{"type":"string","description":"The display name of the caller.","example":"John Doe"},"Codec":{"type":"string","description":"The audio codec used for the call (conditional).","example":"PCMU"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"ErrorCode":{"type":"string","description":"Error code if an error occurred (conditional).","example":"10001"},"ErrorMessage":{"type":"string","description":"Error message if an error occurred (conditional).","example":"Call failed"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"ParentCallSid":{"type":"string","description":"The unique identifier of the parent call (conditional, only present for outbound calls initiated via Dial).","example":"v3:parent-call-id"},"ParentCallSidLegacy":{"type":"string","description":"Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).","example":"v3:parent-call-id"},"SamplingRate":{"type":"string","description":"The audio sampling rate (conditional).","example":"8000"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"2"},"ShakenStirAttestation":{"type":"string","description":"SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).","example":"A"},"ShakenStirValidated":{"type":"boolean","description":"Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).","example":"true"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"}},"required":["AccountSid","CallInitiatedAt","CallSid","CallSidLegacy","CallStatus","From","To","ConnectionId","Timestamp","CallbackSource","SequenceNumber"]},"TexmlCallCompletedWebhookSchema":{"type":"object","title":"TeXML Call Completed Webhook","description":"Webhook sent when a TeXML call is completed.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"AnsweredTime":{"type":"string","format":"date-time","description":"The time when the call was answered (only present when CallStatus is 'completed').","example":"2024-01-15T10:30:15Z"},"CallControlId":{"type":"string","description":"The call control ID (only present when CallStatus is 'completed').","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallDuration":{"type":"string","description":"The duration of the call in seconds (conditional, only present if start_time and end_time are available).","example":"45"},"CallInitiatedAt":{"type":"string","format":"date-time","description":"The timestamp when the call was initiated.","example":"2024-01-15T10:30:26.028Z"},"CallLegId":{"type":"string","description":"The call leg ID (only present when CallStatus is 'completed').","example":"abc123-leg1"},"CallQualityStats":{"type":"string","description":"JSON-encoded call quality statistics (only present when CallStatus is 'completed').","example":"{\"mos\":4.2,\"jitter\":10,\"packet_loss\":0.5}"},"CallSessionId":{"type":"string","description":"The call session ID (only present when CallStatus is 'completed').","example":"session-abc123"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallStatus":{"type":"string","description":"The status of the call.","enum":["completed","busy","no-answer","canceled","failed"],"example":"completed"},"CallbackSource":{"type":"string","description":"The source of the callback.","enum":["call-progress-events"],"example":"call-progress-events"},"CallerId":{"type":"string","description":"The display name of the caller.","example":"John Doe"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"DialCallDuration":{"type":"string","description":"The duration of the dialed call in seconds (conditional, only present in hangup action callbacks for Dial).","example":"120"},"DialCallSid":{"type":"string","description":"The unique identifier of the dialed call (conditional, only present in hangup action callbacks for Dial).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"DialCallSidLegacy":{"type":"string","description":"Legacy dialed call identifier, same as DialCallSid (conditional, only present in hangup action callbacks for Dial).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"DialCallStatus":{"type":"string","description":"The status of the dialed call (conditional, only present in hangup action callbacks for Dial).","enum":["completed","busy","no-answer","canceled","failed"],"example":"completed"},"EndTime":{"type":"string","format":"date-time","description":"The time when the call ended (only present when CallStatus is 'completed').","example":"2024-01-15T10:31:00Z"},"ErrorCode":{"type":"string","description":"Error code if an error occurred (conditional).","example":"10001"},"ErrorMessage":{"type":"string","description":"Error message if an error occurred (conditional).","example":"Call failed"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"HangupCause":{"type":"string","description":"The reason for call hangup (only present when CallStatus is 'completed').","example":"normal_clearing"},"HangupSource":{"type":"string","description":"The source of the hangup (conditional, only present for hangup events).","example":"caller"},"OccurredAt":{"type":"string","format":"date-time","description":"The timestamp when the event occurred (only present when CallStatus is 'completed').","example":"2024-01-15T10:31:00Z"},"OrganizationId":{"type":"string","description":"The organization ID (only present when CallStatus is 'completed').","example":"org-abc123"},"ParentCallSid":{"type":"string","description":"The unique identifier of the parent call that initiated this outbound call (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"ParentCallSidLegacy":{"type":"string","description":"Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"RecordingDuration":{"type":"string","description":"The duration of the recording in seconds (conditional, only present if recording was enabled).","example":"90"},"RecordingUrl":{"type":"string","description":"The URL where the call recording can be accessed (conditional, only present if recording was enabled).","example":"https://api.telnyx.com/v2/recordings/abc123.wav"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"3"},"ShakenStirAttestation":{"type":"string","description":"SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).","example":"A"},"ShakenStirValidated":{"type":"boolean","description":"Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).","example":"true"},"SipHangupCause":{"type":"string","description":"The SIP hangup cause code (conditional, only present for hangup events).","example":"200"},"StartTime":{"type":"string","format":"date-time","description":"The time when the call started (only present when CallStatus is 'completed').","example":"2024-01-15T10:30:00Z"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"},"UserId":{"type":"string","description":"The user ID (only present when CallStatus is 'completed').","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"}},"required":["AccountSid","CallInitiatedAt","CallSid","CallSidLegacy","CallStatus","From","To","ConnectionId","Timestamp","CallbackSource","SequenceNumber"]},"TexmlCallDtmfWebhookSchema":{"type":"object","title":"TeXML Call DTMF Webhook","description":"Webhook sent when a DTMF digit is received during a TeXML call.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallInitiatedAt":{"type":"string","format":"date-time","description":"The timestamp when the call was initiated.","example":"2024-01-15T10:30:26.028Z"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallStatus":{"type":"string","description":"The status of the call.","enum":["dtmf"],"example":"dtmf"},"CallbackSource":{"type":"string","description":"The source of the callback.","enum":["call-progress-events"],"example":"call-progress-events"},"CallerId":{"type":"string","description":"The display name of the caller.","example":"John Doe"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"Digit":{"type":"string","description":"The DTMF digit that was pressed (0-9, *,","example":"5"},"ErrorCode":{"type":"string","description":"Error code if an error occurred (conditional).","example":"10001"},"ErrorMessage":{"type":"string","description":"Error message if an error occurred (conditional).","example":"Call failed"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"ParentCallSid":{"type":"string","description":"The unique identifier of the parent call (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"ParentCallSidLegacy":{"type":"string","description":"Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"3"},"ShakenStirAttestation":{"type":"string","description":"SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).","example":"A"},"ShakenStirValidated":{"type":"boolean","description":"Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).","example":"true"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"}},"required":["AccountSid","CallInitiatedAt","CallSid","CallSidLegacy","CallStatus","From","To","ConnectionId","Timestamp","CallbackSource","SequenceNumber","Digit"]},"TexmlCallInitiatedWebhookSchema":{"type":"object","title":"TeXML Call Initiated Webhook","description":"Webhook sent when a TeXML call is initiated.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallInitiatedAt":{"type":"string","format":"date-time","description":"The timestamp when the call was initiated.","example":"2024-01-15T10:30:26.028Z"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallStatus":{"type":"string","description":"The status of the call.","enum":["initiated"],"example":"initiated"},"CallbackSource":{"type":"string","description":"The source of the callback.","enum":["call-progress-events"],"example":"call-progress-events"},"CallerId":{"type":"string","description":"The display name of the caller.","example":"John Doe"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"ErrorCode":{"type":"string","description":"Error code if an error occurred (conditional).","example":"10001"},"ErrorMessage":{"type":"string","description":"Error message if an error occurred (conditional).","example":"Call failed"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"ParentCallSid":{"type":"string","description":"The unique identifier of the parent call that initiated this outbound call (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"ParentCallSidLegacy":{"type":"string","description":"Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"0"},"ShakenStirAttestation":{"type":"string","description":"SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).","example":"A"},"ShakenStirValidated":{"type":"boolean","description":"Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).","example":"true"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"}},"required":["AccountSid","CallInitiatedAt","CallSid","CallSidLegacy","CallStatus","From","To","ConnectionId","Timestamp","CallbackSource","SequenceNumber"]},"TexmlCallRingingWebhookSchema":{"type":"object","title":"TeXML Call Ringing Webhook","description":"Webhook sent when a TeXML call is ringing.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallDuration":{"type":"string","description":"The duration of the call in seconds (conditional, only present if start_time and end_time are available).","example":"10"},"CallInitiatedAt":{"type":"string","format":"date-time","description":"The timestamp when the call was initiated.","example":"2024-01-15T10:30:26.028Z"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallStatus":{"type":"string","description":"The status of the call.","enum":["ringing"],"example":"ringing"},"CallbackSource":{"type":"string","description":"The source of the callback.","enum":["call-progress-events"],"example":"call-progress-events"},"CallerId":{"type":"string","description":"The display name of the caller.","example":"John Doe"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"ErrorCode":{"type":"string","description":"Error code if an error occurred (conditional).","example":"10001"},"ErrorMessage":{"type":"string","description":"Error message if an error occurred (conditional).","example":"Call failed"},"From":{"type":"string","description":"The phone number or SIP address of the caller.","example":"+35319605860"},"ParentCallSid":{"type":"string","description":"The unique identifier of the parent call that initiated this outbound call (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"ParentCallSidLegacy":{"type":"string","description":"Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"1"},"ShakenStirAttestation":{"type":"string","description":"SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).","example":"A"},"ShakenStirValidated":{"type":"boolean","description":"Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).","example":"true"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called.","example":"+13129457420"}},"required":["AccountSid","CallInitiatedAt","CallSid","CallSidLegacy","CallStatus","From","To","ConnectionId","Timestamp","CallbackSource","SequenceNumber"]},"TexmlConferenceEndWebhookSchema":{"type":"object","title":"TeXML Conference End Webhook","description":"Webhook sent when a TeXML conference ends.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallingPartyType":{"type":"string","description":"The type of calling party (conditional, only present if available in event).","example":"customer"},"ConferenceSid":{"type":"string","description":"The unique identifier of the conference.","example":"conf_abc123def456"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"FriendlyName":{"type":"string","description":"The friendly name of the conference.","example":"MyConference"},"From":{"type":"string","description":"The phone number or SIP address of the caller (conditional, only present if available in event).","example":"+35319605860"},"FromSipUri":{"type":"string","description":"The SIP URI of the caller (conditional, only present if available in event).","example":"sip:user@example.com"},"ParticipantLabel":{"type":"string","description":"The label of the participant (conditional, only present if available in event).","example":"participant-1"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"5"},"StatusCallbackEvent":{"type":"string","description":"The event that triggered the callback.","enum":["conference-end"],"example":"conference-end"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T11:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called (conditional, only present if available in event).","example":"+13129457420"},"ToSipUri":{"type":"string","description":"The SIP URI of the callee (conditional, only present if available in event).","example":"sip:conference@example.com"}},"required":["ConferenceSid","FriendlyName","AccountSid","ConnectionId","SequenceNumber","Timestamp","StatusCallbackEvent","CallSid","CallSidLegacy"]},"TexmlConferenceJoinWebhookSchema":{"type":"object","title":"TeXML Conference Join Webhook","description":"Webhook sent when a participant joins a TeXML conference.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallSid":{"type":"string","description":"The unique identifier of the call that joined.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallingPartyType":{"type":"string","description":"The type of calling party (conditional, only present if available in event).","example":"customer"},"ConferenceSid":{"type":"string","description":"The unique identifier of the conference.","example":"conf_abc123def456"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"FriendlyName":{"type":"string","description":"The friendly name of the conference.","example":"MyConference"},"From":{"type":"string","description":"The phone number or SIP address of the caller (conditional, only present if available in event).","example":"+35319605860"},"FromSipUri":{"type":"string","description":"The SIP URI of the caller (conditional, only present if available in event).","example":"sip:user@example.com"},"ParticipantLabel":{"type":"string","description":"The label of the participant (conditional, only present if available in event).","example":"participant-1"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"2"},"StatusCallbackEvent":{"type":"string","description":"The event that triggered the callback.","enum":["participant-join"],"example":"participant-join"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:31:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called (conditional, only present if available in event).","example":"+13129457420"},"ToSipUri":{"type":"string","description":"The SIP URI of the callee (conditional, only present if available in event).","example":"sip:conference@example.com"}},"required":["ConferenceSid","FriendlyName","AccountSid","ConnectionId","SequenceNumber","Timestamp","StatusCallbackEvent","CallSid","CallSidLegacy"]},"TexmlConferenceLeaveWebhookSchema":{"type":"object","title":"TeXML Conference Leave Webhook","description":"Webhook sent when a participant leaves a TeXML conference.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallSid":{"type":"string","description":"The unique identifier of the call that left.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallingPartyType":{"type":"string","description":"The type of calling party (conditional, only present if available in event).","example":"customer"},"ConferenceSid":{"type":"string","description":"The unique identifier of the conference.","example":"conf_abc123def456"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"FriendlyName":{"type":"string","description":"The friendly name of the conference.","example":"MyConference"},"From":{"type":"string","description":"The phone number or SIP address of the caller (conditional, only present if available in event).","example":"+35319605860"},"FromSipUri":{"type":"string","description":"The SIP URI of the caller (conditional, only present if available in event).","example":"sip:user@example.com"},"ParticipantLabel":{"type":"string","description":"The label of the participant (conditional, only present if available in event).","example":"participant-1"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"4"},"StatusCallbackEvent":{"type":"string","description":"The event that triggered the callback.","enum":["participant-leave"],"example":"participant-leave"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T11:00:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called (conditional, only present if available in event).","example":"+13129457420"},"ToSipUri":{"type":"string","description":"The SIP URI of the callee (conditional, only present if available in event).","example":"sip:conference@example.com"}},"required":["ConferenceSid","FriendlyName","AccountSid","ConnectionId","SequenceNumber","Timestamp","StatusCallbackEvent","CallSid","CallSidLegacy"]},"TexmlConferenceSpeakerWebhookSchema":{"type":"object","title":"TeXML Conference Speaker Webhook","description":"Webhook sent when a participant starts or stops speaking in a TeXML conference.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallSid":{"type":"string","description":"The unique identifier of the call that is speaking.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallingPartyType":{"type":"string","description":"The type of calling party (conditional, only present if available in event).","example":"customer"},"ConferenceSid":{"type":"string","description":"The unique identifier of the conference.","example":"conf_abc123def456"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"FriendlyName":{"type":"string","description":"The friendly name of the conference.","example":"MyConference"},"From":{"type":"string","description":"The phone number or SIP address of the caller (conditional, only present if available in event).","example":"+35319605860"},"FromSipUri":{"type":"string","description":"The SIP URI of the caller (conditional, only present if available in event).","example":"sip:user@example.com"},"ParticipantLabel":{"type":"string","description":"The label of the participant (conditional, only present if available in event).","example":"participant-1"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"3"},"StatusCallbackEvent":{"type":"string","description":"The event that triggered the callback.","enum":["participant-speech-start","participant-speech-stop"],"example":"participant-speech-start"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:35:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called (conditional, only present if available in event).","example":"+13129457420"},"ToSipUri":{"type":"string","description":"The SIP URI of the callee (conditional, only present if available in event).","example":"sip:conference@example.com"}},"required":["ConferenceSid","FriendlyName","AccountSid","ConnectionId","SequenceNumber","Timestamp","StatusCallbackEvent","CallSid","CallSidLegacy"]},"TexmlConferenceStartWebhookSchema":{"type":"object","title":"TeXML Conference Start Webhook","description":"Webhook sent when a TeXML conference starts.","properties":{"AccountSid":{"type":"string","description":"The unique identifier of the account (user_id).","example":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"},"CallSid":{"type":"string","description":"The unique identifier of the call (call_control_id).","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallSidLegacy":{"type":"string","description":"Legacy call identifier, same as CallSid.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"CallingPartyType":{"type":"string","description":"The type of calling party (conditional, only present if available in event).","example":"customer"},"ConferenceSid":{"type":"string","description":"The unique identifier of the conference.","example":"conf_abc123def456"},"ConnectionId":{"type":"string","description":"The unique identifier of the connection.","example":"1234567890"},"FriendlyName":{"type":"string","description":"The friendly name of the conference.","example":"MyConference"},"From":{"type":"string","description":"The phone number or SIP address of the caller (conditional, only present if available in event).","example":"+35319605860"},"FromSipUri":{"type":"string","description":"The SIP URI of the caller (conditional, only present if available in event).","example":"sip:user@example.com"},"ParticipantLabel":{"type":"string","description":"The label of the participant (conditional, only present if available in event).","example":"participant-1"},"SequenceNumber":{"type":"integer","description":"The sequence number of the event.","example":"0"},"StatusCallbackEvent":{"type":"string","description":"The event that triggered the callback.","enum":["conference-start"],"example":"conference-start"},"Timestamp":{"type":"string","format":"date-time","description":"The UTC timestamp when the webhook was generated.","example":"2024-01-15T10:30:00Z"},"To":{"type":"string","description":"The phone number or SIP address that was called (conditional, only present if available in event).","example":"+13129457420"},"ToSipUri":{"type":"string","description":"The SIP URI of the callee (conditional, only present if available in event).","example":"sip:conference@example.com"}},"required":["ConferenceSid","FriendlyName","AccountSid","ConnectionId","SequenceNumber","Timestamp","StatusCallbackEvent","CallSid","CallSidLegacy"]},"TexmlCreateCallRecordingRequestBody":{"type":"object","title":"Texml Create Call Recording Request Body","properties":{"PlayBeep":{"$ref":"#/components/schemas/PlayBeep"},"RecordingStatusCallbackEvent":{"$ref":"#/components/schemas/RecordingStatusCallbackEvent"},"RecordingStatusCallback":{"$ref":"#/components/schemas/TexmlStatusCallback"},"RecordingStatusCallbackMethod":{"$ref":"#/components/schemas/TexmlStatusCallbackMethod"},"RecordingChannels":{"$ref":"#/components/schemas/TexmlRecordingChannels"},"RecordingTrack":{"$ref":"#/components/schemas/RecordingTrack"},"SendRecordingUrl":{"$ref":"#/components/schemas/SendRecordingUrl"}}},"TexmlCreateCallRecordingResponseBody":{"type":"object","title":"Texml Create Call Recording Response Body","properties":{"account_sid":{"$ref":"#/components/schemas/AccountSid"},"call_sid":{"$ref":"#/components/schemas/CallControlId"},"conference_sid":{"$ref":"#/components/schemas/ConferenceSid"},"channels":{"$ref":"#/components/schemas/TwimlRecordingChannels"},"date_created":{"$ref":"#/components/schemas/DateTimeRFC2822"},"date_updated":{"$ref":"#/components/schemas/DateTimeRFC2822"},"start_time":{"$ref":"#/components/schemas/DateTimeRFC2822"},"price":{"$ref":"#/components/schemas/TexmlRecordingPrice"},"price_unit":{"$ref":"#/components/schemas/TexmlPriceUnit"},"duration":{"$ref":"#/components/schemas/TexmlRecordingDuration"},"sid":{"$ref":"#/components/schemas/TexmlSid"},"source":{"$ref":"#/components/schemas/RecordingSource"},"error_code":{"$ref":"#/components/schemas/TexmlErrorCode"},"track":{"$ref":"#/components/schemas/RecordingTrack"},"uri":{"type":"string","description":"The relative URI for this recording resource.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Recordings/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json"}}},"TexmlCreateCallStreamingRequestBody":{"type":"object","title":"Texml Create Call Streaming Request Body","properties":{"StatusCallback":{"$ref":"#/components/schemas/TexmlStatusCallback"},"StatusCallbackMethod":{"$ref":"#/components/schemas/TexmlStatusCallbackMethod"},"Track":{"$ref":"#/components/schemas/StreamTrack"},"Name":{"$ref":"#/components/schemas/StreamName"},"BidirectionalMode":{"$ref":"#/components/schemas/TexmlBidirectionalStreamMode"},"BidirectionalCodec":{"$ref":"#/components/schemas/TexmlBidirectionalStreamCodec"},"Url":{"$ref":"#/components/schemas/TexmlStreamUrl"}}},"TexmlCreateCallStreamingResponseBody":{"type":"object","title":"Texml Create Call Streaming Response Body","properties":{"account_sid":{"$ref":"#/components/schemas/AccountSid"},"call_sid":{"$ref":"#/components/schemas/CallControlId"},"sid":{"$ref":"#/components/schemas/TexmlSid"},"name":{"type":"string","description":"The user specified name of Stream.","example":"My stream"},"status":{"type":"string","description":"The status of the streaming.","enum":["in-progress"],"example":"in-progress"},"date_updated":{"$ref":"#/components/schemas/DateTimeRFC2822"},"uri":{"type":"string","description":"The relative URI for this streaming resource.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Streams/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json"}}},"TexmlCreateSiprecSessionRequestBody":{"type":"object","title":"Create Siprec Session Request","properties":{"ConnectorName":{"description":"The name of the connector to use for the SIPREC session.","example":"my_connector","type":"string"},"Name":{"description":"Name of the SIPREC session. May be used to stop the SIPREC session from TeXML instruction.","example":"my_siprec_session","type":"string"},"Track":{"description":"The track to be used for siprec session. Can be `both_tracks`, `inbound_track` or `outbound_track`. Defaults to `both_tracks`.","example":"both_tracks","type":"string","enum":["both_tracks","inbound_track","outbound_track"]},"IncludeMetadataCustomHeaders":{"description":"When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise, they’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"},"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.\n\nUnlike a prompt node, a tool node has no instructions or model — it\nisn't an LLM turn. Reaching it deterministically runs one shared tool\n(arguments filled from matching dynamic variables by name), then routes\nvia outgoing `llm` / `expression` edges, with exactly one `default`\nfallback edge required when the node has any outgoing edges (the\ntool's outcome is readable as `telnyx_last_tool_status_code` in\n`expression` conditions).","example":{"id":"n_charge","message":"One moment while I process your payment.","name":"Charge card","position":{"x":300,"y":200},"shared_tool_id":"tool-charge-card","type":"tool"},"properties":{"id":{"description":"Caller-supplied unique identifier for this node within the flow.","example":"n_charge","title":"Id","type":"string"},"message":{"description":"Optional message delivered to the user verbatim immediately before the tool executes — 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"}}}},"TranscriptionConfig":{"type":"object","description":"The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field.","properties":{"model":{"description":"The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `nvidia/parakeet-v3` for multilingual transcription with automatic language detection.\n- `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based).\n- `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection.\n- `cohere/ar-stt` for non-streaming Arabic and English transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.","type":"string","enum":["deepgram/flux","flux","deepgram/nova-3","deepgram/nova-2","speechmatics/standard","speechmatics/enhanced","assemblyai/universal-3-5-pro","assemblyai/universal-streaming","xai/grok-stt","soniox/stt-rt-v4","nvidia/parakeet-v3","omi-health/omi-med-stt-v1","humain/realtime","reson8/turns","cohere/ar-stt","azure/fast","azure/realtime","google/latest_long","distil-whisper/distil-large-v2","openai/whisper-large-v3-turbo"],"default":"distil-whisper/distil-large-v2","example":"distil-whisper/distil-large-v2"},"language":{"type":"string","description":"The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-5-pro` (and its legacy alias `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; ISO 639-1 codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — 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,"minimum":0,"maximum":20,"example":1}}}}}},"TranscriptionEngineAssemblyaiConfig":{"type":"object","title":"Transcription engine AssemblyAI config","properties":{"transcription_engine":{"type":"string","enum":["AssemblyAI"],"description":"Engine identifier for AssemblyAI transcription service"},"transcription_model":{"description":"The model to use for transcription. `assemblyai/universal-streaming` is a legacy alias of `assemblyai/universal-3-5-pro` and resolves to the same model.","type":"string","enum":["assemblyai/universal-3-5-pro","assemblyai/universal-streaming"],"default":"assemblyai/universal-3-5-pro"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true}}},"TranscriptionEngineAzureConfig":{"type":"object","title":"Transcription engine Azure config","properties":{"transcription_engine":{"type":"string","enum":["Azure"],"description":"Engine identifier for Azure transcription service"},"language":{"$ref":"#/components/schemas/AzureTranscriptionLanguage"},"region":{"$ref":"#/components/schemas/AzureTranscriptionRegion"},"api_key_ref":{"type":"string","description":"Reference to the API key for authentication. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. The parameter is optional as defaults are available for some regions."}},"required":["transcription_engine","region"]},"TranscriptionEngineBConfig":{"type":"object","title":"Transcription engine B config","properties":{"transcription_engine":{"type":"string","enum":["B"],"description":"Engine identifier for Telnyx transcription service"},"language":{"$ref":"#/components/schemas/TelnyxTranscriptionLanguage"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["openai/whisper-tiny","openai/whisper-large-v3-turbo"],"default":"openai/whisper-tiny"}}},"TranscriptionEngineCohereConfig":{"type":"object","title":"Transcription engine Cohere config","properties":{"transcription_engine":{"type":"string","enum":["Cohere"],"description":"Engine identifier for Cohere transcription service"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["cohere/ar-stt"],"default":"cohere/ar-stt"},"language":{"type":"string","description":"The language of the audio to be transcribed. Unlike other self-hosted models, Cohere does not auto-detect the language; `auto` is not supported.","enum":["ar","en"],"default":"ar","example":"ar"}}},"TranscriptionEngineDeepgramConfig":{"oneOf":[{"$ref":"#/components/schemas/DeepgramNova2Config"},{"$ref":"#/components/schemas/DeepgramNova3Config"}],"discriminator":{"propertyName":"transcription_model","mapping":{"deepgram/nova-2":"#/components/schemas/DeepgramNova2Config","deepgram/nova-3":"#/components/schemas/DeepgramNova3Config"}}},"TranscriptionEngineGoogleConfig":{"type":"object","title":"Transcription engine Google config","properties":{"transcription_engine":{"type":"string","enum":["Google"],"description":"Engine identifier for Google transcription service"},"language":{"$ref":"#/components/schemas/GoogleTranscriptionLanguage"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true},"enable_speaker_diarization":{"type":"boolean","description":"Enables speaker diarization.","default":false,"example":true},"min_speaker_count":{"description":"Defines minimum number of speakers in the conversation.","type":"integer","example":4,"default":2,"format":"int32"},"max_speaker_count":{"description":"Defines maximum number of speakers in the conversation.","type":"integer","example":4,"default":6,"format":"int32"},"profanity_filter":{"description":"Enables profanity_filter.","type":"boolean","default":false,"example":true},"use_enhanced":{"description":"Enables enhanced transcription, this works for models `phone_call` and `video`.","type":"boolean","default":false,"example":true},"model":{"description":"The model to use for transcription.","type":"string","enum":["latest_long","latest_short","command_and_search","phone_call","video","default","medical_conversation","medical_dictation"]},"hints":{"description":"Hints to improve transcription accuracy.","type":"array","items":{"type":"string"},"default":[],"example":[]},"speech_context":{"description":"Speech context to improve transcription accuracy.","type":"array","items":{"type":"object","properties":{"phrases":{"type":"array","items":{"type":"string"},"default":[],"example":[]},"boost":{"type":"number","description":"Boost factor for the speech context.","default":1,"minimum":0,"maximum":20,"example":1}}}}}},"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"}}},"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","distil-whisper/distil-large-v2","openai/whisper-large-v3-turbo"],"description":"The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-3-5-pro` is a multilingual streaming model with configurable turn detection. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model.\n- `xai/grok-stt` is a multilingual Grok STT model.\n- `soniox/stt-rt-v4` and `soniox/stt-rt-v5` are multilingual streaming models with automatic language detection, configurable endpointing, term biasing (`context`), and `language_hints`.\n- `nvidia/parakeet-v3` is a multilingual transcription model with automatic language detection.\n- `omi-health/omi-med-stt-v1` is an English-only medical transcription model (Parakeet-based).\n- `humain/realtime` is a streaming model with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` is a turn-based streaming model covering 10 European languages with automatic language detection.\n- `cohere/ar-stt` is a non-streaming Arabic and English transcription model."},"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"}},"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":"Available only for deepgram/nova-3 and deepgram/flux. A comma-separated list of key terms to boost for recognition during transcription. Helps improve accuracy for domain-specific terminology, proper nouns, or uncommon words. 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."},"end_of_turn_confidence_threshold":{"title":"End Of Turn Confidence Threshold","type":"number","minimum":0,"maximum":1,"default":0.4,"description":"Available only for assemblyai/universal-3-5-pro (and its legacy alias assemblyai/universal-streaming). Confidence level required to trigger an end of turn. Higher values require more certainty before ending a turn."},"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 `,<digits>` 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.","default":"disabled","type":"string","enum":["premium","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.","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"}}},"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.\n\nOptional request body for the trigger test run endpoint."},"TriggerTestSuiteRunsRequest":{"properties":{"destination_version_id":{"type":"string","title":"Destination Version Id","description":"Optional assistant version ID to use for all test runs in this suite. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version","example":"123e4567-e89b-12d3-a456-426614174000"}},"type":"object","title":"TriggerTestSuiteRunsRequest","description":"Request model for triggering test suite runs.\n\nOptional request body for the trigger test suite runs endpoint."},"TtsServerEvent":{"description":"Union of all server-to-client WebSocket events for TTS streaming.","oneOf":[{"$ref":"#/components/schemas/AudioChunkFrame"},{"$ref":"#/components/schemas/FinalFrame"},{"$ref":"#/components/schemas/ErrorFrame"}],"discriminator":{"propertyName":"type","mapping":{"audio_chunk":"#/components/schemas/AudioChunkFrame","final":"#/components/schemas/FinalFrame","error":"#/components/schemas/ErrorFrame"}}},"TwimlRecordingChannels":{"type":"integer","enum":[1,2],"default":2,"example":1},"UUID":{"title":"UUID","type":"string","format":"uuid","description":"Uniquely identifies the resource.","example":"542c3bca-d247-42bc-8fe7-e01d16ecd761"},"UacConnection":{"type":"object","title":"UAC Connection","properties":{"id":{"type":"string","description":"Identifies the type of resource.","example":"1293384261075731499","x-format":"int64"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"uac_connection"},"active":{"type":"boolean","description":"Defaults to true"},"user_name":{"type":"string","description":"The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters). At least one of the first 5 characters must be a letter.","example":"myusername123"},"password":{"type":"string","description":"The password to be used as part of the credentials. Must be 8 to 128 characters long. For primary accounts created on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create, and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected.","example":"my123secure456password789"},"created_at":{"type":"string","description":"ISO-8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO-8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"type":"string"},"sip_uri_calling_preference":{"type":"string","example":"disabled","description":"This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/UacInbound"},"outbound":{"$ref":"#/components/schemas/UacOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"},"authentication":{"type":"string","description":"The authentication strategy used by this connection.","enum":["uac-authentication"],"example":"uac-authentication"},"registration_status":{"type":["string","null"],"description":"The most recently known SIP registration status for this UAC connection.","example":"Registered"},"registration_status_updated_at":{"type":["string","null"],"description":"ISO 8601 formatted date indicating when the registration status was last updated.","example":"2018-02-02T22:25:27.521Z"},"fqdn":{"type":"string","description":"The Telnyx-managed FQDN generated for the UAC connection.","example":"abc123def456.uac.telnyx.com"},"fqdns":{"type":"array","description":"FQDN records managed automatically by the UAC connection lifecycle.","items":{"$ref":"#/components/schemas/Fqdn"}},"fqdn_outbound_authentication":{"type":"string","description":"The fixed outbound authentication mode used by UAC FQDN records.","enum":["credential-authentication"],"example":"credential-authentication"},"internal_uac_settings":{"$ref":"#/components/schemas/UacInternalSettings"},"external_uac_settings":{"$ref":"#/components/schemas/UacExternalSettings"}},"example":{"id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","record_type":"uac_connection","active":true,"user_name":"myusername123","password":"my123secure456password789","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z","anchorsite_override":"Latency","connection_name":"string","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","call_cost_in_webhooks":false,"webhook_timeout_secs":25,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtp+1","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":15,"shaken_stir_enabled":true,"simultaneous_ringing":"enabled"},"outbound":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200},"authentication":"uac-authentication","registration_status":"Registered","registration_status_updated_at":"2018-02-02T22:25:27.521Z","fqdn":"abc123def456.uac.telnyx.com","fqdns":[{"id":"1293384261075731499","record_type":"fqdn","connection_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","fqdn":"abc123def456.uac.telnyx.com","port":5060,"dns_record_type":"srv","created_at":"2018-02-02T22:25:27.521Z","updated_at":"2018-02-02T22:25:27.521Z"}],"fqdn_outbound_authentication":"credential-authentication","internal_uac_settings":{"destination_uri":"14155550123@acme.sip.telnyx.com"},"external_uac_settings":{"username":"ext8492","password":"testtesttest","proxy":"sip-pbx.acme.example","auth_username":"auth8492","from_user":"8492","outbound_proxy":"outbound.sip-pbx.acme.example:5061","expiration_sec":600,"transport":"TLS","user_agent":"Telnyx-Usage-Voice-Trunk/1.0"}},"description":"A UAC (User Agent Client) Connection registers Telnyx to your PBX — 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@<subdomain.>sip.telnyx.com` or `userinfo@<subdomain.>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.<br/><br/> 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_<name>_<skill_id>`. 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 `<assistant-speaks-first-with-model-generated-message>` 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"},"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,"minimum":1,"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.\n\nAll fields are optional, allowing partial updates of test configuration.\nOnly provided fields will be updated, others remain unchanged."},"UpdateAuthenticationProviderRequest":{"type":"object","title":"Update Authentication Provider Request","properties":{"name":{"$ref":"#/components/schemas/name"},"short_name":{"$ref":"#/components/schemas/short_name"},"active":{"$ref":"#/components/schemas/active"},"settings":{"$ref":"#/components/schemas/settings"},"settings_url":{"$ref":"#/components/schemas/settings_url"}},"example":{"name":"Okta","short_name":"myorg","active":true,"settings":{"idp_entity_id":"https://myorg.myidp.com/saml/metadata","idp_sso_target_url":"https://myorg.myidp.com/trust/saml2/http-post/sso","idp_cert_fingerprint":"13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7","idp_cert_fingerprint_algorithm":"sha1"}}},"UpdateBillingGroup":{"type":"object","properties":{"name":{"type":"string","description":"A name for the billing group"}},"example":{"name":"string"}},"UpdateBrand":{"title":"UpdateBrand","required":["entityType","displayName","country","email","vertical"],"type":"object","properties":{"entityType":{"allOf":[{"$ref":"#/components/schemas/EntityType"}],"description":"Entity type behind the brand. This is the form of business establishment."},"displayName":{"title":"Displayname","maxLength":100,"type":"string","description":"Display or marketing name of the brand.","example":"ABC Mobile"},"companyName":{"title":"Companyname","maxLength":100,"type":"string","description":"(Required for Non-profit/private/public) Legal company name.","example":"ABC Inc."},"firstName":{"title":"Firstname","maxLength":100,"type":"string","description":"First name of business contact.","example":"John"},"lastName":{"title":"Lastname","maxLength":100,"type":"string","description":"Last name of business contact.","example":"Smith"},"ein":{"title":"Ein","maxLength":20,"type":"string","description":"(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.","example":"111111111"},"phone":{"title":"Phone","maxLength":20,"type":"string","description":"Valid phone number in e.164 international format.","example":"+12024567890"},"street":{"title":"Street","maxLength":100,"type":"string","description":"Street number and name.","example":"123"},"city":{"title":"City","maxLength":100,"type":"string","description":"City name","example":"New York"},"state":{"title":"State","maxLength":20,"type":"string","description":"State. Must be 2 letters code for United States.","example":"NY"},"postalCode":{"title":"Postalcode","maxLength":10,"type":"string","description":"Postal codes. Use 5 digit zipcode for United States","example":"10001"},"country":{"title":"Country","maxLength":2,"type":"string","description":"ISO2 2 characters country code. Example: US - United States","example":"US"},"email":{"title":"Email","maxLength":100,"type":"string","description":"Valid email address of brand support contact."},"stockSymbol":{"title":"Stocksymbol","maxLength":10,"type":"string","description":"(Required for public company) stock symbol.","example":"ABC"},"stockExchange":{"allOf":[{"$ref":"#/components/schemas/StockExchange"}],"description":"(Required for public company) stock exchange.","example":"NASDAQ"},"ipAddress":{"title":"Ipaddress","maxLength":50,"type":"string","description":"IP address of the browser requesting to create brand identity."},"website":{"title":"Website","maxLength":100,"type":"string","description":"Brand website URL.","example":"http://www.abcmobile.com"},"vertical":{"allOf":[{"$ref":"#/components/schemas/Vertical"}],"description":"Vertical or industry segment of the brand."},"altBusinessIdType":{"$ref":"#/components/schemas/AltBusinessIdType"},"isReseller":{"title":"Isreseller","type":"boolean"},"identityStatus":{"$ref":"#/components/schemas/BrandIdentityStatus"},"businessContactEmail":{"title":"BusinessContactEmail","type":"string","description":"Business contact email.\n\nRequired if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`.","example":"name@example.com"},"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook URL for brand status updates.","example":"https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93"},"webhookFailoverURL":{"title":"WebhookFailoverURL","type":"string","description":"Webhook failover URL for brand status updates.","example":"https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6"},"altBusinessId":{"title":"Altbusiness Id","maxLength":50,"type":"string","description":"Alternate business identifier such as DUNS, LEI, or GIIN"}}},"UpdateCallControlApplicationRequest":{"type":"object","title":"Update Call Control Application Request","required":["application_name","webhook_event_url"],"properties":{"application_name":{"type":"string","description":"A user-assigned name to help manage the application.","example":"call-router"},"webhook_event_url":{"type":"string","format":"url","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this Call Control Application.","default":false},"active":{"type":"boolean","description":"Specifies whether the connection can be used.","default":true},"anchorsite_override":{"type":"string","description":"<code>Latency</code> directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n","enum":["Latency","Chicago, IL","Ashburn, VA","San Jose, CA","London, UK","Chennai, IN","Amsterdam, Netherlands","Toronto, Canada","Sydney, Australia"],"example":"Amsterdam, Netherlands","default":"Latency"},"dtmf_type":{"type":"string","description":"Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.","enum":["RFC 2833","Inband","SIP INFO"],"example":"Inband","default":"RFC 2833"},"first_command_timeout":{"type":"boolean","description":"Specifies whether calls to phone numbers associated with this connection should hangup after timing out.","example":true,"default":false},"first_command_timeout_secs":{"type":"integer","description":"Specifies how many seconds to wait before timing out a dial command.","example":10,"default":30},"tags":{"type":"array","items":{"type":"string"},"description":"Tags assigned to the Call Control Application.","example":["tag1","tag2"]},"inbound":{"$ref":"#/components/schemas/CallControlApplicationInbound"},"outbound":{"$ref":"#/components/schemas/CallControlApplicationOutbound"},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_event_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"redact_dtmf_debug_logging":{"type":"boolean","description":"When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions.","example":true,"default":false}},"example":{"application_name":"call-router","webhook_event_url":"https://example.com","active":false,"anchorsite_override":"Latency","dtmf_type":"Inband","first_command_timeout":true,"first_command_timeout_secs":10,"inbound":{"channel_limit":10,"shaken_stir_enabled":true,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"},"webhook_api_version":"1","webhook_event_failover_url":"https://failover.example.com","webhook_timeout_secs":25,"call_cost_in_webhooks":true,"redact_dtmf_debug_logging":true}},"UpdateCallRequest":{"type":"object","title":"Update Call Request","properties":{"Status":{"description":"The value to set the call status to. Setting the status to completed ends the call.","example":"completed","type":"string"},"Url":{"description":"The URL where TeXML will make a request to retrieve a new set of TeXML instructions to continue the call flow.","example":"https://www.example.com/intruction-b.xml","type":"string"},"Method":{"description":"HTTP request type used for `Url`.","example":"GET","type":"string","enum":["GET","POST"]},"FallbackUrl":{"description":"A failover URL for which Telnyx will retrieve the TeXML call instructions if the Url is not responding.","example":"https://www.example.com/intruction-c.xml","type":"string"},"FallbackMethod":{"description":"HTTP request type used for `FallbackUrl`.","example":"GET","type":"string","enum":["GET","POST"]},"StatusCallback":{"description":"URL destination for Telnyx to send status callback events to for the call.","example":"https://www.example.com/callback","type":"string"},"StatusCallbackMethod":{"description":"HTTP request type used for `StatusCallback`.","example":"GET","type":"string","enum":["GET","POST"]},"Texml":{"description":"TeXML to replace the current one with.","example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say>Hello</Say></Response>","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 <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":false,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/CredentialInbound"},"outbound":{"$ref":"#/components/schemas/CredentialOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"password":"my123secure456password789","user_name":"myusername123","anchorsite_override":"Latency","connection_name":"my name","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":false,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true,"simultaneous_ringing":"disabled"},"outbound":{"call_parking_enabled":true,"ani_override":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"US","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}}},"UpdateDynamicVariablesTool":{"description":"The update_dynamic_variables tool lets the assistant write values into the conversation's dynamic-variables context during the call. Updated variables are available to later `{{variable}}` interpolation (prompts, speak nodes, message templates) and to flow edge conditions. Declare each variable the assistant is allowed to set under `updatable_variables`.","properties":{"type":{"type":"string","enum":["update_dynamic_variables"]},"shared":{"type":"boolean","description":"Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with `shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids` instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type allows only one instance per assistant).","readOnly":true},"update_dynamic_variables":{"$ref":"#/components/schemas/UpdateDynamicVariablesToolParams"}},"type":"object","required":["type","update_dynamic_variables"],"title":"UpdateDynamicVariablesTool"},"UpdateDynamicVariablesToolParams":{"description":"Configuration for an update_dynamic_variables tool.","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$","description":"The function name surfaced to the LLM. Must match the OpenAI function-name pattern `^[a-zA-Z0-9_-]+$` and be unique across the assistant's function, webhook, and client_side tools.","example":"collect_details"},"description":{"type":"string","description":"Description of the tool passed to the assistant, guiding when to call it and which variables to update.","example":"Collect caller details into conversation variables."},"updatable_variables":{"type":"array","description":"The dynamic variables the assistant is allowed to write. At least one is required.","minItems":1,"items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"pattern":"^(?!telnyx_)[a-zA-Z0-9._-]+$","description":"The dynamic-variable key to update. Must match `^[a-zA-Z0-9._-]+$` and may not start with the reserved `telnyx_` prefix (reserved for system variables). The `pattern` encodes both rules via a negative lookahead.","example":"customer_name"},"type":{"type":"string","description":"Optional hint for the variable's value type (e.g. `string`).","example":"string"},"description":{"type":"string","description":"Optional description of the variable, guiding the assistant on what value to capture.","example":"The caller's full name."}},"required":["name"],"additionalProperties":false}}},"required":["name","description","updatable_variables"],"type":"object","title":"UpdateDynamicVariablesToolParams"},"UpdateEmailDomainRequest":{"type":"object","properties":{"inbound_enabled":{"type":"boolean","description":"Enable or disable inbound routing for this domain"},"dmarc_policy":{"type":"object","allOf":[{"$ref":"#/components/schemas/EmailDMARCPolicy"}],"nullable":true,"description":"Update the DMARC policy. The recommended _dmarc TXT record is rebuilt and its verification reset to pending.\n"},"tracking":{"$ref":"#/components/schemas/DomainsTrackingSettings"}}},"UpdateEmailTemplateRequest":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9 _-]+$"},"subject":{"type":"string","nullable":true,"description":"Liquid template subject."},"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"}},"strict_variables":{"type":"boolean","description":"Per-template strict variable-validation setting."},"autoescape":{"type":"boolean","description":"Per-template HTML autoescaping setting."},"variable_schema":{"type":"object","nullable":true,"description":"Structured variable requirements. Required variables cannot define defaults; invalid combinations return 422. Set to `null` to clear the schema.","additionalProperties":{"$ref":"#/components/schemas/VariableSchemaEntry"}}}},"UpdateEmailWebhookRequest":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/EmailWebhookEvent"}}}},"UpdateExternalConnectionPhoneNumberRequest":{"type":"object","title":"Update External Connection Phone Number Request","properties":{"location_id":{"type":"string","format":"uuid","description":"Identifies the location to assign the phone number to."}}},"UpdateExternalConnectionRequest":{"type":"object","title":"Update External Connection Request","required":["outbound"],"properties":{"active":{"$ref":"#/components/schemas/ConnectionActive"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"inbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent inbound calls to phone numbers associated with this connection.","default":null,"example":10}}},"outbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent outbound calls to phone numbers associated with this connection.","default":null,"example":10},"outbound_voice_profile_id":{"$ref":"#/components/schemas/external-voice-integrations_OutboundVoiceProfileId"}},"required":["outbound_voice_profile_id"]}},"example":{"active":false,"outbound":{"outbound_voice_profile_id":"1911630617284445511"}}},"UpdateFaxApplicationRequest":{"type":"object","title":"Update Fax Application Request","required":["application_name","webhook_event_url"],"properties":{"application_name":{"$ref":"#/components/schemas/ApplicationName"},"active":{"$ref":"#/components/schemas/ConnectionActive"},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"webhook_event_url":{"$ref":"#/components/schemas/WebhookEventUrl"},"webhook_event_failover_url":{"$ref":"#/components/schemas/WebhookEventFailoverUrl"},"webhook_timeout_secs":{"$ref":"#/components/schemas/WebhookTimeoutSecs"},"fax_email_recipient":{"$ref":"#/components/schemas/FaxEmailRecipient"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the Fax Application.","example":["tag1","tag2"]},"inbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent inbound calls to phone numbers associated with this connection.","default":null,"example":10},"sip_subdomain":{"type":"string","description":"Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a phone number is used, from a SIP endpoint. Example: the subdomain \"example.sip.telnyx.com\" can be called from any SIP endpoint by using the SIP URI \"sip:@example.sip.telnyx.com\" where the user part can be any alphanumeric value. Please note TLS encrypted calls are not allowed for subdomain calls.","default":null,"example":"example"},"sip_subdomain_receive_settings":{"type":"string","description":"This option can be enabled to receive calls from: \"Anyone\" (any SIP endpoint in the public Internet) or \"Only my connections\" (any connection assigned to the same Telnyx user).","enum":["only_my_connections","from_anyone"],"default":"from_anyone","example":"only_my_connections"}}},"outbound":{"type":"object","properties":{"channel_limit":{"type":"integer","description":"When set, this will limit the number of concurrent outbound calls to phone numbers associated with this connection.","default":null,"example":10},"outbound_voice_profile_id":{"$ref":"#/components/schemas/OutboundVoiceProfileId"}}}},"example":{"application_name":"fax-router","active":false,"anchorsite_override":"Amsterdam, Netherlands","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_timeout_secs":25,"tags":["tag1","tag2"],"inbound":{"channel_limit":10,"sip_subdomain":"example","sip_subdomain_receive_settings":"only_my_connections"},"outbound":{"channel_limit":10,"outbound_voice_profile_id":"1293384261075731499"}}},"UpdateFqdnAuthenticationRequest":{"type":"object","title":"Update FQDN Authentication Request","properties":{"user_name":{"type":"string","description":"The username for authentication."},"password":{"type":"string","description":"The password for authentication."},"ip_authentication_method":{"type":"string","description":"The IP authentication method.","enum":["token","p-charge-info"]},"fqdn_outbound_authentication":{"type":"string","description":"The outbound authentication type.","enum":["ip-authentication","credential-authentication"]},"webhook_url":{"type":"string","format":"uri","description":"The webhook URL for authentication events."},"failover_url":{"type":"string","format":"uri","description":"The failover webhook URL."},"txt_name":{"type":"string","description":"The TXT record name for Microsoft Teams SBC DNS verification."},"txt_value":{"type":"string","description":"The TXT record value for Microsoft Teams SBC DNS verification."},"txt_ttl":{"type":"integer","description":"The TTL for the TXT record."}},"example":{"user_name":"newusername","password":"new_password","ip_authentication_method":"p-charge-info","fqdn_outbound_authentication":"ip-authentication","webhook_url":"https://example.com","failover_url":"https://failover.example.com","txt_name":"new_txt_name","txt_value":"new_txt_value","txt_ttl":300}},"UpdateFqdnConnectionRequest":{"title":"Update FQDN Connection Request","properties":{"active":{"type":"boolean","description":"Defaults to true"},"conversation_persistence":{"type":"boolean","description":"Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false."},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"$ref":"#/components/schemas/ConnectionName"},"transport_protocol":{"$ref":"#/components/schemas/FqdnConnectionTransportProtocol"},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according to each leg's settings."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"$ref":"#/components/schemas/WebhookEventUrl"},"webhook_event_failover_url":{"$ref":"#/components/schemas/WebhookEventFailoverUrl"},"webhook_api_version":{"$ref":"#/components/schemas/WebhookApiVersion"},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"webhook_timeout_secs":{"$ref":"#/components/schemas/WebhookTimeoutSecs"},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/InboundFqdn"},"outbound":{"$ref":"#/components/schemas/OutboundFqdn"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":true,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"string","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":10,"shaken_stir_enabled":true},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}},"type":"object"},"UpdateFqdnRequest":{"title":"Update FQDN Request","type":"object","properties":{"connection_id":{"type":"string","description":"ID of the FQDN connection to which this IP should be attached."},"fqdn":{"type":"string","description":"FQDN represented by this resource.","example":"example.com"},"port":{"type":["integer","null"],"description":"Port to use when connecting to this FQDN.","default":5060,"example":5060},"dns_record_type":{"type":"string","description":"The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'. For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not specified, 5060 will be used.","example":"a"}},"example":{"connection_id":"1516447646313612565","fqdn":"example.com","port":8080,"dns_record_type":"a"}},"UpdateInboundMessageRequest":{"type":"object","properties":{"read_at":{"description":"Set to `true` for server time, an ISO 8601 timestamp for an explicit read time, or `null` to mark unread.","oneOf":[{"type":"boolean","enum":[true]},{"type":"string","format":"date-time"},{"type":"string","nullable":true,"enum":[null]}]}},"required":["read_at"]},"UpdateIpConnectionRequest":{"title":"Update Ip Connection Request","properties":{"active":{"type":"boolean","description":"Defaults to true"},"conversation_persistence":{"type":"boolean","description":"Whether conversation persistence is enabled for this connection. When enabled, calls handled by the connection are transcribed, stored, and indexed. Defaults to false."},"anchorsite_override":{"$ref":"#/components/schemas/AnchorsiteOverride"},"connection_name":{"type":"string"},"transport_protocol":{"type":"string","description":"One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.","default":"UDP","enum":["UDP","TCP","TLS"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":true,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/InboundIp"},"outbound":{"$ref":"#/components/schemas/OutboundIp"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"}},"example":{"active":true,"anchorsite_override":"Latency","connection_name":"string","transport_protocol":"UDP","default_on_hold_comfort_noise_enabled":true,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":false,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"default_routing_method":"sequential","channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"sip_region":"US","sip_subdomain":"test","sip_subdomain_receive_settings":"only_my_connections","timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true},"outbound":{"call_parking_enabled":true,"ani_override":"string","ani_override_type":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"string","t38_reinvite_source":"customer","tech_prefix":"string","ip_authentication_method":"token","ip_authentication_token":"string","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200}},"type":"object"},"UpdateIpRequest":{"title":"Update Ip Request","type":"object","required":["ip_address"],"properties":{"connection_id":{"type":"string","description":"ID of the IP Connection to which this IP should be attached."},"ip_address":{"type":"string","description":"IP adddress represented by this resource.","example":"192.168.0.0"},"port":{"type":"integer","description":"Port to use when connecting to this IP.","default":5060,"example":5060}},"example":{"connection_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","ip_address":"192.168.0.0","port":5060}},"UpdateMCPServerRequest":{"type":"object","properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"url":{"type":"string","title":"Url"},"api_key_ref":{"type":["string","null"],"title":"Api Key Ref"},"allowed_tools":{"type":["array","null"],"items":{"type":"string"},"title":"Allowed Tools"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"title":"UpdateMCPServerRequest"},"UpdateManagedAccountGlobalChannelLimitRequest":{"title":"Update Managed Account Global Outbound Channels Request","properties":{"channel_limit":{"type":"integer","description":"Integer value that indicates the number of allocatable global outbound channels that should be allocated to the managed account. Must be 0 or more. If the value is 0 then the account will have no usable channels and will not be able to perform outbound calling.","example":30}},"example":{"channel_limit":30},"type":"object"},"UpdateManagedAccountRequest":{"title":"Update Managed Account Request","properties":{"managed_account_allow_custom_pricing":{"type":"boolean","description":"Boolean value that indicates if the managed account is able to have custom pricing set for it or not. If false, uses the pricing of the manager account. Defaults to false. This value may be changed, but there may be time lag between when the value is changed and pricing changes take effect.","example":false}},"example":{"managed_account_allow_custom_pricing":true},"type":"object"},"UpdateMediaMultipartRequest":{"type":"object","title":"Upload media multipart request","properties":{"media":{"description":"The file you want to upload. The maximum allowed size is 20 MB.","type":"string","format":"binary"},"ttl_secs":{"description":"The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.","type":"integer","example":86400}},"example":{"media":"string($binary)","ttl_secs":86400}},"UpdateMediaRequest":{"type":"object","title":"Upload media request","properties":{"media_url":{"description":"The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB.","type":"string","example":"http://www.example.com/audio.mp3"},"ttl_secs":{"description":"The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.","type":"integer","example":86400}},"example":{"media_url":"http://www.example.com/audio.mp3","ttl_secs":86400}},"UpdateMeetingSessionRequest":{"title":"UpdateMeetingSessionRequest","type":"object","additionalProperties":false,"description":"Request body for updating a meeting session. All fields are optional; an empty object is a valid no-op update.","properties":{"join_at":{"type":"string","format":"date-time","description":"ISO-8601 timestamp for the bot to join. May be updated to reschedule."},"bot_name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated display name for the bot."}}},"UpdateMessageTemplateRequest":{"title":"UpdateMessageTemplateRequest","description":"The request body when updating a message template.","required":["text"],"type":"object","properties":{"text":{"example":"Your {{app_name}} verification code is: {{code}}.","type":"string","description":"The text content of the message template."}}},"UpdateMessagingProfileRequest":{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","enum":["messaging_profile"],"readOnly":true},"id":{"description":"Identifies the type of resource.","type":"string","format":"uuid","readOnly":true},"name":{"description":"A user friendly name for the messaging profile.","type":"string"},"enabled":{"description":"Specifies whether the messaging profile is enabled or not.","type":"boolean"},"webhook_url":{"description":"The URL where webhooks related to this messaging profile will be sent.","type":["string","null"],"format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails.","type":["string","null"],"format":"url"},"webhook_api_version":{"description":"Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.","type":"string","enum":["1","2","2010-04-01"]},"whitelisted_destinations":{"description":"Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]`, all destinations will be allowed.\n\nThis field is required if the messaging profile doesn't have it defined yet.","type":"array","items":{"description":"ISO 3166-1 alpha-2 country code.","type":"string","pattern":"^[A-Z]{2}$"}},"created_at":{"description":"ISO 8601 formatted date indicating when the resource was created.","type":"string","format":"date-time","readOnly":true},"updated_at":{"description":"ISO 8601 formatted date indicating when the resource was updated.","type":"string","format":"date-time","readOnly":true},"v1_secret":{"description":"Secret used to authenticate with v1 endpoints.","type":"string"},"number_pool_settings":{"$ref":"#/components/schemas/NumberPoolSettings"},"url_shortener_settings":{"$ref":"#/components/schemas/UrlShortenerSettings"},"alpha_sender":{"description":"The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID.","type":["string","null"],"pattern":"^[A-Za-z0-9 ]{1,11}$"},"daily_spend_limit":{"description":"The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"daily_spend_limit_enabled":{"description":"Whether to enforce the value configured by `daily_spend_limit`.","type":"boolean"},"mms_fall_back_to_sms":{"description":"enables SMS fallback for MMS messages.","type":"boolean","default":false},"mms_transcoding":{"description":"enables automated resizing of MMS media.","type":"boolean","default":false},"mobile_only":{"description":"Send messages only to mobile phone numbers.","type":"boolean","default":false},"smart_encoding":{"description":"Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs.","type":"boolean","default":false},"ai_assistant_id":{"description":"The ID of the AI assistant associated with this messaging profile.","type":["string","null"],"example":"ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000"}},"example":{"name":"Updated Profile for Messages","webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","enabled":true,"webhook_api_version":"2","whitelisted_destinations":["US"],"number_pool_settings":{"toll_free_weight":10,"long_code_weight":2,"skip_unhealthy":false,"sticky_sender":true,"geomatch":false},"url_shortener_settings":{"domain":"example.ex","prefix":"cmpny","replace_blacklist_only":true,"send_webhooks":false},"v1_secret":"rP1VamejkU2v0qIUxntqLW2c"}},"UpdateMissionRequest":{"properties":{"name":{"title":"Name","type":"string"},"description":{"title":"Description","type":"string"},"model":{"title":"Model","type":"string"},"instructions":{"title":"Instructions","type":"string"},"execution_mode":{"$ref":"#/components/schemas/ExecutionMode"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","title":"UpdateMissionRequest"},"UpdateMissionRunRequest":{"properties":{"status":{"$ref":"#/components/schemas/RunStatus"},"result_summary":{"title":"Result Summary","type":"string"},"result_payload":{"title":"Result Payload","additionalProperties":true,"type":"object"},"error":{"title":"Error","type":"string"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","title":"UpdateMissionRunRequest"},"UpdateNumberOrderPhoneNumberRequest":{"properties":{"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/UpdateRegulatoryRequirement"}}},"type":"object"},"UpdateNumberOrderRequest":{"properties":{"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/UpdateRegulatoryRequirement"}},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"}},"type":"object"},"UpdateOutboundVoiceProfileRequest":{"type":"object","title":"Outbound Voice Profile","required":["name"],"example":{"name":"office","traffic_type":"conversational","service_plan":"global","concurrent_call_limit":10,"enabled":true,"tags":["office-profile"],"usage_payment_method":"rate-deck","whitelisted_destinations":["US","BR","AU"],"max_destination_rate":10,"daily_spend_limit":"100.00","daily_spend_limit_enabled":true,"billing_group_id":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","calling_window":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5}},"properties":{"name":{"type":"string","description":"A user-supplied name to help with organization.","example":"office","minLength":3},"traffic_type":{"$ref":"#/components/schemas/TrafficType"},"service_plan":{"$ref":"#/components/schemas/ServicePlan"},"concurrent_call_limit":{"type":["integer","null"],"description":"Must be no more than your global concurrent call limit. Null means no limit.","example":10},"enabled":{"type":"boolean","description":"Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections.","example":true,"default":true},"tags":{"type":"array","items":{"type":"string"},"example":["office-profile"]},"usage_payment_method":{"$ref":"#/components/schemas/UsagePaymentMethod"},"whitelisted_destinations":{"type":"array","items":{"type":"string"},"description":"The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.","example":["US","BR","AU"],"default":["US","CA"]},"max_destination_rate":{"type":"number","description":"Maximum rate (price per minute) for a Destination to be allowed when making outbound calls."},"daily_spend_limit":{"type":"string","description":"The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile in a day before disallowing new calls.","example":"100.00"},"daily_spend_limit_enabled":{"type":"boolean","description":"Specifies whether to enforce the daily_spend_limit on this outbound voice profile.","example":true,"default":false},"call_recording":{"$ref":"#/components/schemas/OutboundCallRecording"},"billing_group_id":{"type":["string","null"],"format":"uuid","description":"The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58","default":null},"calling_window":{"type":"object","description":"Specifies the time window and call limits for calls made using this outbound voice profile.","example":{"start_time":"08:00:00.00Z","end_time":"20:00:00.00Z","calls_per_cld":5},"properties":{"start_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.","example":"08:00:00.00Z","format":"time"},"end_time":{"type":"string","description":"The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.","example":"20:00:00.00Z","format":"time"},"calls_per_cld":{"type":"integer","description":"The maximum number of calls that can be initiated to a single called party (CLD) within the calling window. A null value means no limit.","example":5,"minimum":0}}}}},"UpdatePartnerCampaignRequest":{"title":"UpdateCampaignRequest","type":"object","properties":{"webhookURL":{"title":"WebhookURL","type":"string","description":"Webhook to which campaign status updates are sent.","example":"https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93"},"webhookFailoverURL":{"title":"WebhookURL","type":"string","description":"Webhook failover to which campaign status updates are sent.","example":"https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6"}}},"UpdatePhoneNumberMessagingSettingsRequest":{"type":"object","properties":{"messaging_profile_id":{"type":"string","description":"Configure the messaging profile this phone number is assigned to:\n\n* Omit this field or set its value to `null` to keep the current value.\n* Set this field to `\"\"` to unassign the number from its messaging profile\n* Set this field to a quoted UUID of a messaging profile to assign this number to that messaging profile"},"messaging_product":{"type":"string","description":"Configure the messaging product for this number:\n\n* Omit this field or set its value to `null` to keep the current value.\n* Set this field to a quoted product ID to set this phone number to that product","example":"P2P"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags to set on this phone number."}},"example":{"messaging_profile_id":"dd50eba1-a0c0-4563-9925-b25e842a7cb6","messaging_product":"P2P"}},"UpdatePhoneNumberRequest":{"type":"object","properties":{"id":{"type":"string","description":"Identifies the type of resource.","readOnly":true},"tags":{"type":"array","description":"A list of user-assigned tags to help organize phone numbers.","items":{"type":"string"}},"external_pin":{"type":"string","description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","example":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"address_id":{"type":"string","description":"Identifies the address associated with the phone number."},"connection_id":{"type":"string","description":"Identifies the connection associated with the phone number."},"billing_group_id":{"type":"string","description":"Identifies the billing group associated with the phone number."}},"example":{"id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","tags":["tag"],"address_id":"dc8f39ac-953d-4520-b93b-786ae87db0da","external_pin":"1234","customer_reference":"customer-reference","connection_id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","billing_group_id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","hd_voice_enabled":true}},"UpdatePhoneNumberVoiceSettingsRequest":{"type":"object","properties":{"tech_prefix_enabled":{"type":"boolean","default":false,"description":"Controls whether a tech prefix is enabled for this phone number."},"translated_number":{"type":"string","description":"This field allows you to rewrite the destination number of an inbound call before the call is routed to you. The value of this field may be any alphanumeric value, and the value will replace the number originally dialed."},"caller_id_name_enabled":{"type":"boolean","default":false,"description":"Controls whether the caller ID name is enabled for this phone number."},"call_forwarding":{"$ref":"#/components/schemas/CallForwarding"},"cnam_listing":{"$ref":"#/components/schemas/CnamListing"},"usage_payment_method":{"type":"string","enum":["pay-per-minute","channel"],"default":"pay-per-minute","description":"Controls whether a number is billed per minute or uses your concurrent channels."},"media_features":{"$ref":"#/components/schemas/MediaFeatures"},"call_recording":{"$ref":"#/components/schemas/CallRecording"},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."}},"example":{"tech_prefix_enabled":true,"translated_number":"+13035559999","caller_id_name_enabled":true,"call_forwarding":{"call_forwarding_enabled":true,"forwards_to":"+13035559123","forwarding_type":"always"},"cnam_listing":{"cnam_listing_enabled":true,"cnam_listing_details":"example"},"usage_payment_method":"pay-per-minute","media_features":{"rtp_auto_adjust_enabled":true,"accept_any_rtp_packets_enabled":true,"t38_fax_gateway_enabled":true},"call_recording":{"inbound_call_recording_enabled":true,"inbound_call_recording_format":"wav","inbound_call_recording_channels":"single"},"inbound_call_screening":"disabled"}},"UpdatePlanStepRequest":{"properties":{"status":{"$ref":"#/components/schemas/StepStatus"},"metadata":{"title":"Metadata","additionalProperties":true,"type":"object"}},"type":"object","title":"UpdatePlanStepRequest"},"UpdatePortingOrder":{"type":"object","title":"UpdatePortingOrder","properties":{"misc":{"anyOf":[{"$ref":"#/components/schemas/PortingOrderMisc"},{"type":"null"}]},"end_user":{"$ref":"#/components/schemas/PortingOrderEndUser"},"documents":{"$ref":"#/components/schemas/PortingOrderDocuments"},"activation_settings":{"type":"object","properties":{"foc_datetime_requested":{"type":"string","format":"date-time","description":"ISO 8601 formatted Date/Time requested for the FOC date","example":"2021-03-19T10:07:15.527Z"}}},"phone_number_configuration":{"$ref":"#/components/schemas/PortingOrderPhoneNumberConfiguration"},"requirement_group_id":{"type":"string","format":"uuid","description":"If present, we will read the current values from the specified Requirement Group into the Documents and Requirements for this Porting Order. Note that any future changes in the Requirement Group would have no impact on this Porting Order. We will return an error if a specified Requirement Group conflicts with documents or requirements in the same request.","example":"DE748D99-06FA-4D90-9F9A-F4B62696BADA"},"requirements":{"type":"array","description":"List of requirements for porting numbers. ","items":{"$ref":"#/components/schemas/UpdatePortingOrderRequirement"}},"user_feedback":{"$ref":"#/components/schemas/PortingOrderUserFeedback"},"webhook_url":{"type":"string","format":"uri"},"customer_reference":{"type":"string"},"customer_group_reference":{"type":"string"},"messaging":{"type":"object","properties":{"enable_messaging":{"type":"boolean","description":"Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging capabilities will stay with their current provider.","example":true}}}}},"UpdatePortingOrderRequirement":{"type":"object","description":"Specifies a value for a requirement on the Porting Order.","required":["field_value","requirement_type_id"],"properties":{"field_value":{"type":"string","description":"identifies the document or provides the text value that satisfies this requirement","example":"9787fb5f-cbe5-4de4-b765-3303774ee9fe"},"requirement_type_id":{"type":"string","description":"Identifies the requirement type that the `field_value` fulfills","example":"59b0762a-b274-4f76-ac32-4d5cf0272e66"}}},"UpdatePronunciationDictRequest":{"type":"object","description":"Request body for updating a pronunciation dictionary. At least one field must be provided.","minProperties":1,"properties":{"name":{"type":"string","description":"Updated dictionary name.","minLength":1,"maxLength":255,"example":"Updated Brand Names"},"items":{"type":"array","description":"Updated list of pronunciation items (alias or phoneme type).","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/PronunciationDictItem"}}}},"UpdateQueueRequest":{"type":"object","title":"Update Queue Request","required":["max_size"],"properties":{"max_size":{"description":"The maximum number of calls allowed in the queue.","type":"integer","minimum":1,"example":200}},"example":{"max_size":200}},"UpdateQueuedCallRequest":{"type":"object","title":"Update Queued Call Request","properties":{"keep_after_hangup":{"description":"Whether the call should remain in queue after hangup.","example":true,"type":"boolean"}},"example":{"keep_after_hangup":true}},"UpdateRegulatoryRequirement":{"properties":{"requirement_id":{"type":"string","format":"uuid","description":"Unique id for a requirement.","example":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576"},"field_value":{"type":"string","description":"The value of the requirement. For address and document requirements, this should be the ID of the resource. For textual, this should be the value of the requirement.","example":"45f45a04-b4be-4592-95b1-9306b9db2b21"}},"type":"object"},"UpdateSharedToolRequest":{"properties":{"type":{"title":"Type","type":"string"},"display_name":{"title":"Display Name","type":"string"},"function":{"title":"Function","additionalProperties":true,"type":"object"},"retrieval":{"title":"Retrieval","additionalProperties":true,"type":"object"},"handoff":{"title":"Handoff","additionalProperties":true,"type":"object"},"invite":{"title":"Invite","additionalProperties":true,"type":"object"},"webhook":{"title":"Webhook","additionalProperties":true,"type":"object"},"pay":{"$ref":"#/components/schemas/PayToolParams","title":"Pay"},"client_side_tool":{"title":"Client Side Tool","additionalProperties":true,"type":"object"},"update_dynamic_variables":{"$ref":"#/components/schemas/UpdateDynamicVariablesToolParams","title":"Update Dynamic Variables"},"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 <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).","enum":["disabled","unrestricted","internal"]},"default_on_hold_comfort_noise_enabled":{"type":"boolean","default":false,"description":"When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout."},"dtmf_type":{"$ref":"#/components/schemas/DtmfType"},"encode_contact_header_enabled":{"type":"boolean","default":false,"description":"Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios."},"encrypted_media":{"$ref":"#/components/schemas/EncryptedMedia"},"onnet_t38_passthrough_enabled":{"type":"boolean","default":false,"description":"Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings."},"ios_push_credential_id":{"$ref":"#/components/schemas/ConnectionIosPushCredentialId"},"android_push_credential_id":{"$ref":"#/components/schemas/ConnectionAndroidPushCredentialId"},"webhook_event_url":{"type":"string","format":"uri","description":"The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.","example":"https://example.com"},"webhook_event_failover_url":{"type":["string","null"],"format":"uri","description":"The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.","example":"https://failover.example.com","default":""},"webhook_api_version":{"type":"string","description":"Determines which webhook format will be used, Telnyx API v1 or v2.","enum":["1","2"],"example":"1","default":"1"},"webhook_timeout_secs":{"type":["integer","null"],"minimum":0,"maximum":30,"description":"Specifies how many seconds to wait before timing out a webhook.","example":25,"default":null},"call_cost_in_webhooks":{"type":"boolean","description":"Specifies if call cost webhooks should be sent for this connection.","default":false},"tags":{"type":"array","items":{"type":"string"},"description":"Tags associated with the connection.","example":["tag1","tag2"]},"rtcp_settings":{"$ref":"#/components/schemas/ConnectionRtcpSettings"},"inbound":{"$ref":"#/components/schemas/UacInboundRequest"},"outbound":{"$ref":"#/components/schemas/UacOutbound"},"noise_suppression":{"$ref":"#/components/schemas/ConnectionNoiseSuppression"},"noise_suppression_details":{"$ref":"#/components/schemas/ConnectionNoiseSuppressionDetails"},"jitter_buffer":{"$ref":"#/components/schemas/ConnectionJitterBuffer"},"internal_uac_settings":{"$ref":"#/components/schemas/UacInternalSettings"},"external_uac_settings":{"$ref":"#/components/schemas/UacExternalSettings"}},"example":{"active":true,"password":"my123secure456password789","user_name":"myusername123","anchorsite_override":"Latency","connection_name":"my name","sip_uri_calling_preference":"disabled","default_on_hold_comfort_noise_enabled":false,"dtmf_type":"RFC 2833","encode_contact_header_enabled":true,"encrypted_media":"SRTP","onnet_t38_passthrough_enabled":true,"ios_push_credential_id":"ec0c8e5d-439e-4620-a0c1-9d9c8d02a836","android_push_credential_id":"06b09dfd-7154-4980-8b75-cebf7a9d4f8e","webhook_event_url":"https://example.com","webhook_event_failover_url":"https://failover.example.com","webhook_api_version":"1","webhook_timeout_secs":25,"call_cost_in_webhooks":false,"tags":["tag1","tag2"],"rtcp_settings":{"port":"rtcp-mux","capture_enabled":true,"report_frequency_secs":10},"inbound":{"ani_number_format":"+E.164","dnis_number_format":"+e164","codecs":["G722"],"channel_limit":10,"generate_ringback_tone":true,"isup_headers_enabled":true,"prack_enabled":true,"sip_compact_headers_enabled":true,"timeout_1xx_secs":10,"timeout_2xx_secs":20,"shaken_stir_enabled":true,"simultaneous_ringing":"disabled"},"outbound":{"call_parking_enabled":true,"ani_override":"always","channel_limit":10,"instant_ringback_enabled":true,"generate_ringback_tone":true,"localization":"US","t38_reinvite_source":"customer","outbound_voice_profile_id":"1293384261075731499"},"noise_suppression":"both","noise_suppression_details":{"engine":"deep_filter_net","attenuation_limit":80},"jitter_buffer":{"enable_jitter_buffer":true,"jitterbuffer_msec_min":60,"jitterbuffer_msec_max":200},"internal_uac_settings":{"destination_uri":"14155550123@acme.sip.telnyx.com"},"external_uac_settings":{"username":"ext8492","password":"testtesttest","proxy":"sip-pbx.acme.example","auth_username":"auth8492","from_user":"8492","outbound_proxy":"outbound.sip-pbx.acme.example:5061","expiration_sec":600,"transport":"TLS","user_agent":null}},"description":"Parameters that can be updated in a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — 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\na public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly,\nis.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with\nwith links generated by Telnyx. The use of custom links can improve branding and message\ndeliverability.\n\nTo disable this feature, set the object field to `null`.\n","properties":{"domain":{"type":"string","example":"acct.fyi","description":"One of the domains provided by the Telnyx URL shortener service.\n"},"prefix":{"type":"string","example":"","description":"Optional prefix that can be used to identify your brand, and will appear in the Telnyx generated URLs after the domain name.\n"},"replace_blacklist_only":{"type":"boolean","example":true,"description":"Use the link replacement tool only for links that are specifically blacklisted by Telnyx.\n"},"send_webhooks":{"type":"boolean","example":false,"description":"Receive webhooks for when your replaced links are clicked. Webhooks are sent to the webhooks on the messaging profile.\n"}},"example":{"domain":"example.ex","prefix":"","replace_blacklist_only":true,"send_webhooks":false}},"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`\npoints to one of the following channel ids;\n---\nverify_channel_type | verify_channel_id\n------------------- | -----------------\nsms, psd2           | messaging_id\ncall, flashcall     | call_control_id\n---\n","type":"string","enum":["sms","psd2","call","flashcall"]},"verify_channel_id":{"type":"string","format":"uuid","example":"5b7a8365-91f3-420a-befc-498d1efd6c20"},"created_at":{"type":"string","format":"date-time","example":"2021-07-08T00:00:41.000000+00:00"},"updated_at":{"type":"string","format":"date-time","example":"2021-07-08T00:00:41.000000+00:00"},"rate":{"type":"string","example":"0.002","description":"Currency amount per billing unit used to calculate the Telnyx billing costs"},"rate_measured_in":{"type":"string","example":"number of occurrences","description":"Billing unit used to calculate the Telnyx billing costs"},"verify_usage_fee":{"type":"string","example":"0.002","description":"Currency amount for Verify Usage Fee"},"currency":{"type":"string","example":"USD","description":"Telnyx account currency used to describe monetary values, including billing costs"},"record_type":{"type":"string","example":"verification_detail_record","default":"verification_detail_record"}},"required":["record_type"]},"VerifyProfileCallResponse":{"title":"VerifyProfileCallResponse","type":"object","properties":{"messaging_template_id":{"example":"0abb5b4f-459f-445a-bfcd-488998b7572d","format":"uuid","type":"string","description":"The message template identifier selected from /verify_profiles/templates"},"app_name":{"example":"Example Secure App","description":"The name that identifies the application requesting 2fa in the verification message.","type":"string","pattern":"^[A-Za-z0-9 -]{1,30}$"},"code_length":{"example":6,"type":"integer","description":"The length of the verify code to generate.","default":5},"whitelisted_destinations":{"description":"Enabled country destinations to send verification codes. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]`, all destinations will be allowed. **Conditionally required:** this field must be provided when your organization is configured to require explicit whitelisted destinations; otherwise it is optional.","example":["US","CA"],"type":"array","items":{"description":"ISO 3166-1 alpha-2 country code","type":"string","pattern":"^[A-Z]{2}$"}},"default_verification_timeout_secs":{"example":300,"description":"For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity.","type":"integer","default":300}}},"VerifyProfileFlashcallResponse":{"title":"VerifyProfileFlashcallResponse","type":"object","properties":{"app_name":{"example":"Example Secure App","description":"The name that identifies the application requesting 2fa in the verification message.","type":"string","pattern":"^[A-Za-z0-9 -]{1,30}$"},"default_verification_timeout_secs":{"example":300,"description":"For every request that is initiated via this Verify profile, this sets the number of seconds before a verification request code expires. Once the verification request expires, the user cannot use the code to verify their identity.","type":"integer","default":300}}},"VerifyProfileMessageTemplateResponse":{"title":"VerifyProfileResponse","type":"object","properties":{"id":{"example":"0abb5b4f-459f-445a-bfcd-488998b7572d","format":"uuid","type":"string"},"text":{"example":"Your {{app_name}} verification code is: {{code}}.","type":"string"}}},"VerifyProfileResponse":{"title":"VerifyProfileResponse","type":"object","properties":{"id":{"example":"12ade33a-21c0-473b-b055-b3c836e1c292","format":"uuid","type":"string"},"name":{"example":"Test Profile","type":"string"},"webhook_url":{"type":"string","example":"http://example.com/webhook"},"webhook_failover_url":{"type":"string","example":"http://example.com/webhook/failover"},"daily_spend_limit_enabled":{"type":"boolean","default":false,"description":"Whether the daily spend limit is enforced for this verify profile.","example":true},"daily_spend_limit":{"type":"number","minimum":0,"description":"The maximum daily spend allowed on this verify profile, in USD.","example":100},"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.<br /><br />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.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />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.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />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.<br /><br />If none is provided, one will be generated for you.<br /><br />This value can not be patched once the VXC has bene provisioned.","example":"169.254.0.4"}}}]},"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.<VoiceId>` (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.<VoiceId>. (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.<ModelId>.<VoiceId>` (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\": \"<secret_id>\"}`. 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.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`.\n- **Fish Audio:** Use `FishAudio.<ModelId>.<VoiceId>` (e.g., `FishAudio.s2.1-pro.<reference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.<ModelId>.<VoiceId>` (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.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.<VoiceId>` (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,"maximum":2,"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,"maximum":1,"description":"Top-p (nucleus) sampling parameter — cumulative probability cutoff for token selection. Default: 1.0."},"repetition_penalty":{"type":"number","format":"float","minimum":1,"maximum":2,"description":"Repetition penalty to reduce repeated patterns in generated audio. Default: 1.05."},"max_new_tokens":{"type":"integer","minimum":100,"maximum":4096,"description":"Maximum number of tokens to generate. Default: 2048."},"provider":{"type":"string","enum":["telnyx","minimax","Telnyx","Minimax"],"default":"telnyx","description":"Voice synthesis provider. `telnyx` uses the Qwen3TTS model; `minimax` uses the Minimax speech models. Case-insensitive. Defaults to `telnyx`."}},"example":{"name":"friendly-narrator","text":"Hello, welcome to our service.","prompt":"Speak in a warm, friendly tone","language":"Auto","provider":"telnyx"}},"VoiceDesignResponse":{"type":"object","description":"Response envelope for a single voice design with full version detail.","properties":{"data":{"$ref":"#/components/schemas/VoiceDesignData"}},"example":{"data":{"record_type":"voice_design","id":"550e8400-e29b-41d4-a716-446655440000","name":"friendly-narrator","version":1,"text":"Hello, welcome.","prompt":"Speak in a warm tone","voice_sample_size":48000,"version_created_at":"2024-01-01T00:00:00Z","created_at":"2024-01-01T00:00:00Z","updated_at":"2024-01-01T00:00:00Z","provider":"Telnyx","provider_supported_models":["Qwen3TTS"],"provider_voice_id":"550e8400-e29b-41d4-a716-446655440000"}}},"VoiceDesignSummaryData":{"type":"object","description":"A summarized voice design object (without version-specific fields).","properties":{"record_type":{"type":"string","enum":["voice_design"],"description":"Identifies the resource type."},"id":{"type":"string","format":"uuid","description":"Unique identifier for the voice design."},"name":{"type":"string","description":"Name of the voice design."},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the voice design was first created."},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the voice design was last updated."},"provider":{"type":["string","null"],"enum":["telnyx","minimax","Telnyx","Minimax",null],"description":"Voice synthesis provider used for this design."},"provider_supported_models":{"type":"array","items":{"type":"string"},"description":"List of TTS model identifiers supported by this design's provider."}}},"VoiceDesignUpdateRequest":{"type":"object","description":"Request body for renaming a voice design.","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"New name for the voice design."}},"example":{"name":"updated-narrator"}},"VoiceDesignUpdatedResponse":{"type":"object","description":"Response envelope for a voice design after a rename operation (no version-specific fields).","properties":{"data":{"$ref":"#/components/schemas/VoiceDesignSummaryData"}},"example":{"data":{"record_type":"voice_design","id":"550e8400-e29b-41d4-a716-446655440000","name":"updated-narrator","created_at":"2024-01-01T00:00:00Z","updated_at":"2024-01-02T00:00:00Z"}}},"VoiceSdkCallReport":{"type":"object","description":"A raw call report stats JSON payload. The schema is intentionally permissive because Voice SDK clients can add fields over time.","properties":{"call_id":{"type":"string","format":"uuid","description":"Unique call identifier."},"call_report_id":{"type":"string","description":"User-scoped storage grouping identifier derived from the authenticated user. This is not a unique per-call report identifier and may be shared by multiple calls for the same user."},"user_id":{"type":"string","format":"uuid","description":"Authenticated user that owns the call report."},"organization_id":{"type":"string","format":"uuid","description":"Organization associated with the stored call report when provided by the Voice SDK reporting path."},"voice_sdk_id":{"type":"string","description":"Voice SDK instance identifier."},"voice_sdk_session_id":{"type":"string","description":"Voice SDK session correlation identifier used to group stats segments for the same SDK session."},"voice_sdk_id_decoded":{"type":"object","additionalProperties":true,"description":"Decoded Voice SDK identifier metadata emitted by voice-sdk-proxy when available."},"user_agent":{"type":"string","description":"Voice SDK user agent string reported by the client. This is the preferred SDK/platform/version dimension when present."},"version":{"type":"string","description":"Legacy SDK version value when the client reports one separately from the user agent."},"telnyx_session_id":{"type":"string","description":"Telnyx RTC session identifier for correlating the report with Voice SDK signaling and media-session logs."},"telnyx_leg_id":{"type":"string","description":"Telnyx call leg identifier for correlating the report with call-control, SIP, and media troubleshooting data."},"summary":{"type":"object","additionalProperties":true,"description":"High-level call metadata."},"stats":{"$ref":"#/components/schemas/VoiceSdkCallReportStats"},"logs":{"$ref":"#/components/schemas/VoiceSdkCallReportLogs"},"flushReason":{"type":"object","additionalProperties":true,"description":"Reason the SDK flushed this stats report segment, for example an intermediate socket-close flush."},"segment":{"type":"integer","description":"Zero-based stats segment index when the SDK sends segmented or intermediate reports."},"stored_at":{"type":"string","format":"date-time","description":"Time when the call report was stored."},"created_at":{"type":"string","format":"date-time","description":"Creation timestamp when present."}},"additionalProperties":true},"VoiceSdkCallReportListResponse":{"type":"object","description":"Paginated raw Voice SDK call report stats payloads as stored by voice-sdk-debug.","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VoiceSdkCallReport"}},"meta":{"$ref":"#/components/schemas/voice-sdk-debug_PaginationMeta"}},"required":["data","meta"]},"VoiceSdkCallReportLogEntry":{"type":"object","description":"A raw Voice SDK log entry. Additional SDK-specific fields may be present.","properties":{"timestamp":{"type":"string","format":"date-time","description":"Time when the log entry was emitted."},"level":{"type":"string","description":"Log level emitted by the SDK.","enum":["debug","info","warn","error"]},"message":{"type":"string","description":"Log message."},"context":{"type":"object","additionalProperties":true,"description":"Raw structured context attached to the log entry."}},"additionalProperties":true},"VoiceSdkCallReportLogs":{"description":"Raw logs payload emitted by the Voice SDK and stored without normalization. Live responses commonly return an array of log entries, but object-shaped log payloads are also allowed for compatibility.","oneOf":[{"type":"array","description":"Raw log entries emitted by the Voice SDK.","items":{"$ref":"#/components/schemas/VoiceSdkCallReportLogEntry"}},{"type":"object","description":"Raw logs object emitted by the Voice SDK when logs are grouped under an entries field.","properties":{"entries":{"type":"array","description":"Raw log entries when the SDK groups logs under an entries field.","items":{"$ref":"#/components/schemas/VoiceSdkCallReportLogEntry"}}},"additionalProperties":true}]},"VoiceSdkCallReportStats":{"description":"Raw stats payload emitted by the Voice SDK and stored without normalization. The exact shape can vary by SDK platform and version. Live responses commonly return an array of interval snapshots, but object-shaped stats payloads are also allowed for compatibility.","oneOf":[{"type":"array","description":"Raw interval stats snapshots emitted by the Voice SDK.","items":{"type":"object","additionalProperties":true,"description":"Raw stats snapshot. It may include WebRTC RTCStatsReport-style entries and audio, connection, ICE, or transport metrics."}},{"type":"object","description":"Raw stats object emitted by the Voice SDK.","properties":{"audio":{"type":"object","additionalProperties":true,"description":"Raw audio stats such as inbound/outbound packet, byte, jitter, packet-loss, bitrate, and audio-level metrics."},"connection":{"type":"object","additionalProperties":true,"description":"Raw connection stats such as round-trip time, packets, and bytes sent or received."},"ice":{"type":"object","additionalProperties":true,"description":"Raw ICE candidate-pair information, including selected pair, local/remote candidates, state, and nomination data when provided by the SDK."},"transport":{"type":"object","additionalProperties":true,"description":"Raw transport stats such as ICE state, DTLS state, SRTP cipher, TLS version, and selected-candidate-pair changes."}},"additionalProperties":true}]},"VoiceSdkCallReportV2Error":{"type":"object","description":"Standard Telnyx API v2 error object.","properties":{"code":{"type":"string","description":"Telnyx error code.","example":"10015"},"title":{"type":"string","description":"Short, human-readable error title.","example":"Bad Request"},"detail":{"type":"string","description":"Human-readable details about the error.","example":"Missing required query parameter: call_id."},"source":{"type":"object","description":"Reference to the request field that caused the error.","properties":{"parameter":{"type":"string","description":"Query parameter that caused the error.","example":"call_id"},"pointer":{"type":"string","description":"JSON pointer to the request body field that caused the error."}},"additionalProperties":true},"meta":{"type":"object","description":"Additional error metadata.","additionalProperties":true,"properties":{"url":{"type":"string","format":"uri","description":"Link to error documentation.","example":"https://developers.telnyx.com/docs/overview/errors/10015"}}}},"required":["code","title","detail"],"additionalProperties":true},"VoiceSdkCallReportV2ErrorResponse":{"type":"object","description":"Standard Telnyx API v2 error response envelope.","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/VoiceSdkCallReportV2Error"}}},"required":["errors"],"additionalProperties":true},"VoiceSdkCallReportsResponse":{"type":"array","description":"Raw Voice SDK call report stats payloads as stored by voice-sdk-debug.","items":{"$ref":"#/components/schemas/VoiceSdkCallReport"}},"VoiceSettings":{"properties":{"voice":{"type":"string","description":"The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call."},"voice_speed":{"type":"number","default":1,"description":"The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine."},"api_key_ref":{"type":"string","description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration."},"temperature":{"type":"number","default":0.5,"description":"Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs."},"similarity_boost":{"type":"number","default":0.75,"description":"Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs."},"use_speaker_boost":{"type":"boolean","default":true,"description":"Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs."},"style":{"type":"number","default":0,"description":"Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs."},"speed":{"type":"number","default":1,"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,"multipleOf":0.1,"default":1,"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 <value>` 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."}}},"WhatsappCallingSettingsData":{"type":"object","properties":{"record_type":{"type":"string","example":"whatsapp_calling_settings"},"phone_number":{"type":"string","description":"Phone number in E164 format"},"updated_at":{"type":"string","format":"date-time"},"enabled":{"type":"boolean","description":"True if calling is enabled on the phone"}}},"WhatsappContact":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"object","properties":{"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"},"country":{"type":"string"},"country_code":{"type":"string"},"type":{"type":"string"}}}},"birthday":{"type":"string"},"emails":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"type":{"type":"string"}}}},"name":{"type":"string"},"org":{"type":"object","properties":{"company":{"type":"string"},"department":{"type":"string"},"title":{"type":"string"}}},"phones":{"type":"array","items":{"type":"object","properties":{"phone":{"type":"string","x-format":"E+164"},"type":{"type":"string"},"wa_id":{"type":"string"}}}},"urls":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url"},"type":{"type":"string"}}}}}},"WhatsappConversationWindowData":{"type":"object","properties":{"window_active":{"type":"boolean","description":"Whether the 24-hour conversation window is currently open","example":true},"window_expires_at":{"type":["string","null"],"format":"date-time","description":"When the window closes. Null if no active window.","example":"2026-06-30T16:00:00Z"},"last_user_message_at":{"type":"string","format":"date-time","description":"Timestamp of the last inbound message that opened the window","example":"2026-06-29T15:53:00Z"},"window_type":{"type":"string","description":"Window type. Currently always 24h when present.","example":"24h"}}},"WhatsappConversationalComponent":{"type":"object","properties":{"record_type":{"type":"string","example":"whatsapp_conversational_component"},"phone_number":{"type":"string","description":"Phone number in E164 format"},"ice_breakers":{"type":"array","description":"List of ice breakers","items":{"type":"string"}},"commands":{"type":"array","description":"List of commands","items":{"type":"object","properties":{"command":{"type":"string"},"description":{"type":"string"}}}}}},"WhatsappCreateTemplateRequest":{"type":"object","required":["waba_id","name","category","language","components"],"properties":{"waba_id":{"type":"string","description":"The WhatsApp Business Account ID."},"name":{"type":"string","description":"Template name. Lowercase letters, numbers, and underscores only."},"category":{"type":"string","enum":["MARKETING","UTILITY","AUTHENTICATION"],"description":"Template category: AUTHENTICATION, UTILITY, or MARKETING."},"language":{"type":"string","description":"Template language code (e.g. en_US, es, pt_BR)."},"components":{"type":"array","description":"Template components defining message structure. Passed through to Meta Graph API. Templates with variables must include example values. Supports HEADER, BODY, FOOTER, BUTTONS, CAROUSEL and any future Meta component types.","items":{"oneOf":[{"$ref":"#/components/schemas/WhatsappTemplateHeaderComponent"},{"$ref":"#/components/schemas/WhatsappTemplateBodyComponent"},{"$ref":"#/components/schemas/WhatsappTemplateFooterComponent"},{"$ref":"#/components/schemas/WhatsappTemplateButtonsComponent"},{"$ref":"#/components/schemas/WhatsappTemplateCarouselComponent"}],"description":"A template component. Additional Meta component types not listed here are also accepted."}}}},"WhatsappInteractive":{"type":"object","properties":{"type":{"type":"string","enum":["cta_url","list","carousel","button","location_request_message"]},"action":{"type":"object","properties":{"name":{"type":"string"},"button":{"type":"string"},"buttons":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["reply"]},"reply":{"type":"object","properties":{"title":{"type":"string","description":"button label, 20 character maximum"},"id":{"type":"string","description":"unique identifier for each button, 256 character maximum"}}}}}},"catalog_id":{"type":"string"},"product_retailer_id":{"type":"string"},"sections":{"type":"array","items":{"type":"object","properties":{"product_items":{"type":"array","items":{"type":"object","properties":{"product_retailer_id":{"type":"string"}}}},"rows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"arbitrary string identifying the row, 200 character maximum"},"title":{"type":"string","description":"row title, 24 character maximum"},"description":{"type":"string","description":"row description, 72 character maximum"}}}},"title":{"type":"string","description":"section title, 24 character maximum"}}}},"mode":{"type":"string"},"parameters":{"type":"object","properties":{"display_text":{"type":"string","description":"button label text, 20 character maximum"},"url":{"type":"string","format":"url","description":"button URL to load when tapped by the user"}}},"cards":{"type":"array","items":{"type":"object","properties":{"card_index":{"type":"integer","description":"unique index for each card (0-9)"},"type":{"type":"string","enum":["cta_url"]},"header":{"type":"object","properties":{"type":{"type":"string","enum":["image","video"]},"image":{"$ref":"#/components/schemas/WhatsappMedia"},"video":{"$ref":"#/components/schemas/WhatsappMedia"}}},"body":{"type":"object","properties":{"text":{"type":"string","description":"160 character maximum, up to 2 line breaks"}}},"action":{"type":"object","properties":{"product_retailer_id":{"type":"string","description":"the unique retailer ID of the product"},"catalog_id":{"type":"string","description":"the unique ID of the catalog"}}}}}}}},"body":{"type":"object","properties":{"text":{"type":"string","description":"body text, 1024 character maximum"}}},"footer":{"type":"object","properties":{"text":{"type":"string","description":"footer text, 60 character maximum"}}},"header":{"type":"object","properties":{"document":{"$ref":"#/components/schemas/WhatsappMedia"},"image":{"$ref":"#/components/schemas/WhatsappMedia"},"video":{"$ref":"#/components/schemas/WhatsappMedia"},"text":{"type":"string","description":"header text, 60 character maximum"},"sub_text":{"type":"string"}}}}},"WhatsappLocation":{"type":"object","properties":{"latitude":{"type":"string"},"longitude":{"type":"string"},"name":{"type":"string"},"address":{"type":"string"}}},"WhatsappMedia":{"type":"object","properties":{"link":{"type":"string","description":"media URL","format":"url","example":"http://example.com/media.jpg"},"caption":{"type":"string","description":"media caption"},"filename":{"type":"string","description":"file name with extension"},"voice":{"type":"boolean","description":"true if voice message"}}},"WhatsappMessage":{"required":["from","to","whatsapp_message"],"type":"object","properties":{"from":{"type":"string","description":"Phone number in +E.164 format associated with Whatsapp account","example":"+13125551234"},"to":{"type":"string","description":"Phone number in +E.164 format","example":"+13125551234"},"whatsapp_message":{"$ref":"#/components/schemas/WhatsappMessageContent"},"type":{"type":"string","description":"Message type - must be set to \"WHATSAPP\"","example":"WHATSAPP","enum":["WHATSAPP"]},"webhook_url":{"description":"The URL where webhooks related to this message will be sent.","type":"string","format":"url"},"messaging_profile_id":{"description":"Messaging profile ID - required if the 'from' number is not SMS-enabled","type":"string","format":"uuid"}}},"WhatsappMessageContent":{"type":"object","properties":{"audio":{"$ref":"#/components/schemas/WhatsappMedia"},"document":{"$ref":"#/components/schemas/WhatsappMedia"},"image":{"$ref":"#/components/schemas/WhatsappMedia"},"sticker":{"$ref":"#/components/schemas/WhatsappMedia"},"video":{"$ref":"#/components/schemas/WhatsappMedia"},"interactive":{"$ref":"#/components/schemas/WhatsappInteractive"},"location":{"$ref":"#/components/schemas/WhatsappLocation"},"contacts":{"type":"array","items":{"$ref":"#/components/schemas/WhatsappContact"}},"reaction":{"$ref":"#/components/schemas/WhatsappReaction"},"biz_opaque_callback_data":{"type":"string","description":"custom data to return with status update"},"type":{"type":"string","enum":["audio","document","image","sticker","video","interactive","location","template","reaction","contacts","text"]},"text":{"type":"object","description":"Text message content. Can only be sent within a 24-hour customer service window.","properties":{"body":{"type":"string","description":"The text message body.","example":"Hello from Telnyx!"},"preview_url":{"type":"boolean","description":"Whether to show a URL preview in the message.","default":false}},"required":["body"]},"template":{"type":"object","description":"Template message object. Provide either template_id or name + language to identify the template.","properties":{"template_id":{"type":"string","description":"Telnyx template ID (the id field from template list/get responses). When provided, name and language are resolved automatically.","example":"019cd44b-3a1c-781b-956e-bd33e9fd2ac6"},"name":{"type":"string","description":"Template name as registered with Meta. Required unless template_id is provided.","example":"order_confirmation"},"language":{"type":"object","description":"Template language. Required unless template_id is provided.","properties":{"policy":{"type":"string","example":"deterministic"},"code":{"type":"string","description":"Language code (e.g. en_US)","example":"en_US"}},"required":["code"]},"components":{"type":"array","description":"Template parameter values for header, body, and button components.","items":{"type":"object","properties":{"type":{"type":"string","enum":["header","body","button"]},"sub_type":{"type":"string","enum":["quick_reply","url"]},"index":{"type":"integer","description":"Button index (required for button components)"},"parameters":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text","image","video","document","currency","date_time"]},"text":{"type":"string"}}}}}}}}}}},"WhatsappMessageEcho":{"type":"object","required":["record_type","id","event_type","occurred_at","payload"],"properties":{"record_type":{"type":"string","enum":["event"]},"id":{"type":"string","format":"uuid"},"event_type":{"type":"string","enum":["message.echo"]},"occurred_at":{"type":"string","format":"date-time"},"payload":{"$ref":"#/components/schemas/WhatsappMessageEchoPayload"}}},"WhatsappMessageEchoEvent":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WhatsappMessageEcho"}}},"WhatsappMessageEchoPayload":{"type":"object","required":["record_type","direction","origin","id","type","organization_id","messaging_profile_id","from","to","body","cost","errors"],"properties":{"record_type":{"type":"string","enum":["message"]},"direction":{"type":"string","enum":["outbound"],"description":"Indicates that the business sent the message to the WhatsApp user."},"origin":{"type":"string","enum":["whatsapp_business_app"],"description":"Identifies the WhatsApp Business app as the source of the message."},"id":{"type":"string","format":"uuid","description":"Telnyx identifier for the mirrored message."},"type":{"type":"string","enum":["WHATSAPP"]},"organization_id":{"type":"string","format":"uuid"},"messaging_profile_id":{"type":"string","format":"uuid"},"from":{"type":"object","required":["phone_number"],"properties":{"phone_number":{"type":"string","description":"Coexistence-enabled business phone number in E.164 format.","x-format":"address"},"carrier":{"type":"string"},"line_type":{"type":"string"}}},"to":{"type":"string","description":"WhatsApp user who received the Business app message.","x-format":"address"},"body":{"type":"object","description":"Mirrored WhatsApp message content. The content property matches the value of `type`.","additionalProperties":true,"required":["id","foreign_id","timestamp","type"],"properties":{"from":{"type":"string","description":"WhatsApp user who received the message."},"from_user_id":{"type":"string","description":"Opaque recipient identifier when Meta does not supply a phone number."},"id":{"type":"string","format":"uuid","description":"Telnyx identifier for the mirrored message."},"foreign_id":{"type":"string","description":"Meta WhatsApp message identifier, also known as a wamid."},"timestamp":{"type":"string","description":"Unix timestamp supplied by Meta."},"type":{"type":"string","description":"WhatsApp message content type."}}},"tags":{"type":"array","items":{"type":"string"}},"cost":{"type":"object","description":"No charge is created for a Business app message echo.","properties":{"amount":{"type":["string","null"]},"currency":{"type":["string","null"]}}},"received_at":{"type":"string","format":"date-time"},"webhook_url":{"type":["string","null"],"format":"uri"},"webhook_failover_url":{"type":["string","null"],"format":"uri"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}}}},"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}}}}},"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"}}},"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`.<br /><br />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`.<br /><br />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). <br/>\nMobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber  Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home  Location Register (HLR) or the Visitor Location Register (VLR).\n","readOnly":true,"example":"081932214823362973"},"imei":{"type":"string","description":"The International Mobile Equipment Identity (or IMEI) is a number, usually unique, that identifies the device currently being used connect to the network.","readOnly":true,"example":"490154203237518"},"mobile_country_code":{"type":"string","description":"It's a three decimal digit that identifies a country.<br/><br/>\nThis code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.","readOnly":true,"example":"310"},"mobile_network_code":{"type":"string","description":"It's a two to three decimal digits that identify a network.<br/><br/>\n This code is commonly seen joined with a Mobile Country Code (MCC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code.","readOnly":true,"example":"410"},"start_time":{"type":"string","description":"ISO 8601 formatted date-time indicating when the session started.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"stop_time":{"type":"string","description":"ISO 8601 formatted date-time indicating when the session ended.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the record was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"last_seen":{"type":"string","description":"ISO 8601 formatted date-time indicating when the last heartbeat to the device was successfully recorded.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"apn":{"type":"string","description":"The Access Point Name (APN) identifies the packet data network that a mobile data user wants to communicate with.","readOnly":true,"example":"data00.telnyx"},"ipv4":{"type":"string","description":"The SIM's address in the currently connected network. This IPv4 address is usually obtained dynamically, so it may vary according to the location or new connections.\n","readOnly":true,"example":"192.168.0.0"},"ipv6":{"type":"string","description":"The SIM's address in the currently connected network. This IPv6 address is usually obtained dynamically, so it may vary according to the location or new connections.\n","readOnly":true,"example":"2001:cdba:0000:0000:0000:0000:3257:9652"},"radio_access_technology":{"type":"string","description":"The radio technology the SIM card used during the session.","readOnly":true,"example":"LTE"},"state":{"type":"string","description":"The state of the SIM card after when the session happened.","readOnly":true,"example":"provisioned"},"cell_id":{"type":"string","description":"The cell ID to which the SIM connected.","readOnly":true,"example":"311210-6813"}}},"WirelessCost":{"type":"object","properties":{"amount":{"type":"string","description":"Final cost. Cost is calculated as rate * unit","example":"0.1"},"currency":{"type":"string","description":"Currency of the rate and cost","example":"USD","enum":["AUD","CAD","EUR","GBP","USD"]}}},"WirelessPcrfService":{"type":"object","properties":{"id":{"type":"string","description":"The service identifier.","example":"service_123"},"name":{"type":"string","description":"The name of the service.","example":"Netflix"},"group":{"type":"string","description":"The group the service belongs to.","example":"Streaming"},"resource_type":{"type":"string","readOnly":true,"example":"wireless_pcrf_service"}}},"WirelessRate":{"type":"object","properties":{"amount":{"type":"string","description":"Rate from which cost is calculated","example":"0.1"},"currency":{"type":"string","description":"Currency of the rate and cost","example":"USD","enum":["AUD","CAD","EUR","GBP","USD"]}}},"X402PaymentRequirements":{"type":"object","description":"x402 protocol v2 payment requirements. Contains all information needed to construct and sign a payment authorization.","properties":{"x402Version":{"type":"integer","enum":[2],"description":"x402 protocol version. Currently always 2."},"resource":{"type":"object","description":"The resource being paid for. Included in the payment signature.","properties":{"url":{"type":"string","description":"Canonical URL of the payment resource."},"description":{"type":"string","description":"Human-readable description of the payment."},"mimeType":{"type":"string","description":"MIME type of the resource."}}},"accepts":{"type":"array","description":"Accepted payment schemes. Currently only the `exact` EVM scheme is supported.","items":{"type":"object","properties":{"scheme":{"type":"string","description":"Payment scheme (e.g. \"exact\")."},"network":{"type":"string","description":"Blockchain network identifier in CAIP-2 format (e.g. \"eip155:8453\" for Base)."},"amount":{"type":"string","description":"Amount in the token's smallest unit."},"asset":{"type":"string","description":"Token contract address (e.g. USDC on Base)."},"payTo":{"type":"string","description":"Recipient wallet address."},"maxTimeoutSeconds":{"type":"integer","description":"Maximum time in seconds before the payment authorization expires."},"extra":{"type":"object","description":"Additional scheme-specific parameters including EIP-712 domain info and the facilitator URL.","properties":{"quoteId":{"type":"string"},"facilitatorUrl":{"type":"string"},"name":{"type":"string","description":"EIP-712 domain name (e.g. \"USD Coin\")."},"version":{"type":"string","description":"EIP-712 domain version."}}}}}}}},"X402QuoteRequest":{"type":"object","required":["amount_usd"],"properties":{"amount_usd":{"type":"string","description":"Amount in USD to fund (minimum 5.00, maximum 10000.00).","example":"50.00"}}},"X402QuoteResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Unique quote identifier. Use this to settle the payment."},"record_type":{"type":"string","enum":["quote"]},"amount_usd":{"type":"string","description":"The quoted amount in USD."},"amount_crypto":{"type":"string","description":"The equivalent amount in the payment cryptocurrency's smallest unit (e.g. USDC has 6 decimals, so $50.00 = \"50000000\")."},"network":{"type":"string","description":"The blockchain network for the payment in CAIP-2 format (e.g. eip155:8453 for Base)."},"expires_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the quote expires."},"payment_requirements":{"$ref":"#/components/schemas/X402PaymentRequirements"}}}}},"X402SettleRequest":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The quote ID to settle."},"payment_signature":{"type":"string","description":"Base64-encoded signed payment authorization (x402 PaymentPayload). Can alternatively be provided via the PAYMENT-SIGNATURE header."}}},"X402SettlementErrorResponse":{"type":"object","description":"Error response for x402 settlement failures. Uses string error codes from the x402 error handling system.","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","enum":["invalid_signature","expired_authorization","invalid_nonce","insufficient_balance","insufficient_funds","insufficient_allowance","facilitator_unavailable","facilitator_timeout","settlement_timeout","transaction_failed","unknown"]},"title":{"type":"string","description":"Short error title (e.g. \"Payment Failed\")."},"detail":{"type":"string","description":"Human-readable error description with guidance."}}}}}},"X402TransactionDetailResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/X402TransactionRecord"}}},"X402TransactionListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/X402TransactionRecord"}},"meta":{"$ref":"#/components/schemas/x402-transactions_PaginationMeta"}}},"X402TransactionRecord":{"type":"object","description":"An x402 payment transaction.","properties":{"id":{"type":"string","format":"uuid","description":"Unique transaction identifier."},"record_type":{"type":"string","enum":["x402_transaction"]},"amount":{"type":"string","description":"The transaction amount in the specified currency."},"currency":{"type":"string","description":"The currency of the transaction amount (e.g. USD)."},"status":{"type":"string","description":"The settlement status of the transaction. x402 transactions are created after successful on-chain settlement, so the status is `settled`.","enum":["settled"]},"quote_id":{"type":"string","description":"The original quote ID associated with this transaction."},"tx_hash":{"type":"string","nullable":true,"description":"The on-chain transaction hash, if available."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the transaction was created."},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the transaction was last updated."}}},"X402TransactionResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Unique transaction identifier."},"record_type":{"type":"string","enum":["x402_transaction"]},"amount":{"type":"string","description":"The transaction amount in the specified currency."},"currency":{"type":"string","description":"The currency of the transaction amount (e.g. USD)."},"status":{"type":"string","description":"The settlement status of the transaction.","enum":["settled"]},"quote_id":{"type":"string","description":"The original quote ID associated with this transaction."},"tx_hash":{"type":"string","nullable":true,"description":"The on-chain transaction hash, if available."},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when the transaction was created."}}}}},"XAIProviderParams":{"type":"object","description":"xAI provider-specific parameters.","required":["voice_id"],"properties":{"voice_id":{"type":"string","description":"xAI voice identifier.","enum":["eve","ara","rex","sal","leo"]},"language":{"type":"string","description":"Language code, or `auto` to detect.","default":"auto"},"output_format":{"type":"string","description":"Audio output format.","enum":["mp3","wav","pcm","mulaw","alaw"],"default":"mp3"},"sample_rate":{"type":"integer","description":"Audio sample rate in Hz.","enum":[8000,16000,22050,24000,44100,48000],"default":24000}}},"XAIVoiceSettings":{"type":"object","title":"xAI Voice Settings","properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto"}},"required":["type"]},"XaiTranscriptionLanguage":{"title":"xAI transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["ar","cs","da","de","en","es","fa","fil","fr","hi","id","it","ja","ko","mk","ms","nl","pl","pt","ro","ru","sv","th","tr","vi"]},"active":{"type":"boolean","description":"The active status of the authentication provider","default":true,"example":true},"address_book":{"type":"boolean","description":"Indicates whether or not the address should be considered part of your list of addresses that appear for regular use.","example":false,"default":true},"administrative_area":{"type":"string","description":"The locality of the address. For US addresses, this corresponds to the state of the address.","example":"TX"},"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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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 `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` 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}},"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."},"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"}}},"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"}}},"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":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say>Hello</Say></Response>","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_<name>_<skill_id>`. 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 `<assistant-speaks-first-with-model-generated-message>` 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"},"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,"minimum":0,"maximum":1,"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.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart). For Soniox voices, use `Soniox.tts-rt-v2.<voice_id>` (e.g. Soniox.tts-rt-v2.Emma); every Soniox voice speaks all supported languages.\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call."},"voice_speed":{"type":"number","default":1,"description":"The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine. Soniox voices support a speed range of 0.7 to 1.3."},"api_key_ref":{"type":"string","description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration."},"temperature":{"type":"number","default":0.5,"description":"Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs."},"similarity_boost":{"type":"number","default":0.75,"description":"Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs."},"use_speaker_boost":{"type":"boolean","default":true,"description":"Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs."},"style":{"type":"number","default":0,"description":"Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs."},"speed":{"type":"number","default":1,"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,"multipleOf":0.1,"default":1,"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"]},"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.\n\n**Required for SMS**"},"num_chars":{"type":"integer","description":"The number of characters in the message text"},"subject":{"type":["string","null"],"description":"Subject of multimedia message"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"url","description":"The url of the media requested to be sent."},"content_type":{"type":["string","null"],"x-format":"mime-type","description":"The MIME type of the requested media."},"sha256":{"type":["string","null"],"description":"The SHA256 hash of the requested media."},"size":{"type":["integer","null"],"description":"The size of the requested media."}}}},"webhook_url":{"type":["string","null"],"format":"url","description":"The URL where webhooks related to this message will be sent."},"webhook_failover_url":{"type":["string","null"],"format":"url","description":"The failover URL where webhooks related to this message will be sent if sending to the primary URL fails."},"encoding":{"type":"string","description":"Encoding scheme used for the message body."},"parts":{"type":"integer","minimum":1,"maximum":10,"description":"Number of parts into which the message's body must be split."},"tags":{"type":"array","description":"Tags associated with the resource.","items":{"type":"string"}},"cost":{"type":["object","null"],"properties":{"amount":{"type":"string","description":"The amount deducted from your account.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"cost_breakdown":{"type":["object","null"],"properties":{"carrier_fee":{"type":"object","properties":{"amount":{"type":"string","description":"The carrier fee amount.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}},"rate":{"type":"object","properties":{"amount":{"type":"string","description":"The rate amount applied.","x-format":"decimal"},"currency":{"type":"string","description":"The ISO 4217 currency identifier.","x-format":"iso4217"}}}},"description":"Detailed breakdown of the message cost components."},"tcr_campaign_id":{"type":["string","null"],"description":"The Campaign Registry (TCR) campaign ID associated with the message."},"tcr_campaign_billable":{"type":"boolean","description":"Indicates whether the TCR campaign is billable."},"tcr_campaign_registered":{"type":["string","null"],"description":"The registration status of the TCR campaign.","example":"REGISTERED"},"received_at":{"type":"string","format":"date-time","description":"ISO 8601 formatted date indicating when the message request was received."},"sent_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was sent."},"completed_at":{"type":["string","null"],"format":"date-time","description":"ISO 8601 formatted date indicating when the message was finalized."},"valid_until":{"type":["string","null"],"description":"Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'. Once the message moves out of the queue, this field will be nulled","format":"date-time"},"errors":{"type":"array","description":"These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.","items":{"$ref":"#/components/schemas/messaging_Error_0b38e7044b"}},"smart_encoding_applied":{"type":"boolean","description":"Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text is preserved in webhooks."}},"example":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"SMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"cancelled","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0","currency":"USD"},"cost_breakdown":null,"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}},"messaging_OutboundMessageResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MessagingOutboundMessagePayload"}}},"messaging_PaginationMeta":{"type":"object","required":["total_pages","total_results","page_size","page_number"],"properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"messaging_PaginationMeta_0b38e7044b":{"type":"object","required":["total_pages","total_results","page_size","page_number"],"properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"messaging_RCSAgentsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RCSAgent"}},"meta":{"$ref":"#/components/schemas/messaging_PaginationMeta_0b38e7044b"}}},"messaging_UpdateMessagingProfileRequest":{"type":"object","properties":{"record_type":{"description":"Identifies the type of the resource.","type":"string","enum":["messaging_profile"],"readOnly":true},"id":{"description":"Identifies the type of resource.","type":"string","format":"uuid","readOnly":true},"name":{"description":"A user friendly name for the messaging profile.","type":"string"},"enabled":{"description":"Specifies whether the messaging profile is enabled or not.","type":"boolean"},"webhook_url":{"description":"The URL where webhooks related to this messaging profile will be sent.","type":["string","null"],"format":"url"},"webhook_failover_url":{"description":"The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails.","type":["string","null"],"format":"url"},"webhook_api_version":{"description":"Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.","type":"string","enum":["1","2","2010-04-01"]},"whitelisted_destinations":{"description":"Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]`, all destinations will be allowed.\n\nThis field is required if the messaging profile doesn't have it defined yet.","type":"array","items":{"description":"ISO 3166-1 alpha-2 country code.","type":"string","pattern":"^[A-Z]{2}$"}},"created_at":{"description":"ISO 8601 formatted date indicating when the resource was created.","type":"string","format":"date-time","readOnly":true},"updated_at":{"description":"ISO 8601 formatted date indicating when the resource was updated.","type":"string","format":"date-time","readOnly":true},"v1_secret":{"description":"Secret used to authenticate with v1 endpoints.","type":"string"},"number_pool_settings":{"$ref":"#/components/schemas/NumberPoolSettings"},"url_shortener_settings":{"$ref":"#/components/schemas/UrlShortenerSettings"},"alpha_sender":{"description":"The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID.","type":["string","null"],"pattern":"^[A-Za-z0-9 ]{1,11}$"},"daily_spend_limit":{"description":"The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.","type":"string","pattern":"^[0-9]+(?:\\.[0-9]+)?$"},"daily_spend_limit_enabled":{"description":"Whether to enforce the value configured by `daily_spend_limit`.","type":"boolean"},"mms_fall_back_to_sms":{"description":"enables SMS fallback for MMS messages.","type":"boolean","default":false},"mms_transcoding":{"description":"enables automated resizing of MMS media.","type":"boolean","default":false},"mobile_only":{"description":"Send messages only to mobile phone numbers.","type":"boolean","default":false},"smart_encoding":{"description":"Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and minimize costs.","type":"boolean","default":false},"features":{"$ref":"#/components/schemas/MessagingProfileFeatures"},"ai_assistant_id":{"description":"The ID of the AI assistant associated with this messaging profile.","type":["string","null"],"example":"ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000"},"redaction_enabled":{"description":"Set to true to enable message content redaction on this profile, or false to disable it. Ignored if the organization is not on the redaction allowlist. See the [Message Redaction guide](/docs/messaging/messages/message-redaction) for what is redacted.","type":"boolean","default":false},"redaction_level":{"description":"The redaction level to apply when redaction is enabled. 1: redact message records and reporting only. 2 (default): also redact inbound webhook payloads. See the [Message Redaction guide](/docs/messaging/messages/message-redaction).","type":"integer","default":2}},"example":{"name":"Updated Profile for Messages","webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","enabled":true,"webhook_api_version":"2","whitelisted_destinations":["US"],"number_pool_settings":{"toll_free_weight":10,"long_code_weight":2,"skip_unhealthy":false,"sticky_sender":true,"geomatch":false},"url_shortener_settings":{"domain":"example.ex","prefix":"cmpny","replace_blacklist_only":true,"send_webhooks":false},"v1_secret":"rP1VamejkU2v0qIUxntqLW2c"}},"messaging_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","nullable":true,"maxLength":200},"street_address":{"type":"string","maxLength":255},"extended_address":{"type":"string","nullable":true,"maxLength":255},"city":{"type":"string","maxLength":120},"administrative_area":{"type":"string","maxLength":120},"postal_code":{"type":"string","maxLength":30},"country":{"type":"string","minLength":2,"maxLength":2,"example":"US"},"contact_name":{"type":"string","maxLength":200},"contact_title":{"type":"string","maxLength":200},"contact_email":{"type":"string","format":"email"},"contact_phone":{"type":"string","maxLength":30,"example":"+13125550000"}}},"number-reputation_Error":{"type":"object","required":["code","title","detail","meta"],"properties":{"code":{"type":"string","example":"10005","description":"Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry."},"title":{"type":"string","example":"Invalid parameters","description":"Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`. Treat as advisory only - the stable identifier is `code`."},"detail":{"type":"string","example":"field required","description":"Context-specific message describing what went wrong on this particular request. May embed offending values; do not rely on it for programmatic matching - branch on `code`."},"meta":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","example":"https://developers.telnyx.com/docs/overview/errors/10005"},"pending_check_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`. Lists the still-pending vetting check ids."},"pending_check_codes":{"type":"array","items":{"type":"string"},"description":"Codes of the pending vetting checks (e.g. `loa_signature_valid`)."},"pending_check_labels":{"type":"array","items":{"type":"string"},"description":"Human-readable labels of the pending vetting checks."}},"description":"Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the user to documentation."},"source":{"type":"object","description":"Optional pointer at the offending field of the request.","properties":{"pointer":{"type":"string","example":"/body/legal_name"},"parameter":{"type":"string","example":"page[size]"}}}},"description":"A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present) names the offending field of the request."},"number-reputation_Errors":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/number-reputation_Error"},"description":"List of one or more error entries. Order is not significant."}},"description":"Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid phone number on a bulk operation)."},"number-reputation_PaginationMeta":{"type":"object","required":["total_pages","total_results","page_number","page_size"],"properties":{"total_pages":{"type":"integer","example":3,"description":"Total number of pages available given the current `page_size`."},"total_results":{"type":"integer","example":42,"description":"Total number of items across all pages (excludes soft-deleted rows)."},"page_number":{"type":"integer","example":1,"description":"1-based index of this page. Echoes the `page[number]` query parameter (default `1`)."},"page_size":{"type":"integer","example":20,"description":"Number of items returned in this page's `data` array. Capped at 250."}},"description":"JSON:API pagination metadata returned with every paginated list response. Page numbering is 1-based. `page_size` reports the number of items actually returned in `data` for this page; the requested size is taken from the `page[size]` query parameter."},"number-reputation_TosAgreement":{"type":"object","description":"A recorded user agreement to a product's Terms of Service. The `user_id` is intentionally NOT echoed back on this public surface - the caller already knows their own identity.","properties":{"id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000","readOnly":true},"terms_version":{"type":"string","example":"v1.0.0"},"version":{"type":"string","description":"Convenience alias of `terms_version`. Both keys are present on every response.","example":"v1.0.0","readOnly":true},"product_type":{"$ref":"#/components/schemas/TosProductType"},"agreed_at":{"type":"string","format":"date-time","example":"2025-07-10T10:30:00Z","readOnly":true},"created_at":{"type":"string","format":"date-time","example":"2025-07-10T10:30:00Z","readOnly":true}}},"numbers_Error":{"properties":{"code":{"type":"string","example":"10007"},"title":{"type":"string","example":"Unexpected error"},"detail":{"type":"string","example":"An unexpected error occured."},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","example":"/base"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","properties":{"url":{"type":"string","description":"URL with additional information on the error.","example":"https://developers.telnyx.com/docs/overview/errors/10015"}}}},"type":"object"},"numbers_Error_73c9788e53":{"properties":{"code":{"type":"string","example":"10007"},"title":{"type":"string","example":"Unexpected error"},"detail":{"type":"string","example":"An unexpected error occured."},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","example":"/base"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","properties":{"url":{"type":"string","description":"URL with additional information on the error.","example":"https://developers.telnyx.com/docs/overview/errors/10015"}}}},"type":"object"},"numbers_Errors":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/numbers_Error"}}},"type":"object"},"numbers_IntId":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499","readOnly":true},"numbers_IntId_73c9788e53":{"type":"string","description":"Identifies the resource.","example":"1293384261075731499","readOnly":true},"numbers_NumberOrderWebhookEvent":{"type":"object","title":"Number Order Event","properties":{"data":{"type":"object","properties":{"event_type":{"type":"string","enum":["number_order.complete"],"example":"number_order.complete","description":"The type of event being sent"},"id":{"type":"string","format":"uuid","example":"d578b093-a0e7-4b64-b0d3-6b689a6ff170","description":"Unique identifier for the event"},"occurred_at":{"type":"string","format":"date-time","example":"2025-08-22T16:23:54.496464Z","description":"ISO 8601 timestamp of when the event occurred"},"payload":{"$ref":"#/components/schemas/NumberOrderWebhookPayload"},"record_type":{"type":"string","example":"event","description":"Type of record"}},"required":["event_type","id","occurred_at","payload","record_type"]},"meta":{"type":"object","properties":{"attempt":{"type":"integer","example":1,"description":"Webhook delivery attempt number"},"delivered_to":{"type":"string","format":"uri","example":"https://sample-api.com/webhook","description":"URL where the webhook was delivered"}},"required":["attempt","delivered_to"]}},"required":["data","meta"]},"numbers_PhoneNumberBlocksJobFailedOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/numbers_Error_73c9788e53"}}},"type":"object"},"numbers_PhoneNumberDeletedDetailed":{"type":"object","example":{"id":"1293384261075731499","record_type":"phone_number","phone_number":"+19705555098","status":"deleted","tags":["tag_1","tag_2"],"external_pin":"1234","connection_id":"1293384261075731499","connection_name":"connection-name","customer_reference":"customer-reference","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","messaging_profile_name":"regional-customers","billing_group_id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","emergency_enabled":true,"emergency_address_id":"1315261609962112019","call_forwarding_enabled":true,"cnam_listing_enabled":true,"caller_id_name_enabled":true,"call_recording_enabled":true,"t38_fax_gateway_enabled":true,"phone_number_type":"local","purchased_at":"2019-10-23T18:10:00.000Z","created_at":"2019-10-23T18:10:00.000Z","updated_at":"2019-10-24T18:10:00.000Z","hd_voice_enabled":true,"deletion_lock_enabled":false,"activated_at":"2019-10-23T18:10:00.000Z"},"properties":{"id":{"$ref":"#/components/schemas/numbers_IntId_73c9788e53"},"record_type":{"type":"string","example":"phone_number","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","description":"The +E.164-formatted phone number associated with this record.","readOnly":true},"status":{"type":"string","description":"The phone number's current status.","enum":["purchase-pending","purchase-failed","port-pending","port-failed","active","deleted","emergency-only","ported-out","port-out-pending"],"readOnly":true},"tags":{"type":"array","description":"A list of user-assigned tags to help manage the phone number.","items":{"type":"string"}},"external_pin":{"type":"string","description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"connection_name":{"type":"string","description":"The user-assigned name of the connection to be associated with this phone number.","readOnly":true},"connection_id":{"type":"string","description":"Identifies the connection associated with the phone number."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"messaging_profile_id":{"type":"string","description":"Identifies the messaging profile associated with the phone number."},"messaging_profile_name":{"type":"string","description":"The name of the messaging profile associated with the phone number.","example":"regional-customers"},"billing_group_id":{"type":"string","description":"Identifies the billing group associated with the phone number."},"emergency_enabled":{"type":"boolean","description":"Indicates whether emergency services are enabled for this number.","readOnly":true},"emergency_address_id":{"type":"string","description":"Identifies the emergency address associated with the phone number.","readOnly":true},"call_forwarding_enabled":{"type":"boolean","default":true,"description":"Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.","readOnly":true},"cnam_listing_enabled":{"type":"boolean","description":"Indicates whether a CNAM listing is enabled for this number.","readOnly":true},"caller_id_name_enabled":{"type":"boolean","description":"Indicates whether caller ID is enabled for this number.","readOnly":true},"call_recording_enabled":{"type":"boolean","description":"Indicates whether call recording is enabled for this number.","readOnly":true},"t38_fax_gateway_enabled":{"type":"boolean","description":"Indicates whether T38 Fax Gateway for inbound calls to this number.","readOnly":true},"purchased_at":{"type":"string","description":"ISO 8601 formatted date indicating the time the request was made to purchase the number.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the time it took to activate after the purchase.","readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"phone_number_type":{"type":"string","description":"The phone number's type.","enum":["local","toll_free","mobile","national","shared_cost","landline"],"readOnly":true},"deletion_lock_enabled":{"type":"boolean","description":"Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal.","readOnly":true},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}}},"numbers_PhoneNumberDetailed":{"type":"object","example":{"id":"1293384261075731499","record_type":"phone_number","phone_number":"+19705555098","country_iso_alpha2":"US","status":"active","tags":["tag_1","tag_2"],"external_pin":"1234","connection_id":"1293384261075731499","connection_name":"connection-name","customer_reference":"customer-reference","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600000000","messaging_profile_name":"regional-customers","billing_group_id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","emergency_enabled":true,"emergency_address_id":"1315261609962112019","emergency_status":"active","call_forwarding_enabled":true,"cnam_listing_enabled":true,"caller_id_name_enabled":true,"call_recording_enabled":true,"t38_fax_gateway_enabled":true,"phone_number_type":"local","inbound_call_screening":"disabled","purchased_at":"2019-10-23T18:10:00.000Z","created_at":"2019-10-23T18:10:00.000Z","updated_at":"2019-10-24T18:10:00.000Z","hd_voice_enabled":true,"source_type":"number_order","deletion_lock_enabled":false,"activated_at":"2019-10-23T18:10:00.000Z"},"properties":{"id":{"$ref":"#/components/schemas/numbers_IntId_73c9788e53"},"record_type":{"type":"string","example":"phone_number","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","description":"The +E.164-formatted phone number associated with this record.","readOnly":true},"country_iso_alpha2":{"type":"string","description":"The ISO 3166-1 alpha-2 country code of the phone number.","example":"US","readOnly":true},"status":{"type":"string","description":"The phone number's current status.","enum":["purchase-pending","purchase-failed","port-pending","port-failed","active","deleted","emergency-only","ported-out","port-out-pending","requirement-info-pending","requirement-info-under-review","requirement-info-exception","provision-pending"],"readOnly":true},"tags":{"type":"array","description":"A list of user-assigned tags to help manage the phone number.","items":{"type":"string"}},"external_pin":{"type":["string","null"],"description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"connection_name":{"type":["string","null"],"description":"The user-assigned name of the connection to be associated with this phone number.","readOnly":true},"connection_id":{"type":["string","null"],"description":"Identifies the connection associated with the phone number."},"customer_reference":{"type":["string","null"],"description":"A customer reference string for customer look ups.","example":"MY REF 001"},"messaging_profile_id":{"type":["string","null"],"description":"Identifies the messaging profile associated with the phone number. If the messaging profile details could not be retrieved, this value is the string `UNAVAILABLE`."},"messaging_profile_name":{"type":["string","null"],"description":"The name of the messaging profile associated with the phone number. If the messaging profile details could not be retrieved, this value is the string `UNAVAILABLE`.","example":"regional-customers"},"messaging_campaign_id":{"type":["string","null"],"description":"Identifies the messaging campaign associated with the phone number's messaging profile. If the messaging profile details could not be retrieved, this value is the string `UNAVAILABLE`."},"billing_group_id":{"type":["string","null"],"description":"Identifies the billing group associated with the phone number."},"emergency_enabled":{"type":"boolean","description":"Indicates whether emergency services are enabled for this number.","readOnly":true},"emergency_address_id":{"type":["string","null"],"description":"Identifies the emergency address associated with the phone number.","readOnly":true},"emergency_status":{"type":"string","description":"Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled.","enum":["active","deprovisioning","disabled","provisioning","provisioning-failed"]},"call_forwarding_enabled":{"type":"boolean","default":true,"description":"Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.","readOnly":true},"cnam_listing_enabled":{"type":"boolean","description":"Indicates whether a CNAM listing is enabled for this number.","readOnly":true},"caller_id_name_enabled":{"type":"boolean","description":"Indicates whether caller ID is enabled for this number.","readOnly":true},"call_recording_enabled":{"type":"boolean","description":"Indicates whether call recording is enabled for this number.","readOnly":true},"t38_fax_gateway_enabled":{"type":"boolean","description":"Indicates whether T38 Fax Gateway for inbound calls to this number.","readOnly":true},"purchased_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was purchased.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true,"format":"date-time"},"phone_number_type":{"type":"string","description":"The phone number's type.\nNote: For numbers purchased prior to July 2023 or when fetching a number's details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.","enum":["local","toll_free","mobile","national","shared_cost","landline","tollfree","shortcode","longcode"],"readOnly":true},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"source_type":{"description":"Indicates if the phone number was purchased or ported in. For some numbers this information may not be available.","anyOf":[{"type":"string","enum":["number_order","port_request"]},{"type":"null"}],"readOnly":true},"deletion_lock_enabled":{"type":"boolean","description":"Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number from being deleted via the API or Telnyx portal."},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}},"required":["id","record_type","phone_number","country_iso_alpha2","status","tags","external_pin","created_at","phone_number_type","purchased_at","deletion_lock_enabled"]},"numbers_PhoneNumberVerifyOwnershipResponse":{"type":"object","properties":{"found":{"type":"array","description":"The list of phone numbers which you own and are in an editable state","items":{"type":"object","properties":{"number_val_e164":{"type":"string","description":"The phone number in E.164 format","example":"+15551234567"},"id":{"$ref":"#/components/schemas/numbers_IntId_73c9788e53"}}}},"not_found":{"type":"array","description":"Phone numbers that are not found in the account","items":{"type":"string","description":"Phone number in E.164 format","example":"+15551234568"}},"record_type":{"type":"string","example":"number_ownership_verification","description":"Identifies the type of the resource.","readOnly":true}}},"numbers_PhoneNumbersJobFailedOperation":{"properties":{"phone_number":{"type":"string","description":"The phone number in e164 format."},"id":{"type":"string","description":"The phone number's ID"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/numbers_Error_73c9788e53"}}},"type":"object"},"numbers_SlimPhoneNumberDetailed":{"type":"object","example":{"id":"1293384261075731499","record_type":"phone_number","phone_number":"+19705555098","country_iso_alpha2":"US","status":"active","external_pin":"1234","connection_id":"1293384261075731499","customer_reference":"customer-reference","billing_group_id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","emergency_enabled":true,"emergency_address_id":"1315261609962112019","emergency_status":"active","call_forwarding_enabled":true,"cnam_listing_enabled":true,"caller_id_name_enabled":true,"call_recording_enabled":true,"t38_fax_gateway_enabled":true,"phone_number_type":"local","inbound_call_screening":"disabled","purchased_at":"2019-10-23T18:10:00.000Z","created_at":"2019-10-23T18:10:00.000Z","updated_at":"2019-10-24T18:10:00.000Z","hd_voice_enabled":true,"activated_at":"2019-10-23T18:10:00.000Z"},"properties":{"id":{"$ref":"#/components/schemas/numbers_IntId_73c9788e53"},"record_type":{"type":"string","example":"phone_number_slim","description":"Identifies the type of the resource.","readOnly":true},"phone_number":{"type":"string","description":"The +E.164-formatted phone number associated with this record.","readOnly":true},"country_iso_alpha2":{"type":"string","description":"The ISO 3166-1 alpha-2 country code of the phone number.","example":"US","readOnly":true},"status":{"type":"string","description":"The phone number's current status.","enum":["purchase-pending","purchase-failed","port-pending","port-failed","active","deleted","emergency-only","ported-out","port-out-pending","requirement-info-pending","requirement-info-under-review","requirement-info-exception","provision-pending"],"readOnly":true},"external_pin":{"type":"string","description":"If someone attempts to port your phone number away from Telnyx and your phone number has an external PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note that not all carriers cooperate with this security mechanism."},"connection_id":{"type":"string","description":"Identifies the connection associated with the phone number."},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"billing_group_id":{"type":"string","description":"Identifies the billing group associated with the phone number."},"emergency_enabled":{"type":"boolean","description":"Indicates whether emergency services are enabled for this number.","readOnly":true},"emergency_address_id":{"type":"string","description":"Identifies the emergency address associated with the phone number.","readOnly":true},"emergency_status":{"type":"string","description":"Indicates the status of the provisioning of emergency services for the phone number. This field contains information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned but is not yet enabled/disabled.","enum":["active","deprovisioning","disabled","provisioning","provisioning-failed"]},"call_forwarding_enabled":{"type":"boolean","default":true,"description":"Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.","readOnly":true},"cnam_listing_enabled":{"type":"boolean","description":"Indicates whether a CNAM listing is enabled for this number.","readOnly":true},"caller_id_name_enabled":{"type":"boolean","description":"Indicates whether caller ID is enabled for this number.","readOnly":true},"call_recording_enabled":{"type":"boolean","description":"Indicates whether call recording is enabled for this number.","readOnly":true},"t38_fax_gateway_enabled":{"type":"boolean","description":"Indicates whether T38 Fax Gateway for inbound calls to this number.","readOnly":true},"purchased_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was purchased.","readOnly":true},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","readOnly":true},"phone_number_type":{"type":"string","description":"The phone number's type.\nNote: For numbers purchased prior to July 2023 or when fetching a number's details immediately after a purchase completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.","enum":["local","toll_free","mobile","national","shared_cost","landline","tollfree","shortcode","longcode"],"readOnly":true},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","readOnly":true},"hd_voice_enabled":{"type":"boolean","description":"Indicates whether HD voice is enabled for this number.","readOnly":true},"inbound_call_screening":{"type":"string","enum":["disabled","reject_calls","flag_calls"],"default":"disabled","description":"The inbound_call_screening setting is a phone number configuration option variable that allows users to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls. This feature has an additional per-number monthly cost associated with it."},"activated_at":{"description":"ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated before this field was tracked.","anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"readOnly":true}}},"numbers_SubNumberOrder":{"properties":{"id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c292","readOnly":true},"order_request_id":{"type":"string","format":"uuid","example":"12ade33a-21c0-473b-b055-b3c836e1c293","readOnly":true},"country_code":{"type":"string","example":"US","readOnly":true},"phone_number_type":{"type":"string","example":"local","enum":["local","toll_free","mobile","national","shared_cost","landline"]},"user_id":{"type":"string","format":"uuid","example":"d70873cd-7c98-401a-81b6-b1ae08246995"},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/SubNumberOrderRegulatoryRequirement"}},"record_type":{"type":"string","example":"sub_number_order","readOnly":true},"phone_numbers_count":{"type":"integer","description":"The count of phone numbers in the number order.","example":1,"readOnly":true},"created_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string denoting when the number order was created.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"An ISO 8901 datetime string for when the number order was updated.","example":"2018-01-01T00:00:00.000000Z","readOnly":true},"requirements_met":{"type":"boolean","description":"True if all requirements are met for every phone number, false otherwise.","example":true,"readOnly":true},"status":{"type":"string","enum":["pending","success","failure"],"description":"The status of the order.","readOnly":true},"customer_reference":{"type":"string","description":"A customer reference string for customer look ups.","example":"MY REF 001"},"is_block_sub_number_order":{"type":"boolean","description":"True if the sub number order is a block sub number order","example":false,"readOnly":true},"phone_numbers":{"type":"array","description":"The first 50 phone numbers in the sub number order, including their per-number regulatory requirement statuses. Only present when filter[include_phone_numbers]=true is used.","readOnly":true,"items":{"$ref":"#/components/schemas/numbers_SubNumberOrderPhoneNumber"}}},"type":"object"},"numbers_SubNumberOrderPhoneNumber":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"phone_number":{"type":"string"},"country_code":{"type":"string"},"phone_number_type":{"type":"string"},"requirements_met":{"type":"boolean"},"requirements_status":{"type":"string"},"status":{"type":"string"},"record_type":{"type":"string"},"bundle_id":{"type":["string","null"],"format":"uuid"},"regulatory_requirements":{"type":"array","items":{"$ref":"#/components/schemas/numbers_SubNumberOrderRegulatoryRequirementWithValue"}}}},"numbers_SubNumberOrderRegulatoryRequirementWithValue":{"properties":{"record_type":{"type":"string","example":"phone_number_regulatory_requirement","readOnly":true},"requirement_id":{"type":"string","format":"uuid","description":"Unique id for a requirement.","example":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576"},"field_type":{"type":"string","enum":["textual","datetime","address","document"],"example":"address","readOnly":true},"field_value":{"type":"string","description":"The value of the requirement, this could be an id to a resource or a string value.","example":"45f45a04-b4be-4592-95b1-9306b9db2b21"},"status":{"type":"string","description":"The status of the regulatory requirement for this phone number.","enum":["approved","declined","awaiting-value","pending-approval"],"example":"approved","readOnly":true}},"type":"object"},"oauth_Error":{"type":"object","properties":{"error":{"type":"string","description":"Error code"},"error_description":{"type":"string","description":"Human-readable error description"}},"required":["error"]},"oauth_PaginationMeta":{"type":"object","properties":{"page_number":{"type":"integer","description":"Current page number"},"page_size":{"type":"integer","description":"Number of items per page"},"total_results":{"type":"integer","description":"Total number of results"},"total_pages":{"type":"integer","description":"Total number of pages"}}},"oauth_oauth_Error":{"type":"object","properties":{"error":{"type":"string","description":"Error code"},"error_description":{"type":"string","description":"Human-readable error description"}},"required":["error"]},"oauth_oauth_PaginationMeta":{"type":"object","properties":{"page_number":{"type":"integer","description":"Current page number"},"page_size":{"type":"integer","description":"Number of items per page"},"total_results":{"type":"integer","description":"Total number of results"},"total_pages":{"type":"integer","description":"Total number of pages"}}},"organization_id":{"type":"string","format":"uuid","description":"The id from the Organization the authentication provider belongs to.","example":"24b4a4bb-c4df-46ad-bbcb-23fc741c5ad7"},"outbound-voice-profiles_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"title":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"parakeet_models":{"type":"string","enum":["nvidia/parakeet-v3","omi-health/omi-med-stt-v1"]},"phone_number":{"type":"string","description":"The phone number associated with the address.","example":"+12125559000"},"postal_code":{"type":"string","description":"The postal code of the address.","example":"78701"},"pricing_PaginationMeta":{"type":"object","properties":{"page_number":{"type":"integer"},"page_size":{"type":"integer"},"total_pages":{"type":"integer"},"total_results":{"type":"integer"}},"required":["page_number","page_size","total_pages","total_results"]},"programmable-fax_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"programmable-fax_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"title":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"programmable-fax_RecordType":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"pronunciation-dicts_ErrorObject":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.","example":"90202"},"title":{"type":"string","description":"Short human-readable error title.","example":"Validation failed"},"detail":{"type":"string","description":"Detailed error description.","example":"items must have at least one item"},"source":{"type":"object","description":"Source of the error.","properties":{"pointer":{"type":"string","description":"JSON pointer to the field that caused the error.","example":"/items"}}}}},"pronunciation-dicts_ErrorResponse":{"type":"object","description":"Standard Telnyx error response.","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/pronunciation-dicts_ErrorObject"}}}},"pronunciation-dicts_PaginationMeta":{"type":"object","description":"Pagination metadata returned with list responses.","properties":{"page_number":{"type":"integer","description":"Current page number (1-based).","example":1},"page_size":{"type":"integer","description":"Number of results per page.","example":20},"total_results":{"type":"integer","description":"Total number of results across all pages.","example":3},"total_pages":{"type":"integer","description":"Total number of pages.","example":1}}},"push-notifications_Error":{"required":["code","title"],"properties":{"code":{"type":"string","example":"10015"},"title":{"type":"string","example":"Bad Request"},"detail":{"type":"string","example":"has already been taken"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","example":"/mobile_push_credentials"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string","example":"application_name"}}},"meta":{"type":"object","example":{"url":"https://developers.telnyx.com/docs/overview/errors/10015"},"additionalProperties":true}},"type":"object"},"queues_QueueResource":{"type":"object","title":"Queue resource","example":{"account_sid":"4e71926f-8f13-450e-b91c-23c2ef786aa6","average_wait_time":"30","current_size":"3","date_created":"Fri, 27 Oct 2023 07:41:58 +0000","date_updated":"Fri, 27 Oct 2023 07:41:58 +0000","max_size":"10","sid":"my-queue","uri":"/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json","subresource_uris":{"members":"/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json"}},"properties":{"account_sid":{"type":"string","description":"The id of the account the resource belongs to.","example":"4e71926f-8f13-450e-b91c-23c2ef786aa6"},"average_wait_time":{"type":"integer","description":"The average wait time in seconds for members in the queue.","example":"30"},"current_size":{"type":"integer","description":"The current number of members in the queue.","example":"3"},"date_created":{"type":"string","description":"The timestamp of when the resource was created.","example":"Fri, 27 Oct 2023 07:41:58 +0000"},"date_updated":{"type":"string","description":"The timestamp of when the resource was last updated.","example":"Fri, 27 Oct 2023 07:41:58 +0000"},"max_size":{"type":"integer","description":"The maximum size of the queue.","example":"10"},"sid":{"type":"string","description":"The unique identifier of the queue.","example":"my-queue"},"uri":{"type":"string","description":"The relative URI for this queue.","example":"/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json"},"subresource_uris":{"type":"object","description":"A list of related resources identified by their relative URIs.","example":{"members":"/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json"},"additionalProperties":"true"}}},"queues_QueueResourceIndex":{"type":"object","title":"Multiple queue resources","example":{"queues":[],"end":"0","first_page_uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1","next_page_uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ","page":"0","page_size":"1","start":"0","uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1"},"properties":{"queues":{"type":"array","items":{"$ref":"#/components/schemas/queues_QueueResource"}},"end":{"type":"integer","description":"The number of the last element on the page, zero-indexed.","example":"19"},"first_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1","example":"accepted"},"next_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ","example":"accepted"},"page":{"type":"integer","description":"Current page number, zero-indexed.","example":"0"},"page_size":{"type":"integer","description":"The number of items on the page","example":"20"},"start":{"type":"integer","description":"The number of the first element on the page, zero-indexed.","example":"0"},"uri":{"type":"string","description":"The URI of the current page.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1"}}},"rcs-registration_ErrorResponse":{"type":"object","properties":{"detail":{"type":"string"},"errors":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true,"example":{"detail":"The requested RCS resource was not found."}},"recordings_ConferenceRecordingResource":{"type":"object","title":"Conference recording resource","example":{"account_sid":"4e71926f-8f13-450e-b91c-23c2ef786aa6","call_sid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","channels":"1","conference_sid":"6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f","date_created":"Fri, 27 Oct 2023 07:41:58 +0000","date_updated":"Fri, 27 Oct 2023 07:41:58 +0000","duration":"5","media_url":"https://www.example.com/download.mp3","sid":"136285da-4b74-46f1-a016-fe2982fa77c3","source":"StartConferenceRecordingAPI","start_time":"Fri, 27 Oct 2023 07:41:58 +0000","status":"completed","subresource_uris":{"transcriptions":null},"uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json"},"properties":{"account_sid":{"type":"string","description":"The id of the account the resource belongs to.","example":"61bf923e-5e4d-4595-a110-56190ea18a1b"},"call_sid":{"type":"string","description":"The identifier of the related participant's call.","example":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ"},"channels":{"type":"integer","description":"The number of channels in the recording.","example":"1"},"conference_sid":{"type":"string","description":"The identifier of the related conference.","example":"6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f"},"date_created":{"type":"string","description":"The timestamp of when the resource was created.","example":"Thu, 15 Jun 2023 09:56:45 +0000"},"date_updated":{"type":"string","description":"The timestamp of when the resource was last updated.","example":"Thu, 15 Jun 2023 09:56:45 +0000"},"duration":{"type":"integer","description":"Duratin of the recording in seconds.","example":"10"},"error_code":{"type":"string","description":"The recording error, if any."},"media_url":{"type":"string","description":"The URL to use to download the recording.","example":"https://www.example.com/download.mp3"},"sid":{"type":"string","description":"The unique identifier of the recording.","example":"136285da-4b74-46f1-a016-fe2982fa77c3"},"source":{"type":"string","description":"How the recording was started.","example":"StartConferenceRecordingAPI","enum":["DialVerb","Conference","OutboundAPI","Trunking","RecordVerb","StartCallRecordingAPI","StartConferenceRecordingAPI"]},"start_time":{"type":"string","description":"The timestamp of when the recording was started.","example":"Thu, 15 Jun 2023 09:56:45 +0000"},"status":{"type":"string","description":"The status of the recording.","enum":["processing","absent","completed","deleted"],"example":"completed"},"subresource_uris":{"type":"object","description":"A list of related resources identified by their relative URIs.","example":{"transcriptions":null},"additionalProperties":"true"},"uri":{"type":"string","description":"The relative URI for this recording.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json"}}},"recordings_ConferenceRecordingResourceIndex":{"type":"object","title":"Multiple conference recording resources","example":{"participants":[],"end":"0","first_page_uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20","page":"0","page_size":"20","start":"0","uri":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20"},"properties":{"recordings":{"type":"array","items":{"$ref":"#/components/schemas/recordings_ConferenceRecordingResource"}},"end":{"type":"integer","description":"The number of the last element on the page, zero-indexed.","example":"19"},"first_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20","example":"accepted"},"next_page_uri":{"type":"string","description":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ","example":"accepted"},"page":{"type":"integer","description":"Current page number, zero-indexed.","example":"0"},"page_size":{"type":"integer","description":"The number of items on the page","example":"20"},"start":{"type":"integer","description":"The number of the first element on the page, zero-indexed.","example":"0"},"uri":{"type":"string","description":"The URI of the current page.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=0&PageSize=1"},"participants":{"type":"array","description":"List of participant resources.","items":{"type":"object"},"example":[]}}},"recordings_PlayBeep":{"type":"boolean","description":"Whether to play a beep when recording is started.","example":"false","default":"true"},"recordings_SendRecordingUrl":{"type":"boolean","description":"Whether to send RecordingUrl in webhooks.","example":"false","default":"true"},"recordings_TexmlGetCallRecordingsResponseBody":{"type":"object","title":"Multiple recording resources","properties":{"recordings":{"type":"array","items":{"$ref":"#/components/schemas/TexmlGetCallRecordingResponseBody"}},"end":{"type":"integer","description":"The number of the last element on the page, zero-indexed.","example":"19"},"first_page_uri":{"type":"string","format":"uri","description":"Relative uri to the first page of the query results"},"previous_page_uri":{"type":"string","format":"uri","description":"Relative uri to the previous page of the query results"},"next_page_uri":{"type":"string","description":"Relative uri to the next page of the query results","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1"},"page":{"type":"integer","description":"Current page number, zero-indexed.","example":"0"},"page_size":{"type":"integer","description":"The number of items on the page","example":"20"},"start":{"type":"integer","description":"The number of the first element on the page, zero-indexed.","example":"0"},"uri":{"type":"string","description":"The URI of the current page.","example":"/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings.json?Page=0&PageSize=1"}}},"recordings_TwimlRecordingChannels":{"type":"integer","enum":["1","2"],"default":"2","example":"1"},"reporting_Error":{"type":"object","properties":{"code":{"type":"string","example":"10011"},"title":{"type":"string","example":"Bad Request"},"detail":{"type":"string","example":"Invalid parameter value"}}},"reporting_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/reporting_Error"}}}},"reporting_ErrorResponse_77109e5d17":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/reporting_Error_77109e5d17"}}}},"reporting_Error_77109e5d17":{"type":"object","properties":{"code":{"type":"string","example":"10011"},"title":{"type":"string","example":"Bad Request"},"detail":{"type":"string","example":"Invalid parameter value"}}},"reporting_MdrGetDetailResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MdrDetailResponse"}},"meta":{"$ref":"#/components/schemas/reporting_PaginationMeta_77109e5d17"}}},"reporting_MdrGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MdrUsageReportResponse"}},"meta":{"$ref":"#/components/schemas/reporting_PaginationMeta_77109e5d17"}}},"reporting_PaginationMeta":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"reporting_PaginationMeta_77109e5d17":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"reson8_models":{"type":"string","enum":["reson8/turns"]},"settings":{"type":"object","description":"The settings associated with the authentication provider.","required":["idp_entity_id","idp_sso_target_url","idp_cert_fingerprint"],"properties":{"idp_entity_id":{"type":"string","description":"The Entity ID for the identity provider (IdP).","format":"uri","example":"https://myorg.myidp.com/saml/metadata"},"idp_sso_target_url":{"type":"string","description":"The SSO target url for the identity provider (IdP).","format":"uri","example":"https://myorg.myidp.com/trust/saml2/http-post/sso"},"idp_cert_fingerprint":{"type":"string","description":"The certificate fingerprint for the identity provider (IdP)","example":"13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7"},"idp_cert_fingerprint_algorithm":{"type":"string","description":"The algorithm used to generate the identity provider's (IdP) certificate fingerprint","enum":["sha1","sha256","sha384","sha512"],"default":"sha1","example":"sha256"}}},"settings_url":{"type":"string","description":"The URL for the identity provider metadata file to populate the settings automatically. If the settings attribute is provided, that will be used instead.","format":"uri","example":"https://myorg.myidp.com/saml/metadata"},"short_name":{"type":"string","description":"The short name associated with the authentication provider. This must be unique and URL-friendly, as it's going to be part of the login URL.","example":"myorg"},"siprec_siprec_Error":{"type":"object","required":["code","title"],"properties":{"code":{"type":"integer","format":"int32"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string","description":"JSON pointer (RFC6901) to the offending entity."},"parameter":{"type":"string","description":"Indicates which query parameter caused the error."}}},"meta":{"type":"object","additionalProperties":true}}},"skip_address_verification":{"type":"boolean","description":"An optional boolean value specifying if verification of the address should be skipped or not. UserAddresses are generally used for shipping addresses, and failure to validate your shipping address will likely result in a failure to deliver SIM cards or other items ordered from Telnyx. Do not use this parameter unless you are sure that the address is correct even though it cannot be validated. If this is set to any value other than true, verification of the address will be attempted, and the user address will not be allowed if verification fails. If verification fails but suggested values are available that might make the address correct, they will be present in the response as well. If this value is set to true, then the verification will not be attempted. Defaults to false (verification will be performed).","default":false},"soniox_models":{"type":"string","enum":["soniox/stt-rt-v4"]},"speech-to-text_Error":{"required":["code","title"],"properties":{"code":{"type":"string","format":"integer"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","format":"json-pointer"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object"}}},"speech-to-text_Errors":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/speech-to-text_Error"}}}},"speechmatics_models":{"type":"string","enum":["speechmatics/standard"]},"spend-limits_PaginationMeta":{"type":"object","properties":{"total_pages":{"type":"integer","example":1},"total_results":{"type":"integer","example":2},"page_number":{"type":"integer","example":1},"page_size":{"type":"integer","example":2}}},"standard_CdrGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CdrUsageReportResponseLegacy"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta_ffba4faa88"}}},"standard_Error":{"type":"object","properties":{"code":{"type":"string","title":"Telnyx error code"},"detail":{"type":"string","title":"Error details"},"title":{"type":"string","title":"Error title"}},"required":["detail"],"title":"Error"},"standard_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/standard_Error"},"title":"Errors"}},"title":"ErrorResponse"},"standard_ErrorResponse_ffba4faa88":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/standard_Error_ffba4faa88"},"title":"Errors"}},"title":"ErrorResponse"},"standard_Error_ffba4faa88":{"type":"object","properties":{"code":{"type":"string","title":"Telnyx error code"},"detail":{"type":"string","title":"Error details"},"title":{"type":"string","title":"Error title"}},"required":["detail"],"title":"Error"},"standard_MdrGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MdrUsageReportResponseLegacy"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta"}}},"standard_MdrGetUsageReportsResponse_ffba4faa88":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MdrUsageReportResponseLegacy"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta_ffba4faa88"}}},"standard_PaginationMeta":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"standard_PaginationMeta_ffba4faa88":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"standard_TelcoDataGetUsageReportsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TelcoDataUsageReportResponse"}},"meta":{"$ref":"#/components/schemas/standard_PaginationMeta_ffba4faa88"}}},"stored-payment-transactions_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"detail":{"type":"string"},"code":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"street_address":{"type":"string","description":"The primary street address information about the address.","example":"600 Congress Avenue"},"taggings_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"title":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"telnyx_models":{"type":"string","enum":["openai/whisper-tiny","openai/whisper-large-v3-turbo"]},"text-to-speech_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Error code."},"title":{"type":"string","description":"Error title."},"detail":{"type":"string","description":"Detailed error description."}}}}}},"text-to-speech_ValidationErrorResponse":{"type":"object","properties":{"errors":{"type":"object","description":"Validation error details keyed by field name.","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"toll-free-verification_EntityType":{"title":"EntityType","type":"string","enum":["SOLE_PROPRIETOR","PRIVATE_PROFIT","PUBLIC_PROFIT","NON_PROFIT","GOVERNMENT"],"description":"Business entity classification"},"toll-free-verification_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"toll-free-verification_Errors":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/toll-free-verification_Error"}}},"type":"object"},"transcriptions-search_Error":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","additionalProperties":true}}},"transcriptions-search_PaginationMeta":{"type":"object","description":"Pagination metadata following the standard Telnyx V2 API format.","required":["total_pages","total_results","page_number","page_size"],"properties":{"total_pages":{"type":"integer","description":"Total number of pages.","example":1},"total_results":{"type":"integer","description":"Total number of matching results across all queried regions.","example":42},"page_number":{"type":"integer","description":"Current page number (1-based), matching the requested page[number].","example":1},"page_size":{"type":"integer","description":"Number of results per page, matching the requested page[size].","example":20}}},"usage-reports_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorRecord"}}}},"usage-reports_RecordType":{"type":"object","description":"An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records","properties":{"record_type":{"type":"string","description":"Telnyx Product type","example":"conversation_event"},"product_dimensions":{"type":"array","description":"Telnyx Product Dimensions","example":["direction","currency","message_type"],"items":{"type":"string"}},"product_metrics":{"type":"array","description":"Telnyx Product Metrics","example":["cost","billed_sec"],"items":{"type":"string"}}}},"usage_reports_usage_reports_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorRecord"}}}},"usage_reports_usage_reports_RecordType":{"type":"object","description":"An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records","properties":{"record_type":{"type":"string","description":"Telnyx Product type","example":"conversation_event"},"product_dimensions":{"type":"array","description":"Telnyx Product Dimensions","example":["direction","currency","message_type"],"items":{"type":"string"}},"product_metrics":{"type":"array","description":"Telnyx Product Metrics","example":["cost","billed_sec"],"items":{"type":"string"}}}},"usage_reports_usage_reports_SourceResponse":{"type":"object","properties":{"pointer":{"type":"string","description":"A JSON Pointer [RFC6901] to the associated entity in the request document","example":"/title"},"parameter":{"type":"string","description":"a string indicating which URI query parameter caused the error","example":"metrics"}}},"usage_reports_usage_reports_UsageReportsOptionsRecord":{"type":"object","description":"An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records","properties":{"product":{"type":"string","description":"Telnyx Product","example":"wireless"},"product_dimensions":{"type":"array","description":"Telnyx Product Dimensions","example":["mnc","mcc","sim_card_id","sim_group_name"],"items":{"type":"string"}},"product_metrics":{"type":"array","description":"Telnyx Product Metrics","example":["uplink_data_bytes","downlink_data","downlink_data_bytes","uplink_data","data_cost"],"items":{"type":"string"}},"record_types":{"type":"array","description":"Subproducts if applicable","items":{"$ref":"#/components/schemas/usage_reports_usage_reports_RecordType"}}}},"user-addresses_UserAddress":{"type":"object","title":"UserAddress","properties":{"id":{"type":"string","format":"uuid","description":"Uniquely identifies the user address.","example":"c3527e69-dc5a-4b3e-8f44-99d209f83c1d"},"record_type":{"type":"string","description":"Identifies the type of the resource.","example":"user_address"},"customer_reference":{"$ref":"#/components/schemas/customer_reference"},"first_name":{"$ref":"#/components/schemas/user-addresses_first_name_26a215df92"},"last_name":{"$ref":"#/components/schemas/user-addresses_last_name_26a215df92"},"business_name":{"$ref":"#/components/schemas/user-addresses_business_name_26a215df92"},"phone_number":{"$ref":"#/components/schemas/user-addresses_phone_number_26a215df92"},"street_address":{"$ref":"#/components/schemas/user-addresses_street_address_26a215df92"},"extended_address":{"$ref":"#/components/schemas/user-addresses_extended_address_26a215df92"},"locality":{"$ref":"#/components/schemas/user-addresses_locality_26a215df92"},"administrative_area":{"$ref":"#/components/schemas/user-addresses_administrative_area_26a215df92"},"neighborhood":{"$ref":"#/components/schemas/user-addresses_neighborhood_26a215df92"},"borough":{"$ref":"#/components/schemas/user-addresses_borough_26a215df92"},"postal_code":{"$ref":"#/components/schemas/user-addresses_postal_code_26a215df92"},"country_code":{"$ref":"#/components/schemas/user-addresses_country_code_26a215df92"},"created_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was created.","example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date indicating when the resource was updated.","example":"2018-02-02T22:25:27.521Z"}}},"user-addresses_UserAddressCreate":{"type":"object","required":["first_name","last_name","business_name","street_address","locality","country_code"],"properties":{"customer_reference":{"$ref":"#/components/schemas/customer_reference"},"first_name":{"$ref":"#/components/schemas/user-addresses_first_name_26a215df92"},"last_name":{"$ref":"#/components/schemas/user-addresses_last_name_26a215df92"},"business_name":{"$ref":"#/components/schemas/user-addresses_business_name_26a215df92"},"phone_number":{"$ref":"#/components/schemas/user-addresses_phone_number_26a215df92"},"street_address":{"$ref":"#/components/schemas/user-addresses_street_address_26a215df92"},"extended_address":{"$ref":"#/components/schemas/user-addresses_extended_address_26a215df92"},"locality":{"$ref":"#/components/schemas/user-addresses_locality_26a215df92"},"administrative_area":{"$ref":"#/components/schemas/user-addresses_administrative_area_26a215df92"},"neighborhood":{"$ref":"#/components/schemas/user-addresses_neighborhood_26a215df92"},"borough":{"$ref":"#/components/schemas/user-addresses_borough_26a215df92"},"postal_code":{"$ref":"#/components/schemas/user-addresses_postal_code_26a215df92"},"country_code":{"$ref":"#/components/schemas/user-addresses_country_code_26a215df92"},"skip_address_verification":{"$ref":"#/components/schemas/skip_address_verification"}}},"user-addresses_administrative_area":{"type":"string","description":"The locality of the user address. For US addresses, this corresponds to the state of the address.","example":"TX"},"user-addresses_administrative_area_26a215df92":{"type":"string","description":"The locality of the user address. For US addresses, this corresponds to the state of the address.","example":"TX"},"user-addresses_borough":{"type":"string","description":"The borough of the user address. This field is not used for addresses in the US but is used for some international addresses.","example":"Guadalajara"},"user-addresses_borough_26a215df92":{"type":"string","description":"The borough of the user address. This field is not used for addresses in the US but is used for some international addresses.","example":"Guadalajara"},"user-addresses_business_name":{"type":"string","description":"The business name associated with the user address.","example":"Toy-O'Kon"},"user-addresses_business_name_26a215df92":{"type":"string","description":"The business name associated with the user address.","example":"Toy-O'Kon"},"user-addresses_country_code":{"type":"string","description":"The two-character (ISO 3166-1 alpha-2) country code of the user address.","example":"US"},"user-addresses_country_code_26a215df92":{"type":"string","description":"The two-character (ISO 3166-1 alpha-2) country code of the user address.","example":"US"},"user-addresses_extended_address":{"type":"string","description":"Additional street address information about the user address such as, but not limited to, unit number or apartment number.","example":"14th Floor"},"user-addresses_extended_address_26a215df92":{"type":"string","description":"Additional street address information about the user address such as, but not limited to, unit number or apartment number.","example":"14th Floor"},"user-addresses_first_name":{"type":"string","description":"The first name associated with the user address.","example":"Alfred"},"user-addresses_first_name_26a215df92":{"type":"string","description":"The first name associated with the user address.","example":"Alfred"},"user-addresses_last_name":{"type":"string","description":"The last name associated with the user address.","example":"Foster"},"user-addresses_last_name_26a215df92":{"type":"string","description":"The last name associated with the user address.","example":"Foster"},"user-addresses_locality":{"type":"string","description":"The locality of the user address. For US addresses, this corresponds to the city of the address.","example":"Austin"},"user-addresses_locality_26a215df92":{"type":"string","description":"The locality of the user address. For US addresses, this corresponds to the city of the address.","example":"Austin"},"user-addresses_neighborhood":{"type":"string","description":"The neighborhood of the user address. This field is not used for addresses in the US but is used for some international addresses.","example":"Ciudad de los deportes"},"user-addresses_neighborhood_26a215df92":{"type":"string","description":"The neighborhood of the user address. This field is not used for addresses in the US but is used for some international addresses.","example":"Ciudad de los deportes"},"user-addresses_phone_number":{"type":"string","description":"The phone number associated with the user address.","example":"+12125559000"},"user-addresses_phone_number_26a215df92":{"type":"string","description":"The phone number associated with the user address.","example":"+12125559000"},"user-addresses_postal_code":{"type":"string","description":"The postal code of the user address.","example":"78701"},"user-addresses_postal_code_26a215df92":{"type":"string","description":"The postal code of the user address.","example":"78701"},"user-addresses_street_address":{"type":"string","description":"The primary street address information about the user address.","example":"600 Congress Avenue"},"user-addresses_street_address_26a215df92":{"type":"string","description":"The primary street address information about the user address.","example":"600 Congress Avenue"},"user-tags_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"title":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"users_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"detail":{"type":"string"},"meta":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}},"title":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"}}}}}}}},"users_PaginationMeta":{"title":"Pagination Meta","type":"object","properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"validate_address":{"type":"boolean","description":"Indicates whether or not the address should be validated for emergency use upon creation or not. This should be left with the default value of `true` unless you have used the `/addresses/actions/validate` endpoint to validate the address separately prior to creation. If an address is not validated for emergency use upon creation and it is not valid, it will not be able to be used for emergency services.","example":true,"default":true},"verified-numbers_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","properties":{"url":{"type":"string","description":"URL with additional information on the error."}}}},"type":"object"},"verified-numbers_Meta":{"type":"object","properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"verify_Error":{"required":["code","title"],"properties":{"code":{"type":"string","example":"10015"},"title":{"type":"string","example":"Invalid sorting value"},"detail":{"type":"string","example":"The value provided for sorting is not valid. Check the value used and try again."},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","example":"/sort"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","properties":{"url":{"type":"string","description":"URL with additional information on the error.","example":"https://developers.telnyx.com/docs/overview/errors/10015"}}}},"type":"object"},"verify_Meta":{"type":"object","required":["total_pages","total_results","page_size","page_number"],"properties":{"total_pages":{"type":"integer","example":3},"total_results":{"type":"integer","example":55},"page_number":{"type":"integer","example":2},"page_size":{"type":"integer","example":25}}},"video_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"voice-channels_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"voice-designs_ErrorObject":{"type":"object","description":"A single error object.","properties":{"code":{"type":"string","description":"Telnyx-specific error code."},"title":{"type":"string","description":"Short, human-readable summary of the error."},"detail":{"type":"string","description":"Detailed, human-readable explanation of the error."},"source":{"type":"object","description":"Reference to the source of the error.","properties":{"pointer":{"type":"string","description":"A JSON Pointer (RFC 6901) to the field that caused the error."}}}}},"voice-designs_ErrorResponse":{"type":"object","description":"Standard error response envelope.","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/voice-designs_ErrorObject"}}},"example":{"errors":[{"code":"10005","title":"Resource not found","detail":"Voice design not found"}]}},"voice-designs_PaginationMeta":{"type":"object","description":"Pagination metadata returned with list responses.","properties":{"page_number":{"type":"integer","description":"Current page number (1-based)."},"page_size":{"type":"integer","description":"Number of results per page."},"total_results":{"type":"integer","description":"Total number of results across all pages."},"total_pages":{"type":"integer","description":"Total number of pages."}},"example":{"page_number":1,"page_size":20,"total_results":42,"total_pages":3}},"voice-sdk-debug_PaginationMeta":{"type":"object","title":"Pagination Meta","properties":{"total_pages":{"type":"integer","example":1},"total_results":{"type":"integer","example":1},"page_number":{"type":"integer","example":1},"page_size":{"type":"integer","example":20}}},"webhook_delivery":{"description":"Record of all attempts to deliver a webhook.","properties":{"id":{"description":"Uniquely identifies the webhook_delivery record.","type":"string","format":"uuid","example":"f5586561-8ff0-4291-a0ac-84fe544797bd"},"user_id":{"description":"Uniquely identifies the user that owns the webhook_delivery record.","type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"},"record_type":{"description":"Identifies the type of the resource.","type":"string","example":"webhook_delivery"},"status":{"description":"Delivery status: 'delivered' when successfuly delivered or 'failed' if all attempts have failed.","enum":["delivered","failed"],"type":"string"},"webhook":{"description":"Original webhook JSON data. Payload fields vary according to event type.","type":"object","properties":{"record_type":{"type":"string","example":"event","enum":["event"],"description":"Identifies the type of the resource."},"event_type":{"type":"string","example":"webhook.command","description":"The type of event being delivered."},"id":{"type":"string","format":"uuid","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","description":"Identifies the type of resource."},"occurred_at":{"type":"string","format":"date-time","example":"2018-02-02T22:25:27.521992Z","description":"ISO 8601 datetime of when the event occurred."},"payload":{"type":"object","additionalProperties":true}},"example":{"record_type":"event","id":"C9C0797E-901D-4349-A33C-C2C8F31A92C2","event_type":"call_initiated","occurred_at":"2020-08-10T13:02:01.000Z","payload":{"useful":"information"}}},"started_at":{"description":"ISO 8601 timestamp indicating when the first request attempt was initiated.","type":"string","format":"date-time","example":"2020-08-10T14:00:00.000Z"},"finished_at":{"description":"ISO 8601 timestamp indicating when the last webhook response has been received.","type":"string","format":"date-time","example":"2020-08-10T14:00:05.595Z"},"attempts":{"description":"Detailed delivery attempts, ordered by most recent.","type":"array","items":{"$ref":"#/components/schemas/attempt"},"example":[{"status":"delivered","started_at":"2020-08-10T14:00:05.364Z","finished_at":"2020-08-10T14:00:05.595Z","http":{"request":{"url":"https://fallback.example.com/webhooks","headers":[["Accept","*/*"]]},"response":{"status":200,"headers":[["Content-Type","text/html"]],"body":"All good."}}},{"status":"failed","started_at":"2020-08-10T14:00:05.004Z","finished_at":"2020-08-10T14:00:05.360Z","http":{"request":{"url":"https://typo.example.com/webhooks","headers":[["Accept","*/*"]]},"response":{"status":404,"headers":[["Content-Type","text/html"],["Pragma","no-cache"]],"body":"Oops. Not found."}},"errors":[75499]}]}}},"wireless-public_Error":{"type":"object","properties":{"code":{"type":"string","example":"10011"},"title":{"type":"string","example":"Bad Request"},"detail":{"type":"string","example":"Invalid parameter value"}}},"wireless-public_ErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/wireless-public_Error"}}}},"wireless-public_ErrorResponse_ea8f2ad863":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/wireless-public_Error_ea8f2ad863"}}}},"wireless-public_Error_ea8f2ad863":{"type":"object","properties":{"code":{"type":"string","example":"10011"},"title":{"type":"string","example":"Bad Request"},"detail":{"type":"string","example":"Invalid parameter value"}}},"wireless-public_ExternalWdrGetDetailResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExternalWdrDetailRecordDto"}},"meta":{"$ref":"#/components/schemas/wireless-public_PaginationMeta_ea8f2ad863"}}},"wireless-public_PaginationMeta":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"wireless-public_PaginationMeta_ea8f2ad863":{"type":"object","properties":{"total_pages":{"type":"integer","format":"int32","example":3},"total_results":{"type":"integer","format":"int32","example":55},"page_number":{"type":"integer","format":"int32","example":2},"page_size":{"type":"integer","format":"int32","example":25}}},"wireless_Country":{"type":"object","title":"Country","properties":{"country_code":{"type":"string","description":"ISO 3166-1 Alpha-2 Country Code.","example":"US"}},"required":["country_code"]},"wireless_CreatedAt":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"wireless_CreatedAt_c5290d5308":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"wireless_Error":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"wireless_Error_c5290d5308":{"required":["code","title"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string"}}},"meta":{"type":"object","additionalProperties":true}},"type":"object"},"wireless_Errors":{"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/wireless_Error"}}},"type":"object"},"wireless_Id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"wireless_Id_c5290d5308":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"wireless_MCC":{"type":"object","title":"Mobile Country Code","properties":{"mcc":{"type":"string","description":"Mobile Country Code.","example":"310"}},"required":["mcc"]},"wireless_PLMN":{"type":"object","title":"Public land mobile network","properties":{"plmn":{"type":"string","description":"Public land mobile network code (MCC + MNC).","example":"310260"}},"required":["plmn"]},"wireless_PrivateWirelessGateway":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifies the resource.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"network_id":{"type":"string","format":"uuid","description":"The identification of the related network resource.","example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"record_type":{"type":"string","readOnly":true,"example":"private_wireless_gateway"},"created_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was created.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"updated_at":{"type":"string","description":"ISO 8601 formatted date-time indicating when the resource was updated.","readOnly":true,"example":"2018-02-02T22:25:27.521Z"},"name":{"description":"The private wireless gateway name.","type":"string","example":"My private wireless gateway"},"address_mode":{"description":"The address mode of the private wireless gateway. With static, each SIM card gets a fixed IP address from the gateway's IP range that is preserved across sessions. With dynamic, IP addresses are assigned by the network at attach time and may change between sessions.","type":"string","enum":["static","dynamic"],"example":"dynamic"},"region_code":{"description":"The name of the region where the Private Wireless Gateway is deployed.","type":"string","example":"dc2","default":null},"status":{"$ref":"#/components/schemas/PrivateWirelessGatewayStatus"},"ip_range":{"type":"string","description":"IP block used to assign IPs to the SIM cards in the Private Wireless Gateway.","example":"100.64.1.0/24","readOnly":true,"default":null},"assigned_resources":{"type":"array","description":"A list of the resources that have been assigned to the Private Wireless Gateway.","items":{"$ref":"#/components/schemas/PWGAssignedResourcesSummary"}}}},"wireless_Region":{"type":"object","title":"Region","properties":{"code":{"type":"string","description":"The unique code of the region.","example":"dc2"},"name":{"type":"string","description":"The name of the region.","example":"Washington DC, US"},"inserted_at":{"type":"string","format":"date-time","description":"Timestamp when the region was inserted."},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the region was last updated."}},"required":["code","name"]},"wireless_SIMCardAction":{"type":"object","title":"SIMCardAction","description":"This object represents a SIM card action. It allows tracking the current status of an operation that impacts the SIM card.","properties":{"id":{"$ref":"#/components/schemas/wireless_Id_c5290d5308"},"record_type":{"type":"string","example":"sim_card_action","readOnly":true},"sim_card_id":{"type":"string","format":"uuid","description":"The related SIM card identifier.","readOnly":true,"example":"6a09cdc3-8948-47f0-aa62-74ac943d6c58"},"action_type":{"type":"string","description":"The operation type. It can be one of the following: <br/>\n<ul>\n <li><code>enable</code> - move the SIM card to the <code>enabled</code> status</li>\n <li><code>enable_standby_sim_card</code> - move a SIM card previously on the <code>standby</code> status to the <code>enabled</code> status after it consumes data.</li>\n <li><code>disable</code> - move the SIM card to the <code>disabled</code> status</li>\n <li><code>set_standby</code> - move the SIM card to the <code>standby</code> status</li>\n <li><code>enable_voice</code> - enable voice calling on the SIM card</li>\n <li><code>disable_voice</code> - disable voice calling on the SIM card</li>\n </ul>","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 <code>null</code> for self-explanatory statuses, such as <code>in-progress</code> and <code>completed</code> but will include further information on statuses like <code>interrupted</code> and <code>failed</code>.","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"]},"x402PaymentRequired":{"type":"object","description":"x402 v2 Payment Required envelope. Returned by the x402 facilitator gateway when payment is required to access this operation. The same envelope is returned as the response body and base64-encoded in the `payment-required` HTTP response header.","required":["x402Version","error","accepts"],"properties":{"x402Version":{"type":"integer","const":2,"description":"x402 protocol version. Always 2."},"error":{"type":"string","description":"Human-readable error string (e.g. 'Payment required')."},"resource":{"type":"object","description":"The paid resource the client attempted to access.","properties":{"url":{"type":"string","format":"uri"},"method":{"type":"string","enum":["GET","POST"]},"description":{"type":"string"},"mimeType":{"type":"string"}}},"accepts":{"type":"array","description":"Accepted payment methods, in preference order.","items":{"type":"object","required":["scheme","network","amount","asset","payTo"],"properties":{"scheme":{"type":"string"},"network":{"type":"string"},"amount":{"type":"string"},"asset":{"type":"string"},"payTo":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"extra":{"type":"object","additionalProperties":true}}}},"extensions":{"type":"object","description":"Vendor-defined extensions (e.g. catalog URLs, headers).","additionalProperties":true}}},"x402ChatCompletionResponse":{"type":"object","description":"OpenAI-compatible chat completion response. Returned by the x402 gateway after payment settles. Schema is the minimal subset of the OpenAI chat-completions response that downstream clients rely on.","required":["id","object","choices"],"properties":{"id":{"type":"string","description":"Unique identifier for the completion."},"object":{"type":"string","const":"chat.completion"},"choices":{"type":"array","description":"Generated completion choices (typically one).","items":{"type":"object","required":["index","message","finish_reason"],"properties":{"index":{"type":"integer","minimum":0},"message":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["system","user","assistant","tool"]},"content":{"type":"string"}}},"finish_reason":{"type":"string","description":"Why generation stopped (e.g. 'stop', 'length', 'tool_calls')."}}}},"usage":{"type":"object","description":"Token usage for the request.","properties":{"prompt_tokens":{"type":"integer","minimum":0},"completion_tokens":{"type":"integer","minimum":0},"total_tokens":{"type":"integer","minimum":0}}}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Telnyx API key supplied as `Authorization: Bearer <token>`. 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"},"transcriptions-search_bearerAuth":{"type":"http","scheme":"bearer","description":"Telnyx API key. Results are automatically scoped to the authenticated user's organization."},"web-search_bearerAuth":{"type":"http","scheme":"bearer","description":"Telnyx API key"}}},"webhooks":{"CallAIGatherEnded":{"post":{"summary":"Call AI Gather Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallAIGatherEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.ai_gather.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","status":"valid","message_history":[{"content":"Hello, can you tell me your age and where you live?","role":"assistant"},{"content":"Hello, I'm 29 and I live in Paris?","role":"user"}],"result":{"age":29,"city":"Paris"}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallAIGatherEnded","tags":["Callbacks"]}},"CallAIGatherMessageHistoryUpdated":{"post":{"summary":"Call AI Gather Message History Updated","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallAIGatherMessageHistoryUpdatedEvent"},"example":{"data":{"record_type":"event","event_type":"call.ai_gather.message_history_updated","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","message_history":[{"content":"Hello, can you tell me your age and where you live?","role":"assistant"},{"content":"Hello, I'm 29 and I live in Paris?","role":"user"}]}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallAIGatherMessageHistoryUpdated","tags":["Callbacks"]}},"CallAIGatherPartialResults":{"post":{"summary":"Call AI Gather Partial Results","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallAIGatherPartialResultsEvent"},"example":{"data":{"record_type":"event","event_type":"call.ai_gather.partial_results","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","message_history":[{"content":"Hello, can you tell me your age and where you live?","role":"assistant"},{"content":"Hello, I'm 29 and I live in Paris?","role":"user"}],"partial_results":{"age":29,"city":"Paris"}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallAIGatherPartialResults","tags":["Callbacks"]}},"TexmlAiGatherWebhook":{"post":{"operationId":"TexmlAiGather","summary":"TeXML AI Gather","description":"Webhook sent when AI Gather completes with transcription results.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlAiGatherWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","Base64MessageHistory":"W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0=","Base64Result":"eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","ConnectionId":"1234567890","From":"+35319605860","Status":"valid","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallAmdWebhook":{"post":{"operationId":"TexmlCallAmd","summary":"TeXML Call AMD","description":"Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallAmdWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","AnsweredBy":"human","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","ConnectionId":"1234567890","MachineDetectionDuration":"2500"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallAnsweredWebhook":{"post":{"operationId":"TexmlCallAnswered","summary":"TeXML Call Answered","description":"Webhook sent when a TeXML call is answered.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallAnsweredWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallDuration":"15","CallInitiatedAt":"2024-01-15T10:30:26.028Z","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"in-progress","CallbackSource":"call-progress-events","CallerId":"John Doe","Codec":"PCMU","ConnectionId":"1234567890","ErrorCode":"10001","ErrorMessage":"Call failed","From":"+35319605860","ParentCallSid":"v3:parent-call-id","ParentCallSidLegacy":"v3:parent-call-id","SamplingRate":"8000","SequenceNumber":2,"ShakenStirAttestation":"A","ShakenStirValidated":true,"Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallCompletedWebhook":{"post":{"operationId":"TexmlCallCompleted","summary":"TeXML Call Completed","description":"Webhook sent when a TeXML call is completed.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallCompletedWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","AnsweredTime":"2024-01-15T10:30:15Z","CallControlId":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallDuration":"45","CallInitiatedAt":"2024-01-15T10:30:26.028Z","CallLegId":"abc123-leg1","CallQualityStats":"{\"mos\":4.2,\"jitter\":10,\"packet_loss\":0.5}","CallSessionId":"session-abc123","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"completed","CallbackSource":"call-progress-events","CallerId":"John Doe","ConnectionId":"1234567890","DialCallDuration":"120","DialCallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","DialCallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","DialCallStatus":"completed","EndTime":"2024-01-15T10:31:00Z","ErrorCode":"10001","ErrorMessage":"Call failed","From":"+35319605860","HangupCause":"normal_clearing","HangupSource":"caller","OccurredAt":"2024-01-15T10:31:00Z","OrganizationId":"org-abc123","ParentCallSid":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","ParentCallSidLegacy":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","RecordingDuration":"90","RecordingUrl":"https://api.telnyx.com/v2/recordings/abc123.wav","SequenceNumber":3,"ShakenStirAttestation":"A","ShakenStirValidated":true,"SipHangupCause":"200","StartTime":"2024-01-15T10:30:00Z","Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420","UserId":"f5586561-8ff0-4291-a51b-c7dfe4139ff9"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallDtmfWebhook":{"post":{"operationId":"TexmlCallDtmf","summary":"TeXML Call DTMF","description":"Webhook sent when a DTMF digit is received during a TeXML call.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallDtmfWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallInitiatedAt":"2024-01-15T10:30:26.028Z","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"dtmf","CallbackSource":"call-progress-events","CallerId":"John Doe","ConnectionId":"1234567890","Digit":"5","ErrorCode":"10001","ErrorMessage":"Call failed","From":"+35319605860","ParentCallSid":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","ParentCallSidLegacy":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","SequenceNumber":3,"ShakenStirAttestation":"A","ShakenStirValidated":true,"Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallInitiatedWebhook":{"post":{"operationId":"TexmlCallInitiated","summary":"TeXML Call Initiated","description":"Webhook sent when a TeXML call is initiated.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallInitiatedWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallInitiatedAt":"2024-01-15T10:30:26.028Z","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"initiated","CallbackSource":"call-progress-events","CallerId":"John Doe","ConnectionId":"1234567890","ErrorCode":"10001","ErrorMessage":"Call failed","From":"+35319605860","ParentCallSid":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","ParentCallSidLegacy":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","SequenceNumber":0,"ShakenStirAttestation":"A","ShakenStirValidated":true,"Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlCallRingingWebhook":{"post":{"operationId":"TexmlCallRinging","summary":"TeXML Call Ringing","description":"Webhook sent when a TeXML call is ringing.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlCallRingingWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallDuration":"10","CallInitiatedAt":"2024-01-15T10:30:26.028Z","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"ringing","CallbackSource":"call-progress-events","CallerId":"John Doe","ConnectionId":"1234567890","ErrorCode":"10001","ErrorMessage":"Call failed","From":"+35319605860","ParentCallSid":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","ParentCallSidLegacy":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","SequenceNumber":1,"ShakenStirAttestation":"A","ShakenStirValidated":true,"Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlConferenceEndWebhook":{"post":{"operationId":"TexmlConferenceEnd","summary":"TeXML Conference End","description":"Webhook sent when a TeXML conference ends.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlConferenceEndWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallingPartyType":"customer","ConferenceSid":"conf_abc123def456","ConnectionId":"1234567890","FriendlyName":"MyConference","From":"+35319605860","FromSipUri":"sip:user@example.com","ParticipantLabel":"participant-1","SequenceNumber":5,"StatusCallbackEvent":"conference-end","Timestamp":"2024-01-15T11:30:00Z","To":"+13129457420","ToSipUri":"sip:conference@example.com"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlConferenceJoinWebhook":{"post":{"operationId":"TexmlConferenceJoin","summary":"TeXML Conference Join","description":"Webhook sent when a participant joins a TeXML conference.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlConferenceJoinWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallingPartyType":"customer","ConferenceSid":"conf_abc123def456","ConnectionId":"1234567890","FriendlyName":"MyConference","From":"+35319605860","FromSipUri":"sip:user@example.com","ParticipantLabel":"participant-1","SequenceNumber":2,"StatusCallbackEvent":"participant-join","Timestamp":"2024-01-15T10:31:00Z","To":"+13129457420","ToSipUri":"sip:conference@example.com"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlConferenceLeaveWebhook":{"post":{"operationId":"TexmlConferenceLeave","summary":"TeXML Conference Leave","description":"Webhook sent when a participant leaves a TeXML conference.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlConferenceLeaveWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallingPartyType":"customer","ConferenceSid":"conf_abc123def456","ConnectionId":"1234567890","FriendlyName":"MyConference","From":"+35319605860","FromSipUri":"sip:user@example.com","ParticipantLabel":"participant-1","SequenceNumber":4,"StatusCallbackEvent":"participant-leave","Timestamp":"2024-01-15T11:00:00Z","To":"+13129457420","ToSipUri":"sip:conference@example.com"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlConferenceSpeakerWebhook":{"post":{"operationId":"TexmlConferenceSpeaker","summary":"TeXML Conference Speaker","description":"Webhook sent when a participant starts or stops speaking in a TeXML conference.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlConferenceSpeakerWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallingPartyType":"customer","ConferenceSid":"conf_abc123def456","ConnectionId":"1234567890","FriendlyName":"MyConference","From":"+35319605860","FromSipUri":"sip:user@example.com","ParticipantLabel":"participant-1","SequenceNumber":3,"StatusCallbackEvent":"participant-speech-start","Timestamp":"2024-01-15T10:35:00Z","To":"+13129457420","ToSipUri":"sip:conference@example.com"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlConferenceStartWebhook":{"post":{"operationId":"TexmlConferenceStart","summary":"TeXML Conference Start","description":"Webhook sent when a TeXML conference starts.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlConferenceStartWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallingPartyType":"customer","ConferenceSid":"conf_abc123def456","ConnectionId":"1234567890","FriendlyName":"MyConference","From":"+35319605860","FromSipUri":"sip:user@example.com","ParticipantLabel":"participant-1","SequenceNumber":0,"StatusCallbackEvent":"conference-start","Timestamp":"2024-01-15T10:30:00Z","To":"+13129457420","ToSipUri":"sip:conference@example.com"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlGatherWebhook":{"post":{"operationId":"TexmlGather","summary":"TeXML Gather","description":"Webhook sent when a Gather command completes (sent to the action URL).\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlGatherWebhookSchema"},"example":{"AccountSid":"cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b","CallSid":"v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w","CallSidLegacy":"v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w","Confidence":0.95,"Digits":"1","From":"Defaultj35z6@sip.telnyx.com","SpeechResult":"Please connect me to sales","To":"+12132045020"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlHttpRequestWebhook":{"post":{"operationId":"TexmlHttpRequest","summary":"TeXML HTTP Request","description":"Webhook sent as response to an HTTP Request instruction.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlHttpRequestWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallerId":"John Doe","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","ConnectionId":"1234567890","From":"+35319605860","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlQueueWebhook":{"post":{"operationId":"TexmlQueue","summary":"TeXML Queue","description":"Webhook sent for queue status events (triggered by Enqueue command waitUrl).\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlQueueWebhookSchema"},"example":{"AccountSid":"4e71926f-8f13-450e-b91c-23c2ef786aa6","AvgQueueTime":"45","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","ConnectionId":"1234567890","CurrentQueueSize":"3","From":"+35319605860","QueuePosition":"2","QueueSid":"my-queue","QueueTime":"30","To":"+13129457420"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlRecordingCompletedWebhook":{"post":{"operationId":"TexmlRecordingCompleted","summary":"TeXML Recording Completed","description":"Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent).\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlRecordingCompletedWebhookSchema"},"example":{"AccountSid":"cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b","CallSid":"v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ","CallSidLegacy":"v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ","ConnectionId":"1234567890","RecordingChannels":1,"RecordingDuration":"5","RecordingSid":"35094891-3290-4142-b2c2-b2eda57534cf","RecordingSource":"DialVerb","RecordingStatus":"completed","RecordingUrl":"https://recording.com/your-recording-url"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlRecordingInProgressWebhook":{"post":{"operationId":"TexmlRecordingInProgress","summary":"TeXML Recording In-Progress","description":"Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent).\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlRecordingInProgressWebhookSchema"},"example":{"AccountSid":"cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b","CallSid":"v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ","CallSidLegacy":"v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ","ConnectionId":"1234567890","RecordingChannels":1,"RecordingSid":"35094891-3290-4142-b2c2-b2eda57534cf","RecordingSource":"DialVerb","RecordingStatus":"in-progress"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlReferStatusWebhook":{"post":{"operationId":"TexmlReferStatus","summary":"TeXML Refer Status","description":"Webhook sent for SIP REFER status updates.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlReferStatusWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","NotifySipResponseCode":"200","ReferCallStatus":"in-progress","ReferSipResponseCode":"202","Timestamp":"2024-01-15T10:30:00Z"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlSiprecWebhook":{"post":{"operationId":"TexmlSiprec","summary":"TeXML SIPREC","description":"Webhook sent for SIPREC session status updates.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlSiprecWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","SiprecError":"SIPREC connection failed","SiprecEvent":"siprec-started","SiprecSid":"siprec-abc123","Timestamp":"2024-01-15T10:30:00Z"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlStreamWebhook":{"post":{"operationId":"TexmlStream","summary":"TeXML Stream","description":"Webhook sent for media streaming status updates.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlStreamWebhookSchema"},"example":{"AccountSid":"f5586561-8ff0-4291-a51b-c7dfe4139ff9","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","StreamError":"Connection timeout","StreamEvent":"stream-started","StreamName":"my_stream","StreamSid":"stream-abc123","Timestamp":"2024-01-15T10:30:00Z"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"TexmlTranscriptionWebhook":{"post":{"operationId":"TexmlTranscription","summary":"TeXML Transcription","description":"Webhook sent when a recording transcription is completed.\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TexmlTranscriptionWebhookSchema"},"example":{"AccountSid":"61bf923e-5e4d-4595-a110-56190ea18a1b","CallSid":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallSidLegacy":"v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ","CallStatus":"in-progress","From":"+35319605860","RecordingSid":"35094891-3290-4142-b2c2-b2eda57534cf","RecordingUrl":"https://api.telnyx.com/v2/recordings/abc123.wav","To":"+13129457420","TranscriptionSid":"b08f0fa1-a32c-4218-b3b5-9cf78941ccac","TranscriptionStatus":"completed","TranscriptionText":"Good morning, how may I help you?"}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"artifactCompleted":{"post":{"summary":"artifact.completed","description":"Sent when an artifact finishes generating -- `summary`, `action_items`, `decisions`, `topics`, `open_questions` or `custom`. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.","tags":["Meeting Session Webhooks"],"parameters":[{"name":"X-Meeting-Bot-Signature","in":"header","required":true,"description":"Signature header `t=<unix-seconds>,v1=<hex>`. 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=<unix-seconds>,v1=<hex>`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent.","schema":{"type":"string"},"example":"t=1784297100,v1=5e8f...a3c1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","version","occurred_at","data"],"properties":{"id":{"type":"string","description":"Unique event id; deduplicate deliveries on it.","example":"whdel_9f2c..."},"event":{"type":"string","description":"Event type.","enum":["artifact.failed"]},"version":{"type":"string","description":"Envelope version.","example":"1"},"occurred_at":{"type":"string","format":"date-time","description":"When the event occurred."},"data":{"type":"object","properties":{"session_id":{"type":"string","description":"The meeting session this event belongs to.","example":"mtgsess_9b2f..."},"artifact_id":{"type":"string","description":"Id of the failed artifact.","example":"mtgart_4e7c..."},"type":{"type":"string","enum":["summary","action_items","decisions","topics","open_questions","custom"],"description":"Type of the failed artifact."}},"description":"Failed artifact reference and reason.","additionalProperties":false,"required":["session_id","artifact_id","type"]}},"additionalProperties":false},"example":{"id":"whdel_9f2c...","event":"artifact.failed","version":"1","occurred_at":"2026-06-16T09:06:00Z","data":{"session_id":"mtgsess_9b2f...","artifact_id":"mtgart_4e7c...","type":"summary"}}}}},"responses":{"200":{"description":"Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried."}},"operationId":"MeetingArtifactFailedWebhook","security":[]}},"callAnswered":{"post":{"summary":"Call Answered","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallAnsweredEvent"},"example":{"data":{"record_type":"event","event_type":"call.answered","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","start_time":"2018-02-02T22:25:27.521992Z","state":"answered"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallAnswered","tags":["Callbacks"]}},"callBridged":{"post":{"summary":"Call Bridged","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallBridgedEvent"},"example":{"data":{"record_type":"event","event_type":"call.bridged","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallBridged","tags":["Callbacks"]}},"callConversationEnded":{"post":{"summary":"Call Conversation Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/callConversationEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.conversation.ended","id":"eb8775a6-634f-48b0-b177-d5465a8a8e9f","occurred_at":"2025-05-29T13:35:38.817785Z","created_at":"2025-05-29T13:35:38.927621Z","payload":{"assistant_id":"assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d","call_control_id":"v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ","call_leg_id":"cc29cce6-3c91-11f0-a8e5-02420aef3d20","call_session_id":"cc29c8d6-3c91-11f0-aa7c-02420aef3d20","calling_party_type":"sip","client_state":"g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl","connection_id":"2694492062593582591","conversation_id":"0424805b-adc1-4ff8-9f95-e1de6883ecbe","duration_sec":3,"from":"+13124287921","to":"jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com","llm_model":"openai/gpt-4o","stt_model":"distil-whisper/distil-large-v2","tts_model_id":"Natural","tts_provider":"telnyx","tts_voice_id":"Marissa","reason":"customer_disconnect"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallConversationEnded","tags":["Callbacks"]}},"callConversationInsightsGenerated":{"post":{"summary":"Call Conversation Insights Generated","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/callConversationInsightsGeneratedEvent"},"example":{"data":{"record_type":"event","event_type":"call.conversation_insights.generated","id":"898e96ef-be63-45aa-9e7d-01332bff9a97","occurred_at":"2025-02-19T17:02:49.371454Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","calling_party_type":"pstn","insight_group_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","results":[{"insight_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","result":"The user inquired about the menu at Ember & Oak. The menu offers various options, including vegetarian, vegan, and gluten-free dishes, as well as a children's menu. The restaurant also has a daily happy hour from 4 PM to 6 PM and offers takeaway and delivery services. The user found the information helpful but had to leave without making any further decisions or requests. No specific preferences or goals were expressed beyond inquiring about the menu."}]}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallConversationInsightsGenerated","tags":["Callbacks"]}},"callCost":{"post":{"summary":"Call Cost","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallCostEvent"},"example":{"data":{"record_type":"event","event_type":"call.cost","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","billing_group_id":"f5586561-8ff0-4291-a0ac-84fe544797bd","status":"success","total_cost":"0.0106","billed_duration_secs":120,"cost_parts":[{"call_part":"sip-trunking","rate":"0.0050","cost":"0.0050","currency":"USD","billed_duration_secs":60},{"call_part":"call-recording","rate":"0.00190","cost":"0.0038","currency":"USD","billed_duration_secs":120},{"call_part":"call-control","rate":"0.00180","cost":"0.0018","currency":"USD","billed_duration_secs":60}],"occurred_at":"2018-02-02T22:25:27.521992Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallCost","tags":["Callbacks"]}},"callDeepfakeDetectionError":{"post":{"summary":"Call Deepfake Detection Error","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallDeepfakeDetectionErrorEvent"},"example":{"data":{"record_type":"event","event_type":"call.deepfake_detection.error","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","error_message":"detection_timeout"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallDeepfakeDetectionError","tags":["Callbacks"]}},"callDeepfakeDetectionResult":{"post":{"summary":"Call Deepfake Detection Result","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallDeepfakeDetectionResultEvent"},"example":{"data":{"record_type":"event","event_type":"call.deepfake_detection.result","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","result":"fake","score":0.87,"consistency":94.5}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallDeepfakeDetectionResult","tags":["Callbacks"]}},"callDtmfReceived":{"post":{"summary":"Call Dtmf Received","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallDtmfReceivedEvent"},"example":{"data":{"record_type":"event","event_type":"call.dtmf.received","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","digit":"#"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallDtmfReceived","tags":["Callbacks"]}},"callEnqueued":{"post":{"summary":"Call Enqueued","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallEnqueuedEvent"},"example":{"data":{"record_type":"event","event_type":"call.enqueued","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","queue":"support","current_position":5}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallEnqueued","tags":["Callbacks"]}},"callForkStarted":{"post":{"summary":"Call Fork Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallForkStartedEvent"},"example":{"data":{"record_type":"event","event_type":"call.fork.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_control_id":"v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","stream_type":"decrypted"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallForkStarted","tags":["Callbacks"]}},"callForkStopped":{"post":{"summary":"Call Fork Stopped","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallForkStoppedEvent"},"example":{"data":{"record_type":"event","event_type":"call.fork.stopped","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_control_id":"v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","stream_type":"decrypted"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallForkStopped","tags":["Callbacks"]}},"callGatherEnded":{"post":{"summary":"Call Gather Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallGatherEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.gather.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","digits":"123","status":"valid"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallGatherEnded","tags":["Callbacks"]}},"callHangup":{"post":{"summary":"Call Hangup","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallHangupEvent"},"example":{"data":{"record_type":"event","event_type":"call.hangup","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","start_time":"2018-02-02T22:20:27.521992Z","state":"hangup","hangup_cause":"call_rejected","hangup_source":"caller","sip_hangup_cause":"603","call_quality_stats":{"inbound":{"jitter_max_variance":"2.74","jitter_packet_count":"0","mos":"4.50","packet_count":"591","skip_packet_count":"9"},"outbound":{"packet_count":"0","skip_packet_count":"0"}}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallHangup","tags":["Callbacks"]}},"callHold":{"post":{"summary":"Call Hold","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallHoldEvent"},"example":{"data":{"record_type":"event","event_type":"call.hold","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallHold","tags":["Callbacks"]}},"callInitiated":{"post":{"operationId":"CallInitiated","summary":"Call Initiated","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallInitiatedEvent"},"example":{"data":{"record_type":"event","event_type":"call.initiated","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","direction":"incoming","state":"parked"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"callLeftQueue":{"post":{"summary":"Call Left Queue","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallLeftQueueEvent"},"example":{"data":{"record_type":"event","event_type":"call.dequeued","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","queue":"support","queue_position":3,"reason":"leave"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallLeftQueue","tags":["Callbacks"]}},"callMachineDetectionEnded":{"post":{"summary":"Call Machine Detection Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallMachineDetectionEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.machine.detection.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","result":"human"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallMachineDetectionEnded","tags":["Callbacks"]}},"callMachineGreetingEnded":{"post":{"summary":"Call Machine Greeting Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallMachineGreetingEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.machine.greeting.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","result":"ended"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallMachineGreetingEnded","tags":["Callbacks"]}},"callMachinePremiumDetectionEnded":{"post":{"summary":"Call Machine Premium Detection Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallMachinePremiumDetectionEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.machine.premium.detection.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","result":"machine"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallMachinePremiumDetectionEnded","tags":["Callbacks"]}},"callMachinePremiumGreetingEnded":{"post":{"summary":"Call Machine Premium Greeting Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallMachinePremiumGreetingEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.machine.premium.greeting.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860","result":"beep_detected"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallMachinePremiumGreetingEnded","tags":["Callbacks"]}},"callPaymentCompleted":{"post":{"summary":"Call Payment Completed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallPaymentCompletedEvent"},"example":{"data":{"record_type":"event","event_type":"call.payment.completed","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2026-07-27T07:00:00.000000Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","from":"+353****5860","to":"+131****7420","payment_connector":"Default","payment_method":"credit-card","payment_card_type":"visa","payment_card_number":"xxxxxxxxxxxx1111","expiration_date":"1230","security_code":"xxx","payment_card_postal_code":"10001","result":"success","charge_id":"ch_abc123","payment_confirmation_code":"CONF-98765"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallPaymentCompleted","tags":["Callbacks"]}},"callPaymentProgress":{"post":{"summary":"Call Payment Progress","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallPaymentProgressEvent"},"example":{"data":{"record_type":"event","event_type":"call.payment.progress","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2026-07-27T07:00:00.000000Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","from":"+353****5860","to":"+131****7420","payment_connector":"Default","payment_method":"credit-card","payment_step":"payment-card-number","payment_status":"completed","attempt":1,"payment_card_type":"visa","payment_card_number":"xxxxxxxxxxxx1111"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallPaymentProgress","tags":["Callbacks"]}},"callPlaybackEnded":{"post":{"summary":"Call Playback Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallPlaybackEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.playback.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","media_name":"my_media_uploaded_to_media_storage_api","overlay":false,"status":"completed"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallPlaybackEnded","tags":["Callbacks"]}},"callPlaybackStarted":{"post":{"summary":"Call Playback Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallPlaybackStartedEvent"},"example":{"data":{"record_type":"event","event_type":"call.playback.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","media_url":"http://example.com/audio.wav","overlay":false}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallPlaybackStarted","tags":["Callbacks"]}},"callRecordingError":{"post":{"summary":"Call Recording Error","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/callRecordingErrorEvent"},"example":{"data":{"record_type":"event","event_type":"call.recording.error","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","reason":"Internal server error"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallRecordingError","tags":["Callbacks"]}},"callRecordingSaved":{"post":{"summary":"Call Recording Saved","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallRecordingSavedEvent"},"example":{"data":{"record_type":"event","event_type":"call.recording.saved","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","recording_started_at":"2018-02-02T22:20:27.521992Z","recording_ended_at":"2018-02-02T22:20:27.521992Z","channels":"single","recording_urls":{"mp3":"http://example.com/recording.mp3","wav":"http://example.com/recording.wav"},"public_recording_urls":{"mp3":"http://example.com/recording.mp3","wav":"http://example.com/recording.wav"}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallRecordingSaved","tags":["Callbacks"]}},"callRecordingTranscriptionSaved":{"post":{"summary":"Call Recording Transcription Saved","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/callRecordingTranscriptionSavedEvent"},"example":{"data":{"record_type":"event","event_type":"call.recording.transcription.saved","id":"898e96ef-be63-45aa-9e7d-01332bff9a97","occurred_at":"2025-02-19T17:02:49.371454Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","calling_party_type":"pstn","recording_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","recording_transcription_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","status":"completed","transcription_text":"Hi!"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallRecordingTranscriptionSaved","tags":["Callbacks"]}},"callReferCompleted":{"post":{"summary":"Call Refer Completed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallReferCompletedEvent"},"example":{"data":{"record_type":"event","event_type":"call.refer.completed","id":"4ce4366d-8d87-44be-a00b-942154e9c5f5","occurred_at":"2020-03-30T13:29:44.650000Z","payload":{"call_control_id":"v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA","call_leg_id":"817f7de8-728a-11ea-9ce6-02420a0f8969","call_session_id":"817f8c2a-728a-11ea-9cbe-02420a0f8969","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","connection_id":"1289082222292239760","from":"+35319605860","sip_notify_response":200,"to":"+13129457420"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallReferCompleted","tags":["Callbacks"]}},"callReferFailed":{"post":{"summary":"Call Refer Failed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallReferFailedEvent"},"example":{"data":{"record_type":"event","event_type":"call.refer.failed","id":"fbeb70e0-54eb-4e26-8d19-56b43e66f754","occurred_at":"2020-03-30T13:29:42.130013Z","payload":{"call_control_id":"v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA","call_leg_id":"817f7de8-728a-11ea-9ce6-02420a0f8969","call_session_id":"817f8c2a-728a-11ea-9cbe-02420a0f8969","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","connection_id":"1289082222292239760","from":"+35319605860","sip_notify_response":603,"to":"+13129457420"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallReferFailed","tags":["Callbacks"]}},"callReferStarted":{"post":{"summary":"Call Refer Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallReferStartedEvent"},"example":{"data":{"record_type":"event","event_type":"call.refer.started","id":"fbeb70e0-54eb-4e26-8d19-56b43e66f754","occurred_at":"2020-03-30T13:29:42.130013Z","payload":{"call_control_id":"v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA","call_leg_id":"817f7de8-728a-11ea-9ce6-02420a0f8969","call_session_id":"817f8c2a-728a-11ea-9cbe-02420a0f8969","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","connection_id":"1289082222292239760","from":"+35319605860","sip_notify_response":100,"to":"+13129457420"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallReferStarted","tags":["Callbacks"]}},"callSiprecFailed":{"post":{"summary":"Call Siprec Failed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallSiprecFailedEvent"},"example":{"data":{"record_type":"event","event_type":"siprec.failed","id":"25dc3731-e51e-4927-a50d-a61cc25984b1","occurred_at":"2021-12-15T14:11:24.613295Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","failure_cause":"no_answer"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallSiprecFailed","tags":["Callbacks"]}},"callSiprecStarted":{"post":{"summary":"Call Siprec Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallSiprecStartedEvent"},"example":{"data":{"record_type":"event","event_type":"siprec.started","id":"7d743d69-f7e8-4761-b7d4-8cacf9d3c031","occurred_at":"2021-12-15T14:06:32.059436Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallSiprecStarted","tags":["Callbacks"]}},"callSiprecStopped":{"post":{"summary":"Call Siprec Stopped","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallSiprecStoppedEvent"},"example":{"data":{"record_type":"event","event_type":"siprec.stopped","id":"25dc3731-e51e-4927-a50d-a61cc25984b1","occurred_at":"2021-12-15T14:11:24.613295Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","hangup_cause":"normal_clearing"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallSiprecStopped","tags":["Callbacks"]}},"callSpeakEnded":{"post":{"summary":"Call Speak Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallSpeakEndedEvent"},"example":{"data":{"record_type":"event","event_type":"call.speak.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","status":"completed"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallSpeakEnded","tags":["Callbacks"]}},"callSpeakStarted":{"post":{"summary":"Call Speak Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallSpeakStartedEvent"},"example":{"data":{"record_type":"event","event_type":"call.speak.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallSpeakStarted","tags":["Callbacks"]}},"callStreamingFailed":{"post":{"summary":"Call Streaming Failed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallStreamingFailedEvent"},"example":{"data":{"record_type":"event","event_type":"streaming.failed","id":"25dc3731-e51e-4927-a50d-a61cc25984b1","occurred_at":"2021-12-15T14:11:24.613295Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","failure_reason":"connection_failed","stream_id":"1edb94f9-7ef0-4150-b502-e0ebadfd9491","stream_params":{"stream_url":"wss://www.example.com/websocket","track":"inbound_track"},"stream_type":"websocket"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallStreamingFailed","tags":["Callbacks"]}},"callStreamingStarted":{"post":{"summary":"Call Streaming Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallStreamingStartedEvent"},"example":{"data":{"record_type":"event","event_type":"streaming.started","id":"7d743d69-f7e8-4761-b7d4-8cacf9d3c031","occurred_at":"2021-12-15T14:06:32.059436Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","stream_url":"wss://www.example.com/websocket"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallStreamingStarted","tags":["Callbacks"]}},"callStreamingStopped":{"post":{"summary":"Call Streaming Stopped","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallStreamingStoppedEvent"},"example":{"data":{"record_type":"event","event_type":"streaming.stopped","id":"25dc3731-e51e-4927-a50d-a61cc25984b1","occurred_at":"2021-12-15T14:11:24.613295Z","payload":{"call_control_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","call_session_id":"31f19208-5db0-11ec-9ea7-02420a0d3a69","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","stream_url":"wss://www.example.com/websocket"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallStreamingStopped","tags":["Callbacks"]}},"callUnhold":{"post":{"summary":"Call Unhold","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallUnholdEvent"},"example":{"data":{"record_type":"event","event_type":"call.unhold","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","from":"+35319605860","to":"+35319605860"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"CallUnhold","tags":["Callbacks"]}},"campaignStatusUpdate":{"post":{"operationId":"CampaignStatusUpdate","summary":"Campaign Status Update","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignStatusUpdateEvent"},"example":{"brandId":"d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5","campaignId":"4b300178-131c-d902-d54e-72d90ba1620j","createDate":"CreateDate","cspId":"Cspid","isTMobileRegistered":false,"type":"TELNYX_EVENT","description":"Campaign has been marked as dormant","status":"DORMANT"}}}},"responses":{"200":{"description":"The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"conferenceCreated":{"post":{"summary":"Conference Created","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceCreatedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.created","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceCreated","tags":["Callbacks"]}},"conferenceEnded":{"post":{"summary":"Conference Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceEndedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z","reason":"host_left"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceEnded","tags":["Callbacks"]}},"conferenceFloorChanged":{"post":{"summary":"Conference Floor Changed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceFloorChangedEvent"},"example":{"record_type":"event","event_type":"conference.floor.changed","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceFloorChanged","tags":["Callbacks"]}},"conferenceParticipantJoined":{"post":{"summary":"Conference Participant Joined","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantJoinedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.joined","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantJoined","tags":["Callbacks"]}},"conferenceParticipantLeft":{"post":{"summary":"Conference Participant Left","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantLeftEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.left","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantLeft","tags":["Callbacks"]}},"conferenceParticipantPlaybackEnded":{"post":{"summary":"Conference Participant Playback Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantPlaybackEndedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.playback.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","media_url":"https://www.example.com/audio.mp3","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantPlaybackEnded","tags":["Callbacks"]}},"conferenceParticipantPlaybackStarted":{"post":{"summary":"Conference Participant Playback Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantPlaybackStartedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.playback.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","media_url":"https://www.example.com/audio.mp3","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantPlaybackStarted","tags":["Callbacks"]}},"conferenceParticipantSpeakEnded":{"post":{"summary":"Conference Participant Speak Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantSpeakEndedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.speak.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantSpeakEnded","tags":["Callbacks"]}},"conferenceParticipantSpeakStarted":{"post":{"summary":"Conference Participant Speak Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceParticipantSpeakStartedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.participant.speak.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","connection_id":"7267xxxxxxxxxxxxxx","call_leg_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceParticipantSpeakStarted","tags":["Callbacks"]}},"conferencePlaybackEnded":{"post":{"summary":"Conference Playback Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferencePlaybackEndedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.playback.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"connection_id":"7267xxxxxxxxxxxxxx","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","media_url":"https://www.example.com/audio.mp3","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferencePlaybackEnded","tags":["Callbacks"]}},"conferencePlaybackStarted":{"post":{"summary":"Conference Playback Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferencePlaybackStartedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.playback.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"connection_id":"7267xxxxxxxxxxxxxx","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","media_url":"https://www.example.com/audio.mp3","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferencePlaybackStarted","tags":["Callbacks"]}},"conferenceRecordingSaved":{"post":{"summary":"Conference Recording Saved","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceRecordingSavedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.recording.saved","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","channels":"single","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","connection_id":"7267xxxxxxxxxxxxxx","format":"mp3","public_recording_urls":{"mp3":"http://example.com/recording.mp3","wav":"http://example.com/recording.wav"},"recording_ended_at":"2018-02-02T22:20:27.521992Z","recording_id":"4577f9a2-cf0e-44f3-ac57-9f95fb03fa47","recording_started_at":"2021-05-11T10:17:03.692107Z","recording_urls":{"mp3":"http://example.com/recording.mp3","wav":"http://example.com/recording.wav"}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceRecordingSaved","tags":["Callbacks"]}},"conferenceSpeakEnded":{"post":{"summary":"Conference Speak Ended","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceSpeakEndedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.speak.ended","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"connection_id":"7267xxxxxxxxxxxxxx","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceSpeakEnded","tags":["Callbacks"]}},"conferenceSpeakStarted":{"post":{"summary":"Conference Speak Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConferenceSpeakStartedEvent"},"example":{"data":{"record_type":"event","event_type":"conference.speak.started","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","payload":{"connection_id":"7267xxxxxxxxxxxxxx","creator_call_session_id":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","conference_id":"428c31b6-abf3-3bc1-b7f4-5013ef9657c1","occurred_at":"2018-02-02T22:25:27.521Z"}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ConferenceSpeakStarted","tags":["Callbacks"]}},"deliveryUpdate":{"post":{"summary":"Delivery Update","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagingOutboundMessageEvent"},"example":{"data":{"record_type":"event","id":"86f58db9-0fe3-4adc-9d1f-46e66e6e9323","event_type":"message.sent","occurred_at":"2019-01-23T18:10:02.574Z","payload":{"record_type":"message","direction":"outbound","id":"40385f64-5717-4562-b3fc-2c963f66afa6","type":"MMS","messaging_profile_id":"4000eba1-a0c0-4563-9925-b25e842a7cb6","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18445550001","carrier":"TELNYX LLC","line_type":"VoIP"},"to":[{"phone_number":"+18665550001","status":"queued","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[{"url":"https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png","content_type":null,"sha256":null,"size":null}],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}},"meta":{"attempt":1,"delivered_to":"https://www.example.com/hooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"DeliveryUpdate","tags":["Callbacks"]}},"fax.delivered":{"post":{"summary":"Fax Delivered","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaxDelivered"},"example":{"data":{"event_type":"fax.delivered","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"call_duration_secs":25,"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","page_count":2,"status":"delivered","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"FaxDelivered","tags":["Callbacks"]}},"fax.failed":{"post":{"summary":"Fax Failed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaxFailed"},"example":{"data":{"event_type":"fax.failed","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","failure_reason":"receiver_call_dropped","internal_failure_reason":"fs_fax_call_dropped","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"failed","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"FaxFailed","tags":["Callbacks"]}},"fax.media.processed":{"post":{"summary":"Fax Media Processed","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaxMediaProcessed"},"example":{"data":{"event_type":"fax.media.processed","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"media.processed","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"FaxMediaProcessed","tags":["Callbacks"]}},"fax.queued":{"post":{"operationId":"FaxQueued","summary":"Fax Queued","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaxQueued"},"example":{"data":{"event_type":"fax.queued","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"queued","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"fax.sending.started":{"post":{"summary":"Fax Sending Started","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaxSendingStarted"},"example":{"data":{"event_type":"fax.sending.started","id":"95479a2e-b947-470a-a88f-2da6dd07ae0f","occurred_at":"2020-05-05T13:08:22.039204Z","payload":{"connection_id":"234423","direction":"outbound","fax_id":"f8338808-3dc6-4f2b-942a-5d1f39255784","from":"+17733372107","original_media_url":"http://www.example.com/fax.pdf","status":"sending","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","to":"+15107882622","user_id":"19a75cea-02c6-4b9a-84fa-c9bc8341feb8"},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://www.example.com/webhooks"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"FaxSendingStarted","tags":["Callbacks"]}},"hostedNumberOrderEvent":{"post":{"operationId":"HostedNumberOrderEvent","summary":"Hosted Number Order Event","description":"Webhook fired when a messaging hosted number order is created, updated, deleted, or progresses through the internal-transfer lifecycle (detected, approval requested, approved, rejected, auto-approved). Inspect `event_type` to distinguish events.\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostedNumberOrderEvent"},"example":{"data":{"record_type":"event","id":"bf6307bd-884d-4c1f-b6ea-c62b8c495d3c","event_type":"messaging_hosted_numbers_orders.internal_transfer_approval_requested","occurred_at":"2026-04-20T18:10:02.574Z","payload":{"order_id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","order_status":"pending","profile_id":"d0b1dabe-efdb-4bc8-9dd3-11f0d8b5f5b3","user_id":"b448f9cc-a842-4784-98e9-03c1a5872950","numbers":[{"value":"+13125550001","status":"pending"}],"decision":"pending","approval_deadline":1714521600}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"inboundMessage":{"post":{"operationId":"InboundMessage","summary":"Inbound Message","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagingInboundMessageEvent"},"example":{"data":{"record_type":"event","id":"bf6307bd-884d-4c1f-b6ea-c62b8c495d3c","event_type":"message.received","occurred_at":"2019-01-23T18:10:02.574Z","payload":{"record_type":"message","direction":"inbound","id":"7ee4241c-f127-47e5-9c34-3aac291f8058","type":"SMS","messaging_profile_id":"0f512bda-ae1e-4597-8e11-e5f5686b97d3","organization_id":"b448f9cc-a842-4784-98e9-03c1a5872950","from":{"phone_number":"+18665550001","carrier":"T-MOBILE USA, INC.","line_type":"Wireless"},"to":[{"phone_number":"+18445550001","status":"delivered","carrier":"TELNYX LLC","line_type":"VoIP"}],"cc":[],"text":"Hello, World!","num_chars":13,"subject":"From Telnyx!","media":[],"webhook_url":"https://www.example.com/hooks","webhook_failover_url":"https://backup.example.com/hooks","encoding":"GSM-7","parts":1,"tags":["Greetings"],"cost":{"amount":"0.0051","currency":"USD"},"cost_breakdown":{"carrier_fee":{"amount":"0.00305","currency":"USD"},"rate":{"amount":"0.00205","currency":"USD"}},"tcr_campaign_id":"TCPA3X7","tcr_campaign_billable":true,"tcr_campaign_registered":"REGISTERED","received_at":"2019-01-23T18:10:02.574Z","sent_at":null,"completed_at":null,"valid_until":null,"errors":[]}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"numberOrderStatusUpdate":{"post":{"operationId":"NumberOrderStatusUpdate","summary":"Number Order Status Update","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/numbers_NumberOrderWebhookEvent"},"example":{"data":{"event_type":"number_order.complete","id":"d578b093-a0e7-4b64-b0d3-6b689a6ff170","occurred_at":"2025-08-22T16:23:54.496464Z","payload":{"id":"12ade33a-21c0-473b-b055-b3c836e1c292","record_type":"number_order","phone_numbers_count":1,"connection_id":"346789098765567","messaging_profile_id":"abc85f64-5717-4562-b3fc-2c9600","billing_group_id":"abc85f64-5717-4562-b3fc-2c9600","phone_numbers":[{"id":"dc8e4d67-33a0-4cbb-af74-7b58f05bd494","record_type":"number_order_phone_number","phone_number":"+19705555098","bundle_id":"bc8e4d67-33a0-4cbb-af74-7b58f05bd474","regulatory_requirements":[{"record_type":"phone_number_regulatory_requirement","requirement_id":"8ffb3622-7c6b-4ccc-b65f-7a3dc0099576","field_value":"45f45a04-b4be-4592-95b1-9306b9db2b21","field_type":"address"}],"requirements_met":true,"status":"success"}],"sub_number_orders_ids":["string"],"status":"pending","customer_reference":"MY REF 001","created_at":"2018-01-01T00:00:00.000000Z","updated_at":"2018-01-01T00:00:00.000000Z","requirements_met":true},"record_type":"event"},"meta":{"attempt":1,"delivered_to":"https://sample-api.com/webhook"}}}}},"responses":{"200":{"description":"The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"recordingAvailable":{"post":{"summary":"recording.available","description":"Sent when a recording is ready to download. The payload carries only `recording_types`, never URLs; fetch short-lived download URLs from `GET /meeting_sessions/{id}/recordings`. 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=<unix-seconds>,v1=<hex>`. 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":["recording.available"]},"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..."},"recording_types":{"type":"array","items":{"type":"string"},"description":"Available recording types.","example":["video_mixed"]}},"description":"Available recording types.","additionalProperties":false,"required":["session_id","recording_types"]}},"additionalProperties":false},"example":{"id":"whdel_9f2c...","event":"recording.available","version":"1","occurred_at":"2026-06-16T09:05:20Z","data":{"session_id":"mtgsess_9b2f...","recording_types":["video_mixed"]}}}}},"responses":{"200":{"description":"Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried."}},"operationId":"MeetingRecordingAvailableWebhook","security":[]}},"replacedLinkClick":{"post":{"summary":"Replaced Link Click","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplacedLinkClickEvent"},"example":{"data":{"record_type":"link_clicked","url":"https://telnyx.com","to":"18445550001","message_id":"7ee4241c-f127-47e5-9c34-3aac291f8058","time_clicked":"2019-04-01T14:45:45.450Z"}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"ReplacedLinkClick","tags":["Callbacks"]}},"sessionStatusChanged":{"post":{"summary":"session.status_changed","description":"Sent when the session moves to a new lifecycle status. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.","tags":["Meeting Session Webhooks"],"parameters":[{"name":"X-Meeting-Bot-Signature","in":"header","required":true,"description":"Signature header `t=<unix-seconds>,v1=<hex>`. 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 `timeout_exceeded_everyone_left` or `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=<unix-seconds>,v1=<hex>`. Compute HMAC-SHA256 with the webhook secret over the timestamp ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time. Reject timestamps outside your accepted skew. No bearer token is sent.","schema":{"type":"string"},"example":"t=1784297100,v1=5e8f...a3c1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["id","event","version","occurred_at","data"],"properties":{"id":{"type":"string","description":"Unique event id; deduplicate deliveries on it.","example":"whdel_9f2c..."},"event":{"type":"string","description":"Event type.","enum":["transcript.completed"]},"version":{"type":"string","description":"Envelope version.","example":"1"},"occurred_at":{"type":"string","format":"date-time","description":"When the event occurred."},"data":{"type":"object","properties":{"session_id":{"type":"string","description":"The meeting session this event belongs to.","example":"mtgsess_9b2f..."},"segment_count":{"type":"integer","description":"Number of transcript segments observed during finalization."},"last_seq":{"type":["integer","null"],"description":"Last transcript segment sequence number, or null for an empty transcript."},"ended_at":{"type":["string","null"],"format":"date-time","description":"Session end time, or null when unavailable."}},"description":"Finalized transcript details.","additionalProperties":false,"required":["session_id","segment_count","last_seq","ended_at"]}},"additionalProperties":false},"example":{"id":"whdel_9f2c...","event":"transcript.completed","version":"1","occurred_at":"2026-06-16T09:05:00Z","data":{"session_id":"mtgsess_9b2f...","segment_count":87,"last_seq":943,"ended_at":"2026-06-16T09:04:41Z"}}}}},"responses":{"200":{"description":"Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried."}},"operationId":"MeetingTranscriptCompletedWebhook","security":[]}},"transcription":{"post":{"summary":"Transcription","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionEvent"},"example":{"data":{"record_type":"event","event_type":"call.transcription","id":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","occurred_at":"2018-02-02T22:25:27.521992Z","payload":{"call_control_id":"v2:7subYr8fLrXmaAXm8egeAMpoSJ72J3SGPUuome81-hQuaKRf9b7hKA","call_leg_id":"5ca81340-5beb-11eb-ae45-02420a0f8b69","call_session_id":"5ca81eee-5beb-11eb-ba6c-02420a0f8b69","connection_id":"1240401930086254526","transcription_data":{"confidence":0.977219,"is_final":true,"transcript":"hello this is a test speech"}}}}}}},"responses":{"200":{"description":"The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"operationId":"Transcription","tags":["Callbacks"]}},"whatsappAccountUpdate":{"post":{"operationId":"WhatsappAccountUpdate","summary":"WhatsApp Account Update","description":"Reports coexistence lifecycle changes for a WhatsApp Business Account.\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappAccountUpdateEvent"},"example":{"data":{"record_type":"event","id":"72f74d14-7506-4de7-bd13-62aacf140fa3","event_type":"whatsapp.account.update","occurred_at":"2026-09-02T10:20:00.000Z","payload":{"record_type":"whatsapp_account","waba_id":"106540352242922","event":"ACCOUNT_OFFBOARDED"}}}}}},"responses":{"200":{"description":"Return an HTTP 200 to acknowledge the webhook."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}},"whatsappMessageEcho":{"post":{"operationId":"WhatsappMessageEcho","summary":"WhatsApp Business App Message Echo","description":"Delivers a non-billable mirror of a message sent from the WhatsApp Business app on a coexistence-enabled number. This outbound event does not open or extend the Cloud API customer service window.\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsappMessageEchoEvent"},"example":{"data":{"record_type":"event","id":"4f923db9-186f-4c6a-9a14-0b6d46e31d77","event_type":"message.echo","occurred_at":"2026-09-02T10:15:30.000Z","payload":{"record_type":"message","direction":"outbound","origin":"whatsapp_business_app","id":"c7b87bc9-d220-4b2c-916a-83c11ef9821f","type":"WHATSAPP","organization_id":"7a7f45eb-6670-45fd-a3e3-5b9e4a4f2103","messaging_profile_id":"4001799e-1457-4c7f-a96a-735ed44c7de7","from":{"phone_number":"+13125551234","carrier":"","line_type":""},"to":"+18655550001","body":{"from":"+18655550001","id":"c7b87bc9-d220-4b2c-916a-83c11ef9821f","foreign_id":"wamid.HBgLMTg2NTU1NTAwMDEFQIAERgSODQ2","timestamp":"1788344130","type":"text","text":{"body":"Sent from the WhatsApp Business app"}},"tags":[],"cost":{"amount":null,"currency":null},"received_at":"2026-09-02T10:15:29.000Z","errors":[]}}}}}},"responses":{"200":{"description":"Return an HTTP 200 to acknowledge the webhook."}},"parameters":[{"name":"telnyx-timestamp","in":"header","required":true,"description":"Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp","schema":{"type":"integer","format":"int64","description":"Unix timestamp for replay attack prevention"},"x-webhook-equivalent":"webhook-timestamp"},{"name":"telnyx-signature-ed25519","in":"header","required":true,"description":"Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature","schema":{"type":"string","description":"Ed25519 signature of timestamp|payload for verification"},"x-webhook-equivalent":"webhook-signature"}],"tags":["Callbacks"]}}},"x-service-info":{"categories":["communication","developer-tools"],"docs":{"apiReference":"https://developers.telnyx.com","homepage":"https://telnyx.com","llms":"https://telnyx.com/llms.txt"}}}
