{"files":{"SKILL.md":"---\nname: telnyx-api\ndescription: \"Telnyx API skill. Use when working with Telnyx for .well-known, 10dlc, access_ip_address. Covers 1022 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Telnyx API\nAPI version: 2.0.0\n\n## Auth\nBearer bearer | Bearer bearer | OAuth2 | Bearer bearer | Bearer bearer\n\n## Base URL\nhttps://api.telnyx.com/v2\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /.well-known/oauth-authorization-server -- authorization server metadata\n3. POST /10dlc/brand -- create first brand\n\n## Endpoints\n1022 endpoints across 164 groups. See references/api-spec.lap for full details.\n\n### .well-known\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /.well-known/oauth-authorization-server | Authorization server metadata |\n| GET | /.well-known/oauth-protected-resource | Protected resource metadata |\n\n### 10dlc\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /10dlc/brand | List Brands |\n| POST | /10dlc/brand | Create Brand |\n| GET | /10dlc/brand/feedback/{brandId} | Get Brand Feedback By Id |\n| GET | /10dlc/brand/smsOtp/{referenceId} | Get Brand SMS OTP Status |\n| DELETE | /10dlc/brand/{brandId} | Delete Brand |\n| GET | /10dlc/brand/{brandId} | Get Brand |\n| PUT | /10dlc/brand/{brandId} | Update Brand |\n| POST | /10dlc/brand/{brandId}/2faEmail | Resend brand 2FA email |\n| GET | /10dlc/brand/{brandId}/externalVetting | List External Vettings |\n| POST | /10dlc/brand/{brandId}/externalVetting | Order Brand External Vetting |\n| PUT | /10dlc/brand/{brandId}/externalVetting | Import External Vetting Record |\n| PUT | /10dlc/brand/{brandId}/revet | Revet Brand |\n| GET | /10dlc/brand/{brandId}/smsOtp | Get Brand SMS OTP Status by Brand ID |\n| POST | /10dlc/brand/{brandId}/smsOtp | Trigger Brand SMS OTP |\n| PUT | /10dlc/brand/{brandId}/smsOtp | Verify Brand SMS OTP |\n| GET | /10dlc/campaign | List Campaigns |\n| POST | /10dlc/campaign/acceptSharing/{campaignId} | Accept Shared Campaign |\n| GET | /10dlc/campaign/usecase/cost | Get Campaign Cost |\n| DELETE | /10dlc/campaign/{campaignId} | Deactivate campaign |\n| GET | /10dlc/campaign/{campaignId} | Get campaign |\n| PUT | /10dlc/campaign/{campaignId} | Update campaign |\n| POST | /10dlc/campaign/{campaignId}/appeal | Submit campaign appeal for manual review |\n| GET | /10dlc/campaign/{campaignId}/mnoMetadata | Get Campaign Mno Metadata |\n| GET | /10dlc/campaign/{campaignId}/operationStatus | Get campaign operation status |\n| GET | /10dlc/campaign/{campaignId}/osr/attributes | Get OSR campaign attributes |\n| GET | /10dlc/campaign/{campaignId}/sharing | Get Sharing Status |\n| POST | /10dlc/campaignBuilder | Submit Campaign |\n| GET | /10dlc/campaignBuilder/brand/{brandId}/usecase/{usecase} | Qualify By Usecase |\n| GET | /10dlc/enum/{endpoint} | Get Enum |\n| GET | /10dlc/partnerCampaign/sharedByMe | List shared partner campaigns |\n| GET | /10dlc/partnerCampaign/{campaignId}/sharing | Get Sharing Status |\n| GET | /10dlc/partner_campaigns | List Shared Campaigns |\n| GET | /10dlc/partner_campaigns/{campaignId} | Get Single Shared Campaign |\n| PATCH | /10dlc/partner_campaigns/{campaignId} | Update Single Shared Campaign |\n| POST | /10dlc/phoneNumberAssignmentByProfile | Assign Messaging Profile To Campaign |\n| GET | /10dlc/phoneNumberAssignmentByProfile/{taskId} | Get Assignment Task Status |\n| GET | /10dlc/phoneNumberAssignmentByProfile/{taskId}/phoneNumbers | Get Phone Number Status |\n| GET | /10dlc/phone_number_campaigns | List phone number campaigns |\n| POST | /10dlc/phone_number_campaigns | Create New Phone Number Campaign |\n| DELETE | /10dlc/phone_number_campaigns/{phoneNumber} | Delete Phone Number Campaign |\n| GET | /10dlc/phone_number_campaigns/{phoneNumber} | Get Single Phone Number Campaign |\n| PUT | /10dlc/phone_number_campaigns/{phoneNumber} | Create New Phone Number Campaign |\n\n### Access_ip_address\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /access_ip_address | List all Access IP Addresses |\n| POST | /access_ip_address | Create new Access IP Address |\n| DELETE | /access_ip_address/{access_ip_address_id} | Delete access IP address |\n| GET | /access_ip_address/{access_ip_address_id} | Retrieve an access IP address |\n\n### Access_ip_ranges\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /access_ip_ranges | List all Access IP Ranges |\n| POST | /access_ip_ranges | Create new Access IP Range |\n| DELETE | /access_ip_ranges/{access_ip_range_id} | Delete access IP ranges |\n\n### Actions\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /actions/purchase/esims | Purchase eSIMs |\n| POST | /actions/register/sim_cards | Register SIM cards |\n\n### Addresses\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /addresses | List all addresses |\n| POST | /addresses | Creates an address |\n| POST | /addresses/actions/validate | Validate an address |\n| DELETE | /addresses/{id} | Deletes an address |\n| GET | /addresses/{id} | Retrieve an address |\n| POST | /addresses/{id}/actions/accept_suggestions | Accepts this address suggestion as a new emergency address for Operator Connect and finishes the uploads of the numbers associated with it to Microsoft. |\n\n### Advanced_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /advanced_orders | List Advanced Orders |\n| POST | /advanced_orders | Create Advanced Order |\n| PATCH | /advanced_orders/{advanced-order-id}/requirement_group | Update Advanced Order |\n| GET | /advanced_orders/{order_id} | Get Advanced Order |\n\n### Ai\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /ai/assistants | List assistants |\n| POST | /ai/assistants | Create an assistant |\n| POST | /ai/assistants/import | Import assistants from external provider |\n| GET | /ai/assistants/tags | Get All Tags |\n| GET | /ai/assistants/tests | List assistant tests with pagination |\n| POST | /ai/assistants/tests | Create a new assistant test |\n| GET | /ai/assistants/tests/test-suites | Get all test suite names |\n| GET | /ai/assistants/tests/test-suites/{suite_name}/runs | Get test suite run history |\n| POST | /ai/assistants/tests/test-suites/{suite_name}/runs | Trigger test suite execution |\n| DELETE | /ai/assistants/tests/{test_id} | Delete an assistant test |\n| GET | /ai/assistants/tests/{test_id} | Get assistant test by ID |\n| PUT | /ai/assistants/tests/{test_id} | Update an assistant test |\n| GET | /ai/assistants/tests/{test_id}/runs | Get test run history for a specific test |\n| POST | /ai/assistants/tests/{test_id}/runs | Trigger a manual test run |\n| GET | /ai/assistants/tests/{test_id}/runs/{run_id} | Get specific test run details |\n| DELETE | /ai/assistants/{assistant_id} | Delete an assistant |\n| GET | /ai/assistants/{assistant_id} | Get an assistant |\n| POST | /ai/assistants/{assistant_id} | Update an assistant |\n| DELETE | /ai/assistants/{assistant_id}/canary-deploys | Delete Canary Deploy |\n| GET | /ai/assistants/{assistant_id}/canary-deploys | Get Canary Deploy |\n| POST | /ai/assistants/{assistant_id}/canary-deploys | Create Canary Deploy |\n| PUT | /ai/assistants/{assistant_id}/canary-deploys | Update Canary Deploy |\n| POST | /ai/assistants/{assistant_id}/chat | Assistant Chat (BETA) |\n| POST | /ai/assistants/{assistant_id}/chat/sms | Assistant Sms Chat |\n| POST | /ai/assistants/{assistant_id}/clone | Clone Assistant |\n| GET | /ai/assistants/{assistant_id}/scheduled_events | List scheduled events |\n| POST | /ai/assistants/{assistant_id}/scheduled_events | Create a scheduled event |\n| DELETE | /ai/assistants/{assistant_id}/scheduled_events/{event_id} | Delete a scheduled event |\n| GET | /ai/assistants/{assistant_id}/scheduled_events/{event_id} | Get a scheduled event |\n| POST | /ai/assistants/{assistant_id}/tags | Add Assistant Tag |\n| DELETE | /ai/assistants/{assistant_id}/tags/{tag} | Remove Assistant Tag |\n| GET | /ai/assistants/{assistant_id}/texml | Get assistant texml |\n| DELETE | /ai/assistants/{assistant_id}/tools/{tool_id} | Remove Assistant Tool |\n| PUT | /ai/assistants/{assistant_id}/tools/{tool_id} | Add Assistant Tool |\n| POST | /ai/assistants/{assistant_id}/tools/{tool_id}/test | Test Assistant Tool |\n| GET | /ai/assistants/{assistant_id}/versions | Get all versions of an assistant |\n| DELETE | /ai/assistants/{assistant_id}/versions/{version_id} | Delete a specific assistant version |\n| GET | /ai/assistants/{assistant_id}/versions/{version_id} | Get a specific assistant version |\n| POST | /ai/assistants/{assistant_id}/versions/{version_id} | Update a specific assistant version |\n| POST | /ai/assistants/{assistant_id}/versions/{version_id}/promote | Promote an assistant version to main |\n| POST | /ai/audio/transcriptions | Transcribe speech to text |\n| POST | /ai/chat/completions | Create a chat completion |\n| GET | /ai/clusters | List all clusters |\n| POST | /ai/clusters | Compute new clusters |\n| DELETE | /ai/clusters/{task_id} | Delete a cluster |\n| GET | /ai/clusters/{task_id} | Fetch a cluster |\n| GET | /ai/clusters/{task_id}/graph | Fetch a cluster visualization |\n| GET | /ai/conversations | List conversations |\n| POST | /ai/conversations | Create a conversation |\n| GET | /ai/conversations/insight-groups | Get Insight Template Groups |\n| POST | /ai/conversations/insight-groups | Create Insight Template Group |\n| DELETE | /ai/conversations/insight-groups/{group_id} | Delete Insight Template Group |\n| GET | /ai/conversations/insight-groups/{group_id} | Get Insight Template Group |\n| PUT | /ai/conversations/insight-groups/{group_id} | Update Insight Template Group |\n| POST | /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign | Assign Insight Template To Group |\n| DELETE | /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign | Unassign Insight Template From Group |\n| GET | /ai/conversations/insights | Get Insight Templates |\n| POST | /ai/conversations/insights | Create Insight Template |\n| DELETE | /ai/conversations/insights/{insight_id} | Delete Insight Template |\n| GET | /ai/conversations/insights/{insight_id} | Get Insight Template |\n| PUT | /ai/conversations/insights/{insight_id} | Update Insight Template |\n| DELETE | /ai/conversations/{conversation_id} | Delete a conversation |\n| GET | /ai/conversations/{conversation_id} | Get a conversation |\n| PUT | /ai/conversations/{conversation_id} | Update conversation metadata |\n| GET | /ai/conversations/{conversation_id}/conversations-insights | Get insights for a conversation |\n| POST | /ai/conversations/{conversation_id}/message | Create Message |\n| GET | /ai/conversations/{conversation_id}/messages | Get conversation messages |\n| GET | /ai/embeddings | Get Tasks by Status |\n| POST | /ai/embeddings | Embed documents |\n| GET | /ai/embeddings/buckets | List embedded buckets |\n| DELETE | /ai/embeddings/buckets/{bucket_name} | Disable AI for an Embedded Bucket |\n| GET | /ai/embeddings/buckets/{bucket_name} | Get file-level embedding statuses for a bucket |\n| POST | /ai/embeddings/similarity-search | Search for documents |\n| POST | /ai/embeddings/url | Embed URL content |\n| GET | /ai/embeddings/{task_id} | Get an embedding task's status |\n| GET | /ai/fine_tuning/jobs | List fine tuning jobs |\n| POST | /ai/fine_tuning/jobs | Create a fine tuning job |\n| GET | /ai/fine_tuning/jobs/{job_id} | Get a fine tuning job |\n| POST | /ai/fine_tuning/jobs/{job_id}/cancel | Cancel a fine tuning job |\n| GET | /ai/integrations | List Integrations |\n| GET | /ai/integrations/connections | List User Integrations |\n| DELETE | /ai/integrations/connections/{user_connection_id} | Delete Integration Connection |\n| GET | /ai/integrations/connections/{user_connection_id} | Get User Integration connection By Id |\n| GET | /ai/integrations/{integration_id} | List Integration By Id |\n| GET | /ai/mcp_servers | List MCP Servers |\n| POST | /ai/mcp_servers | Create MCP Server |\n| DELETE | /ai/mcp_servers/{mcp_server_id} | Delete MCP Server |\n| GET | /ai/mcp_servers/{mcp_server_id} | Get MCP Server |\n| PUT | /ai/mcp_servers/{mcp_server_id} | Update MCP Server |\n| GET | /ai/missions | List missions |\n| POST | /ai/missions | Create mission |\n| GET | /ai/missions/events | List recent events |\n| GET | /ai/missions/runs | List recent runs |\n| DELETE | /ai/missions/{mission_id} | Delete mission |\n| GET | /ai/missions/{mission_id} | Get mission |\n| PUT | /ai/missions/{mission_id} | Update mission |\n| POST | /ai/missions/{mission_id}/clone | Clone mission |\n| GET | /ai/missions/{mission_id}/knowledge-bases | List knowledge bases |\n| POST | /ai/missions/{mission_id}/knowledge-bases | Create knowledge base |\n| DELETE | /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id} | Delete knowledge base |\n| GET | /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id} | Get knowledge base |\n| PUT | /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id} | Update knowledge base |\n| GET | /ai/missions/{mission_id}/mcp-servers | List MCP servers |\n| POST | /ai/missions/{mission_id}/mcp-servers | Create MCP server |\n| DELETE | /ai/missions/{mission_id}/mcp-servers/{mcp_server_id} | Delete MCP server |\n| GET | /ai/missions/{mission_id}/mcp-servers/{mcp_server_id} | Get MCP server |\n| PUT | /ai/missions/{mission_id}/mcp-servers/{mcp_server_id} | Update MCP server |\n| GET | /ai/missions/{mission_id}/runs | List runs for mission |\n| POST | /ai/missions/{mission_id}/runs | Start a run |\n| GET | /ai/missions/{mission_id}/runs/{run_id} | Get run details |\n| PATCH | /ai/missions/{mission_id}/runs/{run_id} | Update run |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/cancel | Cancel run |\n| GET | /ai/missions/{mission_id}/runs/{run_id}/events | List events |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/events | Log event |\n| GET | /ai/missions/{mission_id}/runs/{run_id}/events/{event_id} | Get event details |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/pause | Pause run |\n| GET | /ai/missions/{mission_id}/runs/{run_id}/plan | Get plan |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/plan | Create initial plan |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/plan/steps | Add step(s) to plan |\n| GET | /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id} | Get step details |\n| PATCH | /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id} | Update step status |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/resume | Resume run |\n| GET | /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents | List linked Telnyx agents |\n| POST | /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents | Link Telnyx agent to run |\n| DELETE | /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id} | Unlink Telnyx agent |\n| GET | /ai/missions/{mission_id}/tools | List tools |\n| POST | /ai/missions/{mission_id}/tools | Create tool |\n| DELETE | /ai/missions/{mission_id}/tools/{tool_id} | Delete tool |\n| GET | /ai/missions/{mission_id}/tools/{tool_id} | Get tool |\n| PUT | /ai/missions/{mission_id}/tools/{tool_id} | Update tool |\n| GET | /ai/models | Get available models |\n| POST | /ai/openai/embeddings | Create embeddings |\n| GET | /ai/openai/embeddings/models | List embedding models |\n| POST | /ai/summarize | Summarize file content |\n| GET | /ai/tools | List Tools |\n| POST | /ai/tools | Create Tool |\n| DELETE | /ai/tools/{tool_id} | Delete Tool |\n| GET | /ai/tools/{tool_id} | Get Tool |\n| PATCH | /ai/tools/{tool_id} | Update Tool |\n\n### Alphanumeric_sender_ids\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /alphanumeric_sender_ids | List alphanumeric sender IDs |\n| POST | /alphanumeric_sender_ids | Create an alphanumeric sender ID |\n| DELETE | /alphanumeric_sender_ids/{id} | Delete an alphanumeric sender ID |\n| GET | /alphanumeric_sender_ids/{id} | Retrieve an alphanumeric sender ID |\n\n### Audit_events\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /audit_events | List Audit Logs |\n\n### Authentication_providers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /authentication_providers | List all SSO authentication providers |\n| POST | /authentication_providers | Creates an authentication provider |\n| DELETE | /authentication_providers/{id} | Deletes an authentication provider |\n| GET | /authentication_providers/{id} | Retrieve an authentication provider |\n| PATCH | /authentication_providers/{id} | Update an authentication provider |\n\n### Available_phone_number_blocks\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /available_phone_number_blocks | List available phone number blocks |\n\n### Available_phone_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /available_phone_numbers | List available phone numbers |\n\n### Balance\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /balance | Get user balance details |\n\n### Billing_groups\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /billing_groups | List all billing groups |\n| POST | /billing_groups | Create a billing group |\n| DELETE | /billing_groups/{id} | Delete a billing group |\n| GET | /billing_groups/{id} | Get a billing group |\n| PATCH | /billing_groups/{id} | Update a billing group |\n\n### Bulk_sim_card_actions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /bulk_sim_card_actions | List bulk SIM card actions |\n| GET | /bulk_sim_card_actions/{id} | Get bulk SIM card action details |\n\n### Bundle_pricing\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /bundle_pricing/billing_bundles | Retrieve Bundles |\n| GET | /bundle_pricing/billing_bundles/{bundle_id} | Get Bundle By Id |\n| GET | /bundle_pricing/user_bundles | Get User Bundles |\n| POST | /bundle_pricing/user_bundles/bulk | Create User Bundles |\n| GET | /bundle_pricing/user_bundles/unused | Get Unused User Bundles |\n| DELETE | /bundle_pricing/user_bundles/{user_bundle_id} | Deactivate User Bundle |\n| GET | /bundle_pricing/user_bundles/{user_bundle_id} | Get User Bundle by Id |\n| GET | /bundle_pricing/user_bundles/{user_bundle_id}/resources | Get User Bundle Resources |\n\n### Call_control_applications\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /call_control_applications | List call control applications |\n| POST | /call_control_applications | Create a call control application |\n| DELETE | /call_control_applications/{id} | Delete a call control application |\n| GET | /call_control_applications/{id} | Retrieve a call control application |\n| PATCH | /call_control_applications/{id} | Update a call control application |\n\n### Call_events\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /call_events | List call events |\n\n### Calls\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /calls | Dial |\n| GET | /calls/{call_control_id} | Retrieve a call status |\n| POST | /calls/{call_control_id}/actions/ai_assistant_add_messages | Add messages to AI Assistant |\n| POST | /calls/{call_control_id}/actions/ai_assistant_join | Join AI Assistant Conversation |\n| POST | /calls/{call_control_id}/actions/ai_assistant_start | Start AI Assistant |\n| POST | /calls/{call_control_id}/actions/ai_assistant_stop | Stop AI Assistant |\n| POST | /calls/{call_control_id}/actions/answer | Answer call |\n| POST | /calls/{call_control_id}/actions/bridge | Bridge calls |\n| PUT | /calls/{call_control_id}/actions/client_state_update | Update client state |\n| POST | /calls/{call_control_id}/actions/enqueue | Enqueue call |\n| POST | /calls/{call_control_id}/actions/fork_start | Forking start |\n| POST | /calls/{call_control_id}/actions/fork_stop | Forking stop |\n| POST | /calls/{call_control_id}/actions/gather | Gather |\n| POST | /calls/{call_control_id}/actions/gather_stop | Gather stop |\n| POST | /calls/{call_control_id}/actions/gather_using_ai | Gather using AI |\n| POST | /calls/{call_control_id}/actions/gather_using_audio | Gather using audio |\n| POST | /calls/{call_control_id}/actions/gather_using_speak | Gather using speak |\n| POST | /calls/{call_control_id}/actions/hangup | Hangup call |\n| POST | /calls/{call_control_id}/actions/leave_queue | Remove call from a queue |\n| POST | /calls/{call_control_id}/actions/playback_start | Play audio URL |\n| POST | /calls/{call_control_id}/actions/playback_stop | Stop audio playback |\n| POST | /calls/{call_control_id}/actions/record_pause | Record pause |\n| POST | /calls/{call_control_id}/actions/record_resume | Record resume |\n| POST | /calls/{call_control_id}/actions/record_start | Recording start |\n| POST | /calls/{call_control_id}/actions/record_stop | Recording stop |\n| POST | /calls/{call_control_id}/actions/refer | SIP Refer a call |\n| POST | /calls/{call_control_id}/actions/reject | Reject a call |\n| POST | /calls/{call_control_id}/actions/send_dtmf | Send DTMF |\n| POST | /calls/{call_control_id}/actions/send_sip_info | Send SIP info |\n| POST | /calls/{call_control_id}/actions/siprec_start | SIPREC start |\n| POST | /calls/{call_control_id}/actions/siprec_stop | SIPREC stop |\n| POST | /calls/{call_control_id}/actions/speak | Speak text |\n| POST | /calls/{call_control_id}/actions/streaming_start | Streaming start |\n| POST | /calls/{call_control_id}/actions/streaming_stop | Streaming stop |\n| POST | /calls/{call_control_id}/actions/suppression_start | Noise Suppression Start (BETA) |\n| POST | /calls/{call_control_id}/actions/suppression_stop | Noise Suppression Stop (BETA) |\n| POST | /calls/{call_control_id}/actions/switch_supervisor_role | Switch supervisor role |\n| POST | /calls/{call_control_id}/actions/transcription_start | Transcription start |\n| POST | /calls/{call_control_id}/actions/transcription_stop | Transcription stop |\n| POST | /calls/{call_control_id}/actions/transfer | Transfer call |\n\n### Channel_zones\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /channel_zones | List your voice channels for non-US zones |\n| PUT | /channel_zones/{channel_zone_id} | Update voice channels for non-US Zones |\n\n### Charges_breakdown\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /charges_breakdown | Get monthly charges breakdown |\n\n### Charges_summary\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /charges_summary | Get monthly charges summary |\n\n### Comments\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /comments | Retrieve all comments |\n| POST | /comments | Create a comment |\n| GET | /comments/{id} | Retrieve a comment |\n| PATCH | /comments/{id}/read | Mark a comment as read |\n\n### Conferences\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /conferences | List conferences |\n| POST | /conferences | Create conference |\n| GET | /conferences/{conference_id}/participants | List conference participants |\n| GET | /conferences/{id} | Retrieve a conference |\n| POST | /conferences/{id}/actions/end | End a conference |\n| POST | /conferences/{id}/actions/gather_using_audio | Gather DTMF using audio prompt in a conference |\n| POST | /conferences/{id}/actions/hold | Hold conference participants |\n| POST | /conferences/{id}/actions/join | Join a conference |\n| POST | /conferences/{id}/actions/leave | Leave a conference |\n| POST | /conferences/{id}/actions/mute | Mute conference participants |\n| POST | /conferences/{id}/actions/play | Play audio to conference participants |\n| POST | /conferences/{id}/actions/record_pause | Conference recording pause |\n| POST | /conferences/{id}/actions/record_resume | Conference recording resume |\n| POST | /conferences/{id}/actions/record_start | Conference recording start |\n| POST | /conferences/{id}/actions/record_stop | Conference recording stop |\n| POST | /conferences/{id}/actions/send_dtmf | Send DTMF to conference participants |\n| POST | /conferences/{id}/actions/speak | Speak text to conference participants |\n| POST | /conferences/{id}/actions/stop | Stop audio being played on the conference |\n| POST | /conferences/{id}/actions/unhold | Unhold conference participants |\n| POST | /conferences/{id}/actions/unmute | Unmute conference participants |\n| POST | /conferences/{id}/actions/update | Update conference participant |\n| GET | /conferences/{id}/participants/{participant_id} | Retrieve a conference participant |\n| PATCH | /conferences/{id}/participants/{participant_id} | Update a conference participant |\n\n### Connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /connections | List connections |\n| GET | /connections/{connection_id}/active_calls | List all active calls for given connection |\n| GET | /connections/{id} | Retrieve a connection |\n\n### Country_coverage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /country_coverage | Get country coverage |\n| GET | /country_coverage/countries/{country_code} | Get coverage for a specific country |\n\n### Credential_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /credential_connections | List credential connections |\n| POST | /credential_connections | Create a credential connection |\n| DELETE | /credential_connections/{id} | Delete a credential connection |\n| GET | /credential_connections/{id} | Retrieve a credential connection |\n| PATCH | /credential_connections/{id} | Update a credential connection |\n| POST | /credential_connections/{id}/actions/check_registration_status | Check a Credential Connection Registration Status |\n\n### Custom_storage_credentials\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /custom_storage_credentials/{connection_id} | Delete a stored credential |\n| GET | /custom_storage_credentials/{connection_id} | Retrieve a stored credential |\n| POST | /custom_storage_credentials/{connection_id} | Create a custom storage credential |\n| PUT | /custom_storage_credentials/{connection_id} | Update a stored credential |\n\n### Customer_service_records\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /customer_service_records | List customer service records |\n| POST | /customer_service_records | Create a customer service record |\n| POST | /customer_service_records/phone_number_coverages | Verify CSR phone number coverage |\n| GET | /customer_service_records/{customer_service_record_id} | Get a customer service record |\n\n### Detail_records\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /detail_records | Search detail records |\n\n### Dialogflow_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /dialogflow_connections/{connection_id} | Delete stored Dialogflow Connection |\n| GET | /dialogflow_connections/{connection_id} | Retrieve stored Dialogflow Connection |\n| POST | /dialogflow_connections/{connection_id} | Create a Dialogflow Connection |\n| PUT | /dialogflow_connections/{connection_id} | Update stored Dialogflow Connection |\n\n### Document_links\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /document_links | List all document links |\n\n### Documents\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /documents | List all documents |\n| POST | /documents | Upload a document |\n| DELETE | /documents/{id} | Delete a document |\n| GET | /documents/{id} | Retrieve a document |\n| PATCH | /documents/{id} | Update a document |\n| GET | /documents/{id}/download | Download a document |\n| GET | /documents/{id}/download_link | Generate a temporary download link for a document |\n\n### Dynamic_emergency_addresses\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /dynamic_emergency_addresses | List dynamic emergency addresses |\n| POST | /dynamic_emergency_addresses | Create a dynamic emergency address. |\n| DELETE | /dynamic_emergency_addresses/{id} | Delete a dynamic emergency address |\n| GET | /dynamic_emergency_addresses/{id} | Get a dynamic emergency address |\n\n### Dynamic_emergency_endpoints\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /dynamic_emergency_endpoints | List dynamic emergency endpoints |\n| POST | /dynamic_emergency_endpoints | Create a dynamic emergency endpoint. |\n| DELETE | /dynamic_emergency_endpoints/{id} | Delete a dynamic emergency endpoint |\n| GET | /dynamic_emergency_endpoints/{id} | Get a dynamic emergency endpoint |\n\n### Enterprises\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /enterprises | List enterprises |\n| POST | /enterprises | Create an enterprise |\n| DELETE | /enterprises/{enterprise_id} | Delete an enterprise |\n| GET | /enterprises/{enterprise_id} | Get an enterprise |\n| PUT | /enterprises/{enterprise_id} | Update an enterprise |\n| DELETE | /enterprises/{enterprise_id}/reputation | Disable Number Reputation |\n| GET | /enterprises/{enterprise_id}/reputation | Get reputation settings |\n| POST | /enterprises/{enterprise_id}/reputation | Enable Number Reputation |\n| PATCH | /enterprises/{enterprise_id}/reputation/frequency | Update reputation check frequency |\n| GET | /enterprises/{enterprise_id}/reputation/numbers | List reputation phone numbers |\n| POST | /enterprises/{enterprise_id}/reputation/numbers | Associate phone numbers for reputation |\n| DELETE | /enterprises/{enterprise_id}/reputation/numbers/{phone_number} | Disassociate a phone number |\n| GET | /enterprises/{enterprise_id}/reputation/numbers/{phone_number} | Get reputation data for a phone number |\n\n### External_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /external_connections | List all External Connections |\n| POST | /external_connections | Creates an External Connection |\n| GET | /external_connections/log_messages | List all log messages |\n| DELETE | /external_connections/log_messages/{id} | Dismiss a log message |\n| GET | /external_connections/log_messages/{id} | Retrieve a log message |\n| DELETE | /external_connections/{id} | Deletes an External Connection |\n| GET | /external_connections/{id} | Retrieve an External Connection |\n| PATCH | /external_connections/{id} | Update an External Connection |\n| GET | /external_connections/{id}/civic_addresses | List all civic addresses and locations |\n| GET | /external_connections/{id}/civic_addresses/{address_id} | Retrieve a Civic Address |\n| PATCH | /external_connections/{id}/locations/{location_id} | Update a location's static emergency address |\n| GET | /external_connections/{id}/phone_numbers | List all phone numbers |\n| GET | /external_connections/{id}/phone_numbers/{phone_number_id} | Retrieve a phone number |\n| PATCH | /external_connections/{id}/phone_numbers/{phone_number_id} | Update a phone number |\n| GET | /external_connections/{id}/releases | List all Releases |\n| GET | /external_connections/{id}/releases/{release_id} | Retrieve a Release request |\n| GET | /external_connections/{id}/uploads | List all Upload requests |\n| POST | /external_connections/{id}/uploads | Creates an Upload request |\n| POST | /external_connections/{id}/uploads/refresh | Refresh the status of all Upload requests |\n| GET | /external_connections/{id}/uploads/status | Get the count of pending upload requests |\n| GET | /external_connections/{id}/uploads/{ticket_id} | Retrieve an Upload request |\n| POST | /external_connections/{id}/uploads/{ticket_id}/retry | Retry an Upload request |\n\n### Fax_applications\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /fax_applications | List all Fax Applications |\n| POST | /fax_applications | Creates a Fax Application |\n| DELETE | /fax_applications/{id} | Deletes a Fax Application |\n| GET | /fax_applications/{id} | Retrieve a Fax Application |\n| PATCH | /fax_applications/{id} | Update a Fax Application |\n\n### Faxes\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /faxes | View a list of faxes |\n| POST | /faxes | Send a fax |\n| DELETE | /faxes/{id} | Delete a fax |\n| GET | /faxes/{id} | View a fax |\n| POST | /faxes/{id}/actions/cancel | Cancel a fax |\n| POST | /faxes/{id}/actions/refresh | Refresh a fax |\n\n### Fqdn_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /fqdn_connections | List FQDN connections |\n| POST | /fqdn_connections | Create an FQDN connection |\n| DELETE | /fqdn_connections/{id} | Delete an FQDN connection |\n| GET | /fqdn_connections/{id} | Retrieve an FQDN connection |\n| PATCH | /fqdn_connections/{id} | Update an FQDN connection |\n\n### Fqdns\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /fqdns | List FQDNs |\n| POST | /fqdns | Create an FQDN |\n| DELETE | /fqdns/{id} | Delete an FQDN |\n| GET | /fqdns/{id} | Retrieve an FQDN |\n| PATCH | /fqdns/{id} | Update an FQDN |\n\n### Global_ip_allowed_ports\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_allowed_ports | List all Global IP Allowed Ports |\n\n### Global_ip_assignment_health\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_assignment_health | Global IP Assignment Health Check Metrics |\n\n### Global_ip_assignments\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_assignments | List all Global IP assignments |\n| POST | /global_ip_assignments | Create a Global IP assignment |\n| DELETE | /global_ip_assignments/{id} | Delete a Global IP assignment |\n| GET | /global_ip_assignments/{id} | Retrieve a Global IP |\n| PATCH | /global_ip_assignments/{id} | Update a Global IP assignment |\n\n### Global_ip_assignments_usage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_assignments_usage | Global IP Assignment Usage Metrics |\n\n### Global_ip_health_check_types\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_health_check_types | List all Global IP Health check types |\n\n### Global_ip_health_checks\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_health_checks | List all Global IP health checks |\n| POST | /global_ip_health_checks | Create a Global IP health check |\n| DELETE | /global_ip_health_checks/{id} | Delete a Global IP health check |\n| GET | /global_ip_health_checks/{id} | Retrieve a Global IP health check |\n\n### Global_ip_latency\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_latency | Global IP Latency Metrics |\n\n### Global_ip_protocols\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_protocols | List all Global IP Protocols |\n\n### Global_ip_usage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ip_usage | Global IP Usage Metrics |\n\n### Global_ips\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /global_ips | List all Global IPs |\n| POST | /global_ips | Create a Global IP |\n| DELETE | /global_ips/{id} | Delete a Global IP |\n| GET | /global_ips/{id} | Retrieve a Global IP |\n\n### Inbound_channels\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /inbound_channels | List your voice channels for US Zone |\n| PATCH | /inbound_channels | Update voice channels for US Zone |\n\n### Inexplicit_number_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /inexplicit_number_orders | List inexplicit number orders |\n| POST | /inexplicit_number_orders | Create an inexplicit number order |\n| GET | /inexplicit_number_orders/{id} | Retrieve an inexplicit number order |\n\n### Integration_secrets\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /integration_secrets | List integration secrets |\n| POST | /integration_secrets | Create a secret |\n| DELETE | /integration_secrets/{id} | Delete an integration secret |\n\n### Inventory_coverage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /inventory_coverage | Create an inventory coverage request |\n\n### Invoices\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /invoices | List invoices |\n| GET | /invoices/{id} | Get invoice by ID |\n\n### Ip_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /ip_connections | List Ip connections |\n| POST | /ip_connections | Create an Ip connection |\n| DELETE | /ip_connections/{id} | Delete an Ip connection |\n| GET | /ip_connections/{id} | Retrieve an Ip connection |\n| PATCH | /ip_connections/{id} | Update an Ip connection |\n\n### Ips\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /ips | List Ips |\n| POST | /ips | Create an Ip |\n| DELETE | /ips/{id} | Delete an Ip |\n| GET | /ips/{id} | Retrieve an Ip |\n| PATCH | /ips/{id} | Update an Ip |\n\n### Ledger_billing_group_reports\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /ledger_billing_group_reports | Create a ledger billing group report |\n| GET | /ledger_billing_group_reports/{id} | Get a ledger billing group report |\n\n### Legacy\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /legacy/reporting/batch_detail_records/messaging | Get all MDR detailed report requests |\n| POST | /legacy/reporting/batch_detail_records/messaging | Create a new MDR detailed report request |\n| DELETE | /legacy/reporting/batch_detail_records/messaging/{id} | Delete a MDR detailed report request |\n| GET | /legacy/reporting/batch_detail_records/messaging/{id} | Get a specific MDR detailed report request |\n| GET | /legacy/reporting/batch_detail_records/speech_to_text | Get all Speech to Text batch report requests |\n| POST | /legacy/reporting/batch_detail_records/speech_to_text | Create a new Speech to Text batch report request |\n| DELETE | /legacy/reporting/batch_detail_records/speech_to_text/{id} | Delete a Speech to Text batch report request |\n| GET | /legacy/reporting/batch_detail_records/speech_to_text/{id} | Get a specific Speech to Text batch report request |\n| GET | /legacy/reporting/batch_detail_records/voice | Get all CDR report requests |\n| POST | /legacy/reporting/batch_detail_records/voice | Create a new CDR report request |\n| GET | /legacy/reporting/batch_detail_records/voice/fields | Get available CDR report fields |\n| DELETE | /legacy/reporting/batch_detail_records/voice/{id} | Delete a CDR report request |\n| GET | /legacy/reporting/batch_detail_records/voice/{id} | Get a specific CDR report request |\n| GET | /legacy/reporting/usage_reports/messaging | List MDR usage reports |\n| POST | /legacy/reporting/usage_reports/messaging | Create a new legacy usage V2 MDR report request |\n| DELETE | /legacy/reporting/usage_reports/messaging/{id} | Delete a V2 legacy usage MDR report request |\n| GET | /legacy/reporting/usage_reports/messaging/{id} | Get an MDR usage report |\n| GET | /legacy/reporting/usage_reports/number_lookup | List telco data usage reports |\n| POST | /legacy/reporting/usage_reports/number_lookup | Submit telco data usage report |\n| DELETE | /legacy/reporting/usage_reports/number_lookup/{id} | Delete telco data usage report |\n| GET | /legacy/reporting/usage_reports/number_lookup/{id} | Get telco data usage report by ID |\n| GET | /legacy/reporting/usage_reports/speech_to_text | Get speech to text usage report |\n| GET | /legacy/reporting/usage_reports/voice | List CDR usage reports |\n| POST | /legacy/reporting/usage_reports/voice | Create a new legacy usage V2 CDR report request |\n| DELETE | /legacy/reporting/usage_reports/voice/{id} | Delete a V2 legacy usage CDR report request |\n| GET | /legacy/reporting/usage_reports/voice/{id} | Get a CDR usage report |\n\n### List\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /list | List All Numbers using Channel Billing |\n| GET | /list/{channel_zone_id} | List Numbers using Channel Billing for a specific Zone |\n\n### Managed_accounts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /managed_accounts | Lists accounts managed by the current user. |\n| POST | /managed_accounts | Create a new managed account. |\n| GET | /managed_accounts/allocatable_global_outbound_channels | Display information about allocatable global outbound channels for the current user. |\n| GET | /managed_accounts/{id} | Retrieve a managed account |\n| PATCH | /managed_accounts/{id} | Update a managed account |\n| POST | /managed_accounts/{id}/actions/disable | Disables a managed account |\n| POST | /managed_accounts/{id}/actions/enable | Enables a managed account |\n| PATCH | /managed_accounts/{id}/update_global_channel_limit | Update the amount of allocatable global outbound channels allocated to a specific managed account. |\n\n### Media\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /media | List uploaded media |\n| POST | /media | Upload media |\n| DELETE | /media/{media_name} | Deletes stored media |\n| GET | /media/{media_name} | Retrieve stored media |\n| PUT | /media/{media_name} | Update stored media |\n| GET | /media/{media_name}/download | Download stored media |\n\n### Messages\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /messages | Send a message |\n| POST | /messages/alphanumeric_sender_id | Send a message using an alphanumeric sender ID |\n| GET | /messages/group/{message_id} | Retrieve group MMS messages |\n| POST | /messages/group_mms | Send a group MMS message |\n| POST | /messages/long_code | Send a long code message |\n| POST | /messages/number_pool | Send a message using number pool |\n| POST | /messages/rcs | Send an RCS message |\n| GET | /messages/rcs/deeplinks/{agent_id} | Generate RCS deeplink |\n| POST | /messages/schedule | Schedule a message |\n| POST | /messages/short_code | Send a short code message |\n| POST | /messages/whatsapp | Send a Whatsapp message |\n| DELETE | /messages/{id} | Cancel a scheduled message |\n| GET | /messages/{id} | Retrieve a message |\n\n### Messaging\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging/rcs/agents | List all RCS agents |\n| GET | /messaging/rcs/agents/{id} | Retrieve an RCS agent |\n| PATCH | /messaging/rcs/agents/{id} | Modify an RCS agent |\n| POST | /messaging/rcs/bulk_capabilities | Check RCS capabilities (batch) |\n| GET | /messaging/rcs/capabilities/{agent_id}/{phone_number} | Check RCS capabilities |\n| PUT | /messaging/rcs/test_number_invite/{id}/{phone_number} | Add RCS test number |\n\n### Messaging_hosted_number_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_hosted_number_orders | List messaging hosted number orders |\n| POST | /messaging_hosted_number_orders | Create a messaging hosted number order |\n| POST | /messaging_hosted_number_orders/eligibility_numbers_check | Check hosted messaging eligibility |\n| DELETE | /messaging_hosted_number_orders/{id} | Delete a messaging hosted number order |\n| GET | /messaging_hosted_number_orders/{id} | Retrieve a messaging hosted number order |\n| POST | /messaging_hosted_number_orders/{id}/actions/file_upload | Upload hosted number document |\n| POST | /messaging_hosted_number_orders/{id}/validation_codes | Validate hosted number codes |\n| POST | /messaging_hosted_number_orders/{id}/verification_codes | Create hosted number verification codes |\n\n### Messaging_hosted_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_hosted_numbers | List messaging hosted numbers |\n| DELETE | /messaging_hosted_numbers/{id} | Delete a messaging hosted number |\n| GET | /messaging_hosted_numbers/{id} | Retrieve a messaging hosted number |\n| PATCH | /messaging_hosted_numbers/{id} | Update a messaging hosted number |\n\n### Messaging_numbers_bulk_updates\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /messaging_numbers_bulk_updates | Bulk update phone number profiles |\n| GET | /messaging_numbers_bulk_updates/{order_id} | Retrieve bulk update status |\n\n### Messaging_optouts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_optouts | List opt-outs |\n\n### Messaging_profile_metrics\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_profile_metrics | List high-level messaging profile metrics |\n\n### Messaging_profiles\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_profiles | List messaging profiles |\n| POST | /messaging_profiles | Create a messaging profile |\n| DELETE | /messaging_profiles/{id} | Delete a messaging profile |\n| GET | /messaging_profiles/{id} | Retrieve a messaging profile |\n| PATCH | /messaging_profiles/{id} | Update a messaging profile |\n| POST | /messaging_profiles/{id}/actions/regenerate_secret | Regenerate messaging profile secret |\n| GET | /messaging_profiles/{id}/alphanumeric_sender_ids | List alphanumeric sender IDs for a messaging profile |\n| GET | /messaging_profiles/{id}/metrics | Get detailed messaging profile metrics |\n| GET | /messaging_profiles/{id}/phone_numbers | List phone numbers associated with a messaging profile |\n| GET | /messaging_profiles/{id}/short_codes | List short codes associated with a messaging profile |\n| GET | /messaging_profiles/{profile_id}/autoresp_configs | List Auto-Response Settings |\n| POST | /messaging_profiles/{profile_id}/autoresp_configs | Create auto-response setting |\n| DELETE | /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id} | Delete Auto-Response Setting |\n| GET | /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id} | Get Auto-Response Setting |\n| PUT | /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id} | Update Auto-Response Setting |\n\n### Messaging_tollfree\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_tollfree/verification/requests | List Verification Requests |\n| POST | /messaging_tollfree/verification/requests | Submit Verification Request |\n| DELETE | /messaging_tollfree/verification/requests/{id} | Delete Verification Request |\n| GET | /messaging_tollfree/verification/requests/{id} | Get Verification Request |\n| PATCH | /messaging_tollfree/verification/requests/{id} | Update Verification Request |\n| GET | /messaging_tollfree/verification/requests/{id}/status_history | Get Verification Request Status History |\n\n### Messaging_url_domains\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /messaging_url_domains | List messaging URL domains |\n\n### Mobile_network_operators\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /mobile_network_operators | List mobile network operators |\n\n### Mobile_phone_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /mobile_phone_numbers/messaging | List mobile phone numbers with messaging settings |\n| GET | /mobile_phone_numbers/{id}/messaging | Retrieve a mobile phone number with messaging settings |\n| GET | /v2/mobile_phone_numbers | List Mobile Phone Numbers |\n| GET | /v2/mobile_phone_numbers/{id} | Retrieve a Mobile Phone Number |\n| PATCH | /v2/mobile_phone_numbers/{id} | Update a Mobile Phone Number |\n\n### Mobile_push_credentials\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /mobile_push_credentials | List mobile push credentials |\n| POST | /mobile_push_credentials | Creates a new mobile push credential |\n| DELETE | /mobile_push_credentials/{push_credential_id} | Deletes a mobile push credential |\n| GET | /mobile_push_credentials/{push_credential_id} | Retrieves a mobile push credential |\n\n### Network_coverage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /network_coverage | List network coverage locations |\n\n### Networks\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /networks | List all Networks |\n| POST | /networks | Create a Network |\n| DELETE | /networks/{id} | Delete a Network |\n| GET | /networks/{id} | Retrieve a Network |\n| PATCH | /networks/{id} | Update a Network |\n| DELETE | /networks/{id}/default_gateway | Delete Default Gateway. |\n| GET | /networks/{id}/default_gateway | Get Default Gateway status. |\n| POST | /networks/{id}/default_gateway | Create Default Gateway. |\n| GET | /networks/{id}/network_interfaces | List all Interfaces for a Network. |\n\n### Notification_channels\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /notification_channels | List notification channels |\n| POST | /notification_channels | Create a notification channel |\n| DELETE | /notification_channels/{id} | Delete a notification channel |\n| GET | /notification_channels/{id} | Get a notification channel |\n| PATCH | /notification_channels/{id} | Update a notification channel |\n\n### Notification_event_conditions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /notification_event_conditions | List all Notifications Events Conditions |\n\n### Notification_events\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /notification_events | List all Notifications Events |\n\n### Notification_profiles\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /notification_profiles | List all Notifications Profiles |\n| POST | /notification_profiles | Create a notification profile |\n| DELETE | /notification_profiles/{id} | Delete a notification profile |\n| GET | /notification_profiles/{id} | Get a notification profile |\n| PATCH | /notification_profiles/{id} | Update a notification profile |\n\n### Notification_settings\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /notification_settings | List notification settings |\n| POST | /notification_settings | Add a Notification Setting |\n| DELETE | /notification_settings/{id} | Delete a notification setting |\n| GET | /notification_settings/{id} | Get a notification setting |\n\n### Number_block_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /number_block_orders | List number block orders |\n| POST | /number_block_orders | Create a number block order |\n| GET | /number_block_orders/{number_block_order_id} | Retrieve a number block order |\n\n### Number_lookup\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /number_lookup/{phone_number} | Lookup phone number data |\n\n### Number_order_phone_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /number_order_phone_numbers | Retrieve a list of phone numbers associated to orders |\n| POST | /number_order_phone_numbers/{id}/requirement_group | Update requirement group for a phone number order |\n| GET | /number_order_phone_numbers/{number_order_phone_number_id} | Retrieve a single phone number within a number order. |\n| PATCH | /number_order_phone_numbers/{number_order_phone_number_id} | Update requirements for a single phone number within a number order. |\n\n### Number_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /number_orders | List number orders |\n| POST | /number_orders | Create a number order |\n| GET | /number_orders/{number_order_id} | Retrieve a number order |\n| PATCH | /number_orders/{number_order_id} | Update a number order |\n\n### Number_reservations\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /number_reservations | List number reservations |\n| POST | /number_reservations | Create a number reservation |\n| GET | /number_reservations/{number_reservation_id} | Retrieve a number reservation |\n| POST | /number_reservations/{number_reservation_id}/actions/extend | Extend a number reservation |\n\n### Numbers_features\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /numbers_features | Retrieve the features for a list of numbers |\n\n### Oauth\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /oauth/authorize | OAuth authorization endpoint |\n| GET | /oauth/consent/{consent_token} | Get OAuth consent token |\n| POST | /oauth/grants | Create OAuth grant |\n| POST | /oauth/introspect | Token introspection |\n| GET | /oauth/jwks | JSON Web Key Set |\n| POST | /oauth/register | Dynamic client registration |\n| POST | /oauth/token | OAuth token endpoint |\n\n### Oauth_clients\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /oauth_clients | List OAuth clients |\n| POST | /oauth_clients | Create OAuth client |\n| DELETE | /oauth_clients/{id} | Delete OAuth client |\n| GET | /oauth_clients/{id} | Get OAuth client |\n| PUT | /oauth_clients/{id} | Update OAuth client |\n\n### Oauth_grants\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /oauth_grants | List OAuth grants |\n| DELETE | /oauth_grants/{id} | Revoke OAuth grant |\n| GET | /oauth_grants/{id} | Get OAuth grant |\n\n### Operator_connect\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /operator_connect/actions/refresh | Refresh Operator Connect integration |\n\n### Organizations\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /organizations/users | List organization users |\n| GET | /organizations/users/users_groups_report | Get organization users groups report |\n| GET | /organizations/users/{id} | Get organization user |\n| POST | /organizations/users/{id}/actions/remove | Delete organization user |\n\n### Ota_updates\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /ota_updates | List OTA updates |\n| GET | /ota_updates/{id} | Get OTA update |\n\n### Outbound_voice_profiles\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /outbound_voice_profiles | Get all outbound voice profiles |\n| POST | /outbound_voice_profiles | Create an outbound voice profile |\n| DELETE | /outbound_voice_profiles/{id} | Delete an outbound voice profile |\n| GET | /outbound_voice_profiles/{id} | Retrieve an outbound voice profile |\n| PATCH | /outbound_voice_profiles/{id} | Updates an existing outbound voice profile. |\n\n### Payment\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /payment/auto_recharge_prefs | List auto recharge preferences |\n| PATCH | /payment/auto_recharge_prefs | Update auto recharge preferences |\n| POST | /v2/payment/stored_payment_transactions | Create a stored payment transaction |\n\n### Phone_number_blocks\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /phone_number_blocks/jobs | Lists the phone number blocks jobs |\n| POST | /phone_number_blocks/jobs/delete_phone_number_block | Deletes all numbers associated with a phone number block |\n| GET | /phone_number_blocks/jobs/{id} | Retrieves a phone number blocks job |\n\n### Phone_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /phone_numbers | List phone numbers |\n| POST | /phone_numbers/actions/verify_ownership | Verify ownership of phone numbers |\n| GET | /phone_numbers/csv_downloads | List CSV downloads |\n| POST | /phone_numbers/csv_downloads | Create a CSV download |\n| GET | /phone_numbers/csv_downloads/{id} | Retrieve a CSV download |\n| GET | /phone_numbers/jobs | Lists the phone numbers jobs |\n| POST | /phone_numbers/jobs/delete_phone_numbers | Delete a batch of numbers |\n| POST | /phone_numbers/jobs/update_emergency_settings | Update the emergency settings from a batch of numbers |\n| POST | /phone_numbers/jobs/update_phone_numbers | Update a batch of numbers |\n| GET | /phone_numbers/jobs/{id} | Retrieve a phone numbers job |\n| GET | /phone_numbers/messaging | List phone numbers with messaging settings |\n| GET | /phone_numbers/slim | Slim List phone numbers |\n| GET | /phone_numbers/voice | List phone numbers with voice settings |\n| DELETE | /phone_numbers/{id} | Delete a phone number |\n| GET | /phone_numbers/{id} | Retrieve a phone number |\n| PATCH | /phone_numbers/{id} | Update a phone number |\n| PATCH | /phone_numbers/{id}/actions/bundle_status_change | Change the bundle status for a phone number (set to being in a bundle or remove from a bundle) |\n| POST | /phone_numbers/{id}/actions/enable_emergency | Enable emergency for a phone number |\n| GET | /phone_numbers/{id}/messaging | Retrieve a phone number with messaging settings |\n| PATCH | /phone_numbers/{id}/messaging | Update the messaging profile and/or messaging product of a phone number |\n| GET | /phone_numbers/{id}/voice | Retrieve a phone number with voice settings |\n| PATCH | /phone_numbers/{id}/voice | Update a phone number with voice settings |\n| GET | /phone_numbers/{phone_number_id}/voicemail | Get voicemail |\n| PATCH | /phone_numbers/{phone_number_id}/voicemail | Update voicemail |\n| POST | /phone_numbers/{phone_number_id}/voicemail | Create voicemail |\n\n### Phone_numbers_regulatory_requirements\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /phone_numbers_regulatory_requirements | Retrieve regulatory requirements for a list of phone numbers |\n\n### Portability_checks\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /portability_checks | Run a portability check |\n\n### Porting\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /porting/events | List all porting events |\n| GET | /porting/events/{id} | Show a porting event |\n| POST | /porting/events/{id}/republish | Republish a porting event |\n| GET | /porting/loa_configurations | List LOA configurations |\n| POST | /porting/loa_configurations | Create a LOA configuration |\n| POST | /porting/loa_configurations/preview | Preview the LOA configuration parameters |\n| DELETE | /porting/loa_configurations/{id} | Delete a LOA configuration |\n| GET | /porting/loa_configurations/{id} | Retrieve a LOA configuration |\n| PATCH | /porting/loa_configurations/{id} | Update a LOA configuration |\n| GET | /porting/loa_configurations/{id}/preview | Preview a LOA configuration |\n| GET | /porting/reports | List porting related reports |\n| POST | /porting/reports | Create a porting related report |\n| GET | /porting/reports/{id} | Retrieve a report |\n| GET | /porting/uk_carriers | List available carriers in the UK |\n\n### Porting_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /porting_orders | List all porting orders |\n| POST | /porting_orders | Create a porting order |\n| GET | /porting_orders/exception_types | List all exception types |\n| GET | /porting_orders/phone_number_configurations | List all phone number configurations |\n| POST | /porting_orders/phone_number_configurations | Create a list of phone number configurations |\n| DELETE | /porting_orders/{id} | Delete a porting order |\n| GET | /porting_orders/{id} | Retrieve a porting order |\n| PATCH | /porting_orders/{id} | Edit a porting order |\n| POST | /porting_orders/{id}/actions/activate | Activate every number in a porting order asynchronously. |\n| POST | /porting_orders/{id}/actions/cancel | Cancel a porting order |\n| POST | /porting_orders/{id}/actions/confirm | Submit a porting order. |\n| POST | /porting_orders/{id}/actions/share | Share a porting order |\n| GET | /porting_orders/{id}/activation_jobs | List all porting activation jobs |\n| GET | /porting_orders/{id}/activation_jobs/{activationJobId} | Retrieve a porting activation job |\n| PATCH | /porting_orders/{id}/activation_jobs/{activationJobId} | Update a porting activation job |\n| GET | /porting_orders/{id}/additional_documents | List additional documents |\n| POST | /porting_orders/{id}/additional_documents | Create a list of additional documents |\n| DELETE | /porting_orders/{id}/additional_documents/{additional_document_id} | Delete an additional document |\n| GET | /porting_orders/{id}/allowed_foc_windows | List allowed FOC dates |\n| GET | /porting_orders/{id}/comments | List all comments of a porting order |\n| POST | /porting_orders/{id}/comments | Create a comment for a porting order |\n| GET | /porting_orders/{id}/loa_template | Download a porting order loa template |\n| GET | /porting_orders/{id}/requirements | List porting order requirements |\n| GET | /porting_orders/{id}/sub_request | Retrieve the associated V1 sub_request_id and port_request_id |\n| GET | /porting_orders/{id}/verification_codes | List verification codes |\n| POST | /porting_orders/{id}/verification_codes/send | Send the verification codes |\n| POST | /porting_orders/{id}/verification_codes/verify | Verify the verification code for a list of phone numbers |\n| GET | /porting_orders/{porting_order_id}/action_requirements | List action requirements for a porting order |\n| POST | /porting_orders/{porting_order_id}/action_requirements/{id}/initiate | Initiate an action requirement |\n| GET | /porting_orders/{porting_order_id}/associated_phone_numbers | List all associated phone numbers |\n| POST | /porting_orders/{porting_order_id}/associated_phone_numbers | Create an associated phone number |\n| DELETE | /porting_orders/{porting_order_id}/associated_phone_numbers/{id} | Delete an associated phone number |\n| GET | /porting_orders/{porting_order_id}/phone_number_blocks | List all phone number blocks |\n| POST | /porting_orders/{porting_order_id}/phone_number_blocks | Create a phone number block |\n| DELETE | /porting_orders/{porting_order_id}/phone_number_blocks/{id} | Delete a phone number block |\n| GET | /porting_orders/{porting_order_id}/phone_number_extensions | List all phone number extensions |\n| POST | /porting_orders/{porting_order_id}/phone_number_extensions | Create a phone number extension |\n| DELETE | /porting_orders/{porting_order_id}/phone_number_extensions/{id} | Delete a phone number extension |\n\n### Porting_phone_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /porting_phone_numbers | List all porting phone numbers |\n\n### Portouts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /portouts | List portout requests |\n| GET | /portouts/events | List all port-out events |\n| GET | /portouts/events/{id} | Show a port-out event |\n| POST | /portouts/events/{id}/republish | Republish a port-out event |\n| GET | /portouts/rejections/{portout_id} | List eligible port-out rejection codes for a specific order |\n| GET | /portouts/reports | List port-out related reports |\n| POST | /portouts/reports | Create a port-out related report |\n| GET | /portouts/reports/{id} | Retrieve a report |\n| GET | /portouts/{id} | Get a portout request |\n| GET | /portouts/{id}/comments | List all comments for a portout request |\n| POST | /portouts/{id}/comments | Create a comment on a portout request |\n| GET | /portouts/{id}/supporting_documents | List supporting documents on a portout request |\n| POST | /portouts/{id}/supporting_documents | Create a list of supporting documents on a portout request |\n| PATCH | /portouts/{id}/{status} | Update Status |\n\n### Private_wireless_gateways\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /private_wireless_gateways | Get all Private Wireless Gateways |\n| POST | /private_wireless_gateways | Create a Private Wireless Gateway |\n| DELETE | /private_wireless_gateways/{id} | Delete a Private Wireless Gateway |\n| GET | /private_wireless_gateways/{id} | Get a Private Wireless Gateway |\n\n### Public_internet_gateways\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /public_internet_gateways | List all Public Internet Gateways |\n| POST | /public_internet_gateways | Create a Public Internet Gateway |\n| DELETE | /public_internet_gateways/{id} | Delete a Public Internet Gateway |\n| GET | /public_internet_gateways/{id} | Retrieve a Public Internet Gateway |\n\n### Queues\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /queues | List queues |\n| POST | /queues | Create a queue |\n| DELETE | /queues/{queue_name} | Delete a queue |\n| GET | /queues/{queue_name} | Retrieve a call queue |\n| POST | /queues/{queue_name} | Update a queue |\n| GET | /queues/{queue_name}/calls | Retrieve calls from a queue |\n| DELETE | /queues/{queue_name}/calls/{call_control_id} | Force remove a call from a queue |\n| GET | /queues/{queue_name}/calls/{call_control_id} | Retrieve a call from a queue |\n| PATCH | /queues/{queue_name}/calls/{call_control_id} | Update queued call |\n\n### Recording_transcriptions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /recording_transcriptions | List all recording transcriptions |\n| DELETE | /recording_transcriptions/{recording_transcription_id} | Delete a recording transcription |\n| GET | /recording_transcriptions/{recording_transcription_id} | Retrieve a recording transcription |\n\n### Recordings\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /recordings | List all call recordings |\n| POST | /recordings/actions/delete | Delete a list of call recordings |\n| DELETE | /recordings/{recording_id} | Delete a call recording |\n| GET | /recordings/{recording_id} | Retrieve a call recording |\n\n### Regions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /regions | List all Regions |\n\n### Regulatory_requirements\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /regulatory_requirements | Retrieve regulatory requirements |\n\n### Reports\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /reports/cdr_usage_reports/sync | Generates and fetches CDR Usage Reports |\n| GET | /reports/mdr_usage_reports | Fetch all Messaging usage reports |\n| POST | /reports/mdr_usage_reports | Create MDR Usage Report |\n| GET | /reports/mdr_usage_reports/sync | Generate and fetch MDR Usage Report |\n| DELETE | /reports/mdr_usage_reports/{id} | Delete MDR Usage Report |\n| GET | /reports/mdr_usage_reports/{id} | Retrieve messaging report |\n| GET | /reports/mdrs | Fetch all Mdr records |\n| GET | /reports/wdrs | Fetches all Wdr records |\n\n### Reputation\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /reputation/numbers | List reputation phone numbers (simplified) |\n| DELETE | /reputation/numbers/{phone_number} | Disassociate a phone number (simplified) |\n| GET | /reputation/numbers/{phone_number} | Get reputation data for a phone number (simplified) |\n\n### Requirement_groups\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /requirement_groups | List requirement groups |\n| POST | /requirement_groups | Create a new requirement group |\n| DELETE | /requirement_groups/{id} | Delete a requirement group by ID |\n| GET | /requirement_groups/{id} | Get a single requirement group by ID |\n| PATCH | /requirement_groups/{id} | Update requirement values in requirement group |\n| POST | /requirement_groups/{id}/submit_for_approval | Submit a Requirement Group for Approval |\n\n### Requirement_types\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /requirement_types | List all requirement types |\n| GET | /requirement_types/{id} | Retrieve a requirement types |\n\n### Requirements\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /requirements | List all requirements |\n| GET | /requirements/{id} | Retrieve a document requirement |\n\n### Room_compositions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /room_compositions | View a list of room compositions. |\n| POST | /room_compositions | Create a room composition. |\n| DELETE | /room_compositions/{room_composition_id} | Delete a room composition. |\n| GET | /room_compositions/{room_composition_id} | View a room composition. |\n\n### Room_participants\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /room_participants | View a list of room participants. |\n| GET | /room_participants/{room_participant_id} | View a room participant. |\n\n### Room_recordings\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /room_recordings | Delete several room recordings in a bulk. |\n| GET | /room_recordings | View a list of room recordings. |\n| DELETE | /room_recordings/{room_recording_id} | Delete a room recording. |\n| GET | /room_recordings/{room_recording_id} | View a room recording. |\n\n### Room_sessions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /room_sessions | View a list of room sessions. |\n| GET | /room_sessions/{room_session_id} | View a room session. |\n| POST | /room_sessions/{room_session_id}/actions/end | End a room session. |\n| POST | /room_sessions/{room_session_id}/actions/kick | Kick participants from a room session. |\n| POST | /room_sessions/{room_session_id}/actions/mute | Mute participants in room session. |\n| POST | /room_sessions/{room_session_id}/actions/unmute | Unmute participants in room session. |\n| GET | /room_sessions/{room_session_id}/participants | View a list of room participants. |\n\n### Rooms\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /rooms | View a list of rooms. |\n| POST | /rooms | Create a room. |\n| DELETE | /rooms/{room_id} | Delete a room. |\n| GET | /rooms/{room_id} | View a room. |\n| PATCH | /rooms/{room_id} | Update a room. |\n| POST | /rooms/{room_id}/actions/generate_join_client_token | Create Client Token to join a room. |\n| POST | /rooms/{room_id}/actions/refresh_client_token | Refresh Client Token to join a room. |\n| GET | /rooms/{room_id}/sessions | View a list of room sessions. |\n\n### Session_analysis\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /session_analysis/metadata | Get metadata overview |\n| GET | /session_analysis/metadata/{record_type} | Get record type metadata |\n| GET | /session_analysis/{record_type}/{event_id} | Get session analysis |\n\n### Seti\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /seti/black_box_test_results | Retrieve Black Box Test Results |\n\n### Short_codes\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /short_codes | List short codes |\n| GET | /short_codes/{id} | Retrieve a short code |\n| PATCH | /short_codes/{id} | Update short code |\n\n### Sim_card_actions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_card_actions | List SIM card actions |\n| GET | /sim_card_actions/{id} | Get SIM card action details |\n\n### Sim_card_data_usage_notifications\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_card_data_usage_notifications | List SIM card data usage notifications |\n| POST | /sim_card_data_usage_notifications | Create a new SIM card data usage notification |\n| DELETE | /sim_card_data_usage_notifications/{id} | Delete SIM card data usage notifications |\n| GET | /sim_card_data_usage_notifications/{id} | Get a single SIM card data usage notification |\n| PATCH | /sim_card_data_usage_notifications/{id} | Updates information for a SIM Card Data Usage Notification |\n\n### Sim_card_group_actions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_card_group_actions | List SIM card group actions |\n| GET | /sim_card_group_actions/{id} | Get SIM card group action details |\n\n### Sim_card_groups\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_card_groups | Get all SIM card groups |\n| POST | /sim_card_groups | Create a SIM card group |\n| DELETE | /sim_card_groups/{id} | Delete a SIM card group |\n| GET | /sim_card_groups/{id} | Get SIM card group |\n| PATCH | /sim_card_groups/{id} | Update a SIM card group |\n| POST | /sim_card_groups/{id}/actions/remove_private_wireless_gateway | Request Private Wireless Gateway removal from SIM card group |\n| POST | /sim_card_groups/{id}/actions/remove_wireless_blocklist | Request Wireless Blocklist removal from SIM card group |\n| POST | /sim_card_groups/{id}/actions/set_private_wireless_gateway | Request Private Wireless Gateway assignment for SIM card group |\n| POST | /sim_card_groups/{id}/actions/set_wireless_blocklist | Request Wireless Blocklist assignment for SIM card group |\n\n### Sim_card_order_preview\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /sim_card_order_preview | Preview SIM card orders |\n\n### Sim_card_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_card_orders | Get all SIM card orders |\n| POST | /sim_card_orders | Create a SIM card order |\n| GET | /sim_card_orders/{id} | Get a single SIM card order |\n\n### Sim_cards\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sim_cards | Get all SIM cards |\n| POST | /sim_cards/actions/bulk_disable_voice | Request bulk disabling voice on SIM cards. |\n| POST | /sim_cards/actions/bulk_enable_voice | Request bulk enabling voice on SIM cards. |\n| POST | /sim_cards/actions/bulk_set_public_ips | Request bulk setting SIM card public IPs. |\n| POST | /sim_cards/actions/validate_registration_codes | Validate SIM cards registration codes |\n| DELETE | /sim_cards/{id} | Deletes a SIM card |\n| GET | /sim_cards/{id} | Get SIM card |\n| PATCH | /sim_cards/{id} | Update a SIM card |\n| POST | /sim_cards/{id}/actions/disable | Request a SIM card disable |\n| POST | /sim_cards/{id}/actions/enable | Request a SIM card enable |\n| POST | /sim_cards/{id}/actions/remove_public_ip | Request removing a SIM card public IP |\n| POST | /sim_cards/{id}/actions/set_public_ip | Request setting a SIM card public IP |\n| POST | /sim_cards/{id}/actions/set_standby | Request setting a SIM card to standby |\n| GET | /sim_cards/{id}/activation_code | Get activation code for an eSIM |\n| GET | /sim_cards/{id}/device_details | Get SIM card device details |\n| GET | /sim_cards/{id}/public_ip | Get SIM card public IP definition |\n| GET | /sim_cards/{id}/wireless_connectivity_logs | List wireless connectivity logs |\n\n### Siprec_connectors\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /siprec_connectors | Create a SIPREC connector |\n| DELETE | /siprec_connectors/{connector_name} | Delete a SIPREC connector |\n| GET | /siprec_connectors/{connector_name} | Retrieve a SIPREC connector |\n| PUT | /siprec_connectors/{connector_name} | Update a SIPREC connector |\n\n### Speech-to-text\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /speech-to-text/transcription | Speech to text over WebSocket |\n\n### Storage\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /storage/buckets/{bucketName}/ssl_certificate | Remove SSL Certificate |\n| GET | /storage/buckets/{bucketName}/ssl_certificate | Get Bucket SSL Certificate |\n| PUT | /storage/buckets/{bucketName}/ssl_certificate | Add SSL Certificate |\n| GET | /storage/buckets/{bucketName}/usage/api | Get API Usage |\n| GET | /storage/buckets/{bucketName}/usage/storage | Get Bucket Usage |\n| POST | /storage/buckets/{bucketName}/{objectName}/presigned_url | Create Presigned Object URL |\n| GET | /storage/migration_source_coverage | List Migration Source coverage |\n| GET | /storage/migration_sources | List all Migration Sources |\n| POST | /storage/migration_sources | Create a Migration Source |\n| DELETE | /storage/migration_sources/{id} | Delete a Migration Source |\n| GET | /storage/migration_sources/{id} | Get a Migration Source |\n| GET | /storage/migrations | List all Migrations |\n| POST | /storage/migrations | Create a Migration |\n| GET | /storage/migrations/{id} | Get a Migration |\n| POST | /storage/migrations/{id}/actions/stop | Stop a Migration |\n\n### Sub_number_orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /sub_number_orders | List sub number orders |\n| POST | /sub_number_orders/{id}/requirement_group | Update requirement group for a sub number order |\n| GET | /sub_number_orders/{sub_number_order_id} | Retrieve a sub number order |\n| PATCH | /sub_number_orders/{sub_number_order_id} | Update a sub number order's requirements |\n| PATCH | /sub_number_orders/{sub_number_order_id}/cancel | Cancel a sub number order |\n\n### Sub_number_orders_report\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /sub_number_orders_report | Create a sub number orders report |\n| GET | /sub_number_orders_report/{report_id} | Retrieve a sub number orders report |\n| GET | /sub_number_orders_report/{report_id}/download | Download a sub number orders report |\n\n### Telephony_credentials\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /telephony_credentials | List all credentials |\n| POST | /telephony_credentials | Create a credential |\n| DELETE | /telephony_credentials/{id} | Delete a credential |\n| GET | /telephony_credentials/{id} | Get a credential |\n| PATCH | /telephony_credentials/{id} | Update a credential |\n| POST | /telephony_credentials/{id}/token | Create an Access Token. |\n\n### Terms_of_service\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /terms_of_service/number_reputation/agree | Agree to Number Reputation Terms of Service |\n\n### Texml\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /texml/Accounts/{account_sid}/Calls | Fetch multiple call resources |\n| POST | /texml/Accounts/{account_sid}/Calls | Initiate an outbound call |\n| GET | /texml/Accounts/{account_sid}/Calls/{call_sid} | Fetch a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid} | Update call |\n| GET | /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json | Fetch recordings for a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json | Request recording for a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json | Update recording on a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json | Request siprec session for a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json | Updates siprec session for a call |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json | Start streaming media from a call. |\n| POST | /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json | Update streaming on a call |\n| GET | /texml/Accounts/{account_sid}/Conferences | List conference resources |\n| GET | /texml/Accounts/{account_sid}/Conferences/{conference_sid} | Fetch a conference resource |\n| POST | /texml/Accounts/{account_sid}/Conferences/{conference_sid} | Update a conference resource |\n| GET | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants | List conference participants |\n| POST | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants | Dial a new conference participant |\n| DELETE | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label} | Delete a conference participant |\n| GET | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label} | Get conference participant resource |\n| POST | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label} | Update a conference participant |\n| GET | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings | List conference recordings |\n| GET | /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json | Fetch recordings for a conference |\n| GET | /texml/Accounts/{account_sid}/Queues | List queue resources |\n| POST | /texml/Accounts/{account_sid}/Queues | Create a new queue |\n| DELETE | /texml/Accounts/{account_sid}/Queues/{queue_sid} | Delete a queue resource |\n| GET | /texml/Accounts/{account_sid}/Queues/{queue_sid} | Fetch a queue resource |\n| POST | /texml/Accounts/{account_sid}/Queues/{queue_sid} | Update a queue resource |\n| GET | /texml/Accounts/{account_sid}/Recordings.json | Fetch multiple recording resources |\n| DELETE | /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json | Delete recording resource |\n| GET | /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json | Fetch recording resource |\n| GET | /texml/Accounts/{account_sid}/Transcriptions.json | List recording transcriptions |\n| DELETE | /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json | Delete a recording transcription |\n| GET | /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json | Fetch a recording transcription resource |\n| POST | /texml/secrets | Create a TeXML secret |\n\n### Texml_applications\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /texml_applications | List all TeXML Applications |\n| POST | /texml_applications | Creates a TeXML Application |\n| DELETE | /texml_applications/{id} | Deletes a TeXML Application |\n| GET | /texml_applications/{id} | Retrieve a TeXML Application |\n| PATCH | /texml_applications/{id} | Update a TeXML Application |\n\n### Text-to-speech\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /text-to-speech/speech | Stream text to speech over WebSocket |\n| POST | /text-to-speech/speech | Generate speech from text |\n| GET | /text-to-speech/voices | List available voices |\n\n### Traffic_policy_profiles\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /traffic_policy_profiles | Get all traffic policy profiles |\n| POST | /traffic_policy_profiles | Create a traffic policy profile |\n| GET | /traffic_policy_profiles/services | Get all available traffic policy profile services |\n| DELETE | /traffic_policy_profiles/{id} | Delete a traffic policy profile |\n| GET | /traffic_policy_profiles/{id} | Get a traffic policy profile |\n| PATCH | /traffic_policy_profiles/{id} | Update a traffic policy profile |\n\n### Usage_reports\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /usage_reports | Get Telnyx product usage data (BETA) |\n| GET | /usage_reports/options | Get Usage Reports query options (BETA) |\n\n### User_addresses\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /user_addresses | List all user addresses |\n| POST | /user_addresses | Creates a user address |\n| GET | /user_addresses/{id} | Retrieve a user address |\n\n### User_tags\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /user_tags | List User Tags |\n\n### Mobile_voice_connections\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/mobile_voice_connections | List Mobile Voice Connections |\n| POST | /v2/mobile_voice_connections | Create a Mobile Voice Connection |\n| DELETE | /v2/mobile_voice_connections/{id} | Delete a Mobile Voice Connection |\n| GET | /v2/mobile_voice_connections/{id} | Retrieve a Mobile Voice Connection |\n| PATCH | /v2/mobile_voice_connections/{id} | Update a Mobile Voice Connection |\n\n### Whatsapp\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/whatsapp/business_accounts | List Whatsapp Business Accounts |\n| DELETE | /v2/whatsapp/business_accounts/{id} | Delete a Whatsapp Business Account |\n| GET | /v2/whatsapp/business_accounts/{id} | Get a single Whatsapp Business Account |\n| GET | /v2/whatsapp/business_accounts/{id}/phone_numbers | List phone numbers for a WABA |\n| POST | /v2/whatsapp/business_accounts/{id}/phone_numbers | Initialize Whatsapp phone number verification |\n| GET | /v2/whatsapp/business_accounts/{id}/settings | Get WABA settings |\n| PATCH | /v2/whatsapp/business_accounts/{id}/settings | Update WABA settings |\n| GET | /v2/whatsapp/message_templates | List Whatsapp message templates |\n| POST | /v2/whatsapp/message_templates | Create a Whatsapp message template |\n| GET | /v2/whatsapp/phone_numbers | List Whatsapp phone numbers |\n| DELETE | /v2/whatsapp/phone_numbers/{phone_number} | Delete a Whatsapp phone number |\n| GET | /v2/whatsapp/phone_numbers/{phone_number}/calling_settings | Get calling settings for a phone number |\n| PATCH | /v2/whatsapp/phone_numbers/{phone_number}/calling_settings | Enable or disable Whatsapp calling for a phone number |\n| GET | /v2/whatsapp/phone_numbers/{phone_number}/profile | Get phone number business profile |\n| PATCH | /v2/whatsapp/phone_numbers/{phone_number}/profile | Update phone number business profile |\n| DELETE | /v2/whatsapp/phone_numbers/{phone_number}/profile/photo | Delete Whatsapp profile photo |\n| POST | /v2/whatsapp/phone_numbers/{phone_number}/profile/photo | Upload Whatsapp profile photo |\n| POST | /v2/whatsapp/phone_numbers/{phone_number}/resend_verification | Resend verification code |\n| POST | /v2/whatsapp/phone_numbers/{phone_number}/verify | Submit verification code for a phone number |\n\n### Whatsapp_message_templates\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /v2/whatsapp_message_templates/{id} | Delete a Whatsapp message template |\n| GET | /v2/whatsapp_message_templates/{id} | Get a Whatsapp message template by ID |\n| PATCH | /v2/whatsapp_message_templates/{id} | Update a Whatsapp message template |\n\n### X402\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/x402/credit_account | Settle a payment |\n| POST | /v2/x402/credit_account/quote | Create a payment quote |\n\n### Verifications\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /verifications/by_phone_number/{phone_number} | List verifications by phone number |\n| POST | /verifications/by_phone_number/{phone_number}/actions/verify | Verify verification code by phone number |\n| POST | /verifications/call | Trigger Call verification |\n| POST | /verifications/flashcall | Trigger Flash call verification |\n| POST | /verifications/sms | Trigger SMS verification |\n| GET | /verifications/{verification_id} | Retrieve verification |\n| POST | /verifications/{verification_id}/actions/verify | Verify verification code by ID |\n\n### Verified_numbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /verified_numbers | List all Verified Numbers |\n| POST | /verified_numbers | Request phone number verification |\n| DELETE | /verified_numbers/{phone_number} | Delete a verified number |\n| GET | /verified_numbers/{phone_number} | Retrieve a verified number |\n| POST | /verified_numbers/{phone_number}/actions/verify | Submit verification code |\n\n### Verify_profiles\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /verify_profiles | List all Verify profiles |\n| POST | /verify_profiles | Create a Verify profile |\n| GET | /verify_profiles/templates | Retrieve Verify profile message templates |\n| POST | /verify_profiles/templates | Create message template |\n| PATCH | /verify_profiles/templates/{template_id} | Update message template |\n| DELETE | /verify_profiles/{verify_profile_id} | Delete Verify profile |\n| GET | /verify_profiles/{verify_profile_id} | Retrieve Verify profile |\n| PATCH | /verify_profiles/{verify_profile_id} | Update Verify profile |\n\n### Virtual_cross_connects\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /virtual_cross_connects | List all Virtual Cross Connects |\n| POST | /virtual_cross_connects | Create a Virtual Cross Connect |\n| DELETE | /virtual_cross_connects/{id} | Delete a Virtual Cross Connect |\n| GET | /virtual_cross_connects/{id} | Retrieve a Virtual Cross Connect |\n| PATCH | /virtual_cross_connects/{id} | Update the Virtual Cross Connect |\n\n### Virtual_cross_connects_coverage\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /virtual_cross_connects_coverage | List Virtual Cross Connect Cloud Coverage |\n\n### Voice_clones\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /voice_clones | List voice clones |\n| POST | /voice_clones | Create a voice clone from a voice design |\n| POST | /voice_clones/from_upload | Create a voice clone from an audio file upload |\n| DELETE | /voice_clones/{id} | Delete a voice clone |\n| PATCH | /voice_clones/{id} | Update a voice clone |\n| GET | /voice_clones/{id}/sample | Download voice clone audio sample |\n\n### Voice_designs\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /voice_designs | List voice designs |\n| POST | /voice_designs | Create or add a version to a voice design |\n| DELETE | /voice_designs/{id} | Delete a voice design |\n| GET | /voice_designs/{id} | Get a voice design |\n| PATCH | /voice_designs/{id} | Rename a voice design |\n| GET | /voice_designs/{id}/sample | Download voice design audio sample |\n| DELETE | /voice_designs/{id}/versions/{version} | Delete a specific version of a voice design |\n\n### Webhook_deliveries\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /webhook_deliveries | List webhook deliveries |\n| GET | /webhook_deliveries/{id} | Find webhook_delivery details by ID |\n\n### Wireguard_interfaces\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /wireguard_interfaces | List all WireGuard Interfaces |\n| POST | /wireguard_interfaces | Create a WireGuard Interface |\n| DELETE | /wireguard_interfaces/{id} | Delete a WireGuard Interface |\n| GET | /wireguard_interfaces/{id} | Retrieve a WireGuard Interfaces |\n\n### Wireguard_peers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /wireguard_peers | List all WireGuard Peers |\n| POST | /wireguard_peers | Create a WireGuard Peer |\n| DELETE | /wireguard_peers/{id} | Delete the WireGuard Peer |\n| GET | /wireguard_peers/{id} | Retrieve the WireGuard Peer |\n| PATCH | /wireguard_peers/{id} | Update the WireGuard Peer |\n| GET | /wireguard_peers/{id}/config | Retrieve Wireguard config template for Peer |\n\n### Wireless\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /wireless/detail_records_reports | Get all Wireless Detail Records (WDRs) Reports |\n| POST | /wireless/detail_records_reports | Create a Wireless Detail Records (WDRs) Report |\n| DELETE | /wireless/detail_records_reports/{id} | Delete a Wireless Detail Record (WDR) Report |\n| GET | /wireless/detail_records_reports/{id} | Get a Wireless Detail Record (WDR) Report |\n| GET | /wireless/regions | Get all wireless regions |\n\n### Wireless_blocklist_values\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /wireless_blocklist_values | Get all possible wireless blocklist values |\n\n### Wireless_blocklists\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /wireless_blocklists | Get all Wireless Blocklists |\n| PATCH | /wireless_blocklists | Update a Wireless Blocklist |\n| POST | /wireless_blocklists | Create a Wireless Blocklist |\n| DELETE | /wireless_blocklists/{id} | Delete a Wireless Blocklist |\n| GET | /wireless_blocklists/{id} | Get a Wireless Blocklist |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all oauth-authorization-server?\" -> GET /.well-known/oauth-authorization-server\n- \"List all oauth-protected-resource?\" -> GET /.well-known/oauth-protected-resource\n- \"List all brand?\" -> GET /10dlc/brand\n- \"Create a brand?\" -> POST /10dlc/brand\n- \"Get feedback details?\" -> GET /10dlc/brand/feedback/{brandId}\n- \"Get smsOtp details?\" -> GET /10dlc/brand/smsOtp/{referenceId}\n- \"Delete a brand?\" -> DELETE /10dlc/brand/{brandId}\n- \"Get brand details?\" -> GET /10dlc/brand/{brandId}\n- \"Update a brand?\" -> PUT /10dlc/brand/{brandId}\n- \"Create a 2faEmail?\" -> POST /10dlc/brand/{brandId}/2faEmail\n- \"List all externalVetting?\" -> GET /10dlc/brand/{brandId}/externalVetting\n- \"Create a externalVetting?\" -> POST /10dlc/brand/{brandId}/externalVetting\n- \"List all smsOtp?\" -> GET /10dlc/brand/{brandId}/smsOtp\n- \"Create a smsOtp?\" -> POST /10dlc/brand/{brandId}/smsOtp\n- \"List all campaign?\" -> GET /10dlc/campaign\n- \"List all cost?\" -> GET /10dlc/campaign/usecase/cost\n- \"Delete a campaign?\" -> DELETE /10dlc/campaign/{campaignId}\n- \"Get campaign details?\" -> GET /10dlc/campaign/{campaignId}\n- \"Update a campaign?\" -> PUT /10dlc/campaign/{campaignId}\n- \"Create a appeal?\" -> POST /10dlc/campaign/{campaignId}/appeal\n- \"List all mnoMetadata?\" -> GET /10dlc/campaign/{campaignId}/mnoMetadata\n- \"List all operationStatus?\" -> GET /10dlc/campaign/{campaignId}/operationStatus\n- \"List all attributes?\" -> GET /10dlc/campaign/{campaignId}/osr/attributes\n- \"List all sharing?\" -> GET /10dlc/campaign/{campaignId}/sharing\n- \"Create a campaignBuilder?\" -> POST /10dlc/campaignBuilder\n- \"Get usecase details?\" -> GET /10dlc/campaignBuilder/brand/{brandId}/usecase/{usecase}\n- \"Get enum details?\" -> GET /10dlc/enum/{endpoint}\n- \"List all sharedByMe?\" -> GET /10dlc/partnerCampaign/sharedByMe\n- \"List all partner_campaigns?\" -> GET /10dlc/partner_campaigns\n- \"Get partner_campaign details?\" -> GET /10dlc/partner_campaigns/{campaignId}\n- \"Partially update a partner_campaign?\" -> PATCH /10dlc/partner_campaigns/{campaignId}\n- \"Create a phoneNumberAssignmentByProfile?\" -> POST /10dlc/phoneNumberAssignmentByProfile\n- \"Get phoneNumberAssignmentByProfile details?\" -> GET /10dlc/phoneNumberAssignmentByProfile/{taskId}\n- \"List all phoneNumbers?\" -> GET /10dlc/phoneNumberAssignmentByProfile/{taskId}/phoneNumbers\n- \"List all phone_number_campaigns?\" -> GET /10dlc/phone_number_campaigns\n- \"Create a phone_number_campaign?\" -> POST /10dlc/phone_number_campaigns\n- \"Delete a phone_number_campaign?\" -> DELETE /10dlc/phone_number_campaigns/{phoneNumber}\n- \"Get phone_number_campaign details?\" -> GET /10dlc/phone_number_campaigns/{phoneNumber}\n- \"Update a phone_number_campaign?\" -> PUT /10dlc/phone_number_campaigns/{phoneNumber}\n- \"List all access_ip_address?\" -> GET /access_ip_address\n- \"Create a access_ip_address?\" -> POST /access_ip_address\n- \"Delete a access_ip_address?\" -> DELETE /access_ip_address/{access_ip_address_id}\n- \"Get access_ip_address details?\" -> GET /access_ip_address/{access_ip_address_id}\n- \"List all access_ip_ranges?\" -> GET /access_ip_ranges\n- \"Create a access_ip_range?\" -> POST /access_ip_ranges\n- \"Delete a access_ip_range?\" -> DELETE /access_ip_ranges/{access_ip_range_id}\n- \"Create a esim?\" -> POST /actions/purchase/esims\n- \"Create a sim_card?\" -> POST /actions/register/sim_cards\n- \"List all addresses?\" -> GET /addresses\n- \"Create a addresse?\" -> POST /addresses\n- \"Create a validate?\" -> POST /addresses/actions/validate\n- \"Delete a addresse?\" -> DELETE /addresses/{id}\n- \"Get addresse details?\" -> GET /addresses/{id}\n- \"Create a accept_suggestion?\" -> POST /addresses/{id}/actions/accept_suggestions\n- \"List all advanced_orders?\" -> GET /advanced_orders\n- \"Create a advanced_order?\" -> POST /advanced_orders\n- \"Get advanced_order details?\" -> GET /advanced_orders/{order_id}\n- \"List all assistants?\" -> GET /ai/assistants\n- \"Create a assistant?\" -> POST /ai/assistants\n- \"Create a import?\" -> POST /ai/assistants/import\n- \"List all tags?\" -> GET /ai/assistants/tags\n- \"List all tests?\" -> GET /ai/assistants/tests\n- \"Create a test?\" -> POST /ai/assistants/tests\n- \"List all test-suites?\" -> GET /ai/assistants/tests/test-suites\n- \"List all runs?\" -> GET /ai/assistants/tests/test-suites/{suite_name}/runs\n- \"Create a run?\" -> POST /ai/assistants/tests/test-suites/{suite_name}/runs\n- \"Delete a test?\" -> DELETE /ai/assistants/tests/{test_id}\n- \"Get test details?\" -> GET /ai/assistants/tests/{test_id}\n- \"Update a test?\" -> PUT /ai/assistants/tests/{test_id}\n- \"Get run details?\" -> GET /ai/assistants/tests/{test_id}/runs/{run_id}\n- \"Delete a assistant?\" -> DELETE /ai/assistants/{assistant_id}\n- \"Get assistant details?\" -> GET /ai/assistants/{assistant_id}\n- \"List all canary-deploys?\" -> GET /ai/assistants/{assistant_id}/canary-deploys\n- \"Create a canary-deploy?\" -> POST /ai/assistants/{assistant_id}/canary-deploys\n- \"Create a chat?\" -> POST /ai/assistants/{assistant_id}/chat\n- \"Create a sm?\" -> POST /ai/assistants/{assistant_id}/chat/sms\n- \"Create a clone?\" -> POST /ai/assistants/{assistant_id}/clone\n- \"List all scheduled_events?\" -> GET /ai/assistants/{assistant_id}/scheduled_events\n- \"Create a scheduled_event?\" -> POST /ai/assistants/{assistant_id}/scheduled_events\n- \"Delete a scheduled_event?\" -> DELETE /ai/assistants/{assistant_id}/scheduled_events/{event_id}\n- \"Get scheduled_event details?\" -> GET /ai/assistants/{assistant_id}/scheduled_events/{event_id}\n- \"Create a tag?\" -> POST /ai/assistants/{assistant_id}/tags\n- \"Delete a tag?\" -> DELETE /ai/assistants/{assistant_id}/tags/{tag}\n- \"List all texml?\" -> GET /ai/assistants/{assistant_id}/texml\n- \"Delete a tool?\" -> DELETE /ai/assistants/{assistant_id}/tools/{tool_id}\n- \"Update a tool?\" -> PUT /ai/assistants/{assistant_id}/tools/{tool_id}\n- \"List all versions?\" -> GET /ai/assistants/{assistant_id}/versions\n- \"Delete a version?\" -> DELETE /ai/assistants/{assistant_id}/versions/{version_id}\n- \"Get version details?\" -> GET /ai/assistants/{assistant_id}/versions/{version_id}\n- \"Create a promote?\" -> POST /ai/assistants/{assistant_id}/versions/{version_id}/promote\n- \"Create a transcription?\" -> POST /ai/audio/transcriptions\n- \"Create a completion?\" -> POST /ai/chat/completions\n- \"List all clusters?\" -> GET /ai/clusters\n- \"Create a cluster?\" -> POST /ai/clusters\n- \"Delete a cluster?\" -> DELETE /ai/clusters/{task_id}\n- \"Get cluster details?\" -> GET /ai/clusters/{task_id}\n- \"List all graph?\" -> GET /ai/clusters/{task_id}/graph\n- \"List all conversations?\" -> GET /ai/conversations\n- \"Create a conversation?\" -> POST /ai/conversations\n- \"List all insight-groups?\" -> GET /ai/conversations/insight-groups\n- \"Create a insight-group?\" -> POST /ai/conversations/insight-groups\n- \"Delete a insight-group?\" -> DELETE /ai/conversations/insight-groups/{group_id}\n- \"Get insight-group details?\" -> GET /ai/conversations/insight-groups/{group_id}\n- \"Update a insight-group?\" -> PUT /ai/conversations/insight-groups/{group_id}\n- \"Create a assign?\" -> POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign\n- \"List all insights?\" -> GET /ai/conversations/insights\n- \"Create a insight?\" -> POST /ai/conversations/insights\n- \"Delete a insight?\" -> DELETE /ai/conversations/insights/{insight_id}\n- \"Get insight details?\" -> GET /ai/conversations/insights/{insight_id}\n- \"Update a insight?\" -> PUT /ai/conversations/insights/{insight_id}\n- \"Delete a conversation?\" -> DELETE /ai/conversations/{conversation_id}\n- \"Get conversation details?\" -> GET /ai/conversations/{conversation_id}\n- \"Update a conversation?\" -> PUT /ai/conversations/{conversation_id}\n- \"List all conversations-insights?\" -> GET /ai/conversations/{conversation_id}/conversations-insights\n- \"Create a message?\" -> POST /ai/conversations/{conversation_id}/message\n- \"List all messages?\" -> GET /ai/conversations/{conversation_id}/messages\n- \"List all embeddings?\" -> GET /ai/embeddings\n- \"Create a embedding?\" -> POST /ai/embeddings\n- \"List all buckets?\" -> GET /ai/embeddings/buckets\n- \"Delete a bucket?\" -> DELETE /ai/embeddings/buckets/{bucket_name}\n- \"Get bucket details?\" -> GET /ai/embeddings/buckets/{bucket_name}\n- \"Create a similarity-search?\" -> POST /ai/embeddings/similarity-search\n- \"Create a url?\" -> POST /ai/embeddings/url\n- \"Get embedding details?\" -> GET /ai/embeddings/{task_id}\n- \"List all jobs?\" -> GET /ai/fine_tuning/jobs\n- \"Create a job?\" -> POST /ai/fine_tuning/jobs\n- \"Get job details?\" -> GET /ai/fine_tuning/jobs/{job_id}\n- \"Create a cancel?\" -> POST /ai/fine_tuning/jobs/{job_id}/cancel\n- \"List all integrations?\" -> GET /ai/integrations\n- \"List all connections?\" -> GET /ai/integrations/connections\n- \"Delete a connection?\" -> DELETE /ai/integrations/connections/{user_connection_id}\n- \"Get connection details?\" -> GET /ai/integrations/connections/{user_connection_id}\n- \"Get integration details?\" -> GET /ai/integrations/{integration_id}\n- \"List all mcp_servers?\" -> GET /ai/mcp_servers\n- \"Create a mcp_server?\" -> POST /ai/mcp_servers\n- \"Delete a mcp_server?\" -> DELETE /ai/mcp_servers/{mcp_server_id}\n- \"Get mcp_server details?\" -> GET /ai/mcp_servers/{mcp_server_id}\n- \"Update a mcp_server?\" -> PUT /ai/mcp_servers/{mcp_server_id}\n- \"List all missions?\" -> GET /ai/missions\n- \"Create a mission?\" -> POST /ai/missions\n- \"List all events?\" -> GET /ai/missions/events\n- \"Delete a mission?\" -> DELETE /ai/missions/{mission_id}\n- \"Get mission details?\" -> GET /ai/missions/{mission_id}\n- \"Update a mission?\" -> PUT /ai/missions/{mission_id}\n- \"List all knowledge-bases?\" -> GET /ai/missions/{mission_id}/knowledge-bases\n- \"Create a knowledge-base?\" -> POST /ai/missions/{mission_id}/knowledge-bases\n- \"Delete a knowledge-base?\" -> DELETE /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n- \"Get knowledge-base details?\" -> GET /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n- \"Update a knowledge-base?\" -> PUT /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n- \"List all mcp-servers?\" -> GET /ai/missions/{mission_id}/mcp-servers\n- \"Create a mcp-server?\" -> POST /ai/missions/{mission_id}/mcp-servers\n- \"Delete a mcp-server?\" -> DELETE /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n- \"Get mcp-server details?\" -> GET /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n- \"Update a mcp-server?\" -> PUT /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n- \"Partially update a run?\" -> PATCH /ai/missions/{mission_id}/runs/{run_id}\n- \"Create a event?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/events\n- \"Get event details?\" -> GET /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}\n- \"Create a pause?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/pause\n- \"List all plan?\" -> GET /ai/missions/{mission_id}/runs/{run_id}/plan\n- \"Create a plan?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/plan\n- \"Create a step?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/plan/steps\n- \"Get step details?\" -> GET /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}\n- \"Partially update a step?\" -> PATCH /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}\n- \"Create a resume?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/resume\n- \"List all telnyx-agents?\" -> GET /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents\n- \"Create a telnyx-agent?\" -> POST /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents\n- \"Delete a telnyx-agent?\" -> DELETE /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}\n- \"List all tools?\" -> GET /ai/missions/{mission_id}/tools\n- \"Create a tool?\" -> POST /ai/missions/{mission_id}/tools\n- \"Get tool details?\" -> GET /ai/missions/{mission_id}/tools/{tool_id}\n- \"List all models?\" -> GET /ai/models\n- \"Create a summarize?\" -> POST /ai/summarize\n- \"Partially update a tool?\" -> PATCH /ai/tools/{tool_id}\n- \"List all alphanumeric_sender_ids?\" -> GET /alphanumeric_sender_ids\n- \"Create a alphanumeric_sender_id?\" -> POST /alphanumeric_sender_ids\n- \"Delete a alphanumeric_sender_id?\" -> DELETE /alphanumeric_sender_ids/{id}\n- \"Get alphanumeric_sender_id details?\" -> GET /alphanumeric_sender_ids/{id}\n- \"List all audit_events?\" -> GET /audit_events\n- \"List all authentication_providers?\" -> GET /authentication_providers\n- \"Create a authentication_provider?\" -> POST /authentication_providers\n- \"Delete a authentication_provider?\" -> DELETE /authentication_providers/{id}\n- \"Get authentication_provider details?\" -> GET /authentication_providers/{id}\n- \"Partially update a authentication_provider?\" -> PATCH /authentication_providers/{id}\n- \"List all available_phone_number_blocks?\" -> GET /available_phone_number_blocks\n- \"List all available_phone_numbers?\" -> GET /available_phone_numbers\n- \"List all balance?\" -> GET /balance\n- \"List all billing_groups?\" -> GET /billing_groups\n- \"Create a billing_group?\" -> POST /billing_groups\n- \"Delete a billing_group?\" -> DELETE /billing_groups/{id}\n- \"Get billing_group details?\" -> GET /billing_groups/{id}\n- \"Partially update a billing_group?\" -> PATCH /billing_groups/{id}\n- \"List all bulk_sim_card_actions?\" -> GET /bulk_sim_card_actions\n- \"Get bulk_sim_card_action details?\" -> GET /bulk_sim_card_actions/{id}\n- \"List all billing_bundles?\" -> GET /bundle_pricing/billing_bundles\n- \"Get billing_bundle details?\" -> GET /bundle_pricing/billing_bundles/{bundle_id}\n- \"List all user_bundles?\" -> GET /bundle_pricing/user_bundles\n- \"Create a bulk?\" -> POST /bundle_pricing/user_bundles/bulk\n- \"List all unused?\" -> GET /bundle_pricing/user_bundles/unused\n- \"Delete a user_bundle?\" -> DELETE /bundle_pricing/user_bundles/{user_bundle_id}\n- \"Get user_bundle details?\" -> GET /bundle_pricing/user_bundles/{user_bundle_id}\n- \"List all resources?\" -> GET /bundle_pricing/user_bundles/{user_bundle_id}/resources\n- \"List all call_control_applications?\" -> GET /call_control_applications\n- \"Create a call_control_application?\" -> POST /call_control_applications\n- \"Delete a call_control_application?\" -> DELETE /call_control_applications/{id}\n- \"Get call_control_application details?\" -> GET /call_control_applications/{id}\n- \"Partially update a call_control_application?\" -> PATCH /call_control_applications/{id}\n- \"List all call_events?\" -> GET /call_events\n- \"Create a call?\" -> POST /calls\n- \"Get call details?\" -> GET /calls/{call_control_id}\n- \"Create a ai_assistant_add_message?\" -> POST /calls/{call_control_id}/actions/ai_assistant_add_messages\n- \"Create a ai_assistant_join?\" -> POST /calls/{call_control_id}/actions/ai_assistant_join\n- \"Create a ai_assistant_start?\" -> POST /calls/{call_control_id}/actions/ai_assistant_start\n- \"Create a ai_assistant_stop?\" -> POST /calls/{call_control_id}/actions/ai_assistant_stop\n- \"Create a answer?\" -> POST /calls/{call_control_id}/actions/answer\n- \"Create a bridge?\" -> POST /calls/{call_control_id}/actions/bridge\n- \"Create a enqueue?\" -> POST /calls/{call_control_id}/actions/enqueue\n- \"Create a fork_start?\" -> POST /calls/{call_control_id}/actions/fork_start\n- \"Create a fork_stop?\" -> POST /calls/{call_control_id}/actions/fork_stop\n- \"Create a gather?\" -> POST /calls/{call_control_id}/actions/gather\n- \"Create a gather_stop?\" -> POST /calls/{call_control_id}/actions/gather_stop\n- \"Create a gather_using_ai?\" -> POST /calls/{call_control_id}/actions/gather_using_ai\n- \"Create a gather_using_audio?\" -> POST /calls/{call_control_id}/actions/gather_using_audio\n- \"Create a gather_using_speak?\" -> POST /calls/{call_control_id}/actions/gather_using_speak\n- \"Create a hangup?\" -> POST /calls/{call_control_id}/actions/hangup\n- \"Create a leave_queue?\" -> POST /calls/{call_control_id}/actions/leave_queue\n- \"Create a playback_start?\" -> POST /calls/{call_control_id}/actions/playback_start\n- \"Create a playback_stop?\" -> POST /calls/{call_control_id}/actions/playback_stop\n- \"Create a record_pause?\" -> POST /calls/{call_control_id}/actions/record_pause\n- \"Create a record_resume?\" -> POST /calls/{call_control_id}/actions/record_resume\n- \"Create a record_start?\" -> POST /calls/{call_control_id}/actions/record_start\n- \"Create a record_stop?\" -> POST /calls/{call_control_id}/actions/record_stop\n- \"Create a refer?\" -> POST /calls/{call_control_id}/actions/refer\n- \"Create a reject?\" -> POST /calls/{call_control_id}/actions/reject\n- \"Create a send_dtmf?\" -> POST /calls/{call_control_id}/actions/send_dtmf\n- \"Create a send_sip_info?\" -> POST /calls/{call_control_id}/actions/send_sip_info\n- \"Create a siprec_start?\" -> POST /calls/{call_control_id}/actions/siprec_start\n- \"Create a siprec_stop?\" -> POST /calls/{call_control_id}/actions/siprec_stop\n- \"Create a speak?\" -> POST /calls/{call_control_id}/actions/speak\n- \"Create a streaming_start?\" -> POST /calls/{call_control_id}/actions/streaming_start\n- \"Create a streaming_stop?\" -> POST /calls/{call_control_id}/actions/streaming_stop\n- \"Create a suppression_start?\" -> POST /calls/{call_control_id}/actions/suppression_start\n- \"Create a suppression_stop?\" -> POST /calls/{call_control_id}/actions/suppression_stop\n- \"Create a switch_supervisor_role?\" -> POST /calls/{call_control_id}/actions/switch_supervisor_role\n- \"Create a transcription_start?\" -> POST /calls/{call_control_id}/actions/transcription_start\n- \"Create a transcription_stop?\" -> POST /calls/{call_control_id}/actions/transcription_stop\n- \"Create a transfer?\" -> POST /calls/{call_control_id}/actions/transfer\n- \"List all channel_zones?\" -> GET /channel_zones\n- \"Update a channel_zone?\" -> PUT /channel_zones/{channel_zone_id}\n- \"List all charges_breakdown?\" -> GET /charges_breakdown\n- \"List all charges_summary?\" -> GET /charges_summary\n- \"List all comments?\" -> GET /comments\n- \"Create a comment?\" -> POST /comments\n- \"Get comment details?\" -> GET /comments/{id}\n- \"List all conferences?\" -> GET /conferences\n- \"Create a conference?\" -> POST /conferences\n- \"List all participants?\" -> GET /conferences/{conference_id}/participants\n- \"Get conference details?\" -> GET /conferences/{id}\n- \"Create a end?\" -> POST /conferences/{id}/actions/end\n- \"Create a hold?\" -> POST /conferences/{id}/actions/hold\n- \"Create a join?\" -> POST /conferences/{id}/actions/join\n- \"Create a leave?\" -> POST /conferences/{id}/actions/leave\n- \"Create a mute?\" -> POST /conferences/{id}/actions/mute\n- \"Create a play?\" -> POST /conferences/{id}/actions/play\n- \"Create a stop?\" -> POST /conferences/{id}/actions/stop\n- \"Create a unhold?\" -> POST /conferences/{id}/actions/unhold\n- \"Create a unmute?\" -> POST /conferences/{id}/actions/unmute\n- \"Create a update?\" -> POST /conferences/{id}/actions/update\n- \"Get participant details?\" -> GET /conferences/{id}/participants/{participant_id}\n- \"Partially update a participant?\" -> PATCH /conferences/{id}/participants/{participant_id}\n- \"List all active_calls?\" -> GET /connections/{connection_id}/active_calls\n- \"List all country_coverage?\" -> GET /country_coverage\n- \"Get country details?\" -> GET /country_coverage/countries/{country_code}\n- \"List all credential_connections?\" -> GET /credential_connections\n- \"Create a credential_connection?\" -> POST /credential_connections\n- \"Delete a credential_connection?\" -> DELETE /credential_connections/{id}\n- \"Get credential_connection details?\" -> GET /credential_connections/{id}\n- \"Partially update a credential_connection?\" -> PATCH /credential_connections/{id}\n- \"Create a check_registration_status?\" -> POST /credential_connections/{id}/actions/check_registration_status\n- \"Delete a custom_storage_credential?\" -> DELETE /custom_storage_credentials/{connection_id}\n- \"Get custom_storage_credential details?\" -> GET /custom_storage_credentials/{connection_id}\n- \"Update a custom_storage_credential?\" -> PUT /custom_storage_credentials/{connection_id}\n- \"List all customer_service_records?\" -> GET /customer_service_records\n- \"Create a customer_service_record?\" -> POST /customer_service_records\n- \"Create a phone_number_coverage?\" -> POST /customer_service_records/phone_number_coverages\n- \"Get customer_service_record details?\" -> GET /customer_service_records/{customer_service_record_id}\n- \"List all detail_records?\" -> GET /detail_records\n- \"Delete a dialogflow_connection?\" -> DELETE /dialogflow_connections/{connection_id}\n- \"Get dialogflow_connection details?\" -> GET /dialogflow_connections/{connection_id}\n- \"Update a dialogflow_connection?\" -> PUT /dialogflow_connections/{connection_id}\n- \"List all document_links?\" -> GET /document_links\n- \"List all documents?\" -> GET /documents\n- \"Create a document?\" -> POST /documents\n- \"Delete a document?\" -> DELETE /documents/{id}\n- \"Get document details?\" -> GET /documents/{id}\n- \"Partially update a document?\" -> PATCH /documents/{id}\n- \"List all download?\" -> GET /documents/{id}/download\n- \"List all download_link?\" -> GET /documents/{id}/download_link\n- \"List all dynamic_emergency_addresses?\" -> GET /dynamic_emergency_addresses\n- \"Create a dynamic_emergency_addresse?\" -> POST /dynamic_emergency_addresses\n- \"Delete a dynamic_emergency_addresse?\" -> DELETE /dynamic_emergency_addresses/{id}\n- \"Get dynamic_emergency_addresse details?\" -> GET /dynamic_emergency_addresses/{id}\n- \"List all dynamic_emergency_endpoints?\" -> GET /dynamic_emergency_endpoints\n- \"Create a dynamic_emergency_endpoint?\" -> POST /dynamic_emergency_endpoints\n- \"Delete a dynamic_emergency_endpoint?\" -> DELETE /dynamic_emergency_endpoints/{id}\n- \"Get dynamic_emergency_endpoint details?\" -> GET /dynamic_emergency_endpoints/{id}\n- \"List all enterprises?\" -> GET /enterprises\n- \"Create a enterprise?\" -> POST /enterprises\n- \"Delete a enterprise?\" -> DELETE /enterprises/{enterprise_id}\n- \"Get enterprise details?\" -> GET /enterprises/{enterprise_id}\n- \"Update a enterprise?\" -> PUT /enterprises/{enterprise_id}\n- \"List all reputation?\" -> GET /enterprises/{enterprise_id}/reputation\n- \"Create a reputation?\" -> POST /enterprises/{enterprise_id}/reputation\n- \"List all numbers?\" -> GET /enterprises/{enterprise_id}/reputation/numbers\n- \"Create a number?\" -> POST /enterprises/{enterprise_id}/reputation/numbers\n- \"Delete a number?\" -> DELETE /enterprises/{enterprise_id}/reputation/numbers/{phone_number}\n- \"Get number details?\" -> GET /enterprises/{enterprise_id}/reputation/numbers/{phone_number}\n- \"List all external_connections?\" -> GET /external_connections\n- \"Create a external_connection?\" -> POST /external_connections\n- \"List all log_messages?\" -> GET /external_connections/log_messages\n- \"Delete a log_message?\" -> DELETE /external_connections/log_messages/{id}\n- \"Get log_message details?\" -> GET /external_connections/log_messages/{id}\n- \"Delete a external_connection?\" -> DELETE /external_connections/{id}\n- \"Get external_connection details?\" -> GET /external_connections/{id}\n- \"Partially update a external_connection?\" -> PATCH /external_connections/{id}\n- \"List all civic_addresses?\" -> GET /external_connections/{id}/civic_addresses\n- \"Get civic_addresse details?\" -> GET /external_connections/{id}/civic_addresses/{address_id}\n- \"Partially update a location?\" -> PATCH /external_connections/{id}/locations/{location_id}\n- \"List all phone_numbers?\" -> GET /external_connections/{id}/phone_numbers\n- \"Get phone_number details?\" -> GET /external_connections/{id}/phone_numbers/{phone_number_id}\n- \"Partially update a phone_number?\" -> PATCH /external_connections/{id}/phone_numbers/{phone_number_id}\n- \"List all releases?\" -> GET /external_connections/{id}/releases\n- \"Get release details?\" -> GET /external_connections/{id}/releases/{release_id}\n- \"List all uploads?\" -> GET /external_connections/{id}/uploads\n- \"Create a upload?\" -> POST /external_connections/{id}/uploads\n- \"Create a refresh?\" -> POST /external_connections/{id}/uploads/refresh\n- \"List all status?\" -> GET /external_connections/{id}/uploads/status\n- \"Get upload details?\" -> GET /external_connections/{id}/uploads/{ticket_id}\n- \"Create a retry?\" -> POST /external_connections/{id}/uploads/{ticket_id}/retry\n- \"List all fax_applications?\" -> GET /fax_applications\n- \"Create a fax_application?\" -> POST /fax_applications\n- \"Delete a fax_application?\" -> DELETE /fax_applications/{id}\n- \"Get fax_application details?\" -> GET /fax_applications/{id}\n- \"Partially update a fax_application?\" -> PATCH /fax_applications/{id}\n- \"List all faxes?\" -> GET /faxes\n- \"Create a faxe?\" -> POST /faxes\n- \"Delete a faxe?\" -> DELETE /faxes/{id}\n- \"Get faxe details?\" -> GET /faxes/{id}\n- \"List all fqdn_connections?\" -> GET /fqdn_connections\n- \"Create a fqdn_connection?\" -> POST /fqdn_connections\n- \"Delete a fqdn_connection?\" -> DELETE /fqdn_connections/{id}\n- \"Get fqdn_connection details?\" -> GET /fqdn_connections/{id}\n- \"Partially update a fqdn_connection?\" -> PATCH /fqdn_connections/{id}\n- \"List all fqdns?\" -> GET /fqdns\n- \"Create a fqdn?\" -> POST /fqdns\n- \"Delete a fqdn?\" -> DELETE /fqdns/{id}\n- \"Get fqdn details?\" -> GET /fqdns/{id}\n- \"Partially update a fqdn?\" -> PATCH /fqdns/{id}\n- \"List all global_ip_allowed_ports?\" -> GET /global_ip_allowed_ports\n- \"List all global_ip_assignment_health?\" -> GET /global_ip_assignment_health\n- \"List all global_ip_assignments?\" -> GET /global_ip_assignments\n- \"Create a global_ip_assignment?\" -> POST /global_ip_assignments\n- \"Delete a global_ip_assignment?\" -> DELETE /global_ip_assignments/{id}\n- \"Get global_ip_assignment details?\" -> GET /global_ip_assignments/{id}\n- \"Partially update a global_ip_assignment?\" -> PATCH /global_ip_assignments/{id}\n- \"List all global_ip_assignments_usage?\" -> GET /global_ip_assignments_usage\n- \"List all global_ip_health_check_types?\" -> GET /global_ip_health_check_types\n- \"List all global_ip_health_checks?\" -> GET /global_ip_health_checks\n- \"Create a global_ip_health_check?\" -> POST /global_ip_health_checks\n- \"Delete a global_ip_health_check?\" -> DELETE /global_ip_health_checks/{id}\n- \"Get global_ip_health_check details?\" -> GET /global_ip_health_checks/{id}\n- \"List all global_ip_latency?\" -> GET /global_ip_latency\n- \"List all global_ip_protocols?\" -> GET /global_ip_protocols\n- \"List all global_ip_usage?\" -> GET /global_ip_usage\n- \"List all global_ips?\" -> GET /global_ips\n- \"Create a global_ip?\" -> POST /global_ips\n- \"Delete a global_ip?\" -> DELETE /global_ips/{id}\n- \"Get global_ip details?\" -> GET /global_ips/{id}\n- \"List all inbound_channels?\" -> GET /inbound_channels\n- \"List all inexplicit_number_orders?\" -> GET /inexplicit_number_orders\n- \"Create a inexplicit_number_order?\" -> POST /inexplicit_number_orders\n- \"Get inexplicit_number_order details?\" -> GET /inexplicit_number_orders/{id}\n- \"List all integration_secrets?\" -> GET /integration_secrets\n- \"Create a integration_secret?\" -> POST /integration_secrets\n- \"Delete a integration_secret?\" -> DELETE /integration_secrets/{id}\n- \"List all inventory_coverage?\" -> GET /inventory_coverage\n- \"List all invoices?\" -> GET /invoices\n- \"Get invoice details?\" -> GET /invoices/{id}\n- \"List all ip_connections?\" -> GET /ip_connections\n- \"Create a ip_connection?\" -> POST /ip_connections\n- \"Delete a ip_connection?\" -> DELETE /ip_connections/{id}\n- \"Get ip_connection details?\" -> GET /ip_connections/{id}\n- \"Partially update a ip_connection?\" -> PATCH /ip_connections/{id}\n- \"List all ips?\" -> GET /ips\n- \"Create a ip?\" -> POST /ips\n- \"Delete a ip?\" -> DELETE /ips/{id}\n- \"Get ip details?\" -> GET /ips/{id}\n- \"Partially update a ip?\" -> PATCH /ips/{id}\n- \"Create a ledger_billing_group_report?\" -> POST /ledger_billing_group_reports\n- \"Get ledger_billing_group_report details?\" -> GET /ledger_billing_group_reports/{id}\n- \"List all messaging?\" -> GET /legacy/reporting/batch_detail_records/messaging\n- \"Create a messaging?\" -> POST /legacy/reporting/batch_detail_records/messaging\n- \"Delete a messaging?\" -> DELETE /legacy/reporting/batch_detail_records/messaging/{id}\n- \"Get messaging details?\" -> GET /legacy/reporting/batch_detail_records/messaging/{id}\n- \"List all speech_to_text?\" -> GET /legacy/reporting/batch_detail_records/speech_to_text\n- \"Create a speech_to_text?\" -> POST /legacy/reporting/batch_detail_records/speech_to_text\n- \"Delete a speech_to_text?\" -> DELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}\n- \"Get speech_to_text details?\" -> GET /legacy/reporting/batch_detail_records/speech_to_text/{id}\n- \"List all voice?\" -> GET /legacy/reporting/batch_detail_records/voice\n- \"Create a voice?\" -> POST /legacy/reporting/batch_detail_records/voice\n- \"List all fields?\" -> GET /legacy/reporting/batch_detail_records/voice/fields\n- \"Delete a voice?\" -> DELETE /legacy/reporting/batch_detail_records/voice/{id}\n- \"Get voice details?\" -> GET /legacy/reporting/batch_detail_records/voice/{id}\n- \"List all number_lookup?\" -> GET /legacy/reporting/usage_reports/number_lookup\n- \"Create a number_lookup?\" -> POST /legacy/reporting/usage_reports/number_lookup\n- \"Delete a number_lookup?\" -> DELETE /legacy/reporting/usage_reports/number_lookup/{id}\n- \"Get number_lookup details?\" -> GET /legacy/reporting/usage_reports/number_lookup/{id}\n- \"List all list?\" -> GET /list\n- \"Get list details?\" -> GET /list/{channel_zone_id}\n- \"List all managed_accounts?\" -> GET /managed_accounts\n- \"Create a managed_account?\" -> POST /managed_accounts\n- \"List all allocatable_global_outbound_channels?\" -> GET /managed_accounts/allocatable_global_outbound_channels\n- \"Get managed_account details?\" -> GET /managed_accounts/{id}\n- \"Partially update a managed_account?\" -> PATCH /managed_accounts/{id}\n- \"Create a disable?\" -> POST /managed_accounts/{id}/actions/disable\n- \"Create a enable?\" -> POST /managed_accounts/{id}/actions/enable\n- \"List all media?\" -> GET /media\n- \"Create a media?\" -> POST /media\n- \"Delete a media?\" -> DELETE /media/{media_name}\n- \"Get media details?\" -> GET /media/{media_name}\n- \"Update a media?\" -> PUT /media/{media_name}\n- \"Get group details?\" -> GET /messages/group/{message_id}\n- \"Create a group_mm?\" -> POST /messages/group_mms\n- \"Create a long_code?\" -> POST /messages/long_code\n- \"Create a number_pool?\" -> POST /messages/number_pool\n- \"Create a rc?\" -> POST /messages/rcs\n- \"Get deeplink details?\" -> GET /messages/rcs/deeplinks/{agent_id}\n- \"Create a schedule?\" -> POST /messages/schedule\n- \"Create a short_code?\" -> POST /messages/short_code\n- \"Create a whatsapp?\" -> POST /messages/whatsapp\n- \"Delete a message?\" -> DELETE /messages/{id}\n- \"Get message details?\" -> GET /messages/{id}\n- \"List all agents?\" -> GET /messaging/rcs/agents\n- \"Get agent details?\" -> GET /messaging/rcs/agents/{id}\n- \"Partially update a agent?\" -> PATCH /messaging/rcs/agents/{id}\n- \"Create a bulk_capability?\" -> POST /messaging/rcs/bulk_capabilities\n- \"Get capability details?\" -> GET /messaging/rcs/capabilities/{agent_id}/{phone_number}\n- \"Update a test_number_invite?\" -> PUT /messaging/rcs/test_number_invite/{id}/{phone_number}\n- \"List all messaging_hosted_number_orders?\" -> GET /messaging_hosted_number_orders\n- \"Create a messaging_hosted_number_order?\" -> POST /messaging_hosted_number_orders\n- \"Create a eligibility_numbers_check?\" -> POST /messaging_hosted_number_orders/eligibility_numbers_check\n- \"Delete a messaging_hosted_number_order?\" -> DELETE /messaging_hosted_number_orders/{id}\n- \"Get messaging_hosted_number_order details?\" -> GET /messaging_hosted_number_orders/{id}\n- \"Create a file_upload?\" -> POST /messaging_hosted_number_orders/{id}/actions/file_upload\n- \"Create a validation_code?\" -> POST /messaging_hosted_number_orders/{id}/validation_codes\n- \"Create a verification_code?\" -> POST /messaging_hosted_number_orders/{id}/verification_codes\n- \"List all messaging_hosted_numbers?\" -> GET /messaging_hosted_numbers\n- \"Delete a messaging_hosted_number?\" -> DELETE /messaging_hosted_numbers/{id}\n- \"Get messaging_hosted_number details?\" -> GET /messaging_hosted_numbers/{id}\n- \"Partially update a messaging_hosted_number?\" -> PATCH /messaging_hosted_numbers/{id}\n- \"Create a messaging_numbers_bulk_update?\" -> POST /messaging_numbers_bulk_updates\n- \"Get messaging_numbers_bulk_update details?\" -> GET /messaging_numbers_bulk_updates/{order_id}\n- \"List all messaging_optouts?\" -> GET /messaging_optouts\n- \"List all messaging_profile_metrics?\" -> GET /messaging_profile_metrics\n- \"List all messaging_profiles?\" -> GET /messaging_profiles\n- \"Create a messaging_profile?\" -> POST /messaging_profiles\n- \"Delete a messaging_profile?\" -> DELETE /messaging_profiles/{id}\n- \"Get messaging_profile details?\" -> GET /messaging_profiles/{id}\n- \"Partially update a messaging_profile?\" -> PATCH /messaging_profiles/{id}\n- \"Create a regenerate_secret?\" -> POST /messaging_profiles/{id}/actions/regenerate_secret\n- \"List all metrics?\" -> GET /messaging_profiles/{id}/metrics\n- \"List all short_codes?\" -> GET /messaging_profiles/{id}/short_codes\n- \"List all autoresp_configs?\" -> GET /messaging_profiles/{profile_id}/autoresp_configs\n- \"Create a autoresp_config?\" -> POST /messaging_profiles/{profile_id}/autoresp_configs\n- \"Delete a autoresp_config?\" -> DELETE /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n- \"Get autoresp_config details?\" -> GET /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n- \"Update a autoresp_config?\" -> PUT /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n- \"List all requests?\" -> GET /messaging_tollfree/verification/requests\n- \"Create a request?\" -> POST /messaging_tollfree/verification/requests\n- \"Delete a request?\" -> DELETE /messaging_tollfree/verification/requests/{id}\n- \"Get request details?\" -> GET /messaging_tollfree/verification/requests/{id}\n- \"Partially update a request?\" -> PATCH /messaging_tollfree/verification/requests/{id}\n- \"List all status_history?\" -> GET /messaging_tollfree/verification/requests/{id}/status_history\n- \"List all messaging_url_domains?\" -> GET /messaging_url_domains\n- \"List all mobile_network_operators?\" -> GET /mobile_network_operators\n- \"List all mobile_push_credentials?\" -> GET /mobile_push_credentials\n- \"Create a mobile_push_credential?\" -> POST /mobile_push_credentials\n- \"Delete a mobile_push_credential?\" -> DELETE /mobile_push_credentials/{push_credential_id}\n- \"Get mobile_push_credential details?\" -> GET /mobile_push_credentials/{push_credential_id}\n- \"List all network_coverage?\" -> GET /network_coverage\n- \"List all networks?\" -> GET /networks\n- \"Create a network?\" -> POST /networks\n- \"Delete a network?\" -> DELETE /networks/{id}\n- \"Get network details?\" -> GET /networks/{id}\n- \"Partially update a network?\" -> PATCH /networks/{id}\n- \"List all default_gateway?\" -> GET /networks/{id}/default_gateway\n- \"Create a default_gateway?\" -> POST /networks/{id}/default_gateway\n- \"List all network_interfaces?\" -> GET /networks/{id}/network_interfaces\n- \"List all notification_channels?\" -> GET /notification_channels\n- \"Create a notification_channel?\" -> POST /notification_channels\n- \"Delete a notification_channel?\" -> DELETE /notification_channels/{id}\n- \"Get notification_channel details?\" -> GET /notification_channels/{id}\n- \"Partially update a notification_channel?\" -> PATCH /notification_channels/{id}\n- \"List all notification_event_conditions?\" -> GET /notification_event_conditions\n- \"List all notification_events?\" -> GET /notification_events\n- \"List all notification_profiles?\" -> GET /notification_profiles\n- \"Create a notification_profile?\" -> POST /notification_profiles\n- \"Delete a notification_profile?\" -> DELETE /notification_profiles/{id}\n- \"Get notification_profile details?\" -> GET /notification_profiles/{id}\n- \"Partially update a notification_profile?\" -> PATCH /notification_profiles/{id}\n- \"List all notification_settings?\" -> GET /notification_settings\n- \"Create a notification_setting?\" -> POST /notification_settings\n- \"Delete a notification_setting?\" -> DELETE /notification_settings/{id}\n- \"Get notification_setting details?\" -> GET /notification_settings/{id}\n- \"List all number_block_orders?\" -> GET /number_block_orders\n- \"Create a number_block_order?\" -> POST /number_block_orders\n- \"Get number_block_order details?\" -> GET /number_block_orders/{number_block_order_id}\n- \"List all number_order_phone_numbers?\" -> GET /number_order_phone_numbers\n- \"Create a requirement_group?\" -> POST /number_order_phone_numbers/{id}/requirement_group\n- \"Get number_order_phone_number details?\" -> GET /number_order_phone_numbers/{number_order_phone_number_id}\n- \"Partially update a number_order_phone_number?\" -> PATCH /number_order_phone_numbers/{number_order_phone_number_id}\n- \"List all number_orders?\" -> GET /number_orders\n- \"Create a number_order?\" -> POST /number_orders\n- \"Get number_order details?\" -> GET /number_orders/{number_order_id}\n- \"Partially update a number_order?\" -> PATCH /number_orders/{number_order_id}\n- \"List all number_reservations?\" -> GET /number_reservations\n- \"Create a number_reservation?\" -> POST /number_reservations\n- \"Get number_reservation details?\" -> GET /number_reservations/{number_reservation_id}\n- \"Create a extend?\" -> POST /number_reservations/{number_reservation_id}/actions/extend\n- \"Create a numbers_feature?\" -> POST /numbers_features\n- \"List all authorize?\" -> GET /oauth/authorize\n- \"Get consent details?\" -> GET /oauth/consent/{consent_token}\n- \"Create a grant?\" -> POST /oauth/grants\n- \"Create a introspect?\" -> POST /oauth/introspect\n- \"List all jwks?\" -> GET /oauth/jwks\n- \"Create a register?\" -> POST /oauth/register\n- \"Create a token?\" -> POST /oauth/token\n- \"List all oauth_clients?\" -> GET /oauth_clients\n- \"Create a oauth_client?\" -> POST /oauth_clients\n- \"Delete a oauth_client?\" -> DELETE /oauth_clients/{id}\n- \"Get oauth_client details?\" -> GET /oauth_clients/{id}\n- \"Update a oauth_client?\" -> PUT /oauth_clients/{id}\n- \"List all oauth_grants?\" -> GET /oauth_grants\n- \"Delete a oauth_grant?\" -> DELETE /oauth_grants/{id}\n- \"Get oauth_grant details?\" -> GET /oauth_grants/{id}\n- \"List all users?\" -> GET /organizations/users\n- \"List all users_groups_report?\" -> GET /organizations/users/users_groups_report\n- \"Get user details?\" -> GET /organizations/users/{id}\n- \"Create a remove?\" -> POST /organizations/users/{id}/actions/remove\n- \"List all ota_updates?\" -> GET /ota_updates\n- \"Get ota_update details?\" -> GET /ota_updates/{id}\n- \"List all outbound_voice_profiles?\" -> GET /outbound_voice_profiles\n- \"Create a outbound_voice_profile?\" -> POST /outbound_voice_profiles\n- \"Delete a outbound_voice_profile?\" -> DELETE /outbound_voice_profiles/{id}\n- \"Get outbound_voice_profile details?\" -> GET /outbound_voice_profiles/{id}\n- \"Partially update a outbound_voice_profile?\" -> PATCH /outbound_voice_profiles/{id}\n- \"List all auto_recharge_prefs?\" -> GET /payment/auto_recharge_prefs\n- \"Create a delete_phone_number_block?\" -> POST /phone_number_blocks/jobs/delete_phone_number_block\n- \"Create a verify_ownership?\" -> POST /phone_numbers/actions/verify_ownership\n- \"List all csv_downloads?\" -> GET /phone_numbers/csv_downloads\n- \"Create a csv_download?\" -> POST /phone_numbers/csv_downloads\n- \"Get csv_download details?\" -> GET /phone_numbers/csv_downloads/{id}\n- \"Create a delete_phone_number?\" -> POST /phone_numbers/jobs/delete_phone_numbers\n- \"Create a update_emergency_setting?\" -> POST /phone_numbers/jobs/update_emergency_settings\n- \"Create a update_phone_number?\" -> POST /phone_numbers/jobs/update_phone_numbers\n- \"List all slim?\" -> GET /phone_numbers/slim\n- \"Delete a phone_number?\" -> DELETE /phone_numbers/{id}\n- \"Create a enable_emergency?\" -> POST /phone_numbers/{id}/actions/enable_emergency\n- \"List all voicemail?\" -> GET /phone_numbers/{phone_number_id}/voicemail\n- \"Create a voicemail?\" -> POST /phone_numbers/{phone_number_id}/voicemail\n- \"List all phone_numbers_regulatory_requirements?\" -> GET /phone_numbers_regulatory_requirements\n- \"Create a portability_check?\" -> POST /portability_checks\n- \"Create a republish?\" -> POST /porting/events/{id}/republish\n- \"List all loa_configurations?\" -> GET /porting/loa_configurations\n- \"Create a loa_configuration?\" -> POST /porting/loa_configurations\n- \"Create a preview?\" -> POST /porting/loa_configurations/preview\n- \"Delete a loa_configuration?\" -> DELETE /porting/loa_configurations/{id}\n- \"Get loa_configuration details?\" -> GET /porting/loa_configurations/{id}\n- \"Partially update a loa_configuration?\" -> PATCH /porting/loa_configurations/{id}\n- \"List all preview?\" -> GET /porting/loa_configurations/{id}/preview\n- \"List all reports?\" -> GET /porting/reports\n- \"Create a report?\" -> POST /porting/reports\n- \"Get report details?\" -> GET /porting/reports/{id}\n- \"List all uk_carriers?\" -> GET /porting/uk_carriers\n- \"List all porting_orders?\" -> GET /porting_orders\n- \"Create a porting_order?\" -> POST /porting_orders\n- \"List all exception_types?\" -> GET /porting_orders/exception_types\n- \"List all phone_number_configurations?\" -> GET /porting_orders/phone_number_configurations\n- \"Create a phone_number_configuration?\" -> POST /porting_orders/phone_number_configurations\n- \"Delete a porting_order?\" -> DELETE /porting_orders/{id}\n- \"Get porting_order details?\" -> GET /porting_orders/{id}\n- \"Partially update a porting_order?\" -> PATCH /porting_orders/{id}\n- \"Create a activate?\" -> POST /porting_orders/{id}/actions/activate\n- \"Create a confirm?\" -> POST /porting_orders/{id}/actions/confirm\n- \"Create a share?\" -> POST /porting_orders/{id}/actions/share\n- \"List all activation_jobs?\" -> GET /porting_orders/{id}/activation_jobs\n- \"Get activation_job details?\" -> GET /porting_orders/{id}/activation_jobs/{activationJobId}\n- \"Partially update a activation_job?\" -> PATCH /porting_orders/{id}/activation_jobs/{activationJobId}\n- \"List all additional_documents?\" -> GET /porting_orders/{id}/additional_documents\n- \"Create a additional_document?\" -> POST /porting_orders/{id}/additional_documents\n- \"Delete a additional_document?\" -> DELETE /porting_orders/{id}/additional_documents/{additional_document_id}\n- \"List all allowed_foc_windows?\" -> GET /porting_orders/{id}/allowed_foc_windows\n- \"List all loa_template?\" -> GET /porting_orders/{id}/loa_template\n- \"List all requirements?\" -> GET /porting_orders/{id}/requirements\n- \"List all sub_request?\" -> GET /porting_orders/{id}/sub_request\n- \"List all verification_codes?\" -> GET /porting_orders/{id}/verification_codes\n- \"Create a send?\" -> POST /porting_orders/{id}/verification_codes/send\n- \"Create a verify?\" -> POST /porting_orders/{id}/verification_codes/verify\n- \"List all action_requirements?\" -> GET /porting_orders/{porting_order_id}/action_requirements\n- \"Create a initiate?\" -> POST /porting_orders/{porting_order_id}/action_requirements/{id}/initiate\n- \"List all associated_phone_numbers?\" -> GET /porting_orders/{porting_order_id}/associated_phone_numbers\n- \"Create a associated_phone_number?\" -> POST /porting_orders/{porting_order_id}/associated_phone_numbers\n- \"Delete a associated_phone_number?\" -> DELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}\n- \"List all phone_number_blocks?\" -> GET /porting_orders/{porting_order_id}/phone_number_blocks\n- \"Create a phone_number_block?\" -> POST /porting_orders/{porting_order_id}/phone_number_blocks\n- \"Delete a phone_number_block?\" -> DELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}\n- \"List all phone_number_extensions?\" -> GET /porting_orders/{porting_order_id}/phone_number_extensions\n- \"Create a phone_number_extension?\" -> POST /porting_orders/{porting_order_id}/phone_number_extensions\n- \"Delete a phone_number_extension?\" -> DELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}\n- \"List all porting_phone_numbers?\" -> GET /porting_phone_numbers\n- \"List all portouts?\" -> GET /portouts\n- \"Get rejection details?\" -> GET /portouts/rejections/{portout_id}\n- \"Get portout details?\" -> GET /portouts/{id}\n- \"List all supporting_documents?\" -> GET /portouts/{id}/supporting_documents\n- \"Create a supporting_document?\" -> POST /portouts/{id}/supporting_documents\n- \"Partially update a portout?\" -> PATCH /portouts/{id}/{status}\n- \"List all private_wireless_gateways?\" -> GET /private_wireless_gateways\n- \"Create a private_wireless_gateway?\" -> POST /private_wireless_gateways\n- \"Delete a private_wireless_gateway?\" -> DELETE /private_wireless_gateways/{id}\n- \"Get private_wireless_gateway details?\" -> GET /private_wireless_gateways/{id}\n- \"List all public_internet_gateways?\" -> GET /public_internet_gateways\n- \"Create a public_internet_gateway?\" -> POST /public_internet_gateways\n- \"Delete a public_internet_gateway?\" -> DELETE /public_internet_gateways/{id}\n- \"Get public_internet_gateway details?\" -> GET /public_internet_gateways/{id}\n- \"List all queues?\" -> GET /queues\n- \"Create a queue?\" -> POST /queues\n- \"Delete a queue?\" -> DELETE /queues/{queue_name}\n- \"Get queue details?\" -> GET /queues/{queue_name}\n- \"List all calls?\" -> GET /queues/{queue_name}/calls\n- \"Delete a call?\" -> DELETE /queues/{queue_name}/calls/{call_control_id}\n- \"Partially update a call?\" -> PATCH /queues/{queue_name}/calls/{call_control_id}\n- \"List all recording_transcriptions?\" -> GET /recording_transcriptions\n- \"Delete a recording_transcription?\" -> DELETE /recording_transcriptions/{recording_transcription_id}\n- \"Get recording_transcription details?\" -> GET /recording_transcriptions/{recording_transcription_id}\n- \"List all recordings?\" -> GET /recordings\n- \"Create a delete?\" -> POST /recordings/actions/delete\n- \"Delete a recording?\" -> DELETE /recordings/{recording_id}\n- \"Get recording details?\" -> GET /recordings/{recording_id}\n- \"List all regions?\" -> GET /regions\n- \"List all regulatory_requirements?\" -> GET /regulatory_requirements\n- \"List all sync?\" -> GET /reports/cdr_usage_reports/sync\n- \"List all mdr_usage_reports?\" -> GET /reports/mdr_usage_reports\n- \"Create a mdr_usage_report?\" -> POST /reports/mdr_usage_reports\n- \"Delete a mdr_usage_report?\" -> DELETE /reports/mdr_usage_reports/{id}\n- \"Get mdr_usage_report details?\" -> GET /reports/mdr_usage_reports/{id}\n- \"List all mdrs?\" -> GET /reports/mdrs\n- \"List all wdrs?\" -> GET /reports/wdrs\n- \"List all requirement_groups?\" -> GET /requirement_groups\n- \"Delete a requirement_group?\" -> DELETE /requirement_groups/{id}\n- \"Get requirement_group details?\" -> GET /requirement_groups/{id}\n- \"Partially update a requirement_group?\" -> PATCH /requirement_groups/{id}\n- \"Create a submit_for_approval?\" -> POST /requirement_groups/{id}/submit_for_approval\n- \"List all requirement_types?\" -> GET /requirement_types\n- \"Get requirement_type details?\" -> GET /requirement_types/{id}\n- \"Get requirement details?\" -> GET /requirements/{id}\n- \"List all room_compositions?\" -> GET /room_compositions\n- \"Create a room_composition?\" -> POST /room_compositions\n- \"Delete a room_composition?\" -> DELETE /room_compositions/{room_composition_id}\n- \"Get room_composition details?\" -> GET /room_compositions/{room_composition_id}\n- \"List all room_participants?\" -> GET /room_participants\n- \"Get room_participant details?\" -> GET /room_participants/{room_participant_id}\n- \"List all room_recordings?\" -> GET /room_recordings\n- \"Delete a room_recording?\" -> DELETE /room_recordings/{room_recording_id}\n- \"Get room_recording details?\" -> GET /room_recordings/{room_recording_id}\n- \"List all room_sessions?\" -> GET /room_sessions\n- \"Get room_session details?\" -> GET /room_sessions/{room_session_id}\n- \"Create a kick?\" -> POST /room_sessions/{room_session_id}/actions/kick\n- \"List all rooms?\" -> GET /rooms\n- \"Create a room?\" -> POST /rooms\n- \"Delete a room?\" -> DELETE /rooms/{room_id}\n- \"Get room details?\" -> GET /rooms/{room_id}\n- \"Partially update a room?\" -> PATCH /rooms/{room_id}\n- \"Create a generate_join_client_token?\" -> POST /rooms/{room_id}/actions/generate_join_client_token\n- \"Create a refresh_client_token?\" -> POST /rooms/{room_id}/actions/refresh_client_token\n- \"List all sessions?\" -> GET /rooms/{room_id}/sessions\n- \"List all metadata?\" -> GET /session_analysis/metadata\n- \"Get metadata details?\" -> GET /session_analysis/metadata/{record_type}\n- \"Get session_analysis details?\" -> GET /session_analysis/{record_type}/{event_id}\n- \"List all black_box_test_results?\" -> GET /seti/black_box_test_results\n- \"Get short_code details?\" -> GET /short_codes/{id}\n- \"Partially update a short_code?\" -> PATCH /short_codes/{id}\n- \"List all sim_card_actions?\" -> GET /sim_card_actions\n- \"Get sim_card_action details?\" -> GET /sim_card_actions/{id}\n- \"List all sim_card_data_usage_notifications?\" -> GET /sim_card_data_usage_notifications\n- \"Create a sim_card_data_usage_notification?\" -> POST /sim_card_data_usage_notifications\n- \"Delete a sim_card_data_usage_notification?\" -> DELETE /sim_card_data_usage_notifications/{id}\n- \"Get sim_card_data_usage_notification details?\" -> GET /sim_card_data_usage_notifications/{id}\n- \"Partially update a sim_card_data_usage_notification?\" -> PATCH /sim_card_data_usage_notifications/{id}\n- \"List all sim_card_group_actions?\" -> GET /sim_card_group_actions\n- \"Get sim_card_group_action details?\" -> GET /sim_card_group_actions/{id}\n- \"List all sim_card_groups?\" -> GET /sim_card_groups\n- \"Create a sim_card_group?\" -> POST /sim_card_groups\n- \"Delete a sim_card_group?\" -> DELETE /sim_card_groups/{id}\n- \"Get sim_card_group details?\" -> GET /sim_card_groups/{id}\n- \"Partially update a sim_card_group?\" -> PATCH /sim_card_groups/{id}\n- \"Create a remove_private_wireless_gateway?\" -> POST /sim_card_groups/{id}/actions/remove_private_wireless_gateway\n- \"Create a remove_wireless_blocklist?\" -> POST /sim_card_groups/{id}/actions/remove_wireless_blocklist\n- \"Create a set_private_wireless_gateway?\" -> POST /sim_card_groups/{id}/actions/set_private_wireless_gateway\n- \"Create a set_wireless_blocklist?\" -> POST /sim_card_groups/{id}/actions/set_wireless_blocklist\n- \"Create a sim_card_order_preview?\" -> POST /sim_card_order_preview\n- \"List all sim_card_orders?\" -> GET /sim_card_orders\n- \"Create a sim_card_order?\" -> POST /sim_card_orders\n- \"Get sim_card_order details?\" -> GET /sim_card_orders/{id}\n- \"List all sim_cards?\" -> GET /sim_cards\n- \"Create a bulk_disable_voice?\" -> POST /sim_cards/actions/bulk_disable_voice\n- \"Create a bulk_enable_voice?\" -> POST /sim_cards/actions/bulk_enable_voice\n- \"Create a bulk_set_public_ip?\" -> POST /sim_cards/actions/bulk_set_public_ips\n- \"Create a validate_registration_code?\" -> POST /sim_cards/actions/validate_registration_codes\n- \"Delete a sim_card?\" -> DELETE /sim_cards/{id}\n- \"Get sim_card details?\" -> GET /sim_cards/{id}\n- \"Partially update a sim_card?\" -> PATCH /sim_cards/{id}\n- \"Create a remove_public_ip?\" -> POST /sim_cards/{id}/actions/remove_public_ip\n- \"Create a set_public_ip?\" -> POST /sim_cards/{id}/actions/set_public_ip\n- \"Create a set_standby?\" -> POST /sim_cards/{id}/actions/set_standby\n- \"List all activation_code?\" -> GET /sim_cards/{id}/activation_code\n- \"List all device_details?\" -> GET /sim_cards/{id}/device_details\n- \"List all public_ip?\" -> GET /sim_cards/{id}/public_ip\n- \"List all wireless_connectivity_logs?\" -> GET /sim_cards/{id}/wireless_connectivity_logs\n- \"Create a siprec_connector?\" -> POST /siprec_connectors\n- \"Delete a siprec_connector?\" -> DELETE /siprec_connectors/{connector_name}\n- \"Get siprec_connector details?\" -> GET /siprec_connectors/{connector_name}\n- \"Update a siprec_connector?\" -> PUT /siprec_connectors/{connector_name}\n- \"List all transcription?\" -> GET /speech-to-text/transcription\n- \"List all ssl_certificate?\" -> GET /storage/buckets/{bucketName}/ssl_certificate\n- \"List all api?\" -> GET /storage/buckets/{bucketName}/usage/api\n- \"List all storage?\" -> GET /storage/buckets/{bucketName}/usage/storage\n- \"Create a presigned_url?\" -> POST /storage/buckets/{bucketName}/{objectName}/presigned_url\n- \"List all migration_source_coverage?\" -> GET /storage/migration_source_coverage\n- \"List all migration_sources?\" -> GET /storage/migration_sources\n- \"Create a migration_source?\" -> POST /storage/migration_sources\n- \"Delete a migration_source?\" -> DELETE /storage/migration_sources/{id}\n- \"Get migration_source details?\" -> GET /storage/migration_sources/{id}\n- \"List all migrations?\" -> GET /storage/migrations\n- \"Create a migration?\" -> POST /storage/migrations\n- \"Get migration details?\" -> GET /storage/migrations/{id}\n- \"List all sub_number_orders?\" -> GET /sub_number_orders\n- \"Get sub_number_order details?\" -> GET /sub_number_orders/{sub_number_order_id}\n- \"Partially update a sub_number_order?\" -> PATCH /sub_number_orders/{sub_number_order_id}\n- \"Create a sub_number_orders_report?\" -> POST /sub_number_orders_report\n- \"Get sub_number_orders_report details?\" -> GET /sub_number_orders_report/{report_id}\n- \"List all telephony_credentials?\" -> GET /telephony_credentials\n- \"Create a telephony_credential?\" -> POST /telephony_credentials\n- \"Delete a telephony_credential?\" -> DELETE /telephony_credentials/{id}\n- \"Get telephony_credential details?\" -> GET /telephony_credentials/{id}\n- \"Partially update a telephony_credential?\" -> PATCH /telephony_credentials/{id}\n- \"Create a agree?\" -> POST /terms_of_service/number_reputation/agree\n- \"List all Calls?\" -> GET /texml/Accounts/{account_sid}/Calls\n- \"Create a Call?\" -> POST /texml/Accounts/{account_sid}/Calls\n- \"Get Call details?\" -> GET /texml/Accounts/{account_sid}/Calls/{call_sid}\n- \"List all Recordings.json?\" -> GET /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json\n- \"Create a Recordings.json?\" -> POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json\n- \"Create a Siprec.json?\" -> POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json\n- \"Create a Streams.json?\" -> POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json\n- \"List all Conferences?\" -> GET /texml/Accounts/{account_sid}/Conferences\n- \"Get Conference details?\" -> GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}\n- \"List all Participants?\" -> GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants\n- \"Create a Participant?\" -> POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants\n- \"Delete a Participant?\" -> DELETE /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}\n- \"Get Participant details?\" -> GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}\n- \"List all Recordings?\" -> GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings\n- \"List all Queues?\" -> GET /texml/Accounts/{account_sid}/Queues\n- \"Create a Queue?\" -> POST /texml/Accounts/{account_sid}/Queues\n- \"Delete a Queue?\" -> DELETE /texml/Accounts/{account_sid}/Queues/{queue_sid}\n- \"Get Queue details?\" -> GET /texml/Accounts/{account_sid}/Queues/{queue_sid}\n- \"Delete a Recording?\" -> DELETE /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json\n- \"Get Recording details?\" -> GET /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json\n- \"List all Transcriptions.json?\" -> GET /texml/Accounts/{account_sid}/Transcriptions.json\n- \"Delete a Transcription?\" -> DELETE /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json\n- \"Get Transcription details?\" -> GET /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json\n- \"Create a secret?\" -> POST /texml/secrets\n- \"List all texml_applications?\" -> GET /texml_applications\n- \"Create a texml_application?\" -> POST /texml_applications\n- \"Delete a texml_application?\" -> DELETE /texml_applications/{id}\n- \"Get texml_application details?\" -> GET /texml_applications/{id}\n- \"Partially update a texml_application?\" -> PATCH /texml_applications/{id}\n- \"List all speech?\" -> GET /text-to-speech/speech\n- \"Create a speech?\" -> POST /text-to-speech/speech\n- \"List all voices?\" -> GET /text-to-speech/voices\n- \"List all traffic_policy_profiles?\" -> GET /traffic_policy_profiles\n- \"Create a traffic_policy_profile?\" -> POST /traffic_policy_profiles\n- \"List all services?\" -> GET /traffic_policy_profiles/services\n- \"Delete a traffic_policy_profile?\" -> DELETE /traffic_policy_profiles/{id}\n- \"Get traffic_policy_profile details?\" -> GET /traffic_policy_profiles/{id}\n- \"Partially update a traffic_policy_profile?\" -> PATCH /traffic_policy_profiles/{id}\n- \"List all usage_reports?\" -> GET /usage_reports\n- \"List all options?\" -> GET /usage_reports/options\n- \"List all user_addresses?\" -> GET /user_addresses\n- \"Create a user_addresse?\" -> POST /user_addresses\n- \"Get user_addresse details?\" -> GET /user_addresses/{id}\n- \"List all user_tags?\" -> GET /user_tags\n- \"List all mobile_phone_numbers?\" -> GET /v2/mobile_phone_numbers\n- \"Get mobile_phone_number details?\" -> GET /v2/mobile_phone_numbers/{id}\n- \"Partially update a mobile_phone_number?\" -> PATCH /v2/mobile_phone_numbers/{id}\n- \"List all mobile_voice_connections?\" -> GET /v2/mobile_voice_connections\n- \"Create a mobile_voice_connection?\" -> POST /v2/mobile_voice_connections\n- \"Delete a mobile_voice_connection?\" -> DELETE /v2/mobile_voice_connections/{id}\n- \"Get mobile_voice_connection details?\" -> GET /v2/mobile_voice_connections/{id}\n- \"Partially update a mobile_voice_connection?\" -> PATCH /v2/mobile_voice_connections/{id}\n- \"Create a stored_payment_transaction?\" -> POST /v2/payment/stored_payment_transactions\n- \"List all business_accounts?\" -> GET /v2/whatsapp/business_accounts\n- \"Delete a business_account?\" -> DELETE /v2/whatsapp/business_accounts/{id}\n- \"Get business_account details?\" -> GET /v2/whatsapp/business_accounts/{id}\n- \"Create a phone_number?\" -> POST /v2/whatsapp/business_accounts/{id}/phone_numbers\n- \"List all settings?\" -> GET /v2/whatsapp/business_accounts/{id}/settings\n- \"List all message_templates?\" -> GET /v2/whatsapp/message_templates\n- \"Create a message_template?\" -> POST /v2/whatsapp/message_templates\n- \"List all calling_settings?\" -> GET /v2/whatsapp/phone_numbers/{phone_number}/calling_settings\n- \"List all profile?\" -> GET /v2/whatsapp/phone_numbers/{phone_number}/profile\n- \"Create a photo?\" -> POST /v2/whatsapp/phone_numbers/{phone_number}/profile/photo\n- \"Create a resend_verification?\" -> POST /v2/whatsapp/phone_numbers/{phone_number}/resend_verification\n- \"Delete a whatsapp_message_template?\" -> DELETE /v2/whatsapp_message_templates/{id}\n- \"Get whatsapp_message_template details?\" -> GET /v2/whatsapp_message_templates/{id}\n- \"Partially update a whatsapp_message_template?\" -> PATCH /v2/whatsapp_message_templates/{id}\n- \"Create a credit_account?\" -> POST /v2/x402/credit_account\n- \"Create a quote?\" -> POST /v2/x402/credit_account/quote\n- \"Get by_phone_number details?\" -> GET /verifications/by_phone_number/{phone_number}\n- \"Create a flashcall?\" -> POST /verifications/flashcall\n- \"Get verification details?\" -> GET /verifications/{verification_id}\n- \"List all verified_numbers?\" -> GET /verified_numbers\n- \"Create a verified_number?\" -> POST /verified_numbers\n- \"Delete a verified_number?\" -> DELETE /verified_numbers/{phone_number}\n- \"Get verified_number details?\" -> GET /verified_numbers/{phone_number}\n- \"List all verify_profiles?\" -> GET /verify_profiles\n- \"Create a verify_profile?\" -> POST /verify_profiles\n- \"List all templates?\" -> GET /verify_profiles/templates\n- \"Create a template?\" -> POST /verify_profiles/templates\n- \"Partially update a template?\" -> PATCH /verify_profiles/templates/{template_id}\n- \"Delete a verify_profile?\" -> DELETE /verify_profiles/{verify_profile_id}\n- \"Get verify_profile details?\" -> GET /verify_profiles/{verify_profile_id}\n- \"Partially update a verify_profile?\" -> PATCH /verify_profiles/{verify_profile_id}\n- \"List all virtual_cross_connects?\" -> GET /virtual_cross_connects\n- \"Create a virtual_cross_connect?\" -> POST /virtual_cross_connects\n- \"Delete a virtual_cross_connect?\" -> DELETE /virtual_cross_connects/{id}\n- \"Get virtual_cross_connect details?\" -> GET /virtual_cross_connects/{id}\n- \"Partially update a virtual_cross_connect?\" -> PATCH /virtual_cross_connects/{id}\n- \"List all virtual_cross_connects_coverage?\" -> GET /virtual_cross_connects_coverage\n- \"List all voice_clones?\" -> GET /voice_clones\n- \"Create a voice_clone?\" -> POST /voice_clones\n- \"Create a from_upload?\" -> POST /voice_clones/from_upload\n- \"Delete a voice_clone?\" -> DELETE /voice_clones/{id}\n- \"Partially update a voice_clone?\" -> PATCH /voice_clones/{id}\n- \"List all sample?\" -> GET /voice_clones/{id}/sample\n- \"List all voice_designs?\" -> GET /voice_designs\n- \"Create a voice_design?\" -> POST /voice_designs\n- \"Delete a voice_design?\" -> DELETE /voice_designs/{id}\n- \"Get voice_design details?\" -> GET /voice_designs/{id}\n- \"Partially update a voice_design?\" -> PATCH /voice_designs/{id}\n- \"List all webhook_deliveries?\" -> GET /webhook_deliveries\n- \"Get webhook_delivery details?\" -> GET /webhook_deliveries/{id}\n- \"List all wireguard_interfaces?\" -> GET /wireguard_interfaces\n- \"Create a wireguard_interface?\" -> POST /wireguard_interfaces\n- \"Delete a wireguard_interface?\" -> DELETE /wireguard_interfaces/{id}\n- \"Get wireguard_interface details?\" -> GET /wireguard_interfaces/{id}\n- \"List all wireguard_peers?\" -> GET /wireguard_peers\n- \"Create a wireguard_peer?\" -> POST /wireguard_peers\n- \"Delete a wireguard_peer?\" -> DELETE /wireguard_peers/{id}\n- \"Get wireguard_peer details?\" -> GET /wireguard_peers/{id}\n- \"Partially update a wireguard_peer?\" -> PATCH /wireguard_peers/{id}\n- \"List all config?\" -> GET /wireguard_peers/{id}/config\n- \"List all detail_records_reports?\" -> GET /wireless/detail_records_reports\n- \"Create a detail_records_report?\" -> POST /wireless/detail_records_reports\n- \"Delete a detail_records_report?\" -> DELETE /wireless/detail_records_reports/{id}\n- \"Get detail_records_report details?\" -> GET /wireless/detail_records_reports/{id}\n- \"List all wireless_blocklist_values?\" -> GET /wireless_blocklist_values\n- \"List all wireless_blocklists?\" -> GET /wireless_blocklists\n- \"Create a wireless_blocklist?\" -> POST /wireless_blocklists\n- \"Delete a wireless_blocklist?\" -> DELETE /wireless_blocklists/{id}\n- \"Get wireless_blocklist details?\" -> GET /wireless_blocklists/{id}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Telnyx API\n@base https://api.telnyx.com/v2\n@version 2.0.0\n@auth Bearer bearer | Bearer bearer | OAuth2 | Bearer bearer | Bearer bearer\n@endpoints 1022\n@hint download_for_search\n@toc .well-known(2), 10dlc(42), access_ip_address(4), access_ip_ranges(3), actions(2), addresses(6), advanced_orders(4), ai(139), alphanumeric_sender_ids(4), audit_events(1), authentication_providers(5), available_phone_number_blocks(1), available_phone_numbers(1), balance(1), billing_groups(5), bulk_sim_card_actions(2), bundle_pricing(8), call_control_applications(5), call_events(1), calls(40), channel_zones(2), charges_breakdown(1), charges_summary(1), comments(4), conferences(23), connections(3), country_coverage(2), credential_connections(6), custom_storage_credentials(4), customer_service_records(4), detail_records(1), dialogflow_connections(4), document_links(1), documents(7), dynamic_emergency_addresses(4), dynamic_emergency_endpoints(4), enterprises(13), external_connections(22), fax_applications(5), faxes(6), fqdn_connections(5), fqdns(5), global_ip_allowed_ports(1), global_ip_assignment_health(1), global_ip_assignments(5), global_ip_assignments_usage(1), global_ip_health_check_types(1), global_ip_health_checks(4), global_ip_latency(1), global_ip_protocols(1), global_ip_usage(1), global_ips(4), inbound_channels(2), inexplicit_number_orders(3), integration_secrets(3), inventory_coverage(1), invoices(2), ip_connections(5), ips(5), ledger_billing_group_reports(2), legacy(26), list(2), managed_accounts(8), media(6), messages(13), messaging(6), messaging_hosted_number_orders(8), messaging_hosted_numbers(4), messaging_numbers_bulk_updates(2), messaging_optouts(1), messaging_profile_metrics(1), messaging_profiles(15), messaging_tollfree(6), messaging_url_domains(1), mobile_network_operators(1), mobile_phone_numbers(5), mobile_push_credentials(4), network_coverage(1), networks(9), notification_channels(5), notification_event_conditions(1), notification_events(1), notification_profiles(5), notification_settings(4), number_block_orders(3), number_lookup(1), number_order_phone_numbers(4), number_orders(4), number_reservations(4), numbers_features(1), oauth(7), oauth_clients(5), oauth_grants(3), operator_connect(1), organizations(4), ota_updates(2), outbound_voice_profiles(5), payment(3), phone_number_blocks(3), phone_numbers(25), phone_numbers_regulatory_requirements(1), portability_checks(1), porting(14), porting_orders(38), porting_phone_numbers(1), portouts(14), private_wireless_gateways(4), public_internet_gateways(4), queues(9), recording_transcriptions(3), recordings(4), regions(1), regulatory_requirements(1), reports(8), reputation(3), requirement_groups(6), requirement_types(2), requirements(2), room_compositions(4), room_participants(2), room_recordings(4), room_sessions(7), rooms(8), session_analysis(3), seti(1), short_codes(3), sim_card_actions(2), sim_card_data_usage_notifications(5), sim_card_group_actions(2), sim_card_groups(9), sim_card_order_preview(1), sim_card_orders(3), sim_cards(17), siprec_connectors(4), speech-to-text(1), storage(15), sub_number_orders(5), sub_number_orders_report(3), telephony_credentials(6), terms_of_service(1), texml(33), texml_applications(5), text-to-speech(3), traffic_policy_profiles(6), usage_reports(2), user_addresses(3), user_tags(1), mobile_voice_connections(5), whatsapp(19), whatsapp_message_templates(3), x402(2), verifications(7), verified_numbers(5), verify_profiles(8), virtual_cross_connects(5), virtual_cross_connects_coverage(1), voice_clones(6), voice_designs(7), webhook_deliveries(2), wireguard_interfaces(4), wireguard_peers(6), wireless(5), wireless_blocklist_values(1), wireless_blocklists(5)\n\n@group .well-known\n@endpoint GET /.well-known/oauth-authorization-server\n@desc Authorization server metadata\n@returns(200) {authorization_endpoint: str(uri), code_challenge_methods_supported: [str], grant_types_supported: [str], introspection_endpoint: str(uri), issuer: str(uri), jwks_uri: str(uri), registration_endpoint: str(uri), response_types_supported: [str], scopes_supported: [str], token_endpoint: str(uri), token_endpoint_auth_methods_supported: [str]} # Authorization server metadata\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint GET /.well-known/oauth-protected-resource\n@desc Protected resource metadata\n@returns(200) {authorization_servers: [str(uri)], resource: str(uri)} # Protected resource metadata\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endgroup\n\n@group 10dlc\n@endpoint GET /10dlc/brand\n@desc List Brands\n@optional {page: int=1, recordsPerPage: int=10 # number of records per page. maximum of 500, sort: str(assignedCampaignsCount/-assignedCampaignsCount/brandId/-brandId/createdAt/-createdAt/displayName/-displayName/identityStatus/-identityStatus/status/-status/tcrBrandId/-tcrBrandId)=-createdAt # Specifies the sort order for results. If not given, results are sorted by createdAt in descending order., displayName: str, entityType: str, state: str, country: str, brandId: str # Filter results by the Telnyx Brand id, tcrBrandId: str # Filter results by the TCR Brand id}\n@returns(200) {page: int, records: [map], totalRecords: int} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint POST /10dlc/brand\n@desc Create Brand\n@required {country: str # ISO2 2 characters country code. Example: US - United States, displayName: str # Display name, marketing name, or DBA name of the brand., email: str # Valid email address of brand support contact., entityType: any # Entity type behind the brand. This is the form of business establishment., vertical: any # Vertical or industry segment of the brand.}\n@optional {businessContactEmail: str # Business contact email.  Required if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`., city: str # City name, companyName: str # (Required for Non-profit/private/public) Legal company name., ein: str # (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S., firstName: str # First name of business contact., ipAddress: str # IP address of the browser requesting to create brand identity., isReseller: bool=false, lastName: str # Last name of business contact., mobilePhone: str # Valid mobile phone number in e.164 international format., mock: bool=false # Mock brand for testing purposes. Defaults to false., phone: str # Valid phone number in e.164 international format., postalCode: str # Postal codes. Use 5 digit zipcode for United States, state: str # State. Must be 2 letters code for United States., stockExchange: any # (Required for public company) stock exchange., stockSymbol: str # (Required for public company) stock symbol., street: str # Street number and name., webhookFailoverURL: str # Webhook failover URL for brand status updates., webhookURL: str # Webhook URL for brand status updates., website: str # Brand website URL.}\n@returns(200) {altBusinessId: str, altBusinessIdType: str, brandId: str, brandRelationship: any, businessContactEmail: str, city: str, companyName: str, country: str, createdAt: str, cspId: str, displayName: str, ein: str, email: str, entityType: any, failureReasons: str, firstName: str, identityStatus: str, ipAddress: str, isReseller: bool, lastName: str, mobilePhone: str, mock: bool, optionalAttributes: map{taxExemptStatus: str}, phone: str, postalCode: str, referenceId: str, state: str, status: str, stockExchange: any, stockSymbol: str, street: str, tcrBrandId: str, universalEin: str, updatedAt: str, vertical: str, webhookFailoverURL: str, webhookURL: str, website: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/brand/feedback/{brandId}\n@desc Get Brand Feedback By Id\n@required {brandId: str}\n@returns(200) {brandId: str, category: [map]} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/brand/smsOtp/{referenceId}\n@desc Get Brand SMS OTP Status\n@required {referenceId: str # The reference ID returned when the OTP was initially triggered}\n@optional {brandId: str # Filter by Brand ID for easier lookup in portal applications}\n@returns(200) {brandId: str, deliveryStatus: str, deliveryStatusDate: str(date-time), deliveryStatusDetails: str, mobilePhone: str, referenceId: str, requestDate: str(date-time), verifyDate: str(date-time)} # Successful Response\n@errors {404: OTP reference not found, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint DELETE /10dlc/brand/{brandId}\n@desc Delete Brand\n@required {brandId: str}\n@returns(204) Brand removed successfully\n@errors {400: Brand cannot be deleted, 404: Brand not found, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/brand/{brandId}\n@desc Get Brand\n@required {brandId: str}\n@returns(200) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint PUT /10dlc/brand/{brandId}\n@desc Update Brand\n@required {brandId: str, country: str # ISO2 2 characters country code. Example: US - United States, displayName: str # Display or marketing name of the brand., email: str # Valid email address of brand support contact., entityType: any # Entity type behind the brand. This is the form of business establishment., vertical: any # Vertical or industry segment of the brand.}\n@optional {altBusinessId: str # Alternate business identifier such as DUNS, LEI, or GIIN, altBusinessIdType: str(NONE/DUNS/GIIN/LEI) # An enumeration., businessContactEmail: str # Business contact email.  Required if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it to `null`., city: str # City name, companyName: str # (Required for Non-profit/private/public) Legal company name., ein: str # (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S., firstName: str # First name of business contact., identityStatus: str(VERIFIED/UNVERIFIED/SELF_DECLARED/VETTED_VERIFIED) # The verification status of an active brand, ipAddress: str # IP address of the browser requesting to create brand identity., isReseller: bool, lastName: str # Last name of business contact., phone: str # Valid phone number in e.164 international format., postalCode: str # Postal codes. Use 5 digit zipcode for United States, state: str # State. Must be 2 letters code for United States., stockExchange: any # (Required for public company) stock exchange., stockSymbol: str # (Required for public company) stock symbol., street: str # Street number and name., webhookFailoverURL: str # Webhook failover URL for brand status updates., webhookURL: str # Webhook URL for brand status updates., website: str # Brand website URL.}\n@returns(200) {altBusinessId: str, altBusinessIdType: str, brandId: str, brandRelationship: any, businessContactEmail: str, city: str, companyName: str, country: str, createdAt: str, cspId: str, displayName: str, ein: str, email: str, entityType: any, failureReasons: str, firstName: str, identityStatus: str, ipAddress: str, isReseller: bool, lastName: str, mobilePhone: str, mock: bool, optionalAttributes: map{taxExemptStatus: str}, phone: str, postalCode: str, referenceId: str, state: str, status: str, stockExchange: any, stockSymbol: str, street: str, tcrBrandId: str, universalEin: str, updatedAt: str, vertical: str, webhookFailoverURL: str, webhookURL: str, website: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/brand/{brandId}/2faEmail\n@desc Resend brand 2FA email\n@required {brandId: str}\n@returns(200) Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint GET /10dlc/brand/{brandId}/externalVetting\n@desc List External Vettings\n@required {brandId: str}\n@returns(200) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/brand/{brandId}/externalVetting\n@desc Order Brand External Vetting\n@required {brandId: str, evpId: str # External vetting provider ID for the brand., vettingClass: str # Identifies the vetting classification.}\n@returns(200) {createDate: str, evpId: str, vettedDate: str, vettingClass: str, vettingId: str, vettingScore: int, vettingToken: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint PUT /10dlc/brand/{brandId}/externalVetting\n@desc Import External Vetting Record\n@required {brandId: str, evpId: str # External vetting provider ID for the brand., vettingId: str # Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting.}\n@optional {vettingToken: str # Required by some providers for vetting record confirmation.}\n@returns(200) {createDate: str, evpId: str, vettedDate: str, vettingClass: str, vettingId: str, vettingScore: int, vettingToken: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint PUT /10dlc/brand/{brandId}/revet\n@desc Revet Brand\n@required {brandId: str}\n@returns(200) {altBusinessId: str, altBusinessIdType: str, brandId: str, brandRelationship: any, businessContactEmail: str, city: str, companyName: str, country: str, createdAt: str, cspId: str, displayName: str, ein: str, email: str, entityType: any, failureReasons: str, firstName: str, identityStatus: str, ipAddress: str, isReseller: bool, lastName: str, mobilePhone: str, mock: bool, optionalAttributes: map{taxExemptStatus: str}, phone: str, postalCode: str, referenceId: str, state: str, status: str, stockExchange: any, stockSymbol: str, street: str, tcrBrandId: str, universalEin: str, updatedAt: str, vertical: str, webhookFailoverURL: str, webhookURL: str, website: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/brand/{brandId}/smsOtp\n@desc Get Brand SMS OTP Status by Brand ID\n@required {brandId: str # The Brand ID for which to query OTP status}\n@returns(200) {brandId: str, deliveryStatus: str, deliveryStatusDate: str(date-time), deliveryStatusDetails: str, mobilePhone: str, referenceId: str, requestDate: str(date-time), verifyDate: str(date-time)} # Successful Response\n@errors {404: OTP status not found for this brand, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/brand/{brandId}/smsOtp\n@desc Trigger Brand SMS OTP\n@required {brandId: str # The Brand ID for which to trigger the OTP, pinSms: str # SMS message template to send the OTP. Must include `@OTP_PIN@` placeholder which will be replaced with the actual PIN, successSms: str # SMS message to send upon successful OTP verification}\n@returns(200) {brandId: str, referenceId: str} # Successful Response\n@errors {400: Bad Request - Brand is not a Sole Proprietor or invalid mobile phone number, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint PUT /10dlc/brand/{brandId}/smsOtp\n@desc Verify Brand SMS OTP\n@required {brandId: str # The Brand ID for which to verify the OTP, otpPin: str # The OTP PIN received via SMS}\n@returns(204) OTP verified successfully - No content returned\n@errors {400: Bad Request - Invalid or expired OTP, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign\n@desc List Campaigns\n@required {brandId: str}\n@optional {page: int=1 # The 1-indexed page number to get. The default value is `1`., recordsPerPage: int=10 # The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`., sort: str(assignedPhoneNumbersCount/-assignedPhoneNumbersCount/campaignId/-campaignId/createdAt/-createdAt/status/-status/tcrCampaignId/-tcrCampaignId)=-createdAt # Specifies the sort order for results. If not given, results are sorted by createdAt in descending order.}\n@returns(200) {page: int, records: [map], totalRecords: int} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/campaign/acceptSharing/{campaignId}\n@desc Accept Shared Campaign\n@required {campaignId: str # TCR's ID for the campaign to import}\n@returns(202) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign/usecase/cost\n@desc Get Campaign Cost\n@required {usecase: str}\n@returns(200) {campaignUsecase: str, description: str, monthlyCost: str, upFrontCost: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint DELETE /10dlc/campaign/{campaignId}\n@desc Deactivate campaign\n@required {campaignId: str}\n@returns(200) {message: str, record_type: str, time: num} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign/{campaignId}\n@desc Get campaign\n@required {campaignId: str}\n@returns(200) {ageGated: bool, autoRenewal: bool, billedDate: str, brandDisplayName: str, brandId: str, campaignId: str, campaignStatus: str, createDate: str, cspId: str, description: str, directLending: bool, embeddedLink: bool, embeddedLinkSample: str, embeddedPhone: bool, failureReasons: str, helpKeywords: str, helpMessage: str, isTMobileNumberPoolingEnabled: bool, isTMobileRegistered: bool, isTMobileSuspended: bool, messageFlow: str, mock: bool, nextRenewalOrExpirationDate: str, numberPool: bool, optinKeywords: str, optinMessage: str, optoutKeywords: str, optoutMessage: str, privacyPolicyLink: str, referenceId: str, resellerId: str, sample1: str, sample2: str, sample3: str, sample4: str, sample5: str, status: str, subUsecases: [str], submissionStatus: str, subscriberHelp: bool, subscriberOptin: bool, subscriberOptout: bool, tcrBrandId: str, tcrCampaignId: str, termsAndConditions: bool, termsAndConditionsLink: str, usecase: str, vertical: str, webhookFailoverURL: str, webhookURL: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint PUT /10dlc/campaign/{campaignId}\n@desc Update campaign\n@required {campaignId: str}\n@optional {autoRenewal: bool=true # Help message of the campaign., helpMessage: str # Help message of the campaign., messageFlow: str # Message flow description., resellerId: str # Alphanumeric identifier of the reseller that you want to associate with this campaign., sample1: str # Message sample. Some campaign tiers require 1 or more message samples., sample2: str # Message sample. Some campaign tiers require 2 or more message samples., sample3: str # Message sample. Some campaign tiers require 3 or more message samples., sample4: str # Message sample. Some campaign tiers require 4 or more message samples., sample5: str # Message sample. Some campaign tiers require 5 or more message samples., webhookFailoverURL: str # Webhook failover to which campaign status updates are sent., webhookURL: str # Webhook to which campaign status updates are sent.}\n@returns(200) {ageGated: bool, autoRenewal: bool, billedDate: str, brandDisplayName: str, brandId: str, campaignId: str, campaignStatus: str, createDate: str, cspId: str, description: str, directLending: bool, embeddedLink: bool, embeddedLinkSample: str, embeddedPhone: bool, failureReasons: str, helpKeywords: str, helpMessage: str, isTMobileNumberPoolingEnabled: bool, isTMobileRegistered: bool, isTMobileSuspended: bool, messageFlow: str, mock: bool, nextRenewalOrExpirationDate: str, numberPool: bool, optinKeywords: str, optinMessage: str, optoutKeywords: str, optoutMessage: str, privacyPolicyLink: str, referenceId: str, resellerId: str, sample1: str, sample2: str, sample3: str, sample4: str, sample5: str, status: str, subUsecases: [str], submissionStatus: str, subscriberHelp: bool, subscriberOptin: bool, subscriberOptout: bool, tcrBrandId: str, tcrCampaignId: str, termsAndConditions: bool, termsAndConditionsLink: str, usecase: str, vertical: str, webhookFailoverURL: str, webhookURL: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/campaign/{campaignId}/appeal\n@desc Submit campaign appeal for manual review\n@required {campaignId: str(uuid) # The Telnyx campaign identifier, appeal_reason: str # Detailed explanation of why the campaign should be reconsidered and what changes have been made to address the rejection reason.}\n@returns(200) {appealed_at: str(date-time)} # Appeal recorded successfully. Campaign status updated to TCR_ACCEPTED for manual compliance review.\n@errors {400: Campaign not in appealable status or invalid request, 404: Campaign not found, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign/{campaignId}/mnoMetadata\n@desc Get Campaign Mno Metadata\n@required {campaignId: str # ID of the campaign in question}\n@returns(200) {10999: map{minMsgSamples: int, mno: str, mnoReview: bool, mnoSupport: bool, noEmbeddedLink: bool, noEmbeddedPhone: bool, qualify: bool, reqSubscriberHelp: bool, reqSubscriberOptin: bool, reqSubscriberOptout: bool}} # 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.\n@errors {4XX: Generic response error, 5XX: Unexpected Error}\n\n@endpoint GET /10dlc/campaign/{campaignId}/operationStatus\n@desc Get campaign operation status\n@required {campaignId: str}\n@returns(200) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign/{campaignId}/osr/attributes\n@desc Get OSR campaign attributes\n@required {campaignId: str}\n@returns(200) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaign/{campaignId}/sharing\n@desc Get Sharing Status\n@required {campaignId: str # ID of the campaign in question}\n@returns(200) {sharedByMe: map{downstreamCnpId: str, sharedDate: str, sharingStatus: str, statusDate: str, upstreamCnpId: str}, sharedWithMe: map{downstreamCnpId: str, sharedDate: str, sharingStatus: str, statusDate: str, upstreamCnpId: str}} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/campaignBuilder\n@desc Submit Campaign\n@required {brandId: str # Alphanumeric identifier of the brand associated with this campaign., description: str # Summary description of this campaign., usecase: str # Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand.}\n@optional {ageGated: bool # Age gated message content in campaign., autoRenewal: bool # Campaign subscription auto-renewal option. If set to true, then campaign will automatically renewal at end of billing cycle., directLending: bool # Direct lending or loan arrangement, embeddedLink: bool # Does message generated by the campaign include URL link in SMS?, embeddedLinkSample: str # Sample of an embedded link that will be sent to subscribers., embeddedPhone: bool # Does message generated by the campaign include phone number in SMS?, helpKeywords: str # Subscriber help keywords. Multiple keywords are comma separated without space., helpMessage: str # Help message of the campaign., messageFlow: str # Message flow description., mnoIds: [int] # Submit campaign to given list of MNOs by MNO's network ID. Default is all MNOs if no value provided., numberPool: bool # Does campaign utilize pool of phone numbers?, optinKeywords: str # Subscriber opt-in keywords. Multiple keywords are comma separated without space., optinMessage: str # Subscriber opt-in message., optoutKeywords: str # Subscriber opt-out keywords. Multiple keywords are comma separated without space., optoutMessage: str # Subscriber opt-out message., privacyPolicyLink: str # Link to the campaign's privacy policy., referenceId: str # 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: str # Alphanumeric identifier of the reseller that you want to associate with this campaign., sample1: str # Message sample. Some campaign tiers require 1 or more message samples., sample2: str # Message sample. Some campaign tiers require 2 or more message samples., sample3: str # Message sample. Some campaign tiers require 3 or more message samples., sample4: str # Message sample. Some campaign tiers require 4 or more message samples., sample5: str # Message sample. Some campaign tiers require 5 or more message samples., subUsecases: [str] # Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases, subscriberHelp: bool # Does campaign responds to help keyword(s)?, subscriberOptin: bool # Does campaign require subscriber to opt-in before SMS is sent to subscriber?, subscriberOptout: bool # Does campaign support subscriber opt-out keyword(s)?, tag: [str] # Tags to be set on the Campaign., termsAndConditions: bool # Is terms and conditions accepted?, termsAndConditionsLink: str # Link to the campaign's terms and conditions., webhookFailoverURL: str # Failover webhook to which campaign status updates are sent., webhookURL: str # Webhook to which campaign status updates are sent.}\n@returns(200) {ageGated: bool, autoRenewal: bool, billedDate: str, brandDisplayName: str, brandId: str, campaignId: str, campaignStatus: str, createDate: str, cspId: str, description: str, directLending: bool, embeddedLink: bool, embeddedLinkSample: str, embeddedPhone: bool, failureReasons: str, helpKeywords: str, helpMessage: str, isTMobileNumberPoolingEnabled: bool, isTMobileRegistered: bool, isTMobileSuspended: bool, messageFlow: str, mock: bool, nextRenewalOrExpirationDate: str, numberPool: bool, optinKeywords: str, optinMessage: str, optoutKeywords: str, optoutMessage: str, privacyPolicyLink: str, referenceId: str, resellerId: str, sample1: str, sample2: str, sample3: str, sample4: str, sample5: str, status: str, subUsecases: [str], submissionStatus: str, subscriberHelp: bool, subscriberOptin: bool, subscriberOptout: bool, tcrBrandId: str, tcrCampaignId: str, termsAndConditions: bool, termsAndConditionsLink: str, usecase: str, vertical: str, webhookFailoverURL: str, webhookURL: str} # Successful Response\n@errors {400: Bad Request, 402: Insufficient Funds, 422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/campaignBuilder/brand/{brandId}/usecase/{usecase}\n@desc Qualify By Usecase\n@required {usecase: str, brandId: str}\n@returns(200) {annualFee: num, maxSubUsecases: int, minSubUsecases: int, mnoMetadata: map, monthlyFee: num, quarterlyFee: num, usecase: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/enum/{endpoint}\n@desc Get Enum\n@required {endpoint: str(mno/optionalAttributes/usecase/vertical/altBusinessIdType/brandIdentityStatus/brandRelationship/campaignStatus/entityType/extVettingProvider/vettingStatus/brandStatus/operationStatus/approvedPublicCompany/stockExchange/vettingClass)}\n@returns(200) Successful Response\n@errors {404: Resource not found, 4XX: Generic response error}\n\n@endpoint GET /10dlc/partnerCampaign/sharedByMe\n@desc List shared partner campaigns\n@optional {page: int=1 # The 1-indexed page number to get. The default value is `1`., recordsPerPage: int=10 # The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`.}\n@returns(200) {page: int, records: [map], totalRecords: int} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/partnerCampaign/{campaignId}/sharing\n@desc Get Sharing Status\n@required {campaignId: str # ID of the campaign in question}\n@returns(200) Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/partner_campaigns\n@desc List Shared Campaigns\n@optional {page: int=1 # The 1-indexed page number to get. The default value is `1`., recordsPerPage: int=10 # The amount of records per page, limited to between 1 and 500 inclusive. The default value is `10`., sort: str(assignedPhoneNumbersCount/-assignedPhoneNumbersCount/brandDisplayName/-brandDisplayName/tcrBrandId/-tcrBrandId/tcrCampaignId/-tcrCampaignId/createdAt/-createdAt/campaignStatus/-campaignStatus)=-createdAt # Specifies the sort order for results. If not given, results are sorted by createdAt in descending order.}\n@returns(200) {page: int, records: [map], totalRecords: int} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/partner_campaigns/{campaignId}\n@desc Get Single Shared Campaign\n@required {campaignId: str}\n@returns(200) {ageGated: bool, assignedPhoneNumbersCount: num, brandDisplayName: str, campaignStatus: str, createdAt: str, description: str, directLending: bool, embeddedLink: bool, embeddedLinkSample: str, embeddedPhone: bool, failureReasons: str, helpKeywords: str, helpMessage: str, isNumberPoolingEnabled: bool, messageFlow: str, numberPool: bool, optinKeywords: str, optinMessage: str, optoutKeywords: str, optoutMessage: str, privacyPolicyLink: str, sample1: str, sample2: str, sample3: str, sample4: str, sample5: str, subUsecases: [str], subscriberOptin: bool, subscriberOptout: bool, tcrBrandId: str, tcrCampaignId: str, termsAndConditions: bool, termsAndConditionsLink: str, updatedAt: str, usecase: str, webhookFailoverURL: str, webhookURL: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint PATCH /10dlc/partner_campaigns/{campaignId}\n@desc Update Single Shared Campaign\n@required {campaignId: str}\n@optional {webhookFailoverURL: str # Webhook failover to which campaign status updates are sent., webhookURL: str # Webhook to which campaign status updates are sent.}\n@returns(200) {ageGated: bool, assignedPhoneNumbersCount: num, brandDisplayName: str, campaignStatus: str, createdAt: str, description: str, directLending: bool, embeddedLink: bool, embeddedLinkSample: str, embeddedPhone: bool, failureReasons: str, helpKeywords: str, helpMessage: str, isNumberPoolingEnabled: bool, messageFlow: str, numberPool: bool, optinKeywords: str, optinMessage: str, optoutKeywords: str, optoutMessage: str, privacyPolicyLink: str, sample1: str, sample2: str, sample3: str, sample4: str, sample5: str, subUsecases: [str], subscriberOptin: bool, subscriberOptout: bool, tcrBrandId: str, tcrCampaignId: str, termsAndConditions: bool, termsAndConditionsLink: str, updatedAt: str, usecase: str, webhookFailoverURL: str, webhookURL: str} # Successful Response\n@errors {422: Validation Error, 4XX: Generic response error}\n\n@endpoint POST /10dlc/phoneNumberAssignmentByProfile\n@desc Assign Messaging Profile To Campaign\n@required {messagingProfileId: str # The ID of the messaging profile that you want to link to the specified campaign.}\n@optional {campaignId: str # 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., tcrCampaignId: str # 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.}\n@returns(202) {campaignId: str, messagingProfileId: str, taskId: str, tcrCampaignId: str} # Successful Response\n@errors {500: Error searching for phone numbers, 4XX: Generic response error}\n\n@endpoint GET /10dlc/phoneNumberAssignmentByProfile/{taskId}\n@desc Get Assignment Task Status\n@required {taskId: str}\n@returns(200) {createdAt: str(date-time), status: str, taskId: str, updatedAt: str(date-time)} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint GET /10dlc/phoneNumberAssignmentByProfile/{taskId}/phoneNumbers\n@desc Get Phone Number Status\n@required {taskId: str}\n@optional {recordsPerPage: int=20, page: int=1}\n@returns(200) {records: [map]} # Successful Response\n@errors {422: Generic response error, 4XX: Generic response error}\n\n@endpoint GET /10dlc/phone_number_campaigns\n@desc List phone number campaigns\n@optional {recordsPerPage: int=20, page: int=1, filter: map # Consolidated filter parameter (deepObject style). Originally: filter[telnyx_campaign_id], filter[telnyx_brand_id], filter[tcr_campaign_id], filter[tcr_brand_id], sort: str(assignmentStatus/-assignmentStatus/createdAt/-createdAt/phoneNumber/-phoneNumber)=-createdAt # Specifies the sort order for results. If not given, results are sorted by createdAt in descending order.}\n@returns(200) {page: int, records: [map], totalRecords: int} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint POST /10dlc/phone_number_campaigns\n@desc Create New Phone Number Campaign\n@required {campaignId: str # The ID of the campaign you want to link to the specified phone number., phoneNumber: str # The phone number you want to link to a specified campaign.}\n@returns(200) {assignmentStatus: str, brandId: str, campaignId: str, createdAt: str, failureReasons: str, phoneNumber: str, tcrBrandId: str, tcrCampaignId: str, telnyxCampaignId: str, updatedAt: str} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint DELETE /10dlc/phone_number_campaigns/{phoneNumber}\n@desc Delete Phone Number Campaign\n@required {phoneNumber: str}\n@returns(200) {assignmentStatus: str, brandId: str, campaignId: str, createdAt: str, failureReasons: str, phoneNumber: str, tcrBrandId: str, tcrCampaignId: str, telnyxCampaignId: str, updatedAt: str} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint GET /10dlc/phone_number_campaigns/{phoneNumber}\n@desc Get Single Phone Number Campaign\n@required {phoneNumber: str}\n@returns(200) {assignmentStatus: str, brandId: str, campaignId: str, createdAt: str, failureReasons: str, phoneNumber: str, tcrBrandId: str, tcrCampaignId: str, telnyxCampaignId: str, updatedAt: str} # Successful Response\n@errors {4XX: Generic response error}\n\n@endpoint PUT /10dlc/phone_number_campaigns/{phoneNumber}\n@desc Create New Phone Number Campaign\n@required {phoneNumber: str, campaignId: str # The ID of the campaign you want to link to the specified phone number., phoneNumber: str # The phone number you want to link to a specified campaign.}\n@returns(200) {assignmentStatus: str, brandId: str, campaignId: str, createdAt: str, failureReasons: str, phoneNumber: str, tcrBrandId: str, tcrCampaignId: str, telnyxCampaignId: str, updatedAt: str} # Successful Response\n@errors {4XX: Generic response error}\n\n@endgroup\n\n@group access_ip_address\n@endpoint GET /access_ip_address\n@desc List all Access IP Addresses\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[ip_source], filter[ip_address], filter[created_at]. Supports complex bracket operations for dynamic filtering., page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /access_ip_address\n@desc Create new Access IP Address\n@required {ip_address: str}\n@optional {description: str}\n@returns(200) {created_at: str(date-time), description: str, id: str, ip_address: str, source: str, status: str, updated_at: str(date-time), user_id: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /access_ip_address/{access_ip_address_id}\n@desc Delete access IP address\n@required {access_ip_address_id: str}\n@returns(200) {created_at: str(date-time), description: str, id: str, ip_address: str, source: str, status: str, updated_at: str(date-time), user_id: str} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint GET /access_ip_address/{access_ip_address_id}\n@desc Retrieve an access IP address\n@required {access_ip_address_id: str}\n@returns(200) {created_at: str(date-time), description: str, id: str, ip_address: str, source: str, status: str, updated_at: str(date-time), user_id: str} # Successful Response\n@errors {404: Resource not found}\n\n@endgroup\n\n@group access_ip_ranges\n@endpoint GET /access_ip_ranges\n@desc List all Access IP Ranges\n@optional {filter: map # 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., page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /access_ip_ranges\n@desc Create new Access IP Range\n@required {cidr_block: str}\n@optional {description: str}\n@returns(200) {cidr_block: str, created_at: str(date-time), description: str, id: str, status: str, updated_at: str(date-time), user_id: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /access_ip_ranges/{access_ip_range_id}\n@desc Delete access IP ranges\n@required {access_ip_range_id: str}\n@returns(200) {cidr_block: str, created_at: str(date-time), description: str, id: str, status: str, updated_at: str(date-time), user_id: str} # Successful Response\n@errors {404: Resource not found}\n\n@endgroup\n\n@group actions\n@endpoint POST /actions/purchase/esims\n@desc Purchase eSIMs\n@required {amount: int # The amount of eSIMs to be purchased.}\n@optional {product: str # Type of product to be purchased, specify \"whitelabel\" to use a custom SPN, sim_card_group_id: str(uuid) # The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource., status: str(enabled/disabled/standby)=enabled # Status on which the SIM cards will be set after being successfully registered., tags: [str] # Searchable tags associated with the SIM cards, whitelabel_name: str # 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.}\n@returns(202) {data: [map], errors: [map]} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint POST /actions/register/sim_cards\n@desc Register SIM cards\n@required {registration_codes: [str]}\n@optional {sim_card_group_id: str(uuid) # The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource., status: str(enabled/disabled/standby)=enabled # Status on which the SIM card will be set after being successful registered., tags: [str] # Searchable tags associated with the SIM card}\n@returns(202) {data: [map], errors: [map]} # Successful response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group addresses\n@endpoint GET /addresses\n@desc List all addresses\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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], sort: str(created_at/first_name/last_name/business_name/street_address)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         street_address: sorts the result by the     street_address field in ascending order.            -street_address: sorts the result by the     street_address field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /addresses\n@desc Creates an address\n@required {business_name: str # The business name associated with the address. An address must have either a first last name or a business name., country_code: str # The two-character (ISO 3166-1 alpha-2) country code of the address., first_name: str # The first name associated with the address. An address must have either a first last name or a business name., last_name: str # The last name associated with the address. An address must have either a first last name or a business name., locality: str # The locality of the address. For US addresses, this corresponds to the city of the address., street_address: str # The primary street address information about the address.}\n@optional {address_book: bool=true # Indicates whether or not the address should be considered part of your list of addresses that appear for regular use., administrative_area: str # The locality of the address. For US addresses, this corresponds to the state of the address., borough: str # The borough of the address. This field is not used for addresses in the US but is used for some international addresses., customer_reference: str # A customer reference string for customer look ups., extended_address: str # Additional street address information about the address such as, but not limited to, unit number or apartment number., neighborhood: str # The neighborhood of the address. This field is not used for addresses in the US but is used for some international addresses., phone_number: str # The phone number associated with the address., postal_code: str # The postal code of the address., validate_address: bool=true # 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.}\n@returns(200) {data: map{address_book: bool, administrative_area: str, borough: str, business_name: str, country_code: str, created_at: str, customer_reference: str, extended_address: str, first_name: str, id: str, last_name: str, locality: str, neighborhood: str, phone_number: str, postal_code: str, record_type: str, street_address: str, updated_at: str, validate_address: bool}} # Successful response\n@errors {422: Bad request}\n\n@endpoint POST /addresses/actions/validate\n@desc Validate an address\n@required {country_code: str # The two-character (ISO 3166-1 alpha-2) country code of the address., postal_code: str # The postal code of the address., street_address: str # The primary street address information about the address.}\n@optional {administrative_area: str # The locality of the address. For US addresses, this corresponds to the state of the address., extended_address: str # Additional street address information about the address such as, but not limited to, unit number or apartment number., locality: str # The locality of the address. For US addresses, this corresponds to the city of the address.}\n@returns(200) {data: map{errors: [map], record_type: str, result: str, suggested: map{administrative_area: str, country_code: str, extended_address: str, locality: str, postal_code: str, street_address: str}}} # Action response\n@errors {422: Bad request}\n\n@endpoint DELETE /addresses/{id}\n@desc Deletes an address\n@required {id: str # address ID}\n@returns(200) {data: map{address_book: bool, administrative_area: str, borough: str, business_name: str, country_code: str, created_at: str, customer_reference: str, extended_address: str, first_name: str, id: str, last_name: str, locality: str, neighborhood: str, phone_number: str, postal_code: str, record_type: str, street_address: str, updated_at: str, validate_address: bool}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /addresses/{id}\n@desc Retrieve an address\n@required {id: str # address ID}\n@returns(200) {data: map{address_book: bool, administrative_area: str, borough: str, business_name: str, country_code: str, created_at: str, customer_reference: str, extended_address: str, first_name: str, id: str, last_name: str, locality: str, neighborhood: str, phone_number: str, postal_code: str, record_type: str, street_address: str, updated_at: str, validate_address: bool}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint POST /addresses/{id}/actions/accept_suggestions\n@desc Accepts this address suggestion as a new emergency address for Operator Connect and finishes the uploads of the numbers associated with it to Microsoft.\n@required {id: str(uuid) # The UUID of the address that should be accepted.}\n@optional {id: str # The ID of the address.}\n@returns(200) {data: map{accepted: bool, id: str(uuid), record_type: str}} # This address suggestion has already been accepted.\n@returns(202) {data: map{accepted: bool, id: str(uuid), record_type: str}} # This address suggestion was accepted. The numbers associated to it will resume processing in the background.\n@errors {404: Address not found or not accessible by the user.}\n\n@endgroup\n\n@group advanced_orders\n@endpoint GET /advanced_orders\n@desc List Advanced Orders\n@returns(200) {data: [map]} # An array of Advanced Order Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /advanced_orders\n@desc Create Advanced Order\n@optional {area_code: str=, comments: str=, country_code: str=US, customer_reference: str=, features: [any], phone_number_type: str(local/mobile/toll_free/shared_cost/national/landline)=local, quantity: int=1, requirement_group_id: str(uuid) # The ID of the requirement group to associate with this advanced order}\n@returns(200) {area_code: str, comments: str, country_code: str, customer_reference: str, features: [any], id: str(uuid), orders: [str(uuid)], phone_number_type: any, quantity: int, requirement_group_id: str(uuid), status: any} # An Advanced Order Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /advanced_orders/{advanced-order-id}/requirement_group\n@desc Update Advanced Order\n@required {advanced-order-id: str(uuid)}\n@optional {area_code: str=, comments: str=, country_code: str=US, customer_reference: str=, features: [any], phone_number_type: str(local/mobile/toll_free/shared_cost/national/landline)=local, quantity: int=1, requirement_group_id: str(uuid) # The ID of the requirement group to associate with this advanced order}\n@returns(200) {area_code: str, comments: str, country_code: str, customer_reference: str, features: [any], id: str(uuid), orders: [str(uuid)], phone_number_type: any, quantity: int, requirement_group_id: str(uuid), status: any} # An Advanced Order Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /advanced_orders/{order_id}\n@desc Get Advanced Order\n@required {order_id: str(uuid)}\n@returns(200) {area_code: str, comments: str, country_code: str, customer_reference: str, features: [any], id: str(uuid), orders: [str(uuid)], phone_number_type: any, quantity: int, requirement_group_id: str(uuid), status: any} # An Advanced Order Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group ai\n@endpoint GET /ai/assistants\n@desc List assistants\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants\n@desc Create an assistant\n@required {instructions: str # System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables), model: str # ID of the model to use. You can use the [Get models API](https://developers.telnyx.com/api-reference/chat/get-available-models) to see all of your available models,, name: str}\n@optional {description: str, dynamic_variables: map # Map of dynamic variables and their default values, dynamic_variables_webhook_url: str # If the dynamic_variables_webhook_url is set for the assistant, we will send a request at the start of the conversation. See our [guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for more information., enabled_features: [str], greeting: str # Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions., insight_settings: map{insight_group_id: str}, llm_api_key_ref: str # This is only needed when using third-party inference providers. 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. Warning: Free plans are unlikely to work with this integration., messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map, recording_settings: map, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map}, tool_ids: [str], tools: [any] # The tools that the assistant can use. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables), transcription: map{language: str, model: str, region: str, settings: map}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice!: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map, default_state: str, give_feedback_url: str, logo_icon_url: str, position: str, report_issue_url: str, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str} # Configuration settings for the assistant's web widget.}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/import\n@desc Import assistants from external provider\n@required {api_key_ref: str # 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., provider: str(elevenlabs/vapi/retell) # The external provider to import assistants from.}\n@optional {import_ids: [str] # Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported.}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tags\n@desc Get All Tags\n@returns(200) {tags: [str]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests\n@desc List assistant tests with pagination\n@optional {test_suite: str # Filter tests by test suite name, telnyx_conversation_channel: str # Filter tests by communication channel (e.g., 'web_chat', 'sms'), destination: str # Filter tests by destination (phone number, webhook URL, etc.), page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: any} # Returns paginated test list with metadata for navigation and filtering\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/tests\n@desc Create a new assistant test\n@required {destination: str # The target destination for the test conversation. Format depends on the channel: phone number for SMS/voice, webhook URL for web chat, etc., instructions: str # Detailed instructions that define the test scenario and what the assistant should accomplish. This guides the test execution and evaluation., name: str # A descriptive name for the assistant test. This will be used to identify the test in the UI and reports., rubric: [map{criteria!: str, name!: str}] # Evaluation criteria used to assess the assistant's performance. Each rubric item contains a name and specific criteria for evaluation.}\n@optional {description: str # Optional detailed description of what this test evaluates and its purpose. Helps team members understand the test's objectives., max_duration_seconds: int # Maximum duration in seconds that the test conversation should run before timing out. If not specified, uses system default timeout., telnyx_conversation_channel: any=web_chat # The communication channel through which the test will be conducted. Determines how the assistant will receive and respond to test messages., test_suite: str # Optional test suite name to group related tests together. Useful for organizing tests by feature, team, or release cycle.}\n@returns(201) {created_at: str(date-time), description: str, destination: str, instructions: str, max_duration_seconds: int, name: str, rubric: [map], telnyx_conversation_channel: any, test_id: str(uuid), test_suite: str} # Returns the created test configuration with assigned test ID\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests/test-suites\n@desc Get all test suite names\n@returns(200) {data: [str]} # Returns an array of unique test suite names for filtering and organization\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests/test-suites/{suite_name}/runs\n@desc Get test suite run history\n@required {suite_name: str}\n@optional {status: str # Filter runs by execution status (pending, running, completed, failed, timeout), test_suite_run_id: str # Filter runs by specific suite execution batch ID, page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns paginated list of test runs within the specified suite\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/tests/test-suites/{suite_name}/runs\n@desc Trigger test suite execution\n@required {suite_name: str}\n@optional {destination_version_id: str # 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}\n@returns(201) Returns array of created test runs for all tests in the suite\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/tests/{test_id}\n@desc Delete an assistant test\n@required {test_id: str}\n@returns(200) Returns success status when test is successfully deleted\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests/{test_id}\n@desc Get assistant test by ID\n@required {test_id: str}\n@returns(200) {created_at: str(date-time), description: str, destination: str, instructions: str, max_duration_seconds: int, name: str, rubric: [map], telnyx_conversation_channel: any, test_id: str(uuid), test_suite: str} # Returns complete test configuration including rubric, schedule, and metadata\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/assistants/tests/{test_id}\n@desc Update an assistant test\n@required {test_id: str}\n@optional {description: str # Updated description of the test's purpose and evaluation criteria., destination: str # Updated target destination for test conversations., instructions: str # Updated test scenario instructions and objectives., max_duration_seconds: int # Updated maximum test duration in seconds., name: str # Updated name for the assistant test. Must be unique and descriptive., rubric: [map{criteria!: str, name!: str}] # Updated evaluation criteria for assessing assistant performance., telnyx_conversation_channel: str(phone_call/web_call/sms_chat/web_chat), test_suite: str # Updated test suite assignment for better organization.}\n@returns(200) {created_at: str(date-time), description: str, destination: str, instructions: str, max_duration_seconds: int, name: str, rubric: [map], telnyx_conversation_channel: any, test_id: str(uuid), test_suite: str} # Returns the updated test configuration with all changes applied\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests/{test_id}/runs\n@desc Get test run history for a specific test\n@required {test_id: str}\n@optional {status: str # Filter runs by execution status (pending, running, completed, failed, timeout), page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns paginated list of test runs for the specified test\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/tests/{test_id}/runs\n@desc Trigger a manual test run\n@required {test_id: str}\n@optional {destination_version_id: str # 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}\n@returns(201) {completed_at: str(date-time), conversation_id: str, conversation_insights_id: str, created_at: str(date-time), detail_status: [map], logs: str, run_id: str(uuid), status: str, test_id: str(uuid), test_suite_run_id: str(uuid), triggered_by: str, updated_at: str(date-time)} # Returns the created test run with execution details and status\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/tests/{test_id}/runs/{run_id}\n@desc Get specific test run details\n@required {test_id: str, run_id: str}\n@returns(200) {completed_at: str(date-time), conversation_id: str, conversation_insights_id: str, created_at: str(date-time), detail_status: [map], logs: str, run_id: str(uuid), status: str, test_id: str(uuid), test_suite_run_id: str(uuid), triggered_by: str, updated_at: str(date-time)} # Returns complete test run details including results, logs, and performance metrics\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}\n@desc Delete an assistant\n@required {assistant_id: str}\n@returns(200) {deleted: bool, id: str, object: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}\n@desc Get an assistant\n@required {assistant_id: str}\n@optional {fetch_dynamic_variables_from_webhook: bool=false, from: str, to: str, call_control_id: str}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}\n@desc Update an assistant\n@required {assistant_id: str}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}/canary-deploys\n@desc Delete Canary Deploy\n@required {assistant_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/canary-deploys\n@desc Get Canary Deploy\n@required {assistant_id: str}\n@returns(200) {assistant_id: str, created_at: str(date-time), updated_at: str(date-time), versions: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/canary-deploys\n@desc Create Canary Deploy\n@required {assistant_id: str, versions: [map{percentage!: num, version_id!: str}] # List of version configurations}\n@returns(200) {assistant_id: str, created_at: str(date-time), updated_at: str(date-time), versions: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/assistants/{assistant_id}/canary-deploys\n@desc Update Canary Deploy\n@required {assistant_id: str, versions: [map{percentage!: num, version_id!: str}] # List of version configurations}\n@returns(200) {assistant_id: str, created_at: str(date-time), updated_at: str(date-time), versions: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/chat\n@desc Assistant Chat (BETA)\n@required {assistant_id: str, content: str # The message content sent by the client to the assistant, conversation_id: str # A unique identifier for the conversation thread, used to maintain context}\n@optional {name: str # The optional display name of the user sending the message}\n@returns(200) {content: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/chat/sms\n@desc Assistant Sms Chat\n@required {assistant_id: str, from: str, to: str}\n@optional {conversation_metadata: map, should_create_conversation: bool, text: str}\n@returns(200) {conversation_id: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/clone\n@desc Clone Assistant\n@required {assistant_id: str}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/scheduled_events\n@desc List scheduled events\n@required {assistant_id: str}\n@optional {from_date: str(date-time), to_date: str(date-time), conversation_channel: str, page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/scheduled_events\n@desc Create a scheduled event\n@required {assistant_id: str, scheduled_at_fixed_datetime: str(date-time) # The datetime at which the event should be scheduled. Formatted as ISO 8601., telnyx_agent_target: str # The phone number, SIP URI, to schedule the call or text from., telnyx_conversation_channel: str(phone_call/sms_chat), telnyx_end_user_target: str # The phone number, SIP URI, to schedule the call or text to.}\n@optional {conversation_metadata: map # Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own., dynamic_variables: map # A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax., text: str # Required for sms scheduled events. The text to be sent to the end user.}\n@returns(201) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}/scheduled_events/{event_id}\n@desc Delete a scheduled event\n@required {assistant_id: str, event_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/scheduled_events/{event_id}\n@desc Get a scheduled event\n@required {assistant_id: str, event_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/tags\n@desc Add Assistant Tag\n@required {assistant_id: str, tag: str}\n@returns(200) {tags: [str]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}/tags/{tag}\n@desc Remove Assistant Tag\n@required {assistant_id: str, tag: str}\n@returns(200) {tags: [str]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/texml\n@desc Get assistant texml\n@required {assistant_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}/tools/{tool_id}\n@desc Remove Assistant Tool\n@required {assistant_id: str, tool_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/assistants/{assistant_id}/tools/{tool_id}\n@desc Add Assistant Tool\n@required {assistant_id: str, tool_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/tools/{tool_id}/test\n@desc Test Assistant Tool\n@required {assistant_id: str, tool_id: str}\n@optional {arguments: map # Key-value arguments to use for the webhook test, dynamic_variables: map # Key-value dynamic variables to use for the webhook test}\n@returns(200) {data: map{content_type: str, request: map, response: str, status_code: int, success: bool}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/versions\n@desc Get all versions of an assistant\n@required {assistant_id: str}\n@returns(200) {data: [map]} # Returns list of assistant versions ordered by creation date (newest first)\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/assistants/{assistant_id}/versions/{version_id}\n@desc Delete a specific assistant version\n@required {assistant_id: str, version_id: str}\n@returns(204) Returns HTTP 204 No Content on successful deletion\n@errors {422: Validation Error}\n\n@endpoint GET /ai/assistants/{assistant_id}/versions/{version_id}\n@desc Get a specific assistant version\n@required {assistant_id: str, version_id: str}\n@optional {include_mcp_servers: bool}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Returns the specific assistant version configuration\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/versions/{version_id}\n@desc Update a specific assistant version\n@required {assistant_id: str, version_id: str}\n@optional {description: str, dynamic_variables: map # Map of dynamic variables and their default values, dynamic_variables_webhook_url: str # If the dynamic_variables_webhook_url is set for the assistant, we will send a request at the start of the conversation. See our [guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for more information., enabled_features: [str], greeting: str # Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions., insight_settings: map{insight_group_id: str}, instructions: str # System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables), llm_api_key_ref: str # This is only needed when using third-party inference providers. 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. Warning: Free plans are unlikely to work with this integration., messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str # ID of the model to use. You can use the [Get models API](https://developers.telnyx.com/api-reference/chat/get-available-models) to see all of your available models,, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map, recording_settings: map, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map}, tool_ids: [str], tools: [any] # The tools that the assistant can use. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables), transcription: map{language: str, model: str, region: str, settings: map}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice!: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map, default_state: str, give_feedback_url: str, logo_icon_url: str, position: str, report_issue_url: str, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str} # Configuration settings for the assistant's web widget.}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Returns the updated assistant version configuration\n@errors {422: Validation Error}\n\n@endpoint POST /ai/assistants/{assistant_id}/versions/{version_id}/promote\n@desc Promote an assistant version to main\n@required {assistant_id: str, version_id: str}\n@returns(200) {created_at: str(date-time), description: str, dynamic_variables: map, dynamic_variables_webhook_url: str, enabled_features: [str], greeting: str, id: str, import_metadata: map{import_id: str, import_provider: str}, insight_settings: map{insight_group_id: str}, instructions: str, llm_api_key_ref: str, messaging_settings: map{conversation_inactivity_minutes: int, default_messaging_profile_id: str, delivery_status_webhook_url: str}, model: str, name: str, privacy_settings: map{data_retention: bool}, telephony_settings: map{default_texml_app_id: str, noise_suppression: str, noise_suppression_config: map{attenuation_limit: int, mode: str}, recording_settings: map{channels: str, format: str}, supports_unauthenticated_web_calls: bool, time_limit_secs: int, user_idle_timeout_secs: int, voicemail_detection: map{on_voicemail_detected: map{action: str, voicemail_message: map}}}, tools: [any], transcription: map{language: str, model: str, region: str, settings: map{eager_eot_threshold: num, eot_threshold: num, eot_timeout_ms: int, numerals: bool, smart_format: bool}}, voice_settings: map{api_key_ref: str, background_audio: any, expressive_mode: bool, language_boost: str?, similarity_boost: num, speed: num, style: num, temperature: num, use_speaker_boost: bool, voice: str, voice_speed: num}, widget_settings: map{agent_thinking_text: str, audio_visualizer_config: map{color: str, preset: str}, default_state: str, give_feedback_url: str?, logo_icon_url: str?, position: str, report_issue_url: str?, speak_to_interrupt_text: str, start_call_text: str, theme: str, view_history_url: str?}} # Returns the promoted assistant configuration\n@errors {422: Validation Error}\n\n@endpoint POST /ai/audio/transcriptions\n@desc Transcribe speech to text\n@returns(200) {duration: num, segments: [map], text: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/chat/completions\n@desc Create a chat completion\n@required {messages: [map{content!: any, role!: str}] # A list of the previous chat messages for context.}\n@optional {api_key_ref: str # 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., best_of: int # This is used with `use_beam_search` to determine how many candidate beams to explore., early_stopping: bool=false # 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., enable_thinking: bool=true # 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., frequency_penalty: num=0 # Higher values will penalize the model from repeating the same output tokens., guided_choice: [str] # If specified, the output will be exactly one of the choices., guided_json: map # Must be a valid JSON schema. If specified, the output will follow the JSON schema., guided_regex: str # If specified, the output will follow the regex pattern., length_penalty: num=1 # This is used with `use_beam_search` to prefer shorter or longer completions., logprobs: bool=false # 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`., max_tokens: int # Maximum number of completion tokens the model should generate., min_p: num # This is an alternative to `top_p` that [many prefer](https://github.com/huggingface/transformers/issues/27670). Must be in [0, 1]., model: str=meta-llama/Meta-Llama-3.1-8B-Instruct # The language model to chat with., n: num # This will return multiple choices for you instead of a single chat completion., presence_penalty: num=0 # Higher values will penalize the model from repeating the same output tokens., response_format: map{type!: str}, stream: bool=false # Whether or not to stream data-only server-sent events as they become available., temperature: num=0.1 # 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., tool_choice: str(none/auto/required), tools: [any] # 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., top_logprobs: int # 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., top_p: num # An alternative or complement to `temperature`. This adjusts how many of the top possibilities to consider., use_beam_search: bool=false # 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.}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n@example_request {\"messages\":[{\"content\":\"You are a friendly chatbot.\",\"role\":\"system\"},{\"content\":\"Hello, world!\",\"role\":\"user\"}]}\n\n@endpoint GET /ai/clusters\n@desc List all clusters\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/clusters\n@desc Compute new clusters\n@required {bucket: str # The embedded storage bucket to compute the clusters from. The bucket must already be [embedded](https://developers.telnyx.com/api-reference/embeddings/embed-documents).}\n@optional {files: [str] # Array of files to filter which are included., min_cluster_size: int=25 # 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., min_subcluster_size: int=5 # 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., prefix: str # Prefix to filter whcih files in the buckets are included.}\n@returns(200) {data: map{task_id: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/clusters/{task_id}\n@desc Delete a cluster\n@required {task_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/clusters/{task_id}\n@desc Fetch a cluster\n@required {task_id: str}\n@optional {top_n_nodes: int=0 # The number of nodes in the cluster to return in the response. Nodes will be sorted by their centrality within the cluster., show_subclusters: bool=false # Whether or not to include subclusters and their nodes in the response.}\n@returns(200) {data: map{bucket: str, clusters: [map], status: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/clusters/{task_id}/graph\n@desc Fetch a cluster visualization\n@required {task_id: str}\n@optional {cluster_id: int}\n@returns(200) Successful Response - Returns a PNG image of the cluster visualization.\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations\n@desc List conversations\n@optional {id: str # Filter by conversation ID (e.g. id=eq.123), name: str # Filter by conversation Name (e.g. `name=like.Voice%`), created_at: str # Filter by creation datetime (e.g., `created_at=gte.2025-01-01`), last_message_at: str # Filter by last message datetime (e.g., `last_message_at=lte.2025-06-01`), metadata->assistant_id: str # Filter by assistant ID (e.g., `metadata->assistant_id=eq.assistant-123`), metadata->call_control_id: str # Filter by call control ID (e.g., `metadata->call_control_id=eq.v3:123`), metadata->telnyx_agent_target: str # Filter by the phone number, SIP URI, or other identifier for the agent (e.g., `metadata->telnyx_agent_target=eq.+13128675309`), metadata->telnyx_end_user_target: str # Filter by the phone number, SIP URI, or other identifier for the end user (e.g., `metadata->telnyx_end_user_target=eq.+13128675309`), metadata->telnyx_conversation_channel: str # Filter by conversation channel (e.g., `metadata->telnyx_conversation_channel=eq.phone_call`), limit: int # Limit the number of returned conversations (e.g., `limit=10`), order: str # Order the results by specific fields (e.g., `order=created_at.desc` or `order=last_message_at.asc`), or: str # Apply OR conditions using PostgREST syntax (e.g., `or=(created_at.gte.2025-04-01,last_message_at.gte.2025-04-01)`)}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/conversations\n@desc Create a conversation\n@optional {metadata: map # Metadata associated with the conversation. Set `ai_disabled` to `true` to create the conversation with AI message responses disabled., name: str}\n@returns(200) {created_at: str(date-time), id: str(uuid), last_message_at: str(date-time), metadata: map, name: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations/insight-groups\n@desc Get Insight Template Groups\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/conversations/insight-groups\n@desc Create Insight Template Group\n@required {name: str}\n@optional {description: str, webhook: str=}\n@returns(200) {data: map{created_at: str(date-time), description: str, id: str(uuid), insights: [map], name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/conversations/insight-groups/{group_id}\n@desc Delete Insight Template Group\n@required {group_id: str(uuid) # The ID of the insight group}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations/insight-groups/{group_id}\n@desc Get Insight Template Group\n@required {group_id: str(uuid) # The ID of the insight group}\n@returns(200) {data: map{created_at: str(date-time), description: str, id: str(uuid), insights: [map], name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/conversations/insight-groups/{group_id}\n@desc Update Insight Template Group\n@required {group_id: str(uuid) # The ID of the insight group}\n@optional {description: str, name: str, webhook: str}\n@returns(200) {data: map{created_at: str(date-time), description: str, id: str(uuid), insights: [map], name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign\n@desc Assign Insight Template To Group\n@required {group_id: str(uuid) # The ID of the insight group, insight_id: str(uuid) # The ID of the insight}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign\n@desc Unassign Insight Template From Group\n@required {group_id: str(uuid) # The ID of the insight group, insight_id: str(uuid) # The ID of the insight}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations/insights\n@desc Get Insight Templates\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/conversations/insights\n@desc Create Insight Template\n@required {instructions: str, name: str}\n@optional {json_schema: any # If specified, the output will follow the JSON schema., webhook: str=}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), insight_type: str, instructions: str, json_schema: any, name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/conversations/insights/{insight_id}\n@desc Delete Insight Template\n@required {insight_id: str(uuid) # The ID of the insight}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations/insights/{insight_id}\n@desc Get Insight Template\n@required {insight_id: str(uuid) # The ID of the insight}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), insight_type: str, instructions: str, json_schema: any, name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/conversations/insights/{insight_id}\n@desc Update Insight Template\n@required {insight_id: str(uuid) # The ID of the insight}\n@optional {instructions: str, json_schema: any, name: str, webhook: str}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), insight_type: str, instructions: str, json_schema: any, name: str, webhook: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/conversations/{conversation_id}\n@desc Delete a conversation\n@required {conversation_id: str # The ID of the conversation to delete}\n@returns(200) Successful Response\n@errors {404: Conversation Not Found, 422: Validation Error}\n\n@endpoint GET /ai/conversations/{conversation_id}\n@desc Get a conversation\n@required {conversation_id: str # The ID of the conversation to retrieve}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), last_message_at: str(date-time), metadata: map, name: str}} # Successful Response\n@errors {404: Conversation Not Found, 422: Validation Error}\n\n@endpoint PUT /ai/conversations/{conversation_id}\n@desc Update conversation metadata\n@required {conversation_id: str # The ID of the conversation to update}\n@optional {metadata: map # 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.}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), last_message_at: str(date-time), metadata: map, name: str}} # Successful Update\n@errors {404: Conversation Not Found, 422: Validation Error}\n\n@endpoint GET /ai/conversations/{conversation_id}/conversations-insights\n@desc Get insights for a conversation\n@required {conversation_id: str}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/conversations/{conversation_id}/message\n@desc Create Message\n@required {conversation_id: str(uuid) # The ID of the conversation, role: str}\n@optional {content: str=, metadata: map, name: str, sent_at: str(date-time), tool_call_id: str, tool_calls: [map], tool_choice: any}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/conversations/{conversation_id}/messages\n@desc Get conversation messages\n@required {conversation_id: str}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/embeddings\n@desc Get Tasks by Status\n@optional {status: [str]=processing,queued # List of task statuses i.e. `status=queued&status=processing`}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/embeddings\n@desc Embed documents\n@required {bucket_name: str}\n@optional {document_chunk_overlap_size: int=512, document_chunk_size: int=1024, embedding_model: any=thenlper/gte-large, loader: any=default}\n@returns(200) {data: map{created_at: str, finished_at: str?, status: str, task_id: str(uuid), task_name: str, user_id: str(uuid)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/embeddings/buckets\n@desc List embedded buckets\n@returns(200) {data: map{buckets: [str]}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/embeddings/buckets/{bucket_name}\n@desc Disable AI for an Embedded Bucket\n@required {bucket_name: str}\n@returns(200) Bucket Embeddings Deleted Successfully\n@errors {404: Bucket Not Found, 422: Validation Error}\n\n@endpoint GET /ai/embeddings/buckets/{bucket_name}\n@desc Get file-level embedding statuses for a bucket\n@required {bucket_name: str}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/embeddings/similarity-search\n@desc Search for documents\n@required {bucket_name: str, query: str}\n@optional {num_of_docs: int=3}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/embeddings/url\n@desc Embed URL content\n@required {bucket_name: str # Name of the bucket to store the embeddings. This bucket must already exist., url: str # The URL of the webpage to embed}\n@returns(200) {data: map{created_at: str, finished_at: str?, status: str, task_id: str(uuid), task_name: str, user_id: str(uuid)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/embeddings/{task_id}\n@desc Get an embedding task's status\n@required {task_id: str}\n@returns(200) {data: map{created_at: str, finished_at: str, status: str, task_id: str(uuid), task_name: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/fine_tuning/jobs\n@desc List fine tuning jobs\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/fine_tuning/jobs\n@desc Create a fine tuning job\n@required {model: str # The base model that is being fine-tuned., training_file: str # The storage bucket or object used for training.}\n@optional {hyperparameters: map{n_epochs: int} # The hyperparameters used for the fine-tuning job., suffix: str # Optional suffix to append to the fine tuned model's name.}\n@returns(200) {created_at: int, finished_at: int?, hyperparameters: map{n_epochs: int}, id: str, model: str, organization_id: str, status: str, trained_tokens: int?, training_file: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/fine_tuning/jobs/{job_id}\n@desc Get a fine tuning job\n@required {job_id: str}\n@returns(200) {created_at: int, finished_at: int?, hyperparameters: map{n_epochs: int}, id: str, model: str, organization_id: str, status: str, trained_tokens: int?, training_file: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/fine_tuning/jobs/{job_id}/cancel\n@desc Cancel a fine tuning job\n@required {job_id: str}\n@returns(200) {created_at: int, finished_at: int?, hyperparameters: map{n_epochs: int}, id: str, model: str, organization_id: str, status: str, trained_tokens: int?, training_file: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/integrations\n@desc List Integrations\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/integrations/connections\n@desc List User Integrations\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/integrations/connections/{user_connection_id}\n@desc Delete Integration Connection\n@required {user_connection_id: str # The user integration connection identifier}\n@returns(204) No Content - Integration connection deleted successfully\n@errors {422: Validation Error}\n\n@endpoint GET /ai/integrations/connections/{user_connection_id}\n@desc Get User Integration connection By Id\n@required {user_connection_id: str # The connection id}\n@returns(200) {data: map{allowed_tools: [str], id: str, integration_id: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/integrations/{integration_id}\n@desc List Integration By Id\n@required {integration_id: str # The integration id}\n@returns(200) {available_tools: [str], description: str, display_name: str, id: str, logo_url: str, name: str, status: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/mcp_servers\n@desc List MCP Servers\n@optional {type: str, url: str, page[size]: int=20, page[number]: int=1}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/mcp_servers\n@desc Create MCP Server\n@required {name: str, type: str, url: str}\n@optional {allowed_tools: [str], api_key_ref: str}\n@returns(200) {allowed_tools: [str]?, api_key_ref: str?, created_at: str(date-time), id: str, name: str, type: str, url: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/mcp_servers/{mcp_server_id}\n@desc Delete MCP Server\n@required {mcp_server_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/mcp_servers/{mcp_server_id}\n@desc Get MCP Server\n@required {mcp_server_id: str}\n@returns(200) {allowed_tools: [str]?, api_key_ref: str?, created_at: str(date-time), id: str, name: str, type: str, url: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/mcp_servers/{mcp_server_id}\n@desc Update MCP Server\n@required {mcp_server_id: str}\n@optional {allowed_tools: [str], api_key_ref: str, created_at: str(date-time), id: str, name: str, type: str, url: str}\n@returns(200) {allowed_tools: [str]?, api_key_ref: str?, created_at: str(date-time), id: str, name: str, type: str, url: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions\n@desc List missions\n@optional {page[number]: int=1: any # Page number (1-based), page[size]: int=20 # Number of items per page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions\n@desc Create mission\n@required {name: str}\n@optional {description: str, execution_mode: str(external/managed), instructions: str, metadata: map, model: str}\n@returns(201) {data: map{created_at: str(date-time), description: str, execution_mode: str, instructions: str, metadata: map, mission_id: str(uuid), model: str, name: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/events\n@desc List recent events\n@optional {type: str, page[number]: int=1 # Page number (1-based), page[size]: int=50 # Number of items per page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/runs\n@desc List recent runs\n@optional {status: str, page[number]: int=1 # Page number (1-based), page[size]: int=20 # Number of items per page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/missions/{mission_id}\n@desc Delete mission\n@required {mission_id: str(uuid)}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}\n@desc Get mission\n@required {mission_id: str(uuid)}\n@returns(200) {data: map{created_at: str(date-time), description: str, execution_mode: str, instructions: str, metadata: map, mission_id: str(uuid), model: str, name: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/missions/{mission_id}\n@desc Update mission\n@required {mission_id: str(uuid)}\n@optional {description: str, execution_mode: str(external/managed), instructions: str, metadata: map, model: str, name: str}\n@returns(200) {data: map{created_at: str(date-time), description: str, execution_mode: str, instructions: str, metadata: map, mission_id: str(uuid), model: str, name: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/clone\n@desc Clone mission\n@required {mission_id: str}\n@returns(201) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/knowledge-bases\n@desc List knowledge bases\n@required {mission_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/knowledge-bases\n@desc Create knowledge base\n@required {mission_id: str}\n@returns(201) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n@desc Delete knowledge base\n@required {mission_id: str, knowledge_base_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n@desc Get knowledge base\n@required {mission_id: str, knowledge_base_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}\n@desc Update knowledge base\n@required {mission_id: str, knowledge_base_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/mcp-servers\n@desc List MCP servers\n@required {mission_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/mcp-servers\n@desc Create MCP server\n@required {mission_id: str}\n@returns(201) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n@desc Delete MCP server\n@required {mission_id: str, mcp_server_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n@desc Get MCP server\n@required {mission_id: str, mcp_server_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}\n@desc Update MCP server\n@required {mission_id: str, mcp_server_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs\n@desc List runs for mission\n@required {mission_id: str(uuid)}\n@optional {status: str, page[number]: int=1 # Page number (1-based), page[size]: int=20 # Number of items per page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs\n@desc Start a run\n@required {mission_id: str(uuid)}\n@optional {input: map, metadata: map}\n@returns(201) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}\n@desc Get run details\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PATCH /ai/missions/{mission_id}/runs/{run_id}\n@desc Update run\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@optional {error: str, metadata: map, result_payload: map, result_summary: str, status: str(pending/running/paused/succeeded/failed/cancelled)}\n@returns(200) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/cancel\n@desc Cancel run\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}/events\n@desc List events\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@optional {type: str, step_id: str, agent_id: str, page[number]: int=1 # Page number (1-based), page[size]: int=50 # Number of items per page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/events\n@desc Log event\n@required {mission_id: str(uuid), run_id: str(uuid), summary: str, type: str(status_change/step_started/step_completed/step_failed/tool_call/tool_result/message/error/custom)}\n@optional {agent_id: str, idempotency_key: str # Prevents duplicate events on retry, payload: map, step_id: str}\n@returns(201) {data: map{agent_id: str, event_id: str, idempotency_key: str, payload: map, run_id: str, step_id: str, summary: str, timestamp: str(date-time), type: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}\n@desc Get event details\n@required {mission_id: str(uuid), run_id: str(uuid), event_id: str}\n@returns(200) {data: map{agent_id: str, event_id: str, idempotency_key: str, payload: map, run_id: str, step_id: str, summary: str, timestamp: str(date-time), type: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/pause\n@desc Pause run\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}/plan\n@desc Get plan\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/plan\n@desc Create initial plan\n@required {mission_id: str(uuid), run_id: str(uuid), steps: [map{description!: str, metadata: map, parent_step_id: str, sequence!: int, step_id!: str}]}\n@returns(201) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/plan/steps\n@desc Add step(s) to plan\n@required {mission_id: str(uuid), run_id: str(uuid), steps: [map{description!: str, metadata: map, parent_step_id: str, sequence!: int, step_id!: str}]}\n@returns(201) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}\n@desc Get step details\n@required {mission_id: str(uuid), run_id: str(uuid), step_id: str}\n@returns(200) {data: map{completed_at: str(date-time), description: str, metadata: map, parent_step_id: str, run_id: str(uuid), sequence: int, started_at: str(date-time), status: str, step_id: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PATCH /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}\n@desc Update step status\n@required {mission_id: str(uuid), run_id: str(uuid), step_id: str}\n@optional {metadata: map, status: str(pending/in_progress/completed/skipped/failed)}\n@returns(200) {data: map{completed_at: str(date-time), description: str, metadata: map, parent_step_id: str, run_id: str(uuid), sequence: int, started_at: str(date-time), status: str, step_id: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/resume\n@desc Resume run\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: map{error: str, finished_at: str(date-time), input: map, metadata: map, mission_id: str(uuid), result_payload: map, result_summary: str, run_id: str(uuid), started_at: str(date-time), status: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents\n@desc List linked Telnyx agents\n@required {mission_id: str(uuid), run_id: str(uuid)}\n@returns(200) {data: [map]} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents\n@desc Link Telnyx agent to run\n@required {mission_id: str(uuid), run_id: str(uuid), telnyx_agent_id: str # The Telnyx AI agent ID to link}\n@returns(201) {data: map{created_at: str(date-time), run_id: str, telnyx_agent_id: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}\n@desc Unlink Telnyx agent\n@required {mission_id: str(uuid), run_id: str(uuid), telnyx_agent_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/tools\n@desc List tools\n@required {mission_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/missions/{mission_id}/tools\n@desc Create tool\n@required {mission_id: str}\n@returns(201) Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/missions/{mission_id}/tools/{tool_id}\n@desc Delete tool\n@required {mission_id: str, tool_id: str}\n@returns(204) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/missions/{mission_id}/tools/{tool_id}\n@desc Get tool\n@required {mission_id: str, tool_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint PUT /ai/missions/{mission_id}/tools/{tool_id}\n@desc Update tool\n@required {mission_id: str, tool_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/models\n@desc Get available models\n@returns(200) {data: [map], object: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/openai/embeddings\n@desc Create embeddings\n@required {input: any # Input text to embed. Can be a string or array of strings., model: str # ID of the model to use. Use the List embedding models endpoint to see available models.}\n@optional {dimensions: int # The number of dimensions the resulting output embeddings should have. Only supported in some models., encoding_format: str(float/base64)=float # The format to return the embeddings in., user: str # A unique identifier representing your end-user for monitoring and abuse detection.}\n@returns(200) {data: [map], model: str, object: str, usage: map{prompt_tokens: int, total_tokens: int}} # Successful Response\n@errors {422: Validation Error}\n@example_request {\"input\":\"The quick brown fox jumps over the lazy dog\",\"model\":\"thenlper/gte-large\"}\n\n@endpoint GET /ai/openai/embeddings/models\n@desc List embedding models\n@returns(200) {data: [map], object: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/summarize\n@desc Summarize file content\n@required {bucket: str # The name of the bucket that contains the file to be summarized., filename: str # The name of the file to be summarized.}\n@optional {system_prompt: str # A system prompt to guide the summary generation.}\n@returns(200) {data: map{summary: str}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/tools\n@desc List Tools\n@optional {filter[type]: str, filter[name]: str, page[size]: int=20, page[number]: int=1: any}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint POST /ai/tools\n@desc Create Tool\n@required {display_name: str, type: str}\n@optional {function: map, handoff: map, invite: map, retrieval: map, timeout_ms: int=5000, webhook: map}\n@returns(200) {created_at: str, display_name: str, id: str, timeout_ms: int, tool_definition: map, type: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint DELETE /ai/tools/{tool_id}\n@desc Delete Tool\n@required {tool_id: str}\n@returns(200) Successful Response\n@errors {422: Validation Error}\n\n@endpoint GET /ai/tools/{tool_id}\n@desc Get Tool\n@required {tool_id: str}\n@returns(200) {created_at: str, display_name: str, id: str, timeout_ms: int, tool_definition: map, type: str} # Successful Response\n@errors {422: Validation Error}\n\n@endpoint PATCH /ai/tools/{tool_id}\n@desc Update Tool\n@required {tool_id: str}\n@optional {display_name: str, function: map, handoff: map, invite: map, retrieval: map, timeout_ms: int, type: str, webhook: map}\n@returns(200) {created_at: str, display_name: str, id: str, timeout_ms: int, tool_definition: map, type: str} # Successful Response\n@errors {422: Validation Error}\n\n@endgroup\n\n@group alphanumeric_sender_ids\n@endpoint GET /alphanumeric_sender_ids\n@desc List alphanumeric sender IDs\n@optional {filter[messaging_profile_id]: str(uuid): any # Filter by messaging profile ID., page[number]: int=1 # Page number., page[size]: int=20 # Page size.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of alphanumeric sender IDs.\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint POST /alphanumeric_sender_ids\n@desc Create an alphanumeric sender ID\n@required {alphanumeric_sender_id: str # The alphanumeric sender ID string., messaging_profile_id: str(uuid) # The messaging profile to associate the sender ID with.}\n@optional {us_long_code_fallback: str # A US long code number to use as fallback when sending to US destinations.}\n@returns(201) {data: map{alphanumeric_sender_id: str, id: str(uuid), messaging_profile_id: str(uuid), organization_id: str, record_type: str, us_long_code_fallback: str}} # Successful response with a single alphanumeric sender ID.\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint DELETE /alphanumeric_sender_ids/{id}\n@desc Delete an alphanumeric sender ID\n@required {id: str # The identifier of the alphanumeric sender ID.}\n@returns(200) {data: map{alphanumeric_sender_id: str, id: str(uuid), messaging_profile_id: str(uuid), organization_id: str, record_type: str, us_long_code_fallback: str}} # Successful response with a single alphanumeric sender ID.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint GET /alphanumeric_sender_ids/{id}\n@desc Retrieve an alphanumeric sender ID\n@required {id: str # The identifier of the alphanumeric sender ID.}\n@returns(200) {data: map{alphanumeric_sender_id: str, id: str(uuid), messaging_profile_id: str(uuid), organization_id: str, record_type: str, us_long_code_fallback: str}} # Successful response with a single alphanumeric sender ID.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endgroup\n\n@group audit_events\n@endpoint GET /audit_events\n@desc List Audit Logs\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[created_before], filter[created_after], sort: str(asc/desc) # Set the order of the results by the creation date.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A list of audit log entries.\n@errors {401: Unexpected error.}\n\n@endgroup\n\n@group authentication_providers\n@endpoint GET /authentication_providers\n@desc List all SSO authentication providers\n@optional {sort: str(name/-name/short_name/-short_name/active/-active/created_at/-created_at/updated_at/-updated_at)=-created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the - prefix. That is:         name: sorts the result by the     name field in ascending order.           -name: sorts the result by the     name field in descending order.    If not given, results are sorted by created_at in descending order., page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /authentication_providers\n@desc Creates an authentication provider\n@required {name: str # The name associated with the authentication provider., settings: map{idp_cert_fingerprint!: str, idp_cert_fingerprint_algorithm: str, idp_entity_id!: str(uri), idp_sso_target_url!: str(uri)} # The settings associated with the authentication provider., short_name: str # 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.}\n@optional {active: bool=true # The active status of the authentication provider, settings_url: str(uri) # The URL for the identity provider metadata file to populate the settings automatically. If the settings attribute is provided, that will be used instead.}\n@returns(200) {data: map{activated_at: str(date-time), active: bool, created_at: str(date-time), id: str(uuid), name: str, organization_id: str(uuid), record_type: str, settings: map{assertion_consumer_service_url: str(uri), idp_attribute_names: map, idp_cert_fingerprint: str, idp_cert_fingerprint_algorithm: str, idp_certificate: str, idp_entity_id: str(uri), idp_slo_target_url: str(uri), idp_sso_target_url: str(uri), name_identifier_format: str, provision_groups: bool, service_provider_entity_id: str(uri), service_provider_login_url: str(uri)}, short_name: str, updated_at: str(date-time)}} # Successful response\n@errors {422: Bad request}\n\n@endpoint DELETE /authentication_providers/{id}\n@desc Deletes an authentication provider\n@required {id: str # authentication provider ID}\n@returns(200) {data: map{activated_at: str(date-time), active: bool, created_at: str(date-time), id: str(uuid), name: str, organization_id: str(uuid), record_type: str, settings: map{assertion_consumer_service_url: str(uri), idp_attribute_names: map, idp_cert_fingerprint: str, idp_cert_fingerprint_algorithm: str, idp_certificate: str, idp_entity_id: str(uri), idp_slo_target_url: str(uri), idp_sso_target_url: str(uri), name_identifier_format: str, provision_groups: bool, service_provider_entity_id: str(uri), service_provider_login_url: str(uri)}, short_name: str, updated_at: str(date-time)}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /authentication_providers/{id}\n@desc Retrieve an authentication provider\n@required {id: str # authentication provider ID}\n@returns(200) {data: map{activated_at: str(date-time), active: bool, created_at: str(date-time), id: str(uuid), name: str, organization_id: str(uuid), record_type: str, settings: map{assertion_consumer_service_url: str(uri), idp_attribute_names: map, idp_cert_fingerprint: str, idp_cert_fingerprint_algorithm: str, idp_certificate: str, idp_entity_id: str(uri), idp_slo_target_url: str(uri), idp_sso_target_url: str(uri), name_identifier_format: str, provision_groups: bool, service_provider_entity_id: str(uri), service_provider_login_url: str(uri)}, short_name: str, updated_at: str(date-time)}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint PATCH /authentication_providers/{id}\n@desc Update an authentication provider\n@required {id: str # Identifies the resource.}\n@optional {active: bool=true # The active status of the authentication provider, name: str # The name associated with the authentication provider., settings: map{idp_cert_fingerprint!: str, idp_cert_fingerprint_algorithm: str, idp_entity_id!: str(uri), idp_sso_target_url!: str(uri)} # The settings associated with the authentication provider., settings_url: str(uri) # The URL for the identity provider metadata file to populate the settings automatically. If the settings attribute is provided, that will be used instead., short_name: str # 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.}\n@returns(200) {data: map{activated_at: str(date-time), active: bool, created_at: str(date-time), id: str(uuid), name: str, organization_id: str(uuid), record_type: str, settings: map{assertion_consumer_service_url: str(uri), idp_attribute_names: map, idp_cert_fingerprint: str, idp_cert_fingerprint_algorithm: str, idp_certificate: str, idp_entity_id: str(uri), idp_slo_target_url: str(uri), idp_sso_target_url: str(uri), name_identifier_format: str, provision_groups: bool, service_provider_entity_id: str(uri), service_provider_login_url: str(uri)}, short_name: str, updated_at: str(date-time)}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n@example_request {\"active\":true,\"name\":\"Okta\",\"settings\":{\"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\",\"idp_entity_id\":\"https://myorg.myidp.com/saml/metadata\",\"idp_sso_target_url\":\"https://myorg.myidp.com/trust/saml2/http-post/sso\"},\"short_name\":\"myorg\"}\n\n@endgroup\n\n@group available_phone_number_blocks\n@endpoint GET /available_phone_number_blocks\n@desc List available phone number blocks\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[locality], filter[country_code], filter[national_destination_code], filter[phone_number_type]}\n@returns(200) {data: [map], meta: map{best_effort_results: int, total_results: int}} # Successful response with a list of available phone numbers blocks.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group available_phone_numbers\n@endpoint GET /available_phone_numbers\n@desc List available phone numbers\n@optional {filter: map # 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]}\n@returns(200) {data: [map], meta: map{best_effort_results: int, total_results: int}, metadata: map{best_effort_results: int, total_results: int}} # Successful response with a list of available phone numbers.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group balance\n@endpoint GET /balance\n@desc Get user balance details\n@returns(200) {data: map{available_credit: str, balance: str, credit_limit: str, currency: str, pending: str, record_type: str}} # Get user balance details\n@errors {403: Insufficient permissions to access balance information, 422: Invalid or missing account information, 503: Service temporarily unavailable}\n\n@endgroup\n\n@group billing_groups\n@endpoint GET /billing_groups\n@desc List all billing groups\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A paginated array of billing groups\n@errors {400: Invalid request parameters}\n\n@endpoint POST /billing_groups\n@desc Create a billing group\n@optional {name: str # A name for the billing group}\n@returns(200) {data: map{created_at: str(date-time), deleted_at: str(date-time)?, id: str(uuid), name: str, organization_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Expected billing group response to a valid request\n@errors {409: Resource conflict or in use, 422: Invalid request data}\n@example_request {\"name\":\"string\"}\n\n@endpoint DELETE /billing_groups/{id}\n@desc Delete a billing group\n@required {id: str(uuid) # The id of the billing group}\n@returns(200) {data: map{created_at: str(date-time), deleted_at: str(date-time)?, id: str(uuid), name: str, organization_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Expected billing group response to a valid request\n@errors {403: Insufficient permissions to access billing group, 404: Billing group not found, 409: Resource conflict or in use, 422: Invalid request data}\n\n@endpoint GET /billing_groups/{id}\n@desc Get a billing group\n@required {id: str(uuid) # The id of the billing group}\n@returns(200) {data: map{created_at: str(date-time), deleted_at: str(date-time)?, id: str(uuid), name: str, organization_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Expected billing group response to a valid request\n@errors {403: Insufficient permissions to access billing group, 404: Billing group not found}\n\n@endpoint PATCH /billing_groups/{id}\n@desc Update a billing group\n@required {id: str(uuid) # The id of the billing group}\n@optional {name: str # A name for the billing group}\n@returns(200) {data: map{created_at: str(date-time), deleted_at: str(date-time)?, id: str(uuid), name: str, organization_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Expected billing group response to a valid request\n@errors {403: Insufficient permissions to access billing group, 404: Billing group not found, 422: Invalid request data}\n@example_request {\"name\":\"string\"}\n\n@endgroup\n\n@group bulk_sim_card_actions\n@endpoint GET /bulk_sim_card_actions\n@desc List bulk SIM card actions\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[action_type]: str(bulk_disable_voice/bulk_enable_voice/bulk_set_public_ips) # Filter by action type.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /bulk_sim_card_actions/{id}\n@desc Get bulk SIM card action details\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map, sim_card_actions_summary: [map], updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group bundle_pricing\n@endpoint GET /bundle_pricing/billing_bundles\n@desc Retrieve Bundles\n@optional {filter: map # Consolidated filter parameter (deepObject style). Supports filtering by country_iso and resource. Examples: filter[country_iso]=US or filter[resource]=+15617819942, page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], authorization_bearer: str # Format: Bearer}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {400: Invalid request parameters, 401: Authentication required or invalid credentials}\n\n@endpoint GET /bundle_pricing/billing_bundles/{bundle_id}\n@desc Get Bundle By Id\n@required {bundle_id: str(uuid)}\n@optional {authorization_bearer: str # Format: Bearer}\n@returns(200) {data: map{active: bool, bundle_limits: [map], cost_code: str, created_at: str(date), id: str(uuid), is_public: bool, name: str, slug: str}} # Successful Response\n@errors {401: Authentication required or invalid credentials, 404: Resource not found}\n\n@endpoint GET /bundle_pricing/user_bundles\n@desc Get User Bundles\n@optional {filter: map # Consolidated filter parameter (deepObject style). Supports filtering by country_iso and resource. Examples: filter[country_iso]=US or filter[resource]=+15617819942, page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], authorization_bearer: str # Format: Bearer}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {400: Invalid request parameters, 401: Authentication required or invalid credentials}\n\n@endpoint POST /bundle_pricing/user_bundles/bulk\n@desc Create User Bundles\n@optional {authorization_bearer: str # Format: Bearer, idempotency_key: str(uuid) # Idempotency key for the request. Can be any UUID, but should always be unique for each request., items: [map{billing_bundle_id!: str(uuid), quantity!: int}]}\n@returns(201) {data: [map]} # Successful Response\n@errors {400: Invalid request parameters, 401: Authentication required or invalid credentials, 404: Resource not found, 422: Request cannot be processed}\n\n@endpoint GET /bundle_pricing/user_bundles/unused\n@desc Get Unused User Bundles\n@optional {filter: map # Consolidated filter parameter (deepObject style). Supports filtering by country_iso and resource. Examples: filter[country_iso]=US or filter[resource]=+15617819942, authorization_bearer: str # Format: Bearer}\n@returns(200) {data: [map]} # Successful Response\n@errors {400: Invalid request parameters, 401: Authentication required or invalid credentials}\n\n@endpoint DELETE /bundle_pricing/user_bundles/{user_bundle_id}\n@desc Deactivate User Bundle\n@required {user_bundle_id: str(uuid)}\n@optional {authorization_bearer: str # Format: Bearer}\n@returns(200) {data: map{active: bool, billing_bundle: map{cost_code: str, created_at: str(date), currency: str, id: str(uuid), is_public: bool, mrc_price: num(float), name: str, slug: str, specs: [str]}, created_at: str(date), id: str(uuid), resources: [map], updated_at: str(date)?, user_id: str(uuid)}} # Successful Response\n@errors {401: Authentication required or invalid credentials, 404: Resource not found, 422: Request cannot be processed}\n\n@endpoint GET /bundle_pricing/user_bundles/{user_bundle_id}\n@desc Get User Bundle by Id\n@required {user_bundle_id: str(uuid)}\n@optional {authorization_bearer: str # Format: Bearer}\n@returns(200) {data: map{active: bool, billing_bundle: map{cost_code: str, created_at: str(date), currency: str, id: str(uuid), is_public: bool, mrc_price: num(float), name: str, slug: str, specs: [str]}, created_at: str(date), id: str(uuid), resources: [map], updated_at: str(date)?, user_id: str(uuid)}} # Successful Response\n@errors {401: Authentication required or invalid credentials, 404: Resource not found}\n\n@endpoint GET /bundle_pricing/user_bundles/{user_bundle_id}/resources\n@desc Get User Bundle Resources\n@required {user_bundle_id: str(uuid)}\n@optional {authorization_bearer: str # Format: Bearer}\n@returns(200) {data: [map]} # Successful Response\n@errors {401: Authentication required or invalid credentials, 404: Resource not found}\n\n@endgroup\n\n@group call_control_applications\n@endpoint GET /call_control_applications\n@desc List call control applications\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number], sort: str(created_at/connection_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         connection_name: sorts the result by the     connection_name field in ascending order.            -connection_name: sorts the result by the     connection_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of call control applications.\n@errors {400: Bad request, 401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: Resource not found}\n\n@endpoint POST /call_control_applications\n@desc Create a call control application\n@required {application_name: str # A user-assigned name to help manage the application., webhook_event_url: str(url) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/London, UK/Chennai, IN/Amsterdam, Netherlands/Toronto, Canada/Sydney, Australia)=Latency # 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., call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this Call Control Application., dtmf_type: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., first_command_timeout: bool=false # Specifies whether calls to phone numbers associated with this connection should hangup after timing out., first_command_timeout_secs: int=30 # Specifies how many seconds to wait before timing out a dial command., inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, redact_dtmf_debug_logging: bool=false # When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(url)= # 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'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, anchorsite_override: str, application_name: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, redact_dtmf_debug_logging: bool, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(url)?, webhook_event_url: str(url), webhook_timeout_secs: int?}} # Successful response with details about a call control application.\n@errors {422: Bad Request}\n\n@endpoint DELETE /call_control_applications/{id}\n@desc Delete a call control application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, redact_dtmf_debug_logging: bool, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(url)?, webhook_event_url: str(url), webhook_timeout_secs: int?}} # Successful response with details about a call control application.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: Resource not found, 422: Bad request}\n\n@endpoint GET /call_control_applications/{id}\n@desc Retrieve a call control application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, redact_dtmf_debug_logging: bool, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(url)?, webhook_event_url: str(url), webhook_timeout_secs: int?}} # Successful response with details about a call control application.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: Resource not found, 422: Bad request}\n\n@endpoint PATCH /call_control_applications/{id}\n@desc Update a call control application\n@required {id: str # Identifies the resource., application_name: str # A user-assigned name to help manage the application., webhook_event_url: str(url) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/London, UK/Chennai, IN/Amsterdam, Netherlands/Toronto, Canada/Sydney, Australia)=Latency # 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., call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this Call Control Application., dtmf_type: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., first_command_timeout: bool=false # Specifies whether calls to phone numbers associated with this connection should hangup after timing out., first_command_timeout_secs: int=30 # Specifies how many seconds to wait before timing out a dial command., inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, redact_dtmf_debug_logging: bool=false # When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered through IVR interactions., tags: [str] # Tags assigned to the Call Control Application., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(url)= # 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'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, redact_dtmf_debug_logging: bool, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(url)?, webhook_event_url: str(url), webhook_timeout_secs: int?}} # Successful response with details about a call control application.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: Resource not found, 422: Bad request}\n\n@endgroup\n\n@group call_events\n@endpoint GET /call_events\n@desc List call events\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of call events.\n@errors {422: 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.}\n\n@endgroup\n\n@group calls\n@endpoint POST /calls\n@desc Dial\n@required {connection_id: str # The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination., from: str # The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format., to: any # The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings}\n@optional {answering_machine_detection: str(premium/detect/detect_beep/detect_words/greeting_end/disabled)=disabled # 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., answering_machine_detection_config: map{after_greeting_silence_millis: int(int32), between_words_silence_millis: int(int32), greeting_duration_millis: int(int32), greeting_silence_duration_millis: int(int32), greeting_total_analysis_time_millis: int(int32), initial_silence_millis: int(int32), maximum_number_of_words: int(int32), maximum_word_length_millis: int(int32), silence_threshold: int(int32), total_analysis_time_millis: int(int32)} # Optional configuration parameters to modify 'answering_machine_detection' performance., audio_url: str # 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., billing_group_id: str(uuid) # Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID., bridge_intent: bool=false # 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., bridge_on_answer: bool=false # Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`., conference_config: map{beep_enabled: str, conference_name: str, early_media: bool, end_conference_on_exit: bool, hold: bool, hold_audio_url: str, hold_media_name: str, id: str(uuid), mute: bool, soft_end_conference_on_exit: bool, start_conference_on_create: bool, start_conference_on_enter: bool, supervisor_role: str, whisper_call_control_ids: [str]} # Optional configuration parameters to dial new participant into a conference., custom_headers: [map{name!: str, value!: str}] # Custom headers to be added to the SIP INVITE., dialogflow_config: map{analyze_sentiment: bool, partial_automated_agent_reply: bool}, enable_dialogflow: bool=false # Enables Dialogflow for the current call. The default value is false., from_display_name: str # 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., link_to: str # Use another call's control id for sharing the same call session id, media_encryption: str(disabled/SRTP/DTLS)=disabled # Defines whether media should be encrypted on the call., media_name: str # 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., park_after_unbridge: str # 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., preferred_codecs: str # The list of comma-separated codecs in a preferred order for the forked media to be received., prevent_double_bridge: bool=false # Prevents bridging and hangs up the call if the target is already bridged. Disabled by default., record: str # Start recording automatically after an event. Disabled by default., record_channels: str(single/dual)=dual # Defines which channel should be recorded ('single' or 'dual') when `record` is specified., record_custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., record_format: str(wav/mp3)=mp3 # Defines the format of the recording ('wav' or 'mp3') when `record` is specified., record_max_length: int(int32)=0 # 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)., record_timeout_secs: int(int32)=0 # 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)., record_track: str(both/inbound/outbound)=both # 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)., record_trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording., send_silence_when_idle: bool=false # Generate silence RTP packets when no transmission available., sip_auth_password: str # SIP Authentication password used for SIP challenges., sip_auth_username: str # SIP Authentication username used for SIP challenges., sip_headers: [map{name!: str, value!: str}] # SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported., sip_region: str(US/Europe/Canada/Australia/Middle East)=US # Defines the SIP region to be used for the call., sip_transport_protocol: str(UDP/TCP/TLS)=UDP # Defines SIP transport protocol to be used on the call., sound_modifications: map{octaves: num(float), pitch: num(float), semitone: num(float), track: str} # Use this field to modify sound effects, for example adjust the pitch., stream_auth_token: str # An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters., stream_bidirectional_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16)=PCMU # Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive., stream_bidirectional_mode: str(mp3/rtp)=mp3 # Configures method of bidirectional streaming (mp3, rtp)., stream_bidirectional_sampling_rate: int(8000/16000/22050/24000/48000)=8000 # Audio sampling rate., stream_bidirectional_target_legs: str(both/self/opposite)=opposite # Specifies which call legs should receive the bidirectional stream audio., stream_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16/default)=default # 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., stream_establish_before_call_originate: bool=false # Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish., stream_track: str(inbound_track/outbound_track/both_tracks)=inbound_track # Specifies which track should be streamed., stream_url: str # The destination WebSocket address where the stream is going to be delivered., supervise_call_control_id: str # The call leg which will be supervised by the new call., supervisor_role: str(barge/whisper/monitor)=barge # 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., time_limit_secs: int(int32)=14400 # 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., timeout_secs: int(int32)=30 # 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., transcription: bool=false # Enable transcription upon call answer. The default value is false., transcription_config: map{client_state: str, command_id: str, transcription_engine: str, transcription_engine_config: any, transcription_tracks: str}, webhook_url: str # Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call., webhook_url_method: str(POST/GET)=POST # HTTP request type used for `webhook_url`.}\n@returns(200) {data: map{call_control_id: str, call_duration: int, call_leg_id: str, call_session_id: str, client_state: str, end_time: str, is_alive: bool, record_type: str, recording_id: str(uuid), start_time: str}} # Successful response with details about a call status that includes recording_id.\n@errors {400: 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., 422: 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., 500: Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled exceptions or system failures., 503: Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded.}\n\n@endpoint GET /calls/{call_control_id}\n@desc Retrieve a call status\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@returns(200) {data: map{call_control_id: str, call_duration: int, call_leg_id: str, call_session_id: str, client_state: str, end_time: str, is_alive: bool, record_type: str, start_time: str}} # Successful response with details about a call status.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/ai_assistant_add_messages\n@desc Add messages to AI Assistant\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., messages: [any] # The messages to add to the conversation.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/ai_assistant_join\n@desc Join AI Assistant Conversation\n@required {call_control_id: str # Unique identifier and token for controlling the call, conversation_id: str # The ID of the AI assistant conversation to join., participant: map{id!: str, name: str, on_hangup: str, role!: str}}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{conversation_id: str(uuid), result: str}} # Successful response upon making a call control command that includes conversation_id.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/ai_assistant_start\n@desc Start AI Assistant\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {assistant: map{id: str, instructions: str, openai_api_key_ref: str} # AI Assistant configuration, client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., greeting: str # Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit., interruption_settings: map{enable: bool} # Settings for handling user interruptions during assistant speech, message_history: [any]= # 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., participants: [map{id!: str, name: str, on_hangup: str, role!: str}]= # A list of participants to add to the conversation when it starts., send_message_history_updates: bool=false # When `true`, a webhook is sent each time the conversation message history is updated., transcription: map{model: str} # 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., voice: str=Telnyx.KokoroTTS.af # The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.   **Supported Providers:** - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).) - **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).  - **Telnyx:** Use `Telnyx..` - **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`., voice_settings: any # The settings associated with the voice selected}\n@returns(200) {data: map{conversation_id: str(uuid), result: str}} # Successful response upon making a call control command that includes conversation_id.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/ai_assistant_stop\n@desc Stop AI Assistant\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/answer\n@desc Answer call\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {billing_group_id: str(uuid) # Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., custom_headers: [map{name!: str, value!: str}] # Custom headers to be added to the SIP INVITE response., preferred_codecs: str # The list of comma-separated codecs in a preferred order for the forked media to be received., record: str # Start recording automatically after an event. Disabled by default., record_channels: str(single/dual)=dual # Defines which channel should be recorded ('single' or 'dual') when `record` is specified., record_custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., record_format: str(wav/mp3)=mp3 # Defines the format of the recording ('wav' or 'mp3') when `record` is specified., record_max_length: int(int32)=0 # 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)., record_timeout_secs: int(int32)=0 # 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)., record_track: str(both/inbound/outbound)=both # 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)., record_trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording., send_silence_when_idle: bool=false # Generate silence RTP packets when no transmission available., sip_headers: [map{name!: str, value!: str}] # SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported., sound_modifications: map{octaves: num(float), pitch: num(float), semitone: num(float), track: str} # Use this field to modify sound effects, for example adjust the pitch., stream_bidirectional_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16)=PCMU # Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive., stream_bidirectional_mode: str(mp3/rtp)=mp3 # Configures method of bidirectional streaming (mp3, rtp)., stream_bidirectional_target_legs: str(both/self/opposite)=opposite # Specifies which call legs should receive the bidirectional stream audio., stream_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16/default)=default # 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., stream_track: str(inbound_track/outbound_track/both_tracks)=inbound_track # Specifies which track should be streamed., stream_url: str # The destination WebSocket address where the stream is going to be delivered., transcription: bool=false # Enable transcription upon call answer. The default value is false., transcription_config: map{client_state: str, command_id: str, transcription_engine: str, transcription_engine_config: any, transcription_tracks: str}, webhook_retries_policies: map # 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., webhook_url: str # Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call., webhook_url_method: str(POST/GET)=POST # HTTP request type used for `webhook_url`., webhook_urls: map # A map of event types to webhook URLs. When an event of the specified type occurs, the webhook URL associated with that event type will be called instead of `webhook_url`. Events not mapped here will use the default `webhook_url`., webhook_urls_method: str(POST/GET)=POST # HTTP request method to invoke `webhook_urls`.}\n@returns(200) {data: map{recording_id: str(uuid), result: str}} # Successful response upon making a call control command that includes recording_id.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/bridge\n@desc Bridge calls\n@required {call_control_id: str # Unique identifier and token for controlling the call, call_control_id: str # 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.}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., hold_after_unbridge: bool # 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., mute_dtmf: str(none/both/self/opposite)=none # When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent., park_after_unbridge: str # 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., play_ringtone: bool=false # Specifies whether to play a ringtone if the call you want to bridge with has not yet been answered., prevent_double_bridge: bool=false # When set to `true`, it prevents bridging if the target call is already bridged to another call. Disabled by default., queue: str # 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., record: str # Start recording automatically after an event. Disabled by default., record_channels: str(single/dual)=dual # Defines which channel should be recorded ('single' or 'dual') when `record` is specified., record_custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., record_format: str(wav/mp3)=mp3 # Defines the format of the recording ('wav' or 'mp3') when `record` is specified., record_max_length: int(int32)=0 # 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)., record_timeout_secs: int(int32)=0 # 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)., record_track: str(both/inbound/outbound)=both # 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)., record_trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording., ringtone: str(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)=us # Specifies which country ringtone to play when `play_ringtone` is set to `true`. If not set, the US ringtone will be played., video_room_context: str # 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., video_room_id: str(uuid) # The ID of the video room you want to bridge with, can't be used together with call_control_id parameter or queue parameter.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint PUT /calls/{call_control_id}/actions/client_state_update\n@desc Update client state\n@required {call_control_id: str # Unique identifier and token for controlling the call, client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/enqueue\n@desc Enqueue call\n@required {call_control_id: str # Unique identifier and token for controlling the call, queue_name: str # 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.}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., keep_after_hangup: bool=false # 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., max_size: int=100 # The maximum number of calls allowed in the queue at a given time. Can't be modified for an existing queue., max_wait_time_secs: int # The number of seconds after which the call will be removed from the queue.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/fork_start\n@desc Forking start\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., rx: str # The network target, , where the call's incoming RTP media packets should be forwarded., stream_type: str=decrypted # 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., tx: str # The network target, , where the call's outgoing RTP media packets should be forwarded.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/fork_stop\n@desc Forking stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., stream_type: str(raw/decrypted)=raw # Optionally specify a `stream_type`. This should match the `stream_type` that was used in `fork_start` command to properly stop the fork.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/gather\n@desc Gather\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., gather_id: str # An id that will be sent back in the corresponding `call.gather.ended` webhook. Will be randomly generated if not specified., initial_timeout_millis: int(int32)=5000 # The number of milliseconds to wait for the first DTMF., inter_digit_timeout_millis: int(int32)=5000 # The number of milliseconds to wait for input between digits., maximum_digits: int(int32)=128 # The maximum number of digits to fetch. This parameter has a maximum value of 128., minimum_digits: int(int32)=1 # The minimum number of digits to fetch. This parameter has a minimum value of 1., terminating_digit: str=# # The digit used to terminate input if fewer than `maximum_digits` digits have been gathered., timeout_millis: int(int32)=60000 # The number of milliseconds to wait to complete the request., valid_digits: str=0123456789#* # A list of all digits accepted as valid.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/gather_stop\n@desc Gather stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/gather_using_ai\n@desc Gather using AI\n@required {call_control_id: str # Unique identifier and token for controlling the call, parameters: map # 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}\n@optional {assistant: map{instructions: str, model: str, openai_api_key_ref: str, tools: [any]} # Assistant configuration including choice of LLM, custom instructions, and tools., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., gather_ended_speech: str # Text that will be played when the gathering has finished. There is a 3,000 character limit., greeting: str # Text that will be played when the gathering starts, if none then nothing will be played when the gathering starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit., interruption_settings: map{enable: bool} # Settings for handling user interruptions during assistant speech, language: any, message_history: [map{content: str, role: str}] # 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., send_message_history_updates: bool # 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., send_partial_results: bool # 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., transcription: map{model: str} # 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., user_response_timeout_ms: int=10000 # The maximum time in milliseconds to wait for user response before timing out., voice: str=Telnyx.KokoroTTS.af # The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.   **Supported Providers:** - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).) - **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).  - **Telnyx:** Use `Telnyx..` - **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`., voice_settings: any # The settings associated with the voice selected}\n@returns(200) {data: map{conversation_id: str(uuid), result: str}} # Successful response upon making a call control command that includes conversation_id.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/gather_using_audio\n@desc Gather using audio\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {audio_url: str # 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., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., inter_digit_timeout_millis: int(int32)=5000 # The number of milliseconds to wait for input between digits., invalid_audio_url: str # 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., invalid_media_name: str # 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., maximum_digits: int(int32)=128 # The maximum number of digits to fetch. This parameter has a maximum value of 128., maximum_tries: int(int32)=3 # The maximum number of times the file should be played if there is no input from the user on the call., media_name: str # 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., minimum_digits: int(int32)=1 # The minimum number of digits to fetch. This parameter has a minimum value of 1., terminating_digit: str=# # The digit used to terminate input if fewer than `maximum_digits` digits have been gathered., timeout_millis: int(int32)=60000 # The number of milliseconds to wait for a DTMF response after file playback ends before a replaying the sound file., valid_digits: str=0123456789#* # A list of all digits accepted as valid.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/gather_using_speak\n@desc Gather using speak\n@required {call_control_id: str # Unique identifier and token for controlling the call, payload: str # The text or SSML to be converted into speech. There is a 3,000 character limit., voice: str # Specifies the voice used in speech synthesis.  - Define voices using the format `..`. Specifying only the provider will give default values for voice_id and model_id.   **Supported Providers:** - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery). Use `voice_settings` to configure custom deployments, regions, or API keys. - **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices). - **Telnyx:** Use `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters. - **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost. - **Rime:** Use `Rime..` (e.g., `Rime.Arcana.cove`). Supported model_ids: `Arcana`, `Mist`. Use `voice_settings` to configure voice_speed. - **Resemble:** Use `Resemble.Turbo.` (e.g., `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate, and format. - **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.  For service_level basic, you may define the gender of the speaker (male or female).}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., inter_digit_timeout_millis: int(int32)=5000 # The number of milliseconds to wait for input between digits., invalid_payload: str # 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., language: str(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) # The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified., maximum_digits: int(int32)=128 # The maximum number of digits to fetch. This parameter has a maximum value of 128., maximum_tries: int(int32)=3 # The maximum number of times that a file should be played back if there is no input from the user on the call., minimum_digits: int(int32)=1 # The minimum number of digits to fetch. This parameter has a minimum value of 1., payload_type: str(text/ssml)=text # The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML)., service_level: str(basic/premium)=premium # This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed., terminating_digit: str=# # The digit used to terminate input if fewer than `maximum_digits` digits have been gathered., timeout_millis: int(int32)=60000 # The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound file., valid_digits: str=0123456789#* # A list of all digits accepted as valid., voice_settings: any # The settings associated with the voice selected}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/hangup\n@desc Hangup call\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., custom_headers: [map{name!: str, value!: str}] # Custom headers to be added to the SIP BYE message.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/leave_queue\n@desc Remove call from a queue\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/playback_start\n@desc Play audio URL\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {audio_type: str(mp3/wav)=mp3 # Specifies the type of audio provided in `audio_url` or `playback_content`., audio_url: str # 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., cache_audio: bool=true # Caches the audio file. Useful when playing the same audio file multiple times during the call., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., loop: any, media_name: str # 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., overlay: bool=false # 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., playback_content: str # 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, stop: str # 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., target_legs: str=self # Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`, `opposite` or `both`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/playback_stop\n@desc Stop audio playback\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., overlay: bool=false # When enabled, it stops the audio being played in the overlay queue., stop: str=all # 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.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/record_pause\n@desc Record pause\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str(uuid) # Uniquely identifies the resource.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/record_resume\n@desc Record resume\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str(uuid) # Uniquely identifies the resource.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/record_start\n@desc Recording start\n@required {call_control_id: str # Unique identifier and token for controlling the call, channels: str(single/dual) # When `dual`, final audio file will be stereo recorded with the first leg on channel A, and the rest on channel B., format: str(wav/mp3) # The audio file format used when storing the call recording. Can be either `mp3` or `wav`.}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., max_length: int(int32)=0 # 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), play_beep: bool # If enabled, a beep sound will be played at the start of a recording., recording_track: str(both/inbound/outbound)=both # 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)., timeout_secs: int(int32)=0 # 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), transcription: bool=false # Enable post recording transcription. The default value is false., transcription_engine: str(A/B/deepgram/nova-3)=A # 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., transcription_language: str(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)=en-US # Language code for transcription. Note: Not all languages are supported by all transcription engines (google, telnyx, deepgram). See engine-specific documentation for supported values., transcription_max_speaker_count: int(int32)=6 # Defines maximum number of speakers in the conversation. Applies to `google` engine only., transcription_min_speaker_count: int(int32)=2 # Defines minimum number of speakers in the conversation. Applies to `google` engine only., transcription_profanity_filter: bool=false # Enables profanity_filter. Applies to `google` engine only., transcription_speaker_diarization: bool=false # Enables speaker diarization. Applies to `google` engine only., trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/record_stop\n@desc Recording stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str(uuid) # Uniquely identifies the resource.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/refer\n@desc SIP Refer a call\n@required {call_control_id: str # Unique identifier and token for controlling the call, sip_address: str # The SIP URI to which the call will be referred to.}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # 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., custom_headers: [map{name!: str, value!: str}] # Custom headers to be added to the SIP INVITE., sip_auth_password: str # SIP Authentication password used for SIP challenges., sip_auth_username: str # SIP Authentication username used for SIP challenges., sip_headers: [map{name!: str, value!: str}] # SIP headers to be added to the request. Currently only User-to-User header is supported.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/reject\n@desc Reject a call\n@required {call_control_id: str # Unique identifier and token for controlling the call, cause: str(CALL_REJECTED/USER_BUSY) # Cause for call rejection.}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/send_dtmf\n@desc Send DTMF\n@required {call_control_id: str # Unique identifier and token for controlling the call, digits: str # DTMF digits to send. Valid digits are 0-9, A-D, *, and #. Pauses can be added using w (0.5s) and W (1s).}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., duration_millis: int(int32)=250 # Specifies for how many milliseconds each digit will be played in the audio stream. Ranges from 100 to 500ms}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/send_sip_info\n@desc Send SIP info\n@required {call_control_id: str # Unique identifier and token for controlling the call, body: str # Content of the SIP INFO, content_type: str # Content type of the INFO body. Must be MIME type compliant. There is a 1,400 bytes limit}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/siprec_start\n@desc SIPREC start\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., connector_name: str # Name of configured SIPREC connector to be used., include_metadata_custom_headers: bool(true/false) # When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise, they’ll be added to sip headers., secure: bool(true/false) # 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., session_timeout_secs: int=1800 # 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., sip_transport: str(udp/tcp/tls)=udp # Specifies SIP transport protocol., siprec_track: str(inbound_track/outbound_track/both_tracks)=both_tracks # Specifies which track should be sent on siprec session.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/siprec_stop\n@desc SIPREC stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/speak\n@desc Speak text\n@required {call_control_id: str # Unique identifier and token for controlling the call, payload: str # The text or SSML to be converted into speech. There is a 3,000 character limit., voice: str # Specifies the voice used in speech synthesis.  - Define voices using the format `..`. Specifying only the provider will give default values for voice_id and model_id.   **Supported Providers:** - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery). Use `voice_settings` to configure custom deployments, regions, or API keys. - **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices). - **Telnyx:** Use `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters. - **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost. - **Rime:** Use `Rime..` (e.g., `Rime.Arcana.cove`). Supported model_ids: `Arcana`, `Mist`. Use `voice_settings` to configure voice_speed. - **Resemble:** Use `Resemble.Turbo.` (e.g., `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate, and format. - **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.  For service_level basic, you may define the gender of the speaker (male or female).}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., language: str(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) # The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified., loop: any, payload_type: str(text/ssml)=text # The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML)., service_level: str(basic/premium)=premium # This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed., stop: str # 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., target_legs: str(self/opposite/both)=self # Specifies which legs of the call should receive the spoken audio., voice_settings: any # The settings associated with the voice selected}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/streaming_start\n@desc Streaming start\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., custom_parameters: [map{name: str, value: str}] # Custom parameters to be sent as part of the WebSocket connection., dialogflow_config: map{analyze_sentiment: bool, partial_automated_agent_reply: bool}, enable_dialogflow: bool=false # Enables Dialogflow for the current call. The default value is false., stream_auth_token: str # An authentication token to be sent as part of the WebSocket connection. Maximum length is 4000 characters., stream_bidirectional_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16)=PCMU # Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive., stream_bidirectional_mode: str(mp3/rtp)=mp3 # Configures method of bidirectional streaming (mp3, rtp)., stream_bidirectional_sampling_rate: int(8000/16000/22050/24000/48000)=8000 # Audio sampling rate., stream_bidirectional_target_legs: str(both/self/opposite)=opposite # Specifies which call legs should receive the bidirectional stream audio., stream_codec: str(PCMU/PCMA/G722/OPUS/AMR-WB/L16/default)=default # 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., stream_track: str(inbound_track/outbound_track/both_tracks)=inbound_track # Specifies which track should be streamed., stream_url: str # The destination WebSocket address where the stream is going to be delivered.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/streaming_stop\n@desc Streaming stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., stream_id: str(uuid) # Identifies the stream. If the `stream_id` is not provided the command stops all streams associated with a given `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/suppression_start\n@desc Noise Suppression Start (BETA)\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., direction: str(inbound/outbound/both)=inbound # The direction of the audio stream to be noise suppressed., noise_suppression_engine: str(Denoiser/DeepFilterNet/Krisp/AiCoustics)=Denoiser # The engine to use for noise suppression. For backward compatibility, engines A, B, C, and D are also supported, but are deprecated:  A - Denoiser  B - DeepFilterNet  C - Krisp  D - AiCoustics, noise_suppression_engine_config: map{attenuation_limit: int, enhancement_level: num, family: str, mode: str, model: str, size: str, suppression_level: num, voice_gain: num} # Configuration parameters for noise suppression engines. Different engines support different parameters.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/suppression_stop\n@desc Noise Suppression Stop (BETA)\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/switch_supervisor_role\n@desc Switch supervisor role\n@required {call_control_id: str # Unique identifier and token for controlling the call, role: str(barge/whisper/monitor) # The supervisor role to switch to. 'barge' allows speaking to both parties, 'whisper' allows speaking to caller only, 'monitor' allows listening only.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/transcription_start\n@desc Transcription start\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., transcription_engine: str(Google/Telnyx/Deepgram/Azure/A/B)=Google # Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility., transcription_engine_config: any, transcription_tracks: str=inbound # 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`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/transcription_stop\n@desc Transcription stop\n@required {call_control_id: str # Unique identifier and token for controlling the call}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endpoint POST /calls/{call_control_id}/actions/transfer\n@desc Transfer call\n@required {call_control_id: str # Unique identifier and token for controlling the call, to: str # The DID or SIP URI to dial out to.}\n@optional {answering_machine_detection: str(premium/detect/detect_beep/detect_words/greeting_end/disabled)=disabled # 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., answering_machine_detection_config: map{after_greeting_silence_millis: int(int32), between_words_silence_millis: int(int32), greeting_duration_millis: int(int32), greeting_silence_duration_millis: int(int32), greeting_total_analysis_time_millis: int(int32), initial_silence_millis: int(int32), maximum_number_of_words: int(int32), maximum_word_length_millis: int(int32), silence_threshold: int(int32), total_analysis_time_millis: int(int32)} # Optional configuration parameters to modify 'answering_machine_detection' performance., audio_url: str # 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., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., custom_headers: [map{name!: str, value!: str}] # Custom headers to be added to the SIP INVITE., early_media: bool=true # If set to false, early media will not be passed to the originating leg., from: str # 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., from_display_name: str # 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., media_encryption: str(disabled/SRTP/DTLS)=disabled # Defines whether media should be encrypted on the new call leg., media_name: str # 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., mute_dtmf: str(none/both/self/opposite)=none # When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent., park_after_unbridge: str # 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., preferred_codecs: str # 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`., record: str # Start recording automatically after an event. Disabled by default., record_channels: str(single/dual)=dual # Defines which channel should be recorded ('single' or 'dual') when `record` is specified., record_custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., record_format: str(wav/mp3)=mp3 # Defines the format of the recording ('wav' or 'mp3') when `record` is specified., record_max_length: int(int32)=0 # 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)., record_timeout_secs: int(int32)=0 # 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)., record_track: str(both/inbound/outbound)=both # 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)., record_trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording., sip_auth_password: str # SIP Authentication password used for SIP challenges., sip_auth_username: str # SIP Authentication username used for SIP challenges., sip_headers: [map{name!: str, value!: str}] # SIP headers to be added to the SIP INVITE. Currently only User-to-User header is supported., sip_region: str(US/Europe/Canada/Australia/Middle East)=US # Defines the SIP region to be used for the call., sip_transport_protocol: str(UDP/TCP/TLS)=UDP # Defines SIP transport protocol to be used on the call., sound_modifications: map{octaves: num(float), pitch: num(float), semitone: num(float), track: str} # Use this field to modify sound effects, for example adjust the pitch., target_leg_client_state: str # Use this field to add state to every subsequent webhook for the new leg. It must be a valid Base-64 encoded string., time_limit_secs: int(int32)=14400 # 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., timeout_secs: int(int32)=30 # 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., webhook_retries_policies: map # 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., webhook_url: str # Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call., webhook_url_method: str(POST/GET)=POST # HTTP request type used for `webhook_url`., webhook_urls: map # A map of event types to webhook URLs. When an event of the specified type occurs, the webhook URL associated with that event type will be called instead of `webhook_url`. Events not mapped here will use the default `webhook_url`., webhook_urls_method: str(POST/GET)=POST # HTTP request method to invoke `webhook_urls`.}\n@returns(200) {data: map{result: str}} # Successful response upon making a call control command.\n@errors {422: 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.}\n\n@endgroup\n\n@group channel_zones\n@endpoint GET /channel_zones\n@desc List your voice channels for non-US zones\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A list of channel zones\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint PUT /channel_zones/{channel_zone_id}\n@desc Update voice channels for non-US Zones\n@required {channels: int(int64) # The number of reserved channels}\n@returns(200) {channels: int(int64), countries: [str], created_at: str, id: str, name: str, record_type: str, updated_at: str} # Successfuly patched channel zone\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endgroup\n\n@group charges_breakdown\n@endpoint GET /charges_breakdown\n@desc Get monthly charges breakdown\n@required {start_date: str(date) # Start date for the charges breakdown in ISO date format (YYYY-MM-DD)}\n@optional {end_date: str(date) # 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., format: str(json/csv)=json # Response format}\n@returns(200) {data: map{currency: str, end_date: str(date), results: [map], start_date: str(date), user_email: str(email), user_id: str}} # Monthly charges breakdown\n@errors {400: Invalid request parameters or date range, 422: User account not found}\n\n@endgroup\n\n@group charges_summary\n@endpoint GET /charges_summary\n@desc Get monthly charges summary\n@required {start_date: str(date) # Start date for the charges summary in ISO date format (YYYY-MM-DD), end_date: str(date) # 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.}\n@returns(200) {data: map{currency: str, end_date: str(date), start_date: str(date), summary: map{adjustments: [map], lines: [any]}, total: map{credits: str, existing_mrc: str, grand_total: str, ledger_adjustments: str, new_mrc: str, new_otc: str, other: str}, user_email: str(email), user_id: str}} # Monthly charges summary\n@errors {400: Invalid request parameters or date range, 422: User account not found}\n\n@endgroup\n\n@group comments\n@endpoint GET /comments\n@desc Retrieve all comments\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[comment_record_type], filter[comment_record_id]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # An array of Comment Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /comments\n@desc Create a comment\n@optional {body: str, comment_record_id: str(uuid), comment_record_type: str(sub_number_order/requirement_group), commenter: str, commenter_type: str(admin/user), created_at: str(date-time) # An ISO 8901 datetime string denoting when the comment was created., id: str(uuid), read_at: str(date-time) # An ISO 8901 datetime string for when the comment was read., updated_at: str(date-time) # An ISO 8901 datetime string for when the comment was updated.}\n@returns(200) {data: any} # A Comment Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /comments/{id}\n@desc Retrieve a comment\n@required {id: str # The comment ID.}\n@returns(200) {data: any} # A Comment Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /comments/{id}/read\n@desc Mark a comment as read\n@required {id: str # The comment ID.}\n@returns(200) {data: any} # A Comment Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group conferences\n@endpoint GET /conferences\n@desc List conferences\n@optional {region: str(Australia/Europe/Middle East/US) # Region where the conference data is located, filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of conferences.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint POST /conferences\n@desc Create conference\n@required {call_control_id: str # Unique identifier and token for controlling the call, name: str # Name of the conference}\n@optional {beep_enabled: str(always/never/on_enter/on_exit)=never # Whether a beep sound should be played when participants join and/or leave the conference., client_state: str # 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., comfort_noise: bool=true # Toggle background comfort noise., command_id: str # 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., duration_minutes: int # Time length (minutes) after which the conference will end., hold_audio_url: str # 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: str # 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: int # The maximum number of active conference participants to allow. Must be between 2 and 800. Defaults to 250, region: str(Australia/Europe/Middle East/US) # Sets the region where the conference data will be hosted. Defaults to the region defined in user's data locality settings (Europe or US)., start_conference_on_create: bool # 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\".}\n@returns(200) {data: map{connection_id: str, created_at: str, end_reason: str, ended_by: map{call_control_id: str, call_session_id: str}, expires_at: str, id: str, name: str, record_type: str, region: str, status: str, updated_at: str}} # Successful response with details about a conference.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint GET /conferences/{conference_id}/participants\n@desc List conference participants\n@required {conference_id: str # Uniquely identifies the conference by id}\n@optional {region: str(Australia/Europe/Middle East/US) # Region where the conference data is located, page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[muted], filter[on_hold], filter[whispering]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of conference participants.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint GET /conferences/{id}\n@desc Retrieve a conference\n@required {id: str # Uniquely identifies the conference by id}\n@optional {region: str(Australia/Europe/Middle East/US) # Region where the conference data is located}\n@returns(200) {data: map{connection_id: str, created_at: str, end_reason: str, ended_by: map{call_control_id: str, call_session_id: str}, expires_at: str, id: str, name: str, record_type: str, region: str, status: str, updated_at: str}} # Successful response with details about a conference.\n@errors {404: 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.}\n\n@endpoint POST /conferences/{id}/actions/end\n@desc End a conference\n@required {id: str(uuid) # Uniquely identifies the conference.}\n@optional {command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same conference.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/gather_using_audio\n@desc Gather DTMF using audio prompt in a conference\n@required {id: str(uuid) # Uniquely identifies the conference., call_control_id: str # Unique identifier and token for controlling the call leg that will receive the gather prompt.}\n@optional {audio_url: str # The URL of the audio file to play as the gather prompt. Must be WAV or MP3 format., client_state: str # Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string., gather_id: str # Identifier for this gather command. Will be included in the gather ended webhook. Maximum 100 characters., initial_timeout_millis: int # Duration in milliseconds to wait for the first digit before timing out., inter_digit_timeout_millis: int=5000 # Duration in milliseconds to wait between digits., invalid_audio_url: str # URL of audio file to play when invalid input is received., invalid_media_name: str # Name of media file to play when invalid input is received., maximum_digits: int=128 # Maximum number of digits to gather., maximum_tries: int=3 # Maximum number of times to play the prompt if no input is received., media_name: str # The name of the media file uploaded to the Media Storage API to play as the gather prompt., minimum_digits: int=1 # Minimum number of digits to gather., stop_playback_on_dtmf: bool=true # Whether to stop the audio playback when a DTMF digit is received., terminating_digit: str=# # Digit that terminates gathering., timeout_millis: int=60000 # Duration in milliseconds to wait for input before timing out., valid_digits: str=0123456789#* # Digits that are valid for gathering. All other digits will be ignored.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/hold\n@desc Hold conference participants\n@required {id: str # Uniquely identifies the conference by id or name}\n@optional {audio_url: str # 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., call_control_ids: [str] # List of unique identifiers and tokens for controlling the call. When empty all participants will be placed on hold., media_name: str # 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: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/join\n@desc Join a conference\n@required {id: str # Uniquely identifies the conference by id or name, call_control_id: str # Unique identifier and token for controlling the call}\n@optional {beep_enabled: str(always/never/on_enter/on_exit) # 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., client_state: str # 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., command_id: str # 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., end_conference_on_exit: bool # Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\"., hold: bool # Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\"., hold_audio_url: str # 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: str # 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: bool # Whether the participant should be muted immediately after joining the conference. Defaults to \"false\"., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US)., soft_end_conference_on_exit: bool # Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\"., start_conference_on_enter: bool # Whether the conference should be started after the participant joins the conference. Defaults to \"false\"., supervisor_role: str(barge/monitor/none/whisper) # 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\"., whisper_call_control_ids: [str] # 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.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/leave\n@desc Leave a conference\n@required {id: str # Uniquely identifies the conference by id or name, call_control_id: str # Unique identifier and token for controlling the call}\n@optional {beep_enabled: str(always/never/on_enter/on_exit) # Whether a beep sound should be played when the participant leaves the conference. Can be used to override the conference-level setting., command_id: str # 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., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/mute\n@desc Mute conference participants\n@required {id: str # Uniquely identifies the conference by id or name}\n@optional {call_control_ids: [str] # Array of unique identifiers and tokens for controlling the call. When empty all participants will be muted., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/play\n@desc Play audio to conference participants\n@required {id: str # Uniquely identifies the conference by id or name}\n@optional {audio_url: str # The URL of a file to be played back in the conference. media_name and audio_url cannot be used together in one request., call_control_ids: [str] # 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., loop: any, media_name: str # 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., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/record_pause\n@desc Conference recording pause\n@required {id: str # Specifies the conference by id or name}\n@optional {command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str # Use this field to pause specific recording., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/record_resume\n@desc Conference recording resume\n@required {id: str # Specifies the conference by id or name}\n@optional {command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str # Use this field to resume specific recording., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/record_start\n@desc Conference recording start\n@required {id: str # Specifies the conference to record by id or name, format: str(wav/mp3) # The audio file format used when storing the conference recording. Can be either `mp3` or `wav`.}\n@optional {channels: str(single/dual)=single # When `dual`, final audio file will be stereo recorded with the conference creator on the first channel, and the rest on the second channel., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `conference_id`., custom_file_name: str # The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix., play_beep: bool # If enabled, a beep sound will be played at the start of a recording., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US)., trim: str # When set to `trim-silence`, silence will be removed from the beginning and end of the recording.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/record_stop\n@desc Conference recording stop\n@required {id: str # Specifies the conference to stop the recording for by id or name}\n@optional {client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., command_id: str # Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`., recording_id: str(uuid) # Uniquely identifies the resource., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/send_dtmf\n@desc Send DTMF to conference participants\n@required {id: str(uuid) # Uniquely identifies the conference., digits: str # DTMF digits to send. Valid characters: 0-9, A-D, *, #, w (0.5s pause), W (1s pause).}\n@optional {call_control_ids: [str] # Array of participant call control IDs to send DTMF to. When empty, DTMF will be sent to all participants., client_state: str # Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string., duration_millis: int=250 # Duration of each DTMF digit in milliseconds.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/speak\n@desc Speak text to conference participants\n@required {id: str # Specifies the conference by id or name, payload: str # The text or SSML to be converted into speech. There is a 3,000 character limit., voice: str # Specifies the voice used in speech synthesis.  - Define voices using the format `..`. Specifying only the provider will give default values for voice_id and model_id.   **Supported Providers:** - **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery). Use `voice_settings` to configure custom deployments, regions, or API keys. - **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices). - **Telnyx:** Use `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters. - **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost. - **Rime:** Use `Rime..` (e.g., `Rime.Arcana.cove`). Supported model_ids: `Arcana`, `Mist`. Use `voice_settings` to configure voice_speed. - **Resemble:** Use `Resemble.Turbo.` (e.g., `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate, and format. - **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.  For service_level basic, you may define the gender of the speaker (male or female).}\n@optional {call_control_ids: [str] # Call Control IDs of participants who will hear the spoken text. When empty all participants will hear the spoken text., command_id: str # 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., language: str(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) # The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified., payload_type: str(text/ssml)=text # The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML)., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US)., voice_settings: any # The settings associated with the voice selected}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/stop\n@desc Stop audio being played on the conference\n@required {id: str # Uniquely identifies the conference by id or name}\n@optional {call_control_ids: [str] # 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., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/unhold\n@desc Unhold conference participants\n@required {id: str # Uniquely identifies the conference by id or name, call_control_ids: [str] # List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unheld.}\n@optional {region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/unmute\n@desc Unmute conference participants\n@required {id: str # Uniquely identifies the conference by id or name}\n@optional {call_control_ids: [str] # 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., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint POST /conferences/{id}/actions/update\n@desc Update conference participant\n@required {id: str # Uniquely identifies the conference by id or name, call_control_id: str # Unique identifier and token for controlling the call, supervisor_role: str(barge/monitor/none/whisper) # 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\".}\n@optional {command_id: str # 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., region: str(Australia/Europe/Middle East/US) # Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US)., whisper_call_control_ids: [str] # 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.}\n@returns(200) {data: map{result: str}} # Successful response upon making a conference command.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint GET /conferences/{id}/participants/{participant_id}\n@desc Retrieve a conference participant\n@required {id: str(uuid) # Uniquely identifies the conference., participant_id: str # Uniquely identifies the participant by their ID or label.}\n@returns(200) {data: map{call_control_id: str, call_leg_id: str, conference_id: str, created_at: str(date-time), end_conference_on_exit: bool, id: str, label: str, muted: bool, on_hold: bool, soft_end_conference_on_exit: bool, status: str, updated_at: str(date-time), whisper_call_control_ids: [str]}} # Successful response\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint PATCH /conferences/{id}/participants/{participant_id}\n@desc Update a conference participant\n@required {id: str(uuid) # Uniquely identifies the conference., participant_id: str # Uniquely identifies the participant.}\n@optional {beep_enabled: str(always/never/on_enter/on_exit) # Whether entry/exit beeps are enabled for this participant., end_conference_on_exit: bool # Whether the conference should end when this participant exits., soft_end_conference_on_exit: bool # 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.}\n@returns(200) {data: map{call_control_id: str, call_leg_id: str, conference_id: str, created_at: str(date-time), end_conference_on_exit: bool, id: str, label: str, muted: bool, on_hold: bool, soft_end_conference_on_exit: bool, status: str, updated_at: str(date-time), whisper_call_control_ids: [str]}} # Successful response\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endgroup\n\n@group connections\n@endpoint GET /connections\n@desc List connections\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(created_at/connection_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         connection_name: sorts the result by the     connection_name field in ascending order.            -connection_name: sorts the result by the     connection_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of connections.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint GET /connections/{connection_id}/active_calls\n@desc List all active calls for given connection\n@required {connection_id: str # Telnyx connection id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number]}\n@returns(200) {data: [map], meta: map{cursors: map{after: str, before: str}, next: str, previous: str, total_items: int}} # Successful response with list of details about active calls.\n@errors {422: 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.}\n\n@endpoint GET /connections/{id}\n@desc Retrieve a connection\n@required {id: str # IP Connection ID}\n@returns(200) {data: map{active: bool, anchorsite_override: str, connection_name: str, created_at: str, id: str, outbound_voice_profile_id: str, record_type: str, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri)?}} # Successful response with details about a connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endgroup\n\n@group country_coverage\n@endpoint GET /country_coverage\n@desc Get country coverage\n@returns(200) {data: map} # Response for country coverage\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /country_coverage/countries/{country_code}\n@desc Get coverage for a specific country\n@required {country_code: str # Country ISO code.}\n@returns(200) {data: map{code: str, features: [str], international_sms: bool, inventory_coverage: bool, local: map{features: [str], full_pstn_replacement: bool, international_sms: bool, p2p: bool, quickship: bool, reservable: bool}, mobile: map, national: map, numbers: bool, p2p: bool, phone_number_type: [str], quickship: bool, region: str?, reservable: bool, shared_cost: map, toll_free: map{features: [str], full_pstn_replacement: bool, international_sms: bool, p2p: bool, quickship: bool, reservable: bool}}} # Response for specific country coverage\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group credential_connections\n@endpoint GET /credential_connections\n@desc List credential connections\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(created_at/connection_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         connection_name: sorts the result by the     connection_name field in ascending order.            -connection_name: sorts the result by the     connection_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of credential connections.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint POST /credential_connections\n@desc Create a credential connection\n@required {connection_name: str # A user-assigned name to help manage the connection., password: str # The password to be used as part of the credentials. Must be 8 to 128 characters long., user_name: str # 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).}\n@optional {active: bool # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., default_on_hold_comfort_noise_enabled: bool=false # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str(disabled/unrestricted/internal) # This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal)., tags: [str] # Tags associated with the connection., webhook_api_version: str(1/2/texml)=1 # 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., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str, tags: [str], updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about a credential connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint DELETE /credential_connections/{id}\n@desc Delete a credential connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str, tags: [str], updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about a credential connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /credential_connections/{id}\n@desc Retrieve a credential connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str, tags: [str], updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about a credential connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint PATCH /credential_connections/{id}\n@desc Update a credential connection\n@required {id: str # Identifies the resource.}\n@optional {active: bool # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., connection_name: str # A user-assigned name to help manage the connection., default_on_hold_comfort_noise_enabled: bool=false # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, password: str # The password to be used as part of the credentials. Must be 8 to 128 characters long., rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str(disabled/unrestricted/internal) # This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal)., tags: [str] # Tags associated with the connection., user_name: str # 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)., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, simultaneous_ringing: str, sip_compact_headers_enabled: bool, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, sip_uri_calling_preference: str, tags: [str], updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about a credential connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint POST /credential_connections/{id}/actions/check_registration_status\n@desc Check a Credential Connection Registration Status\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{ip_address: str, last_registration: str, port: int, record_type: str, sip_username: str, status: str, transport: str, user_agent: str}} # Successful response with details about a credential connection registration status.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endgroup\n\n@group custom_storage_credentials\n@endpoint DELETE /custom_storage_credentials/{connection_id}\n@desc Delete a stored credential\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource.}\n@returns(204) The credentials configuration for connection_id was deleted successfully.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint GET /custom_storage_credentials/{connection_id}\n@desc Retrieve a stored credential\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource.}\n@returns(200) {connection_id: str, data: map{backend: str, configuration: any}, record_type: str} # A response containing a credentials resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint POST /custom_storage_credentials/{connection_id}\n@desc Create a custom storage credential\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource., backend: str(gcs/s3/azure), configuration: any}\n@returns(200) {connection_id: str, data: map{backend: str, configuration: any}, record_type: str} # A response containing a credentials resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint PUT /custom_storage_credentials/{connection_id}\n@desc Update a stored credential\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource., backend: str(gcs/s3/azure), configuration: any}\n@returns(200) {connection_id: str, data: map{backend: str, configuration: any}, record_type: str} # A response containing a credentials resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endgroup\n\n@group customer_service_records\n@endpoint GET /customer_service_records\n@desc List customer service records\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # 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], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: The required authentication headers were either invalid or not included in the request., 403: You do not have permission to perform the requested action on the specified resource or resources., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: An unexpected error occurred.}\n\n@endpoint POST /customer_service_records\n@desc Create a customer service record\n@required {phone_number: str # A valid US phone number in E164 format.}\n@optional {additional_data: map{account_number: str, address_line_1: str, authorized_person_name: str, billing_phone_number: str, city: str, customer_code: str, name: str, pin: str, state: str, zip_code: str}, webhook_url: str # Callback URL to receive webhook notifications.}\n@returns(201) {data: map{created_at: str(date-time), error_message: str?, id: str(uuid), phone_number: str, record_type: str, result: map?, status: str, updated_at: str(date-time), webhook_url: str}} # Successful Response\n@errors {401: The required authentication headers were either invalid or not included in the request., 403: You do not have permission to perform the requested action on the specified resource or resources., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: An unexpected error occurred.}\n\n@endpoint POST /customer_service_records/phone_number_coverages\n@desc Verify CSR phone number coverage\n@required {phone_numbers: [str] # The phone numbers list to be verified.}\n@returns(201) {data: [map]} # Successful Response\n@errors {401: The required authentication headers were either invalid or not included in the request., 403: You do not have permission to perform the requested action on the specified resource or resources., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: An unexpected error occurred.}\n\n@endpoint GET /customer_service_records/{customer_service_record_id}\n@desc Get a customer service record\n@required {customer_service_record_id: str # The ID of the customer service record}\n@returns(201) {data: map{created_at: str(date-time), error_message: str?, id: str(uuid), phone_number: str, record_type: str, result: map?, status: str, updated_at: str(date-time), webhook_url: str}} # Successful Response\n@errors {401: The required authentication headers were either invalid or not included in the request., 403: You do not have permission to perform the requested action on the specified resource or resources., 404: Resource not found, 500: An unexpected error occurred.}\n\n@endgroup\n\n@group detail_records\n@endpoint GET /detail_records\n@desc Search detail records\n@optional {filter: map # Filter records on a given record attribute and value. Example: filter[status]=delivered. Required: filter[record_type] must be specified., sort: [str] # Specifies the sort order for results. Example: sort=-created_at, page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endgroup\n\n@group dialogflow_connections\n@endpoint DELETE /dialogflow_connections/{connection_id}\n@desc Delete stored Dialogflow Connection\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control).}\n@returns(204) The Dialogflow Connection for connection_id was deleted successfully.\n@errors {404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint GET /dialogflow_connections/{connection_id}\n@desc Retrieve stored Dialogflow Connection\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control).}\n@returns(200) {data: map{connection_id: str, conversation_profile_id: str, environment: str, record_type: str, service_account: str}} # Return details of the Dialogflow connection associated with the given CallControl connection.\n@errors {404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint POST /dialogflow_connections/{connection_id}\n@desc Create a Dialogflow Connection\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control)., service_account: map # The JSON map to connect your Dialoglow account.}\n@optional {conversation_profile_id: str # The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required), dialogflow_api: str(cx/es)=es # Determine which Dialogflow will be used., environment: str # Which Dialogflow environment will be used., location: str # The region of your agent is. (If you use Dialogflow CX, this param is required)}\n@returns(201) {data: map{connection_id: str, conversation_profile_id: str, environment: str, record_type: str, service_account: str}} # Return details of the Dialogflow connection associated with the given CallControl connection.\n@errors {422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint PUT /dialogflow_connections/{connection_id}\n@desc Update stored Dialogflow Connection\n@required {connection_id: str # Uniquely identifies a Telnyx application (Call Control)., service_account: map # The JSON map to connect your Dialoglow account.}\n@optional {conversation_profile_id: str # The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX, this param is required), dialogflow_api: str(cx/es)=es # Determine which Dialogflow will be used., environment: str # Which Dialogflow environment will be used., location: str # The region of your agent is. (If you use Dialogflow CX, this param is required)}\n@returns(200) {data: map{connection_id: str, conversation_profile_id: str, environment: str, record_type: str, service_account: str}} # Return details of the Dialogflow connection associated with the given CallControl connection.\n@errors {404: Resource not found. The requested resource or URL could not be found., 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endgroup\n\n@group document_links\n@endpoint GET /document_links\n@desc List all document links\n@optional {filter: map # Consolidated filter parameter for document links (deepObject style). Originally: filter[linked_record_type], filter[linked_resource_id], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group documents\n@endpoint GET /documents\n@desc List all documents\n@optional {filter: map # 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], sort: [str] # Consolidated sort parameter for documents (deepObject style). Originally: sort[], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /documents\n@desc Upload a document\n@optional {customer_reference: str # A customer reference string for customer look ups., file: str(byte) # Alternatively, instead of the URL you can provide the Base64 encoded contents of the file you are uploading., filename: str # The filename of the document., url: str # If the file is already hosted publicly, you can provide a URL and have the documents service fetch it for you.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /documents/{id}\n@desc Delete a document\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /documents/{id}\n@desc Retrieve a document\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint PATCH /documents/{id}\n@desc Update a document\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /documents/{id}/download\n@desc Download a document\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /documents/{id}/download_link\n@desc Generate a temporary download link for a document\n@required {id: str(uuid) # Uniquely identifies the document}\n@returns(200) {data: map{url: str(uri)}} # Successfully generated download link\n@errors {404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group dynamic_emergency_addresses\n@endpoint GET /dynamic_emergency_addresses\n@desc List dynamic emergency addresses\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[country_code], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: num(integer), page_size: num(integer), total_pages: num(integer), total_results: num(integer)}} # Dynamic Emergency Address Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /dynamic_emergency_addresses\n@desc Create a dynamic emergency address.\n@required {administrative_area: str, country_code: str(US/CA/PR), house_number: str, locality: str, postal_code: str, street_name: str}\n@optional {created_at: str # ISO 8601 formatted date of when the resource was created, extended_address: str, house_suffix: str, id: str, record_type: str # Identifies the type of the resource., sip_geolocation_id: str # Unique location reference string to be used in SIP INVITE from / p-asserted headers., status: str(pending/activated/rejected) # Status of dynamic emergency address, street_post_directional: str, street_pre_directional: str, street_suffix: str, updated_at: str # ISO 8601 formatted date of when the resource was last updated}\n@returns(201) {data: map{administrative_area: str, country_code: str, created_at: str, extended_address: str, house_number: str, house_suffix: str, id: str, locality: str, postal_code: str, record_type: str, sip_geolocation_id: str, status: str, street_name: str, street_post_directional: str, street_pre_directional: str, street_suffix: str, updated_at: str}} # Dynamic Emergency Address Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /dynamic_emergency_addresses/{id}\n@desc Delete a dynamic emergency address\n@required {id: str(uuid) # Dynamic Emergency Address id}\n@returns(200) {data: map{administrative_area: str, country_code: str, created_at: str, extended_address: str, house_number: str, house_suffix: str, id: str, locality: str, postal_code: str, record_type: str, sip_geolocation_id: str, status: str, street_name: str, street_post_directional: str, street_pre_directional: str, street_suffix: str, updated_at: str}} # Dynamic Emergency Address Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /dynamic_emergency_addresses/{id}\n@desc Get a dynamic emergency address\n@required {id: str(uuid) # Dynamic Emergency Address id}\n@returns(200) {data: map{administrative_area: str, country_code: str, created_at: str, extended_address: str, house_number: str, house_suffix: str, id: str, locality: str, postal_code: str, record_type: str, sip_geolocation_id: str, status: str, street_name: str, street_post_directional: str, street_pre_directional: str, street_suffix: str, updated_at: str}} # Dynamic Emergency Address Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group dynamic_emergency_endpoints\n@endpoint GET /dynamic_emergency_endpoints\n@desc List dynamic emergency endpoints\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[country_code]}\n@returns(200) {data: [map], meta: map{page_number: num(integer), page_size: num(integer), total_pages: num(integer), total_results: num(integer)}} # Dynamic Emergency Endpoints Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /dynamic_emergency_endpoints\n@desc Create a dynamic emergency endpoint.\n@required {callback_number: str, caller_name: str, dynamic_emergency_address_id: str # An id of a currently active dynamic emergency location.}\n@optional {created_at: str # ISO 8601 formatted date of when the resource was created, id: str, record_type: str # Identifies the type of the resource., sip_from_id: str, status: str(pending/activated/rejected) # Status of dynamic emergency address, updated_at: str # ISO 8601 formatted date of when the resource was last updated}\n@returns(201) {data: map{callback_number: str, caller_name: str, created_at: str, dynamic_emergency_address_id: str, id: str, record_type: str, sip_from_id: str, status: str, updated_at: str}} # Dynamic Emergency Endpoint Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /dynamic_emergency_endpoints/{id}\n@desc Delete a dynamic emergency endpoint\n@required {id: str(uuid) # Dynamic Emergency Endpoint id}\n@returns(200) {data: map{callback_number: str, caller_name: str, created_at: str, dynamic_emergency_address_id: str, id: str, record_type: str, sip_from_id: str, status: str, updated_at: str}} # Dynamic Emergency Endpoint Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /dynamic_emergency_endpoints/{id}\n@desc Get a dynamic emergency endpoint\n@required {id: str(uuid) # Dynamic Emergency Endpoint id}\n@returns(200) {data: map{callback_number: str, caller_name: str, created_at: str, dynamic_emergency_address_id: str, id: str, record_type: str, sip_from_id: str, status: str, updated_at: str}} # Dynamic Emergency Endpoint Response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group enterprises\n@endpoint GET /enterprises\n@desc List enterprises\n@optional {page[number]: int=1: any # Page number (1-indexed), page[size]: int=10 # Number of items per page, legal_name: str # Filter by legal name (partial match)}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of enterprises\n@errors {401: Unauthorized — missing or invalid API key}\n\n@endpoint POST /enterprises\n@desc Create an enterprise\n@required {billing_address: map{administrative_area!: str, city!: str, country!: str, extended_address: str, postal_code!: str, street_address!: str}, billing_contact: map{email!: str(email), first_name!: str, last_name!: str, phone_number!: str}, country_code: str # Country code. Currently only 'US' is accepted., doing_business_as: str # Primary business name / DBA name, fein: str # Federal Employer Identification Number. Format: XX-XXXXXXX or 9-digit number (minimum 9 digits)., industry: str # Industry classification. Case-insensitive. Accepted values: 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, legal_name: str # Legal name of the enterprise, number_of_employees: str(1-10/11-50/51-200/201-500/501-2000/2001-10000/10001+) # Employee count range, organization_contact: map{email!: str(email), first_name!: str, job_title!: str, last_name!: str, phone!: str} # Organization contact information. Note: the response returns this object with the phone field as 'phone' (not 'phone_number')., organization_legal_type: str(corporation/llc/partnership/nonprofit/other) # Legal structure type, organization_physical_address: map{administrative_area!: str, city!: str, country!: str, extended_address: str, postal_code!: str, street_address!: str}, organization_type: str(commercial/government/non_profit) # Type of organization, website: str # Enterprise website URL. Accepts any string — no URL format validation enforced.}\n@optional {corporate_registration_number: str # Corporate registration number (optional), customer_reference: str # Optional customer reference identifier for your own tracking, dun_bradstreet_number: str # D-U-N-S Number (optional), primary_business_domain_sic_code: str # SIC Code (optional), professional_license_number: str # Professional license number (optional), role_type: str(enterprise/bpo)=enterprise # Role type in Branded Calling / Number Reputation services}\n@returns(201) {data: map{billing_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, billing_contact: map{email: str(email), first_name: str, last_name: str, phone_number: str}, corporate_registration_number: str?, country_code: str, created_at: str(date-time), customer_reference: str?, doing_business_as: str, dun_bradstreet_number: str?, fein: str?, id: str(uuid), industry: str?, legal_name: str, number_of_employees: str?, organization_contact: map{email: str(email), first_name: str, job_title: str, last_name: str, phone: str}, organization_legal_type: str?, organization_physical_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, organization_type: str, primary_business_domain_sic_code: str?, professional_license_number: str?, role_type: str, updated_at: str(date-time), website: str?}} # Enterprise created successfully\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 422: Unprocessable entity — request structure is valid but contains semantic errors}\n\n@endpoint DELETE /enterprises/{enterprise_id}\n@desc Delete an enterprise\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@returns(204) Enterprise deleted successfully\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint GET /enterprises/{enterprise_id}\n@desc Get an enterprise\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@returns(200) {data: map{billing_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, billing_contact: map{email: str(email), first_name: str, last_name: str, phone_number: str}, corporate_registration_number: str?, country_code: str, created_at: str(date-time), customer_reference: str?, doing_business_as: str, dun_bradstreet_number: str?, fein: str?, id: str(uuid), industry: str?, legal_name: str, number_of_employees: str?, organization_contact: map{email: str(email), first_name: str, job_title: str, last_name: str, phone: str}, organization_legal_type: str?, organization_physical_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, organization_type: str, primary_business_domain_sic_code: str?, professional_license_number: str?, role_type: str, updated_at: str(date-time), website: str?}} # Enterprise details\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint PUT /enterprises/{enterprise_id}\n@desc Update an enterprise\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@optional {billing_address: map{administrative_area!: str, city!: str, country!: str, extended_address: str, postal_code!: str, street_address!: str}, billing_contact: map{email!: str(email), first_name!: str, last_name!: str, phone_number!: str}, corporate_registration_number: str # Corporate registration number, customer_reference: str # Customer reference identifier, doing_business_as: str # DBA name, dun_bradstreet_number: str # D-U-N-S Number, fein: str # Federal Employer Identification Number. Format: XX-XXXXXXX or XXXXXXXXX, industry: str # Industry classification, legal_name: str # Legal name of the enterprise, number_of_employees: str(1-10/11-50/51-200/201-500/501-2000/2001-10000/10001+) # Employee count range, organization_contact: map{email!: str(email), first_name!: str, job_title!: str, last_name!: str, phone!: str} # Organization contact information. Note: the response returns this object with the phone field as 'phone' (not 'phone_number')., organization_legal_type: str(corporation/llc/partnership/nonprofit/other) # Legal structure type, organization_physical_address: map{administrative_area!: str, city!: str, country!: str, extended_address: str, postal_code!: str, street_address!: str}, primary_business_domain_sic_code: str # SIC Code, professional_license_number: str # Professional license number, website: str # Company website URL}\n@returns(200) {data: map{billing_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, billing_contact: map{email: str(email), first_name: str, last_name: str, phone_number: str}, corporate_registration_number: str?, country_code: str, created_at: str(date-time), customer_reference: str?, doing_business_as: str, dun_bradstreet_number: str?, fein: str?, id: str(uuid), industry: str?, legal_name: str, number_of_employees: str?, organization_contact: map{email: str(email), first_name: str, job_title: str, last_name: str, phone: str}, organization_legal_type: str?, organization_physical_address: map{administrative_area: str, city: str, country: str, extended_address: str?, postal_code: str, street_address: str}, organization_type: str, primary_business_domain_sic_code: str?, professional_license_number: str?, role_type: str, updated_at: str(date-time), website: str?}} # Enterprise updated successfully\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint DELETE /enterprises/{enterprise_id}/reputation\n@desc Disable Number Reputation\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@returns(204) Reputation settings disabled successfully\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint GET /enterprises/{enterprise_id}/reputation\n@desc Get reputation settings\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@returns(200) {data: map{check_frequency: str, created_at: str(date-time), enterprise_id: str(uuid), loa_document_id: str?, rejection_reasons: [str]?, status: str, updated_at: str(date-time)}} # Reputation settings\n@errors {401: Unauthorized — missing or invalid API key, 404: Reputation settings not found for this enterprise}\n\n@endpoint POST /enterprises/{enterprise_id}/reputation\n@desc Enable Number Reputation\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID), loa_document_id: str # ID of the signed Letter of Authorization (LOA) document uploaded to the document service}\n@optional {check_frequency: str(business_daily/daily/weekly/biweekly/monthly/never)=business_daily # Frequency for automatically refreshing reputation data}\n@returns(201) {data: map{check_frequency: str, created_at: str(date-time), enterprise_id: str(uuid), loa_document_id: str?, rejection_reasons: [str]?, status: str, updated_at: str(date-time)}} # Reputation settings created (pending admin approval)\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 404: Resource not found, 409: Reputation settings already exist for this enterprise}\n\n@endpoint PATCH /enterprises/{enterprise_id}/reputation/frequency\n@desc Update reputation check frequency\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID), check_frequency: str(business_daily/daily/weekly/biweekly/monthly/never) # New frequency for refreshing reputation data}\n@returns(200) {data: map{check_frequency: str, created_at: str(date-time), enterprise_id: str(uuid), loa_document_id: str?, rejection_reasons: [str]?, status: str, updated_at: str(date-time)}} # Reputation frequency updated\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint GET /enterprises/{enterprise_id}/reputation/numbers\n@desc List reputation phone numbers\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID)}\n@optional {page[number]: int=1: any # Page number (1-indexed), page[size]: int=10 # Number of items per page, phone_number: str # Filter by specific phone number (E.164 format)}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of phone numbers with reputation data\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint POST /enterprises/{enterprise_id}/reputation/numbers\n@desc Associate phone numbers for reputation\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID), phone_numbers: [str] # List of phone numbers to associate for reputation monitoring (max 100)}\n@returns(201) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Phone numbers associated successfully\n@errors {400: Bad request — invalid input or validation error, 401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint DELETE /enterprises/{enterprise_id}/reputation/numbers/{phone_number}\n@desc Disassociate a phone number\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID), phone_number: str # Phone number in E.164 format}\n@returns(204) Phone number disassociated successfully\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint GET /enterprises/{enterprise_id}/reputation/numbers/{phone_number}\n@desc Get reputation data for a phone number\n@required {enterprise_id: str(uuid) # Unique identifier of the enterprise (UUID), phone_number: str # Phone number in E.164 format}\n@optional {fresh: bool=false # When true, fetches fresh reputation data (incurs API cost). When false, returns cached data.}\n@returns(200) {data: any} # Phone number reputation data\n@errors {401: Unauthorized — missing or invalid API key, 403: Enterprise is not approved for reputation tracking, 404: Phone number is not associated with this enterprise}\n\n@endgroup\n\n@group external_connections\n@endpoint GET /external_connections\n@desc List all External Connections\n@optional {filter: map # Filter parameter for external connections (deepObject style). Supports filtering by connection_name, external_sip_connection, id, created_at, and phone_number., page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /external_connections\n@desc Creates an External Connection\n@required {external_sip_connection: str=zoom # The service that will be consuming this connection., outbound: map{channel_limit: int, outbound_voice_profile_id: str}}\n@optional {active: bool=true # Specifies whether the connection can be used., inbound: map{channel_limit: int, outbound_voice_profile_id!: str}, tags: [str] # Tags associated with the connection., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, created_at: str, credential_active: bool, external_sip_connection: str, id: str, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {422: Bad request}\n\n@endpoint GET /external_connections/log_messages\n@desc List all log messages\n@optional {filter: map # Filter parameter for log messages (deepObject style). Supports filtering by external_connection_id and telephone_number with eq/contains operations., page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {log_messages: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Bad request}\n\n@endpoint DELETE /external_connections/log_messages/{id}\n@desc Dismiss a log message\n@required {id: str # Identifies the resource.}\n@returns(200) {success: bool} # Successful response\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint GET /external_connections/log_messages/{id}\n@desc Retrieve a log message\n@required {id: str # Identifies the resource.}\n@returns(200) {log_messages: [map]} # Successful response\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint DELETE /external_connections/{id}\n@desc Deletes an External Connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, created_at: str, credential_active: bool, external_sip_connection: str, id: str, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /external_connections/{id}\n@desc Retrieve an External Connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, created_at: str, credential_active: bool, external_sip_connection: str, id: str, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint PATCH /external_connections/{id}\n@desc Update an External Connection\n@required {id: str # Identifies the resource., outbound: map{channel_limit: int, outbound_voice_profile_id!: str}}\n@optional {active: bool=true # Specifies whether the connection can be used., inbound: map{channel_limit: int}, tags: [str] # Tags associated with the connection., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, created_at: str, credential_active: bool, external_sip_connection: str, id: str, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /external_connections/{id}/civic_addresses\n@desc List all civic addresses and locations\n@required {id: str # Identifies the resource.}\n@optional {filter: map # Filter parameter for civic addresses (deepObject style). Supports filtering by country.}\n@returns(200) {data: [map]} # Successful response\n@errors {401: Unauthorized, 404: Not found, 500: Unexpected Error, 502: Bad Gateway}\n\n@endpoint GET /external_connections/{id}/civic_addresses/{address_id}\n@desc Retrieve a Civic Address\n@required {id: str # Identifies the resource., address_id: str(uuid) # Identifies a civic address or a location.}\n@returns(200) {data: map{city_or_town: str, city_or_town_alias: str, company_name: str, country: str, country_or_district: str, default_location_id: str(uuid), description: str, house_number: str, house_number_suffix: str, id: str(uuid), locations: [map], postal_or_zip_code: str, record_type: str, state_or_province: str, street_name: str, street_suffix: str}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 500: Unexpected Error, 502: Bad Gateway}\n\n@endpoint PATCH /external_connections/{id}/locations/{location_id}\n@desc Update a location's static emergency address\n@required {id: str(uuid) # The ID of the external connection, location_id: str(uuid) # The ID of the location to update, static_emergency_address_id: str(uuid) # A new static emergency address ID to update the location with}\n@returns(200) {data: map{accepted_address_suggestions: bool, location_id: str(uuid), static_emergency_address_id: str(uuid)}} # Location successfully updated with no associated orders to process\n@returns(202) {data: map{accepted_address_suggestions: bool, location_id: str(uuid), static_emergency_address_id: str(uuid)}} # Location update accepted; associated orders being processed\n@errors {404: Location or external connection not found, 422: Unprocessable Entity - Location already has an accepted emergency address}\n\n@endpoint GET /external_connections/{id}/phone_numbers\n@desc List all phone numbers\n@required {id: str # Identifies the resource.}\n@optional {filter: map # Filter parameter for phone numbers (deepObject style). Supports filtering by phone_number, civic_address_id, and location_id with eq/contains operations., page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Bad request}\n\n@endpoint GET /external_connections/{id}/phone_numbers/{phone_number_id}\n@desc Retrieve a phone number\n@required {id: str # Identifies the resource., phone_number_id: str # A phone number's ID via the Telnyx API}\n@returns(200) {data: map{acquired_capabilities: [str], civic_address_id: str(uuid), displayed_country_code: str, location_id: str(uuid), number_id: str, telephone_number: str, ticket_id: str(uuid)}} # Successful response\n@errors {401: Unauthorized, 404: Not found}\n\n@endpoint PATCH /external_connections/{id}/phone_numbers/{phone_number_id}\n@desc Update a phone number\n@required {id: str # Identifies the resource., phone_number_id: str # A phone number's ID via the Telnyx API}\n@optional {location_id: str(uuid) # Identifies the location to assign the phone number to.}\n@returns(200) {data: map{acquired_capabilities: [str], civic_address_id: str(uuid), displayed_country_code: str, location_id: str(uuid), number_id: str, telephone_number: str, ticket_id: str(uuid)}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Bad request}\n\n@endpoint GET /external_connections/{id}/releases\n@desc List all Releases\n@required {id: str # Identifies the resource.}\n@optional {filter: map # Filter parameter for releases (deepObject style). Supports filtering by status, civic_address_id, location_id, and phone_number with eq/contains operations., page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Bad request}\n\n@endpoint GET /external_connections/{id}/releases/{release_id}\n@desc Retrieve a Release request\n@required {id: str # Identifies the resource., release_id: str(uuid) # Identifies a Release request}\n@returns(200) {data: map{created_at: str, error_message: str, status: str, telephone_numbers: [map], tenant_id: str(uuid), ticket_id: str(uuid)}} # Successful response\n@errors {401: Unauthorized, 404: Not found}\n\n@endpoint GET /external_connections/{id}/uploads\n@desc List all Upload requests\n@required {id: str # Identifies the resource.}\n@optional {filter: map # Filter parameter for uploads (deepObject style). Supports filtering by status, civic_address_id, location_id, and phone_number with eq/contains operations., page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Bad request}\n\n@endpoint POST /external_connections/{id}/uploads\n@desc Creates an Upload request\n@required {id: str # Identifies the resource., number_ids: [str]}\n@optional {additional_usages: [str], civic_address_id: str(uuid) # Identifies the civic address to assign all phone numbers to., location_id: str(uuid) # Identifies the location to assign all phone numbers to., usage: str(calling_user_assignment/first_party_app_assignment) # The use case of the upload request. NOTE: `calling_user_assignment` is not supported for toll free numbers.}\n@returns(202) {success: bool, ticket_id: str(uuid)} # Successful response\n@errors {401: Unauthorized, 404: Not found, 413: Payload too large. The maximum allowed phone numbers for the numbers_ids array is 1000., 422: Unprocessable Entity, 504: Gateway Timeout}\n\n@endpoint POST /external_connections/{id}/uploads/refresh\n@desc Refresh the status of all Upload requests\n@required {id: str # Identifies the resource.}\n@returns(200) {success: bool} # Successful response\n@errors {401: Unauthorized, 404: Not found, 409: Status refresh is still in progress, please wait before calling again}\n\n@endpoint GET /external_connections/{id}/uploads/status\n@desc Get the count of pending upload requests\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{pending_numbers_count: int, pending_orders_count: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found}\n\n@endpoint GET /external_connections/{id}/uploads/{ticket_id}\n@desc Retrieve an Upload request\n@required {id: str # Identifies the resource., ticket_id: str(uuid) # Identifies an Upload request}\n@returns(200) {data: map{available_usages: [str], error_code: str, error_message: str, location_id: str(uuid), status: str, tenant_id: str(uuid), ticket_id: str(uuid), tn_upload_entries: [map]}} # Successful response\n@errors {401: Unauthorized, 404: Not found}\n\n@endpoint POST /external_connections/{id}/uploads/{ticket_id}/retry\n@desc Retry an Upload request\n@required {id: str # Identifies the resource., ticket_id: str(uuid) # Identifies an Upload request}\n@returns(202) {data: map{available_usages: [str], error_code: str, error_message: str, location_id: str(uuid), status: str, tenant_id: str(uuid), ticket_id: str(uuid), tn_upload_entries: [map]}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 409: Order is still in progress, please wait before retrying, 422: Unprocessable Entity}\n\n@endgroup\n\n@group fax_applications\n@endpoint GET /fax_applications\n@desc List all Fax Applications\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[application_name][contains], filter[outbound_voice_profile_id], sort: str(created_at/application_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         application_name: sorts the result by the     application_name field in ascending order.            -application_name: sorts the result by the     application_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Unauthorized}\n\n@endpoint POST /fax_applications\n@desc Creates a Fax Application\n@required {application_name: str # A user-assigned name to help manage the application., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, tags: [str]= # Tags associated with the Fax Application., webhook_event_failover_url: str(uri)= # 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'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, anchorsite_override: str, application_name: str, created_at: str, id: str, inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {401: Unauthorized, 403: Unauthorized, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint DELETE /fax_applications/{id}\n@desc Deletes a Fax Application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, created_at: str, id: str, inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Unauthorized, 404: The requested resource does not exist}\n\n@endpoint GET /fax_applications/{id}\n@desc Retrieve a Fax Application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, created_at: str, id: str, inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Unauthorized, 404: The requested resource does not exist}\n\n@endpoint PATCH /fax_applications/{id}\n@desc Update a Fax Application\n@required {id: str # Identifies the resource., application_name: str # A user-assigned name to help manage the application., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., fax_email_recipient: str=null # Specifies an email address where faxes sent to this application will be forwarded to (as pdf or tiff attachments), inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, tags: [str] # Tags associated with the Fax Application., webhook_event_failover_url: str(uri)= # 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'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, application_name: str, created_at: str, id: str, inbound: map{channel_limit: int, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, tags: [str], updated_at: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response\n@errors {401: Unauthorized, 403: Unauthorized, 404: The requested resource does not exist, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endgroup\n\n@group faxes\n@endpoint GET /faxes\n@desc View a list of faxes\n@optional {filter: map # 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], page: map # Consolidated pagination parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List faxes response\n@errors {404: The requested resource does not exist}\n\n@endpoint POST /faxes\n@desc Send a fax\n@required {connection_id: str # The connection ID to send the fax with., from: str # The phone number, in E.164 format, the fax will be sent from., to: str # The phone number, in E.164 format, the fax will be sent to or SIP URI}\n@optional {black_threshold: int=95 # The black threshold percentage for monochrome faxes. Only applicable if `monochrome` is set to `true`., client_state: str # Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string., from_display_name: str # 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., media_name: str # 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. media_name and media_url/contents can't be submitted together., media_url: str # The URL (or list of URLs) to the PDF used for the fax's media. media_url and media_name/contents can't be submitted together., monochrome: bool=false # The flag to enable monochrome, true black and white fax results., preview_format: str(pdf/tiff)=tiff # The format for the preview file in case the `store_preview` is `true`., quality: str(normal/high/very_high/ultra_light/ultra_dark)=high # 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., store_media: bool=false # Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together., store_preview: bool=false # Should fax preview be stored on temporary URL., t38_enabled: bool=true # The flag to disable the T.38 protocol., webhook_url: str # Use this field to override the URL to which Telnyx will send subsequent webhooks for this fax.}\n@returns(202) {data: map{client_state: str, connection_id: str, created_at: str(date-time), direction: str, from: str, from_display_name: str, id: str(uuid), media_name: str, media_url: str, preview_url: str, quality: str, record_type: str, status: str, store_media: bool, stored_media_url: str, to: str, updated_at: str(date-time), webhook_failover_url: str, webhook_url: str}} # Send fax response\n@errors {422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint DELETE /faxes/{id}\n@desc Delete a fax\n@required {id: str(uuid) # The unique identifier of a fax.}\n@returns(204) The resource was deleted successfully.\n@errors {404: The requested resource does not exist}\n\n@endpoint GET /faxes/{id}\n@desc View a fax\n@required {id: str(uuid) # The unique identifier of a fax.}\n@returns(200) {data: map{client_state: str, connection_id: str, created_at: str(date-time), direction: str, from: str, from_display_name: str, id: str(uuid), media_name: str, media_url: str, preview_url: str, quality: str, record_type: str, status: str, store_media: bool, stored_media_url: str, to: str, updated_at: str(date-time), webhook_failover_url: str, webhook_url: str}} # Get fax response\n@errors {404: The requested resource does not exist}\n\n@endpoint POST /faxes/{id}/actions/cancel\n@desc Cancel a fax\n@required {id: str(uuid) # The unique identifier of a fax.}\n@returns(202) {data: map{result: str}} # Successful response upon accepting cancel fax command\n@errors {404: The requested resource does not exist, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint POST /faxes/{id}/actions/refresh\n@desc Refresh a fax\n@required {id: str(uuid) # The unique identifier of a fax.}\n@returns(200) {data: map{result: str}} # Refresh fax response\n@errors {404: The requested resource does not exist}\n\n@endgroup\n\n@group fqdn_connections\n@endpoint GET /fqdn_connections\n@desc List FQDN connections\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(created_at/connection_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         connection_name: sorts the result by the     connection_name field in ascending order.            -connection_name: sorts the result by the     connection_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of FQDN connections.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint POST /fqdn_connections\n@desc Create an FQDN connection\n@required {connection_name: str # A user-assigned name to help manage the connection.}\n@optional {active: bool=true # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., default_on_hold_comfort_noise_enabled: bool=true # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_fqdn_id: str, default_routing_method: str, default_secondary_fqdn_id: str, default_tertiary_fqdn_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., microsoft_teams_sbc: bool=false # When enabled, the connection will be created for Microsoft Teams Direct Routing. A *.mstsbc.telnyx.tech FQDN will be created for the connection automatically., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, encrypted_media: str, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str] # Tags associated with the connection., transport_protocol: str(UDP/TCP/TLS)=UDP # One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, adjust_dtmf_timestamp: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_enabled: bool, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, ignore_dtmf_duration: bool, ignore_mark_bit: bool, inbound: map{ani_number_format: str, channel_limit: int?, codecs: [str], default_primary_fqdn_id: str?, default_routing_method: str?, default_secondary_fqdn_id: str?, default_tertiary_fqdn_id: str?, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str?, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, microsoft_teams_sbc: bool, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, encrypted_media: str?, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, rtp_pass_codecs_on_stream_change: bool, send_normalized_timestamps: bool, tags: [str], third_party_control_enabled: bool, transport_protocol: str, txt_name: str, txt_ttl: int, txt_value: str, updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint DELETE /fqdn_connections/{id}\n@desc Delete an FQDN connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, adjust_dtmf_timestamp: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_enabled: bool, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, ignore_dtmf_duration: bool, ignore_mark_bit: bool, inbound: map{ani_number_format: str, channel_limit: int?, codecs: [str], default_primary_fqdn_id: str?, default_routing_method: str?, default_secondary_fqdn_id: str?, default_tertiary_fqdn_id: str?, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str?, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, microsoft_teams_sbc: bool, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, encrypted_media: str?, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, rtp_pass_codecs_on_stream_change: bool, send_normalized_timestamps: bool, tags: [str], third_party_control_enabled: bool, transport_protocol: str, txt_name: str, txt_ttl: int, txt_value: str, updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint GET /fqdn_connections/{id}\n@desc Retrieve an FQDN connection\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, adjust_dtmf_timestamp: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_enabled: bool, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, ignore_dtmf_duration: bool, ignore_mark_bit: bool, inbound: map{ani_number_format: str, channel_limit: int?, codecs: [str], default_primary_fqdn_id: str?, default_routing_method: str?, default_secondary_fqdn_id: str?, default_tertiary_fqdn_id: str?, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str?, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, microsoft_teams_sbc: bool, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, encrypted_media: str?, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, rtp_pass_codecs_on_stream_change: bool, send_normalized_timestamps: bool, tags: [str], third_party_control_enabled: bool, transport_protocol: str, txt_name: str, txt_ttl: int, txt_value: str, updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint PATCH /fqdn_connections/{id}\n@desc Update an FQDN connection\n@required {id: str # Identifies the resource.}\n@optional {active: bool # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., connection_name: str # A user-assigned name to help manage the connection., default_on_hold_comfort_noise_enabled: bool=true # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_fqdn_id: str, default_routing_method: str, default_secondary_fqdn_id: str, default_tertiary_fqdn_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, encrypted_media: str, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str] # Tags associated with the connection., transport_protocol: str(UDP/TCP/TLS)=UDP # One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, adjust_dtmf_timestamp: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_enabled: bool, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, ignore_dtmf_duration: bool, ignore_mark_bit: bool, inbound: map{ani_number_format: str, channel_limit: int?, codecs: [str], default_primary_fqdn_id: str?, default_routing_method: str?, default_secondary_fqdn_id: str?, default_tertiary_fqdn_id: str?, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str?, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, microsoft_teams_sbc: bool, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, encrypted_media: str?, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, password: str, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, rtp_pass_codecs_on_stream_change: bool, send_normalized_timestamps: bool, tags: [str], third_party_control_enabled: bool, transport_protocol: str, txt_name: str, txt_ttl: int, txt_value: str, updated_at: str, user_name: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endgroup\n\n@group fqdns\n@endpoint GET /fqdns\n@desc List FQDNs\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_id], filter[fqdn], filter[port], filter[dns_record_type]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of FQDN connections.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized}\n\n@endpoint POST /fqdns\n@desc Create an FQDN\n@required {connection_id: str # ID of the FQDN connection to which this IP should be attached., dns_record_type: str # 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., fqdn: str # FQDN represented by this resource.}\n@optional {port: int=5060 # Port to use when connecting to this FQDN.}\n@returns(201) {data: map{connection_id: str, created_at: str, dns_record_type: str, fqdn: str, id: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint DELETE /fqdns/{id}\n@desc Delete an FQDN\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{connection_id: str, created_at: str, dns_record_type: str, fqdn: str, id: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an FQDN connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /fqdns/{id}\n@desc Retrieve an FQDN\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{connection_id: str, created_at: str, dns_record_type: str, fqdn: str, id: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an FQDN connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint PATCH /fqdns/{id}\n@desc Update an FQDN\n@required {id: str # Identifies the resource.}\n@optional {connection_id: str # ID of the FQDN connection to which this IP should be attached., dns_record_type: str # 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., fqdn: str # FQDN represented by this resource., port: int=5060 # Port to use when connecting to this FQDN.}\n@returns(200) {data: map{connection_id: str, created_at: str, dns_record_type: str, fqdn: str, id: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an FQDN connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endgroup\n\n@group global_ip_allowed_ports\n@endpoint GET /global_ip_allowed_ports\n@desc List all Global IP Allowed Ports\n@returns(200) {data: [any]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_assignment_health\n@endpoint GET /global_ip_assignment_health\n@desc Global IP Assignment Health Check Metrics\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in], filter[global_ip_assignment_id][in]}\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_assignments\n@endpoint GET /global_ip_assignments\n@desc List all Global IP assignments\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /global_ip_assignments\n@desc Create a Global IP assignment\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /global_ip_assignments/{id}\n@desc Delete a Global IP assignment\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /global_ip_assignments/{id}\n@desc Retrieve a Global IP\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint PATCH /global_ip_assignments/{id}\n@desc Update a Global IP assignment\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_assignments_usage\n@endpoint GET /global_ip_assignments_usage\n@desc Global IP Assignment Usage Metrics\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[global_ip_assignment_id][in], filter[global_ip_id][in]}\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_health_check_types\n@endpoint GET /global_ip_health_check_types\n@desc List all Global IP Health check types\n@returns(200) {data: [any]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_health_checks\n@endpoint GET /global_ip_health_checks\n@desc List all Global IP health checks\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /global_ip_health_checks\n@desc Create a Global IP health check\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /global_ip_health_checks/{id}\n@desc Delete a Global IP health check\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /global_ip_health_checks/{id}\n@desc Retrieve a Global IP health check\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_latency\n@endpoint GET /global_ip_latency\n@desc Global IP Latency Metrics\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in]}\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_protocols\n@endpoint GET /global_ip_protocols\n@desc List all Global IP Protocols\n@returns(200) {data: [any]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ip_usage\n@endpoint GET /global_ip_usage\n@desc Global IP Usage Metrics\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[global_ip_id][in]}\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group global_ips\n@endpoint GET /global_ips\n@desc List all Global IPs\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /global_ips\n@desc Create a Global IP\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /global_ips/{id}\n@desc Delete a Global IP\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /global_ips/{id}\n@desc Retrieve a Global IP\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group inbound_channels\n@endpoint GET /inbound_channels\n@desc List your voice channels for US Zone\n@returns(200) {data: map{channels: int, record_type: str}} # voice channels Response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint PATCH /inbound_channels\n@desc Update voice channels for US Zone\n@required {channels: int # The new number of concurrent channels for the account}\n@returns(200) {data: map{channels: int, record_type: str}} # Expected Update response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endgroup\n\n@group inexplicit_number_orders\n@endpoint GET /inexplicit_number_orders\n@desc List inexplicit number orders\n@optional {page_number: int=1 # The page number to load, page_size: int=20 # The size of the page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of inexplicit number orders.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /inexplicit_number_orders\n@desc Create an inexplicit number order\n@required {ordering_groups: [map{administrative_area: str, count_requested!: str, country_iso!: str, exclude_held_numbers: bool, features: [str], locality: str, national_destination_code: str, phone_number: map, phone_number_type!: str, quickship: bool, strategy: str}] # Group(s) of numbers to order. You can have multiple ordering_groups objects added to a single request.}\n@optional {billing_group_id: str # Billing group id to apply to phone numbers that are purchased, connection_id: str # Connection id to apply to phone numbers that are purchased, customer_reference: str # Reference label for the customer, messaging_profile_id: str # Messaging profile id to apply to phone numbers that are purchased}\n@returns(200) {data: map{billing_group_id: str, connection_id: str, created_at: str(date-time), customer_reference: str, id: str, messaging_profile_id: str, ordering_groups: [map], updated_at: str(date-time)}} # Successful response with details about an inexplicit number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /inexplicit_number_orders/{id}\n@desc Retrieve an inexplicit number order\n@required {id: str(uuid) # Identifies the inexplicit number order}\n@returns(200) {data: map{billing_group_id: str, connection_id: str, created_at: str(date-time), customer_reference: str, id: str, messaging_profile_id: str, ordering_groups: [map], updated_at: str(date-time)}} # Successful response with details about an inexplicit number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group integration_secrets\n@endpoint GET /integration_secrets\n@desc List integration secrets\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[type]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {400: Bad Request}\n\n@endpoint POST /integration_secrets\n@desc Create a secret\n@required {identifier: str # The unique identifier of the secret., type: str(bearer/basic) # The type of secret.}\n@optional {password: str # The password for the secret. Required for basic type secrets, ignored otherwise., token: str # The token for the secret. Required for bearer type secrets, ignored otherwise., username: str # The username for the secret. Required for basic type secrets, ignored otherwise.}\n@returns(201) {data: map{created_at: str(date-time), id: str, identifier: str, record_type: str, updated_at: str(date-time)}} # Successful Response\n@errors {422: Validation Error}\n@example_request {\"identifier\":\"my_secret\",\"password\":\"my_password\",\"type\":\"basic\",\"username\":\"my_username\"}\n\n@endpoint DELETE /integration_secrets/{id}\n@desc Delete an integration secret\n@required {id: str}\n@returns(204) The resource was deleted successfully.\n@errors {404: Secret Not found}\n\n@endgroup\n\n@group inventory_coverage\n@endpoint GET /inventory_coverage\n@desc Create an inventory coverage request\n@optional {filter: map # 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]}\n@returns(200) {data: [map], meta: map{total_results: int}} # Successful response with a list of inventory coverage levels\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group invoices\n@endpoint GET /invoices\n@desc List invoices\n@optional {sort: str(period_start/-period_start) # Specifies the sort order for results., page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of invoices\n@errors {403: Insufficient permissions to access invoices}\n\n@endpoint GET /invoices/{id}\n@desc Get invoice by ID\n@required {id: str(uuid) # Invoice UUID}\n@optional {action: str(json/link) # Invoice action}\n@returns(200) {data: map{download_url: str(uri), file_id: str(uuid), invoice_id: str(uuid), paid: bool, period_end: str(date), period_start: str(date), url: str(uri)}} # Get invoice details\n@errors {400: Invalid request parameters, 403: Insufficient permissions to access invoices, 404: Invoice not found}\n\n@endgroup\n\n@group ip_connections\n@endpoint GET /ip_connections\n@desc List Ip connections\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(created_at/connection_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         connection_name: sorts the result by the     connection_name field in ascending order.            -connection_name: sorts the result by the     connection_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of IP connections.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint POST /ip_connections\n@desc Create an Ip connection\n@optional {active: bool # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., connection_name: str, default_on_hold_comfort_noise_enabled: bool=true # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_routing_method: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str] # Tags associated with the connection., transport_protocol: str(UDP/TCP/TLS)=UDP # One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_ip_id: str, default_routing_method: str, default_secondary_ip_id: str, default_tertiary_ip_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str], transport_protocol: str, updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an IP connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint DELETE /ip_connections/{id}\n@desc Delete an Ip connection\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_ip_id: str, default_routing_method: str, default_secondary_ip_id: str, default_tertiary_ip_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str], transport_protocol: str, updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an IP connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /ip_connections/{id}\n@desc Retrieve an Ip connection\n@required {id: str # IP Connection ID}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_ip_id: str, default_routing_method: str, default_secondary_ip_id: str, default_tertiary_ip_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str], transport_protocol: str, updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an IP connection.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint PATCH /ip_connections/{id}\n@desc Update an Ip connection\n@required {id: str # Identifies the type of resource.}\n@optional {active: bool # Defaults to true, anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., android_push_credential_id: str=null # The uuid of the push credential for Android, call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this connection., connection_name: str, default_on_hold_comfort_noise_enabled: bool=true # 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: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., encode_contact_header_enabled: bool=false # Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios., encrypted_media: str # Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS., inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_ip_id: str, default_routing_method: str, default_secondary_ip_id: str, default_tertiary_ip_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str=null # The uuid of the push credential for Ios, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int} # 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., noise_suppression: str(inbound/outbound/both/disabled) # 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., noise_suppression_details: map{attenuation_limit: int, engine: str} # 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., onnet_t38_passthrough_enabled: bool=false # 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., outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str] # Tags associated with the connection., transport_protocol: str(UDP/TCP/TLS)=UDP # One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication., webhook_api_version: str(1/2)=1 # Determines which webhook format will be used, Telnyx API v1 or v2., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, android_push_credential_id: str?, call_cost_in_webhooks: bool, connection_name: str, created_at: str, default_on_hold_comfort_noise_enabled: bool, dtmf_type: str, encode_contact_header_enabled: bool, encrypted_media: str?, id: str, inbound: map{ani_number_format: str, channel_limit: int, codecs: [str], default_primary_ip_id: str, default_routing_method: str, default_secondary_ip_id: str, default_tertiary_ip_id: str, dnis_number_format: str, generate_ringback_tone: bool, isup_headers_enabled: bool, prack_enabled: bool, shaken_stir_enabled: bool, sip_compact_headers_enabled: bool, sip_region: str, sip_subdomain: str, sip_subdomain_receive_settings: str, timeout_1xx_secs: int, timeout_2xx_secs: int}, ios_push_credential_id: str?, jitter_buffer: map{enable_jitter_buffer: bool, jitterbuffer_msec_max: int, jitterbuffer_msec_min: int}, noise_suppression: str, noise_suppression_details: map{attenuation_limit: int, engine: str}, onnet_t38_passthrough_enabled: bool, outbound: map{ani_override: str, ani_override_type: str, call_parking_enabled: bool?, channel_limit: int, generate_ringback_tone: bool, instant_ringback_enabled: bool, ip_authentication_method: str, ip_authentication_token: str, localization: str, outbound_voice_profile_id: str, t38_reinvite_source: str, tech_prefix: str}, record_type: str, rtcp_settings: map{capture_enabled: bool, port: str, report_frequency_secs: int}, tags: [str], transport_protocol: str, updated_at: str, webhook_api_version: str, webhook_event_failover_url: str(uri)?, webhook_event_url: str(uri), webhook_timeout_secs: int?}} # Successful response with details about an IP connection.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endgroup\n\n@group ips\n@endpoint GET /ips\n@desc List Ips\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[connection_id], filter[ip_address], filter[port]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of IPs.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint POST /ips\n@desc Create an Ip\n@required {ip_address: str # IP adddress represented by this resource.}\n@optional {connection_id: str # ID of the IP Connection to which this IP should be attached., port: int=5060 # Port to use when connecting to this IP.}\n@returns(201) {data: map{connection_id: str, created_at: str, id: str, ip_address: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an IP.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endpoint DELETE /ips/{id}\n@desc Delete an Ip\n@required {id: str(uuid) # Identifies the type of resource.}\n@returns(200) {data: map{connection_id: str, created_at: str, id: str, ip_address: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an IP.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /ips/{id}\n@desc Retrieve an Ip\n@required {id: str(uuid) # Identifies the type of resource.}\n@returns(200) {data: map{connection_id: str, created_at: str, id: str, ip_address: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an IP.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint PATCH /ips/{id}\n@desc Update an Ip\n@required {id: str(uuid) # Identifies the type of resource., ip_address: str # IP adddress represented by this resource.}\n@optional {connection_id: str # ID of the IP Connection to which this IP should be attached., port: int=5060 # Port to use when connecting to this IP.}\n@returns(200) {data: map{connection_id: str, created_at: str, id: str, ip_address: str, port: int, record_type: str, updated_at: str}} # Successful response with details about an IP.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: The request was well-formed but was unable to be followed due to semantic errors.}\n\n@endgroup\n\n@group ledger_billing_group_reports\n@endpoint POST /ledger_billing_group_reports\n@desc Create a ledger billing group report\n@optional {month: int # Month of the ledger billing group report, year: int # Year of the ledger billing group report}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), organization_id: str(uuid), record_type: str, report_url: str(uri)?, status: str, updated_at: str(date-time)}} # Expected ledger billing group report response to a valid request\n@errors {401: Unexpected error, 500: Unexpected error}\n@example_request {\"month\":10,\"year\":2019}\n\n@endpoint GET /ledger_billing_group_reports/{id}\n@desc Get a ledger billing group report\n@required {id: str(uuid) # The id of the ledger billing group report}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), organization_id: str(uuid), record_type: str, report_url: str(uri)?, status: str, updated_at: str(date-time)}} # Expected ledger billing group report response to a valid request\n@errors {401: Unexpected error, 500: Unexpected error}\n\n@endgroup\n\n@group legacy\n@endpoint GET /legacy/reporting/batch_detail_records/messaging\n@desc Get all MDR detailed report requests\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # MDR detailed report requests retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint POST /legacy/reporting/batch_detail_records/messaging\n@desc Create a new MDR detailed report request\n@required {end_time: str(date-time) # 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, start_time: str(date-time) # Start time in ISO format}\n@optional {connections: [int(int64)] # List of connections to filter by, directions: [int(int32)] # List of directions to filter by (Inbound = 1, Outbound = 2), filters: [map{billing_group: str, cld: str, cld_filter: str, cli: str, cli_filter: str, filter_type: str, tags_list: str}] # List of filters to apply, include_message_body: bool # Whether to include message body in the report, managed_accounts: [str(uuid)] # List of managed accounts to include, profiles: [str(uuid)] # List of messaging profile IDs to filter by, record_types: [int(int32)] # List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3), report_name: str # Name of the report, select_all_managed_accounts: bool # Whether to select all managed accounts, timezone: str # Timezone for the report}\n@returns(200) {data: map{connections: [int(int64)], created_at: str(date-time), directions: [str], end_date: str(date-time), filters: [map], id: str(uuid), profiles: [str(uuid)], record_type: str, record_types: [str], report_name: str, report_url: str, start_date: str(date-time), status: str, updated_at: str(date-time)}} # MDR detailed report request created successfully\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/batch_detail_records/messaging/{id}\n@desc Delete a MDR detailed report request\n@required {id: str(uuid)}\n@returns(200) {data: map{connections: [int(int64)], created_at: str(date-time), directions: [str], end_date: str(date-time), filters: [map], id: str(uuid), profiles: [str(uuid)], record_type: str, record_types: [str], report_name: str, report_url: str, start_date: str(date-time), status: str, updated_at: str(date-time)}} # MDR detailed report request deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/messaging/{id}\n@desc Get a specific MDR detailed report request\n@required {id: str(uuid)}\n@returns(200) {data: map{connections: [int(int64)], created_at: str(date-time), directions: [str], end_date: str(date-time), filters: [map], id: str(uuid), profiles: [str(uuid)], record_type: str, record_types: [str], report_name: str, report_url: str, start_date: str(date-time), status: str, updated_at: str(date-time)}} # MDR detailed report request retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/speech_to_text\n@desc Get all Speech to Text batch report requests\n@returns(200) {data: [map]} # Speech to text batch report requests retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint POST /legacy/reporting/batch_detail_records/speech_to_text\n@desc Create a new Speech to Text batch report request\n@required {end_date: str(date-time) # End date in ISO format with timezone (date range must be up to one month), start_date: str(date-time) # Start date in ISO format with timezone}\n@returns(200) {data: map{created_at: str(date-time), download_link: str, end_date: str(date-time), id: str, record_type: str, start_date: str(date-time), status: str}} # Speech to text batch report request created successfully\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}\n@desc Delete a Speech to Text batch report request\n@required {id: str(uuid)}\n@returns(200) {data: map{created_at: str(date-time), download_link: str, end_date: str(date-time), id: str, record_type: str, start_date: str(date-time), status: str}} # Speech to text batch report request deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/speech_to_text/{id}\n@desc Get a specific Speech to Text batch report request\n@required {id: str(uuid)}\n@returns(200) {data: map{created_at: str(date-time), download_link: str, end_date: str(date-time), id: str, record_type: str, start_date: str(date-time), status: str}} # Speech to text batch report request retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/voice\n@desc Get all CDR report requests\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # CDR report requests retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint POST /legacy/reporting/batch_detail_records/voice\n@desc Create a new CDR report request\n@required {end_time: str(date-time) # End time in ISO format, start_time: str(date-time) # Start time in ISO format}\n@optional {call_types: [int(int32)] # List of call types to filter by (Inbound = 1, Outbound = 2), connections: [int(int64)] # List of connections to filter by, fields: [str] # Set of fields to include in the report, filters: [map{billing_group: str, cld: str, cld_filter: str, cli: str, cli_filter: str, filter_type: str, tags_list: str}] # List of filters to apply, include_all_metadata: bool # Whether to include all metadata, managed_accounts: [str(uuid)] # List of managed accounts to include, record_types: [int(int32)] # List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3), report_name: str # Name of the report, select_all_managed_accounts: bool # Whether to select all managed accounts, source: str # Source of the report. Valid values: calls (default), call-control, fax-api, webrtc, timezone: str # Timezone for the report}\n@returns(200) {data: map{call_types: [int(int32)], connections: [int(int64)], created_at: str, end_time: str, filters: [map], id: str, managed_accounts: [str(uuid)], record_type: str, record_types: [int(int32)], report_name: str, report_url: str, retry: int(int32), source: str, start_time: str, status: int(int32), timezone: str, updated_at: str}} # CDR report request created successfully\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/voice/fields\n@desc Get available CDR report fields\n@returns(200) {Billing: [str], Interaction Data: [str], Number Information: [str], Telephony Data: [str]} # Available fields retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/batch_detail_records/voice/{id}\n@desc Delete a CDR report request\n@required {id: str(uuid)}\n@returns(200) {data: map{call_types: [int(int32)], connections: [int(int64)], created_at: str, end_time: str, filters: [map], id: str, managed_accounts: [str(uuid)], record_type: str, record_types: [int(int32)], report_name: str, report_url: str, retry: int(int32), source: str, start_time: str, status: int(int32), timezone: str, updated_at: str}} # CDR report request deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/batch_detail_records/voice/{id}\n@desc Get a specific CDR report request\n@required {id: str(uuid)}\n@returns(200) {data: map{call_types: [int(int32)], connections: [int(int64)], created_at: str, end_time: str, filters: [map], id: str, managed_accounts: [str(uuid)], record_type: str, record_types: [int(int32)], report_name: str, report_url: str, retry: int(int32), source: str, start_time: str, status: int(int32), timezone: str, updated_at: str}} # CDR report request retrieved successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/messaging\n@desc List MDR usage reports\n@optional {page: int(int32)=1 # Page number, per_page: int(int32)=20 # Size of the page}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint POST /legacy/reporting/usage_reports/messaging\n@desc Create a new legacy usage V2 MDR report request\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), profiles: [str(uuid)], record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # V2 legacy MDR usage report request created successfully\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/usage_reports/messaging/{id}\n@desc Delete a V2 legacy usage MDR report request\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), profiles: [str(uuid)], record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # V2 legacy usage MDR report request deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/messaging/{id}\n@desc Get an MDR usage report\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), profiles: [str(uuid)], record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # Successful\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/number_lookup\n@desc List telco data usage reports\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successfully retrieved telco data usage reports\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint POST /legacy/reporting/usage_reports/number_lookup\n@desc Submit telco data usage report\n@returns(200) {data: map{aggregation_type: str, created_at: str(date-time), end_date: str(date), id: str(uuid), managed_accounts: [str], record_type: str, report_url: str, result: [map], start_date: str(date), status: str, updated_at: str(date-time)}} # Successfully submitted telco data usage report\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 422: Unprocessable entity, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/usage_reports/number_lookup/{id}\n@desc Delete telco data usage report\n@required {id: str}\n@returns(200) Successfully deleted telco data usage report\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/number_lookup/{id}\n@desc Get telco data usage report by ID\n@required {id: str}\n@returns(200) {data: map{aggregation_type: str, created_at: str(date-time), end_date: str(date), id: str(uuid), managed_accounts: [str], record_type: str, report_url: str, result: [map], start_date: str(date), status: str, updated_at: str(date-time)}} # Successfully retrieved telco data usage report\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/speech_to_text\n@desc Get speech to text usage report\n@optional {start_date: str(date-time), end_date: str(date-time)}\n@returns(200) {data: map} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /legacy/reporting/usage_reports/voice\n@desc List CDR usage reports\n@optional {page: int(int32)=1 # Page number, per_page: int(int32)=20 # Size of the page}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint POST /legacy/reporting/usage_reports/voice\n@desc Create a new legacy usage V2 CDR report request\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), product_breakdown: int(int32), record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # V2 legacy CDR usage report request created successfully\n@errors {400: Invalid request parameters, 401: Unauthorized, 403: Forbidden, 500: Internal server error}\n\n@endpoint DELETE /legacy/reporting/usage_reports/voice/{id}\n@desc Delete a V2 legacy usage CDR report request\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), product_breakdown: int(int32), record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # V2 legacy usage CDR report request deleted successfully\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endpoint GET /legacy/reporting/usage_reports/voice/{id}\n@desc Get a CDR usage report\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: int(int32), connections: [str], created_at: str(date-time), end_time: str(date-time), id: str(uuid), product_breakdown: int(int32), record_type: str, report_url: str, result: map, start_time: str(date-time), status: int(int32), updated_at: str(date-time)}} # Successful\n@errors {401: Unauthorized, 403: Forbidden, 404: Report not found, 500: Internal server error}\n\n@endgroup\n\n@group list\n@endpoint GET /list\n@desc List All Numbers using Channel Billing\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A list of numbers using GCB, grouped by channel zone\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint GET /list/{channel_zone_id}\n@desc List Numbers using Channel Billing for a specific Zone\n@required {channel_zone_id: str # Channel zone identifier}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A list of numbers using GCB, grouped by channel zone\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endgroup\n\n@group managed_accounts\n@endpoint GET /managed_accounts\n@desc Lists accounts managed by the current user.\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[email][contains], filter[email][eq], filter[organization_name][contains], filter[organization_name][eq], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], sort: str(created_at/email)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         email: sorts the result by the     email field in ascending order.            -email: sorts the result by the     email field in descending order.      If not given, results are sorted by created_at in descending order., include_cancelled_accounts: bool=false # Specifies if cancelled accounts should be included in the results.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of managed accounts.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated.}\n\n@endpoint POST /managed_accounts\n@desc Create a new managed account.\n@required {business_name: str # 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.}\n@optional {email: str # 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., managed_account_allow_custom_pricing: bool # 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., password: str # 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.), rollup_billing: bool # 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.}\n@returns(200) {data: map{api_key: str, api_token: str, api_user: str, balance: map{available_credit: str, balance: str, credit_limit: str, currency: str, record_type: str}, created_at: str, email: str(email), id: str(uuid), managed_account_allow_custom_pricing: bool, manager_account_id: str, organization_name: str, record_type: str, rollup_billing: bool, updated_at: str}} # Successful response with information about a single managed account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /managed_accounts/allocatable_global_outbound_channels\n@desc Display information about allocatable global outbound channels for the current user.\n@returns(200) {data: map{allocatable_global_outbound_channels: int, managed_account_allow_custom_pricing: bool, record_type: str, total_global_channels_allocated: int}} # Successful response with information about allocatable global outbound channels.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 403: Unauthorized response. Happens when the current user is not authorized to access the endpoint.}\n\n@endpoint GET /managed_accounts/{id}\n@desc Retrieve a managed account\n@required {id: str # Managed Account User ID}\n@returns(200) {data: map{api_key: str, api_token: str, api_user: str, balance: map{available_credit: str, balance: str, credit_limit: str, currency: str, record_type: str}, created_at: str, email: str(email), id: str(uuid), managed_account_allow_custom_pricing: bool, manager_account_id: str, organization_name: str, record_type: str, rollup_billing: bool, updated_at: str}} # Successful response with information about a single managed account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 404: Resource not found}\n\n@endpoint PATCH /managed_accounts/{id}\n@desc Update a managed account\n@required {id: str # Managed Account User ID}\n@optional {managed_account_allow_custom_pricing: bool # 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.}\n@returns(200) {data: map{api_key: str, api_token: str, api_user: str, balance: map{available_credit: str, balance: str, credit_limit: str, currency: str, record_type: str}, created_at: str, email: str(email), id: str(uuid), managed_account_allow_custom_pricing: bool, manager_account_id: str, organization_name: str, record_type: str, rollup_billing: bool, updated_at: str}} # Successful response with information about a single managed account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /managed_accounts/{id}/actions/disable\n@desc Disables a managed account\n@required {id: str # Managed Account User ID}\n@returns(200) {data: map{api_key: str, api_token: str, api_user: str, balance: map{available_credit: str, balance: str, credit_limit: str, currency: str, record_type: str}, created_at: str, email: str(email), id: str(uuid), managed_account_allow_custom_pricing: bool, manager_account_id: str, organization_name: str, record_type: str, rollup_billing: bool, updated_at: str}} # Successful response with information about a single managed account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /managed_accounts/{id}/actions/enable\n@desc Enables a managed account\n@required {id: str # Managed Account User ID}\n@optional {reenable_all_connections: bool=false # 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.}\n@returns(200) {data: map{api_key: str, api_token: str, api_user: str, balance: map{available_credit: str, balance: str, credit_limit: str, currency: str, record_type: str}, created_at: str, email: str(email), id: str(uuid), managed_account_allow_custom_pricing: bool, manager_account_id: str, organization_name: str, record_type: str, rollup_billing: bool, updated_at: str}} # Successful response with information about a single managed account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint PATCH /managed_accounts/{id}/update_global_channel_limit\n@desc Update the amount of allocatable global outbound channels allocated to a specific managed account.\n@required {id: str # Managed Account User ID}\n@optional {channel_limit: int # 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.}\n@returns(200) {data: map{channel_limit: int, email: str, id: str, manager_account_id: str, record_type: str}} # Successful response with information about the allocatable global outbound channels for the given account.\n@errors {401: Unauthenticated response. Happens when the current user cannot be authenticated., 404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group media\n@endpoint GET /media\n@desc List uploaded media\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[content_type][]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A response with a list of media resources\n@errors {401: Unexpected error}\n\n@endpoint POST /media\n@desc Upload media\n@required {media_url: str # The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB.}\n@optional {media_name: str # The unique identifier of a file., ttl_secs: int # 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.}\n@returns(201) {data: map{content_type: str, created_at: str, expires_at: str, media_name: str, updated_at: str}} # A response describing a media resource\n@errors {401: Unexpected error, 422: Unexpected error}\n\n@endpoint DELETE /media/{media_name}\n@desc Deletes stored media\n@required {media_name: str # Uniquely identifies a media resource.}\n@returns(204) The media was deleted successfully.\n@errors {401: Unexpected error, 404: Unexpected error}\n\n@endpoint GET /media/{media_name}\n@desc Retrieve stored media\n@required {media_name: str # Uniquely identifies a media resource.}\n@returns(200) {data: map{content_type: str, created_at: str, expires_at: str, media_name: str, updated_at: str}} # A response describing a media resource\n@errors {401: Unexpected error, 404: Unexpected error}\n\n@endpoint PUT /media/{media_name}\n@desc Update stored media\n@required {media_name: str # Uniquely identifies a media resource.}\n@optional {media_url: str # The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB., ttl_secs: int # 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.}\n@returns(200) {data: map{content_type: str, created_at: str, expires_at: str, media_name: str, updated_at: str}} # A response describing a media resource\n@errors {401: Unexpected error, 404: Unexpected error, 422: Unexpected error}\n\n@endpoint GET /media/{media_name}/download\n@desc Download stored media\n@required {media_name: str # Uniquely identifies a media resource.}\n@returns(200) A response describing a media resource\n@errors {401: Unexpected error, 404: Unexpected error, 422: Unexpected error}\n\n@endgroup\n\n@group messages\n@endpoint POST /messages\n@desc Send a message\n@required {to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {auto_detect: bool=false # Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts., encoding: str(auto/gsm7/ucs2)=auto # 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., from: str # Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).  **Required if sending with a phone number, short code, or alphanumeric sender ID.**, media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB.  **Required for MMS**, messaging_profile_id: str # Unique identifier for a messaging profile.  **Required if sending via number pool or with an alphanumeric sender ID.**, send_at: str(date-time) # ISO 8601 formatted date indicating when to send the message - accurate up till a minute., subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string.  **Required for SMS**, type: str(SMS/MMS) # The protocol for sending the message, either SMS or MMS., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/alphanumeric_sender_id\n@desc Send a message using an alphanumeric sender ID\n@required {from: str # A valid alphanumeric sender ID on the user's account., messaging_profile_id: str(uuid) # The messaging profile ID to use., text: str # The message body., to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {use_profile_webhooks: bool # If true, use the messaging profile's webhook settings., webhook_failover_url: str(url) # Failover callback URL for delivery status updates., webhook_url: str(url) # Callback URL for delivery status updates.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with the sent message.\n@errors {400: Bad Request, 401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint GET /messages/group/{message_id}\n@desc Retrieve group MMS messages\n@required {message_id: str(uuid) # The group message ID.}\n@returns(200) {data: [map]} # Successful response with group MMS messages.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint POST /messages/group_mms\n@desc Send a group MMS message\n@required {from: str # Phone number, in +E.164 format, used to send the message., to: [str] # A list of destinations. No more than 8 destinations are allowed.}\n@optional {media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB., subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/long_code\n@desc Send a long code message\n@required {from: str # Phone number, in +E.164 format, used to send the message., to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {auto_detect: bool=false # Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts., encoding: str(auto/gsm7/ucs2)=auto # 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., media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB.  **Required for MMS**, subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string.  **Required for SMS**, type: str(SMS/MMS) # The protocol for sending the message, either SMS or MMS., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/number_pool\n@desc Send a message using number pool\n@required {messaging_profile_id: str # Unique identifier for a messaging profile., to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {auto_detect: bool=false # Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts., encoding: str(auto/gsm7/ucs2)=auto # 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., media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB.  **Required for MMS**, subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string.  **Required for SMS**, type: str(SMS/MMS) # The protocol for sending the message, either SMS or MMS., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/rcs\n@desc Send an RCS message\n@required {agent_id: str # RCS Agent ID, agent_message: map{content_message: map, event: map, expire_time: str(date-time), ttl: str}, messaging_profile_id: str # A valid messaging profile ID, to: str # Phone number in +E.164 format}\n@optional {mms_fallback: map{from: str, media_urls: [str], subject: str, text: str}, sms_fallback: map{from: str, text: str}, type: str # Message type - must be set to \"RCS\", webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{body: map{content_message: map{content_info: map, rich_card: map, suggestions: [map], text: str}, event: map{event_type: str}, expire_time: str(date-time), ttl: str}, direction: str, encoding: str, from: map{agent_id: str, agent_name: str, carrier: str}, id: str, messaging_profile_id: str, organization_id: str, received_at: str(date-time), record_type: str, to: [map], type: str, wait_seconds: num(float)?}} # Successful operation\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messages/rcs/deeplinks/{agent_id}\n@desc Generate RCS deeplink\n@required {agent_id: str # RCS agent ID}\n@optional {phone_number: str # Phone number in E164 format (URL encoded), body: str # Pre-filled message body (URL encoded)}\n@returns(200) {data: map{url: str}} # Successful response with deeplink URL\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/schedule\n@desc Schedule a message\n@required {to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {auto_detect: bool=false # Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts., from: str # Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).  **Required if sending with a phone number, short code, or alphanumeric sender ID.**, media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB.  **Required for MMS**, messaging_profile_id: str # Unique identifier for a messaging profile.  **Required if sending via number pool or with an alphanumeric sender ID.**, send_at: str(date-time) # ISO 8601 formatted date indicating when to send the message - accurate up till a minute., subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string.  **Required for SMS**, type: str(SMS/MMS) # The protocol for sending the message, either SMS or MMS., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/short_code\n@desc Send a short code message\n@required {from: str # Phone number, in +E.164 format, used to send the message., to: str # Receiving address (+E.164 formatted phone number or short code).}\n@optional {auto_detect: bool=false # Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message parts., encoding: str(auto/gsm7/ucs2)=auto # 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., media_urls: [str(url)] # A list of media URLs. The total media size must be less than 1 MB.  **Required for MMS**, subject: str # Subject of multimedia message, text: str # Message body (i.e., content) as a non-empty string.  **Required for SMS**, type: str(SMS/MMS) # The protocol for sending the message, either SMS or MMS., use_profile_webhooks: bool=true # 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., webhook_failover_url: str(url) # The failover URL where webhooks related to this message will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, wait_seconds: num(float)?, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with details about a message.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messages/whatsapp\n@desc Send a Whatsapp message\n@required {from: str # Phone number in +E.164 format associated with Whatsapp account, to: str # Phone number in +E.164 format, whatsapp_message: map{audio: map, biz_opaque_callback_data: str, contacts: [map], document: map, image: map, interactive: map, location: map, reaction: map, sticker: map, type: str, video: map}}\n@optional {type: str # Message type - must be set to \"WHATSAPP\", webhook_url: str(url) # The URL where webhooks related to this message will be sent.}\n@returns(200) {data: map{body: map{audio: map{caption: str, filename: str, link: str(url), voice: bool}, biz_opaque_callback_data: str, contacts: [map], document: map{caption: str, filename: str, link: str(url), voice: bool}, image: map{caption: str, filename: str, link: str(url), voice: bool}, interactive: map{action: map, body: map, footer: map, header: map, type: str}, location: map{address: str, latitude: str, longitude: str, name: str}, reaction: map{emoji: str, message_id: str}, sticker: map{caption: str, filename: str, link: str(url), voice: bool}, type: str, video: map{caption: str, filename: str, link: str(url), voice: bool}}, direction: str, encoding: str, from: map{carrier: str, line_type: str, phone_number: str, status: str}, id: str, messaging_profile_id: str, organization_id: str, received_at: str(date-time), record_type: str, to: [map], type: str, wait_seconds: num(float)?}} # Successful operation\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /messages/{id}\n@desc Cancel a scheduled message\n@required {id: str(uuid) # The id of the message to cancel}\n@returns(200) {cc: [map], completed_at: str(date-time)?, cost: map?, cost_breakdown: map?, direction: str, encoding: str, errors: [any], from: map{carrier: str, line_type: str, phone_number: str}, id: str(uuid), media: [map], messaging_profile_id: str, organization_id: str(uuid), parts: int, received_at: str(date-time), record_type: str, sent_at: str(date-time)?, smart_encoding_applied: bool, subject: str?, tags: [str], tcr_campaign_billable: bool, tcr_campaign_id: str?, tcr_campaign_registered: str?, text: str, to: [map], type: str, valid_until: str(date-time)?, webhook_failover_url: str(url)?, webhook_url: str(url)?} # Successful response\n@errors {403: Forbidden, 404: Not found., 4XX: Unexpected error}\n\n@endpoint GET /messages/{id}\n@desc Retrieve a message\n@required {id: str(uuid) # The id of the message}\n@returns(200) {data: any} # Successful response with details of a message.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group messaging\n@endpoint GET /messaging/rcs/agents\n@desc List all RCS agents\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful reponse with the list of RCS agents\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging/rcs/agents/{id}\n@desc Retrieve an RCS agent\n@required {id: str # RCS agent ID}\n@returns(200) {data: map{agent_id: str, agent_name: str, created_at: str(date-time), enabled: bool, profile_id: str(uuid)?, updated_at: str(date-time), user_id: str, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with the RCS agent\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /messaging/rcs/agents/{id}\n@desc Modify an RCS agent\n@required {id: str # RCS agent ID}\n@optional {profile_id: str(uuid) # Messaging profile ID associated with the RCS Agent, webhook_failover_url: str(url) # Failover URL to receive RCS events, webhook_url: str(url) # URL to receive RCS events}\n@returns(200) {data: map{agent_id: str, agent_name: str, created_at: str(date-time), enabled: bool, profile_id: str(uuid)?, updated_at: str(date-time), user_id: str, webhook_failover_url: str(url)?, webhook_url: str(url)?}} # Successful response with the updated RCS agent\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging/rcs/bulk_capabilities\n@desc Check RCS capabilities (batch)\n@required {agent_id: str # RCS Agent ID, phone_numbers: [str] # List of phone numbers to check}\n@returns(200) {data: [map]} # Successful response\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging/rcs/capabilities/{agent_id}/{phone_number}\n@desc Check RCS capabilities\n@required {agent_id: str # RCS agent ID, phone_number: str # Phone number in E164 format}\n@returns(200) {data: map{agent_id: str, agent_name: str, features: [str], phone_number: str, record_type: str}} # Successful response\n@errors {4XX: Unexpected error}\n\n@endpoint PUT /messaging/rcs/test_number_invite/{id}/{phone_number}\n@desc Add RCS test number\n@required {id: str # RCS agent ID, phone_number: str # Phone number in E164 format to invite for testing}\n@returns(200) {data: map{agent_id: str, phone_number: str, record_type: str, status: str}} # Test number successfully invited to RCS agent\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group messaging_hosted_number_orders\n@endpoint GET /messaging_hosted_number_orders\n@desc List messaging hosted number orders\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of messaging hosted number orders.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_hosted_number_orders\n@desc Create a messaging hosted number order\n@optional {messaging_profile_id: str # Automatically associate the number with this messaging profile ID when the order is complete., phone_numbers: [str] # Phone numbers to be used for hosted messaging.}\n@returns(200) {data: map{id: str(uuid), messaging_profile_id: str?, phone_numbers: [map], record_type: str, status: str}} # Successful response with details about a messaging hosted number order.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_hosted_number_orders/eligibility_numbers_check\n@desc Check hosted messaging eligibility\n@required {phone_numbers: [str] # List of phone numbers to check eligibility}\n@returns(200) {phone_numbers: [map]} # Successful response\n@errors {400: Bad request, 401: Unauthorized}\n\n@endpoint DELETE /messaging_hosted_number_orders/{id}\n@desc Delete a messaging hosted number order\n@required {id: str # Identifies the messaging hosted number order to delete.}\n@returns(200) {data: map{id: str(uuid), messaging_profile_id: str?, phone_numbers: [map], record_type: str, status: str}} # Successful response with details about a messaging hosted number order.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_hosted_number_orders/{id}\n@desc Retrieve a messaging hosted number order\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{id: str(uuid), messaging_profile_id: str?, phone_numbers: [map], record_type: str, status: str}} # Successful response with details about a messaging hosted number order.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_hosted_number_orders/{id}/actions/file_upload\n@desc Upload hosted number document\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{id: str(uuid), messaging_profile_id: str?, phone_numbers: [map], record_type: str, status: str}} # Successful response with details about a messaging hosted number order.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_hosted_number_orders/{id}/validation_codes\n@desc Validate hosted number codes\n@required {id: str # Order ID related to the validation codes., verification_codes: [map{code!: str, phone_number!: str}]}\n@returns(200) {data: map{order_id: str(uuid), phone_numbers: [map]}} # Successful response with the phone numbers and their respective status of the validation codes.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_hosted_number_orders/{id}/verification_codes\n@desc Create hosted number verification codes\n@required {id: str # Order ID to have a verification code created., phone_numbers: [str], verification_method: str(sms/call)}\n@returns(200) {data: [map]} # Verification codes created and sent to the phone numbers of the hosted order.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group messaging_hosted_numbers\n@endpoint GET /messaging_hosted_numbers\n@desc List messaging hosted numbers\n@optional {filter[messaging_profile_id]: str(uuid): any # Filter by messaging profile ID., filter[phone_number]: str # Filter by exact phone number., filter[phone_number][contains]: str # Filter by phone number substring., sort[phone_number]: str(asc/desc) # Sort by phone number., page[number]: int=1, page[size]: int=20}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of hosted numbers.\n@errors {401: Unauthorized}\n\n@endpoint DELETE /messaging_hosted_numbers/{id}\n@desc Delete a messaging hosted number\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{id: str(uuid), messaging_profile_id: str?, phone_numbers: [map], record_type: str, status: str}} # Successful response with details about a messaging hosted number order.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_hosted_numbers/{id}\n@desc Retrieve a messaging hosted number\n@required {id: str # The ID or phone number of the hosted number.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), eligible_messaging_products: [str], features: map{mms: map?, sms: map?}, health: map{inbound_outbound_ratio: num(float), message_count: int, spam_ratio: num(float), success_ratio: num(float)}, id: str, messaging_product: str, messaging_profile_id: str?, organization_id: str, phone_number: str, record_type: str, tags: [str], traffic_type: str, type: str, updated_at: str(date-time)}} # Successful response with a hosted number.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint PATCH /messaging_hosted_numbers/{id}\n@desc Update a messaging hosted number\n@required {id: str # The ID or phone number of the hosted number.}\n@optional {messaging_product: str # Configure the messaging product for this number:  * Omit this field or set its value to `null` to keep the current value. * Set this field to a quoted product ID to set this phone number to that product, messaging_profile_id: str # Configure the messaging profile this phone number is assigned to:  * Omit this field or set its value to `null` to keep the current value. * Set this field to `\"\"` to unassign the number from its messaging profile * Set this field to a quoted UUID of a messaging profile to assign this number to that messaging profile, tags: [str] # Tags to set on this phone number.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), eligible_messaging_products: [str], features: map{mms: map?, sms: map?}, health: map{inbound_outbound_ratio: num(float), message_count: int, spam_ratio: num(float), success_ratio: num(float)}, id: str, messaging_product: str, messaging_profile_id: str?, organization_id: str, phone_number: str, record_type: str, tags: [str], traffic_type: str, type: str, updated_at: str(date-time)}} # Successful response with the updated hosted number.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endgroup\n\n@group messaging_numbers_bulk_updates\n@endpoint POST /messaging_numbers_bulk_updates\n@desc Bulk update phone number profiles\n@required {messaging_profile_id: str # Configure the messaging profile these phone numbers are assigned to:  * Set this field to `\"\"` to unassign each number from their respective messaging profile * Set this field to a quoted UUID of a messaging profile to assign these numbers to that messaging profile, numbers: [str] # The list of phone numbers to update.}\n@optional {assign_only: bool=false # If true, only assign numbers to the profile without changing other settings.}\n@returns(200) {data: map{failed: [str], order_id: str(uuid), pending: [str], record_type: str, success: [str]}} # Successful response with details about messaging bulk update phone numbers.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_numbers_bulk_updates/{order_id}\n@desc Retrieve bulk update status\n@required {order_id: str # Order ID to verify bulk update status.}\n@returns(200) {data: map{failed: [str], order_id: str(uuid), pending: [str], record_type: str, success: [str]}} # Successful response with details about messaging bulk update phone numbers.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group messaging_optouts\n@endpoint GET /messaging_optouts\n@desc List opt-outs\n@optional {redaction_enabled: str # If receiving address (+E.164 formatted phone number) should be redacted, filter: map # Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id], filter[from], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], created_at: map # Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with opt-out list data\n@errors {400: Bad request, 401: Unauthorized}\n\n@endgroup\n\n@group messaging_profile_metrics\n@endpoint GET /messaging_profile_metrics\n@desc List high-level messaging profile metrics\n@optional {time_frame: str # The time frame for metrics.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with high-level profile metrics.\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endgroup\n\n@group messaging_profiles\n@endpoint GET /messaging_profiles\n@desc List messaging profiles\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[name], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter[name][eq]: str # Filter profiles by exact name match., filter[name][contains]: str # Filter profiles by name containing the given string.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of messaging profiles.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_profiles\n@desc Create a messaging profile\n@required {name: str # A user friendly name for the messaging profile., whitelisted_destinations: [str] # 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@optional {ai_assistant_id: str # The AI assistant ID to associate with this messaging profile., alpha_sender: str # The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID., daily_spend_limit: str # The maximum amount of money (in USD) that can be spent by this profile before midnight UTC., daily_spend_limit_enabled: bool # Whether to enforce the value configured by `daily_spend_limit`., enabled: bool=true # Specifies whether the messaging profile is enabled or not., health_webhook_url: str(url) # A URL to receive health check webhooks for numbers in this profile., mms_fall_back_to_sms: bool=false # enables SMS fallback for MMS messages., mms_transcoding: bool=false # enables automated resizing of MMS media., mobile_only: bool=false # Send messages only to mobile phone numbers., number_pool_settings: map{geomatch: bool, long_code_weight!: num, skip_unhealthy!: bool, sticky_sender: bool, toll_free_weight!: num} # Number Pool allows you to send messages from a pool of numbers of different types, assigning weights to each type. The pool consists of all the long code and toll free numbers assigned to the messaging profile.  To disable this feature, set the object field to `null`., resource_group_id: str # The resource group ID to associate with this messaging profile., smart_encoding: bool=false # 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., url_shortener_settings: map{domain!: str, prefix: str, replace_blacklist_only: bool, send_webhooks: bool} # The URL shortener feature allows automatic replacement of URLs that were generated using a public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly, is.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with with links generated by Telnyx. The use of custom links can improve branding and message deliverability.  To disable this feature, set the object field to `null`., webhook_api_version: str(1/2/2010-04-01)=2 # Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format., webhook_failover_url: str(url)= # The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails., webhook_url: str(url)= # The URL where webhooks related to this messaging profile will be sent.}\n@returns(200) {data: map{ai_assistant_id: str?, alpha_sender: str?, created_at: str(date-time), daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, health_webhook_url: str(url)?, id: str(uuid), mms_fall_back_to_sms: bool, mms_transcoding: bool, mobile_only: bool, name: str, number_pool_settings: map?, organization_id: str, record_type: str, redaction_enabled: bool, redaction_level: int, resource_group_id: str?, smart_encoding: bool, updated_at: str(date-time), url_shortener_settings: map?, v1_secret: str, webhook_api_version: str, webhook_failover_url: str(url)?, webhook_url: str(url)?, whitelisted_destinations: [str]}} # Successful response with details about a messaging profile.\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /messaging_profiles/{id}\n@desc Delete a messaging profile\n@required {id: str(uuid) # The id of the messaging profile to retrieve}\n@returns(200) {data: map{ai_assistant_id: str?, alpha_sender: str?, created_at: str(date-time), daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, health_webhook_url: str(url)?, id: str(uuid), mms_fall_back_to_sms: bool, mms_transcoding: bool, mobile_only: bool, name: str, number_pool_settings: map?, organization_id: str, record_type: str, redaction_enabled: bool, redaction_level: int, resource_group_id: str?, smart_encoding: bool, updated_at: str(date-time), url_shortener_settings: map?, v1_secret: str, webhook_api_version: str, webhook_failover_url: str(url)?, webhook_url: str(url)?, whitelisted_destinations: [str]}} # Successful response with details about a messaging profile.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_profiles/{id}\n@desc Retrieve a messaging profile\n@required {id: str(uuid) # The id of the messaging profile to retrieve}\n@returns(200) {data: map{ai_assistant_id: str?, alpha_sender: str?, created_at: str(date-time), daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, health_webhook_url: str(url)?, id: str(uuid), mms_fall_back_to_sms: bool, mms_transcoding: bool, mobile_only: bool, name: str, number_pool_settings: map?, organization_id: str, record_type: str, redaction_enabled: bool, redaction_level: int, resource_group_id: str?, smart_encoding: bool, updated_at: str(date-time), url_shortener_settings: map?, v1_secret: str, webhook_api_version: str, webhook_failover_url: str(url)?, webhook_url: str(url)?, whitelisted_destinations: [str]}} # Successful response with details about a messaging profile.\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /messaging_profiles/{id}\n@desc Update a messaging profile\n@required {id: str(uuid) # The id of the messaging profile to retrieve}\n@optional {alpha_sender: str # The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender ID., created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., daily_spend_limit: str # The maximum amount of money (in USD) that can be spent by this profile before midnight UTC., daily_spend_limit_enabled: bool # Whether to enforce the value configured by `daily_spend_limit`., enabled: bool # Specifies whether the messaging profile is enabled or not., id: str(uuid) # Identifies the type of resource., mms_fall_back_to_sms: bool=false # enables SMS fallback for MMS messages., mms_transcoding: bool=false # enables automated resizing of MMS media., mobile_only: bool=false # Send messages only to mobile phone numbers., name: str # A user friendly name for the messaging profile., number_pool_settings: map{geomatch: bool, long_code_weight!: num, skip_unhealthy!: bool, sticky_sender: bool, toll_free_weight!: num} # Number Pool allows you to send messages from a pool of numbers of different types, assigning weights to each type. The pool consists of all the long code and toll free numbers assigned to the messaging profile.  To disable this feature, set the object field to `null`., record_type: str # Identifies the type of the resource., smart_encoding: bool=false # 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., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated., url_shortener_settings: map{domain!: str, prefix: str, replace_blacklist_only: bool, send_webhooks: bool} # The URL shortener feature allows automatic replacement of URLs that were generated using a public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly, is.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with with links generated by Telnyx. The use of custom links can improve branding and message deliverability.  To disable this feature, set the object field to `null`., v1_secret: str # Secret used to authenticate with v1 endpoints., webhook_api_version: str(1/2/2010-04-01) # Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format., webhook_failover_url: str(url) # The failover URL where webhooks related to this messaging profile will be sent if sending to the primary URL fails., webhook_url: str(url) # The URL where webhooks related to this messaging profile will be sent., whitelisted_destinations: [str] # Destinations to which the messaging profile is allowed to send. The elements in the list must be valid ISO 3166-1 alpha-2 country codes. If set to `[\"*\"]`, all destinations will be allowed.  This field is required if the messaging profile doesn't have it defined yet.}\n@returns(200) {data: map{ai_assistant_id: str?, alpha_sender: str?, created_at: str(date-time), daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, health_webhook_url: str(url)?, id: str(uuid), mms_fall_back_to_sms: bool, mms_transcoding: bool, mobile_only: bool, name: str, number_pool_settings: map?, organization_id: str, record_type: str, redaction_enabled: bool, redaction_level: int, resource_group_id: str?, smart_encoding: bool, updated_at: str(date-time), url_shortener_settings: map?, v1_secret: str, webhook_api_version: str, webhook_failover_url: str(url)?, webhook_url: str(url)?, whitelisted_destinations: [str]}} # Successful response with details about a messaging profile.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_profiles/{id}/actions/regenerate_secret\n@desc Regenerate messaging profile secret\n@required {id: str(uuid) # The identifier of the messaging profile.}\n@returns(200) {data: map{ai_assistant_id: str?, alpha_sender: str?, created_at: str(date-time), daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, health_webhook_url: str(url)?, id: str(uuid), mms_fall_back_to_sms: bool, mms_transcoding: bool, mobile_only: bool, name: str, number_pool_settings: map?, organization_id: str, record_type: str, redaction_enabled: bool, redaction_level: int, resource_group_id: str?, smart_encoding: bool, updated_at: str(date-time), url_shortener_settings: map?, v1_secret: str, webhook_api_version: str, webhook_failover_url: str(url)?, webhook_url: str(url)?, whitelisted_destinations: [str]}} # Successful response with details about a messaging profile.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint GET /messaging_profiles/{id}/alphanumeric_sender_ids\n@desc List alphanumeric sender IDs for a messaging profile\n@required {id: str(uuid) # The identifier of the messaging profile.}\n@optional {page[number]: int=1, page[size]: int=20: any}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of alphanumeric sender IDs.\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint GET /messaging_profiles/{id}/metrics\n@desc Get detailed messaging profile metrics\n@required {id: str(uuid) # The identifier of the messaging profile.}\n@optional {time_frame: str # The time frame for metrics.}\n@returns(200) {data: map} # Successful response with detailed profile metrics.\n@errors {400: Bad Request, 401: Unauthorized, 404: Not Found}\n\n@endpoint GET /messaging_profiles/{id}/phone_numbers\n@desc List phone numbers associated with a messaging profile\n@required {id: str(uuid) # The id of the messaging profile to retrieve}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of messaging profile phone numbers.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_profiles/{id}/short_codes\n@desc List short codes associated with a messaging profile\n@required {id: str(uuid) # The id of the messaging profile to retrieve}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of messaging profile short codes.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_profiles/{profile_id}/autoresp_configs\n@desc List Auto-Response Settings\n@required {profile_id: str(uuid)}\n@optional {country_code: str, created_at: map # Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte], updated_at: map # Consolidated updated_at parameter (deepObject style). Originally: updated_at[gte], updated_at[lte]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {4XX: Unexpected error}\n\n@endpoint POST /messaging_profiles/{profile_id}/autoresp_configs\n@desc Create auto-response setting\n@required {profile_id: str, country_code: str, keywords: [str], op: str(start/stop/info)}\n@optional {resp_text: str}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), id: str, keywords: [str], op: str, resp_text: str, updated_at: str(date-time)}} # Successful Response\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n@desc Delete Auto-Response Setting\n@required {profile_id: str(uuid), autoresp_cfg_id: str(uuid)}\n@returns(200) Successful Response\n@errors {4XX: Unexpected error}\n\n@endpoint GET /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n@desc Get Auto-Response Setting\n@required {profile_id: str(uuid), autoresp_cfg_id: str(uuid)}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), id: str, keywords: [str], op: str, resp_text: str, updated_at: str(date-time)}} # Successful Response\n@errors {4XX: Unexpected error}\n\n@endpoint PUT /messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}\n@desc Update Auto-Response Setting\n@required {profile_id: str(uuid), autoresp_cfg_id: str(uuid), country_code: str, keywords: [str], op: str(start/stop/info)}\n@optional {resp_text: str}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), id: str, keywords: [str], op: str, resp_text: str, updated_at: str(date-time)}} # Successful Response\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group messaging_tollfree\n@endpoint GET /messaging_tollfree/verification/requests\n@desc List Verification Requests\n@required {page: int, page_size: int # Request this many records per page          This value is automatically clamped if the provided value is too large.}\n@optional {date_start: str(date-time), date_end: str(date-time), status: str, phone_number: str, business_name: str # Filter verification requests by business name}\n@returns(200) {records: [map], total_records: int} # Successful Response\n@errors {4XX: Generic error response}\n\n@endpoint POST /messaging_tollfree/verification/requests\n@desc Submit Verification Request\n@required {additionalInformation: str # Any additional information, businessAddr1: str # Line 1 of the business address, businessCity: str # The city of the business address; the first letter should be capitalized, businessContactEmail: str # The email address of the business contact, businessContactFirstName: str # First name of the business contact; there are no specific requirements on formatting, businessContactLastName: str # Last name of the business contact; there are no specific requirements on formatting, businessContactPhone: str # The phone number of the business contact in E.164 format, businessName: str # Name of the business; there are no specific formatting requirements, businessState: str # The full name of the state (not the 2 letter code) of the business address; the first letter should be capitalized, businessZip: str # The ZIP code of the business address, corporateWebsite: str # A URL, including the scheme, pointing to the corporate website, messageVolume: any # Estimated monthly volume of messages from the given phone numbers, optInWorkflow: str # Human-readable description of how end users will opt into receiving messages from the given phone numbers, optInWorkflowImageURLs: [map{url!: str(uri)}] # Images showing the opt-in workflow, phoneNumbers: [map{phoneNumber!: str}] # The phone numbers to request the verification of, productionMessageContent: str # An example of a message that will be sent from the given phone numbers, useCase: any # Machine-readable use-case for the phone numbers, useCaseSummary: str # Human-readable summary of the desired use-case}\n@optional {ageGatedContent: bool=false # Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided., businessAddr2: str # Line 2 of the business address, businessRegistrationCountry: str # 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., businessRegistrationNumber: str # Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required from January 2026., businessRegistrationType: str # Type of business registration being provided. Required from January 2026., campaignVerifyAuthorizationToken: str # 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., doingBusinessAs: str # Doing Business As (DBA) name if different from legal name, entityType: any # Business entity classification. Must be one of the 5 valid enum values., helpMessageResponse: str # The message returned when users text 'HELP', isvReseller: str # ISV name, optInConfirmationResponse: str # Message sent to users confirming their opt-in to receive messages, optInKeywords: str # Keywords used to collect and process consumer opt-ins, privacyPolicyURL: str # URL pointing to the business's privacy policy. Plain string, no URL format validation., termsAndConditionURL: str # URL pointing to the business's terms and conditions. Plain string, no URL format validation., webhookUrl: str # URL that should receive webhooks relating to this verification request}\n@returns(200) {additionalInformation: str, ageGatedContent: bool, businessAddr1: str, businessAddr2: str, businessCity: str, businessContactEmail: str, businessContactFirstName: str, businessContactLastName: str, businessContactPhone: str, businessName: str, businessRegistrationCountry: str, businessRegistrationNumber: str, businessRegistrationType: str, businessState: str, businessZip: str, campaignVerifyAuthorizationToken: str?, corporateWebsite: str, doingBusinessAs: str, entityType: any, helpMessageResponse: str, id: str(uuid), isvReseller: str, messageVolume: any, optInConfirmationResponse: str, optInKeywords: str, optInWorkflow: str, optInWorkflowImageURLs: [map], phoneNumbers: [map], privacyPolicyURL: str, productionMessageContent: str, termsAndConditionURL: str, useCase: any, useCaseSummary: str, verificationRequestId: str, verificationStatus: any, webhookUrl: str} # Successful Response\n@errors {4XX: Generic error response}\n\n@endpoint DELETE /messaging_tollfree/verification/requests/{id}\n@desc Delete Verification Request\n@required {id: str(uuid)}\n@returns(200) Successful deleted\n@errors {404: Generic error response, 4XX: Generic error response}\n\n@endpoint GET /messaging_tollfree/verification/requests/{id}\n@desc Get Verification Request\n@required {id: str(uuid)}\n@returns(200) {additionalInformation: str, ageGatedContent: bool, businessAddr1: str, businessAddr2: str, businessCity: str, businessContactEmail: str, businessContactFirstName: str, businessContactLastName: str, businessContactPhone: str, businessName: str, businessRegistrationCountry: str, businessRegistrationNumber: str, businessRegistrationType: str, businessState: str, businessZip: str, campaignVerifyAuthorizationToken: str?, corporateWebsite: str, createdAt: str(date-time), doingBusinessAs: str, entityType: any, helpMessageResponse: str, id: str(uuid), isvReseller: str, messageVolume: any, optInConfirmationResponse: str, optInKeywords: str, optInWorkflow: str, optInWorkflowImageURLs: [map], phoneNumbers: [map], privacyPolicyURL: str, productionMessageContent: str, reason: str, termsAndConditionURL: str, updatedAt: str(date-time), useCase: any, useCaseSummary: str, verificationStatus: any, webhookUrl: str} # Successful Response\n@errors {4XX: Generic error response}\n\n@endpoint PATCH /messaging_tollfree/verification/requests/{id}\n@desc Update Verification Request\n@required {id: str(uuid), additionalInformation: str # Any additional information, businessAddr1: str # Line 1 of the business address, businessCity: str # The city of the business address; the first letter should be capitalized, businessContactEmail: str # The email address of the business contact, businessContactFirstName: str # First name of the business contact; there are no specific requirements on formatting, businessContactLastName: str # Last name of the business contact; there are no specific requirements on formatting, businessContactPhone: str # The phone number of the business contact in E.164 format, businessName: str # Name of the business; there are no specific formatting requirements, businessState: str # The full name of the state (not the 2 letter code) of the business address; the first letter should be capitalized, businessZip: str # The ZIP code of the business address, corporateWebsite: str # A URL, including the scheme, pointing to the corporate website, messageVolume: any # Estimated monthly volume of messages from the given phone numbers, optInWorkflow: str # Human-readable description of how end users will opt into receiving messages from the given phone numbers, optInWorkflowImageURLs: [map{url!: str(uri)}] # Images showing the opt-in workflow, phoneNumbers: [map{phoneNumber!: str}] # The phone numbers to request the verification of, productionMessageContent: str # An example of a message that will be sent from the given phone numbers, useCase: any # Machine-readable use-case for the phone numbers, useCaseSummary: str # Human-readable summary of the desired use-case}\n@optional {ageGatedContent: bool=false # Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided., businessAddr2: str # Line 2 of the business address, businessRegistrationCountry: str # 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., businessRegistrationNumber: str # Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required from January 2026., businessRegistrationType: str # Type of business registration being provided. Required from January 2026., campaignVerifyAuthorizationToken: str # 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., doingBusinessAs: str # Doing Business As (DBA) name if different from legal name, entityType: any # Business entity classification. Must be one of the 5 valid enum values., helpMessageResponse: str # The message returned when users text 'HELP', isvReseller: str # ISV name, optInConfirmationResponse: str # Message sent to users confirming their opt-in to receive messages, optInKeywords: str # Keywords used to collect and process consumer opt-ins, privacyPolicyURL: str # URL pointing to the business's privacy policy. Plain string, no URL format validation., termsAndConditionURL: str # URL pointing to the business's terms and conditions. Plain string, no URL format validation., webhookUrl: str # URL that should receive webhooks relating to this verification request}\n@returns(200) {additionalInformation: str, ageGatedContent: bool, businessAddr1: str, businessAddr2: str, businessCity: str, businessContactEmail: str, businessContactFirstName: str, businessContactLastName: str, businessContactPhone: str, businessName: str, businessRegistrationCountry: str, businessRegistrationNumber: str, businessRegistrationType: str, businessState: str, businessZip: str, campaignVerifyAuthorizationToken: str?, corporateWebsite: str, doingBusinessAs: str, entityType: any, helpMessageResponse: str, id: str(uuid), isvReseller: str, messageVolume: any, optInConfirmationResponse: str, optInKeywords: str, optInWorkflow: str, optInWorkflowImageURLs: [map], phoneNumbers: [map], privacyPolicyURL: str, productionMessageContent: str, termsAndConditionURL: str, useCase: any, useCaseSummary: str, verificationRequestId: str, verificationStatus: any, webhookUrl: str} # Successful Response\n@errors {4XX: Generic error response}\n\n@endpoint GET /messaging_tollfree/verification/requests/{id}/status_history\n@desc Get Verification Request Status History\n@required {id: str(uuid), page[number]: int, page[size]: int}\n@returns(200) {records: [map], total_records: int} # Successful Response\n@errors {4XX: Generic error response}\n\n@endgroup\n\n@group messaging_url_domains\n@endpoint GET /messaging_url_domains\n@desc List messaging URL domains\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with details about a messaging URL domain.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group mobile_network_operators\n@endpoint GET /mobile_network_operators\n@desc List mobile network operators\n@optional {filter: map # 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], page: map # Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group mobile_phone_numbers\n@endpoint GET /mobile_phone_numbers/messaging\n@desc List mobile phone numbers with messaging settings\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of mobile phone numbers with messaging settings.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /mobile_phone_numbers/{id}/messaging\n@desc Retrieve a mobile phone number with messaging settings\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), features: map{sms: map?}, id: str, messaging_product: str, messaging_profile_id: str?, organization_id: str, phone_number: str, record_type: str, tags: [str], traffic_type: str, type: str, updated_at: str(date-time)}} # Successful response with details about a mobile phone number.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group mobile_push_credentials\n@endpoint GET /mobile_push_credentials\n@desc List mobile push credentials\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[type], filter[alias]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Mobile mobile push credentials\n@errors {401: Unauthorized request}\n\n@endpoint POST /mobile_push_credentials\n@desc Creates a new mobile push credential\n@returns(200) {data: map{alias: str, certificate: str, created_at: str(date-time), id: str, private_key: str, project_account_json_file: map, record_type: str, type: str, updated_at: str(date-time)}} # Mobile push credential created\n@errors {401: Unauthorized request, 422: Unable to process request}\n\n@endpoint DELETE /mobile_push_credentials/{push_credential_id}\n@desc Deletes a mobile push credential\n@required {push_credential_id: str(uuid) # The unique identifier of a mobile push credential}\n@returns(204) The mobile push credential was deleted successfully\n@errors {401: Unauthorized request, 404: Resource not found, 422: Unable to process request}\n\n@endpoint GET /mobile_push_credentials/{push_credential_id}\n@desc Retrieves a mobile push credential\n@required {push_credential_id: str(uuid) # The unique identifier of a mobile push credential}\n@returns(200) {data: map{alias: str, certificate: str, created_at: str(date-time), id: str, private_key: str, project_account_json_file: map, record_type: str, type: str, updated_at: str(date-time)}} # Successful get mobile push credential response\n@errors {401: Unauthorized request, 404: Resource not found, 422: Unable to process request}\n\n@endgroup\n\n@group network_coverage\n@endpoint GET /network_coverage\n@desc List network coverage locations\n@optional {filters: map # Consolidated filters parameter (deepObject style). Originally: filters[available_services][contains], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[location.region], filter[location.site], filter[location.pop], filter[location.code], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group networks\n@endpoint GET /networks\n@desc List all Networks\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[name], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /networks\n@desc Create a Network\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /networks/{id}\n@desc Delete a Network\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /networks/{id}\n@desc Retrieve a Network\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint PATCH /networks/{id}\n@desc Update a Network\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint DELETE /networks/{id}/default_gateway\n@desc Delete Default Gateway.\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /networks/{id}/default_gateway\n@desc Get Default Gateway status.\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /networks/{id}/default_gateway\n@desc Create Default Gateway.\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /networks/{id}/network_interfaces\n@desc List all Interfaces for a Network.\n@required {id: str(uuid) # Identifies the resource.}\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group notification_channels\n@endpoint GET /notification_channels\n@desc List notification channels\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns a list of notification channels.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /notification_channels\n@desc Create a notification channel\n@optional {channel_destination: str # The destination associated with the channel type., channel_type_id: str(sms/voice/email/webhook) # A Channel Type ID, created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., id: str # A UUID., notification_profile_id: str # A UUID reference to the associated Notification Profile., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated.}\n@returns(200) {data: map{channel_destination: str, channel_type_id: str, created_at: str(date-time), id: str, notification_profile_id: str, updated_at: str(date-time)}} # A Notification Channel response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /notification_channels/{id}\n@desc Delete a notification channel\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{channel_destination: str, channel_type_id: str, created_at: str(date-time), id: str, notification_profile_id: str, updated_at: str(date-time)}} # A Notification Channel response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /notification_channels/{id}\n@desc Get a notification channel\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{channel_destination: str, channel_type_id: str, created_at: str(date-time), id: str, notification_profile_id: str, updated_at: str(date-time)}} # A Notification Channel response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /notification_channels/{id}\n@desc Update a notification channel\n@required {id: str(uuid) # The id of the resource.}\n@optional {channel_destination: str # The destination associated with the channel type., channel_type_id: str(sms/voice/email/webhook) # A Channel Type ID, created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., id: str # A UUID., notification_profile_id: str # A UUID reference to the associated Notification Profile., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated.}\n@returns(200) {data: map{channel_destination: str, channel_type_id: str, created_at: str(date-time), id: str, notification_profile_id: str, updated_at: str(date-time)}} # A Notification Channel response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group notification_event_conditions\n@endpoint GET /notification_event_conditions\n@desc List all Notifications Events Conditions\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns a list of notification event conditions available.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group notification_events\n@endpoint GET /notification_events\n@desc List all Notifications Events\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns a list of notification events available.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group notification_profiles\n@endpoint GET /notification_profiles\n@desc List all Notifications Profiles\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns a list of notification profiles.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /notification_profiles\n@desc Create a notification profile\n@optional {created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., id: str # A UUID., name: str # A human readable name., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated.}\n@returns(200) {data: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}} # A Notification Profile response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /notification_profiles/{id}\n@desc Delete a notification profile\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}} # A Notification Profile response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /notification_profiles/{id}\n@desc Get a notification profile\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}} # A Notification Profile response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /notification_profiles/{id}\n@desc Update a notification profile\n@required {id: str(uuid) # The id of the resource.}\n@optional {created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., id: str # A UUID., name: str # A human readable name., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated.}\n@returns(200) {data: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}} # A Notification Profile response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group notification_settings\n@endpoint GET /notification_settings\n@desc List notification settings\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Returns a list of notification settings.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /notification_settings\n@desc Add a Notification Setting\n@optional {associated_record_type: str, associated_record_type_value: str, created_at: str(date-time) # ISO 8601 formatted date indicating when the resource was created., id: str # A UUID., notification_channel_id: str # A UUID reference to the associated Notification Channel., notification_event_condition_id: str # A UUID reference to the associated Notification Event Condition., notification_profile_id: str # A UUID reference to the associated Notification Profile., parameters: [map{name: str, value: str}], status: str(enabled/enable-received/enable-pending/enable-submtited/delete-received/delete-pending/delete-submitted/deleted) # Most preferences apply immediately; however, other may needs to propagate., updated_at: str(date-time) # ISO 8601 formatted date indicating when the resource was updated.}\n@returns(200) {data: map{associated_record_type: str, associated_record_type_value: str, created_at: str(date-time), id: str, notification_channel_id: str, notification_event_condition_id: str, notification_profile_id: str, parameters: [map], status: str, updated_at: str(date-time)}} # A Notification Setting response\n@returns(201) {data: map{associated_record_type: str, associated_record_type_value: str, created_at: str(date-time), id: str, notification_channel_id: str, notification_event_condition_id: str, notification_profile_id: str, parameters: [map], status: str, updated_at: str(date-time)}} # A Notification Setting response - async\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /notification_settings/{id}\n@desc Delete a notification setting\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{associated_record_type: str, associated_record_type_value: str, created_at: str(date-time), id: str, notification_channel_id: str, notification_event_condition_id: str, notification_profile_id: str, parameters: [map], status: str, updated_at: str(date-time)}} # A Notification Setting response\n@returns(201) {data: map{associated_record_type: str, associated_record_type_value: str, created_at: str(date-time), id: str, notification_channel_id: str, notification_event_condition_id: str, notification_profile_id: str, parameters: [map], status: str, updated_at: str(date-time)}} # A Notification Setting response - async\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /notification_settings/{id}\n@desc Get a notification setting\n@required {id: str(uuid) # The id of the resource.}\n@returns(200) {data: map{associated_record_type: str, associated_record_type_value: str, created_at: str(date-time), id: str, notification_channel_id: str, notification_event_condition_id: str, notification_profile_id: str, parameters: [map], status: str, updated_at: str(date-time)}} # A Notification Setting response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group number_block_orders\n@endpoint GET /number_block_orders\n@desc List number block orders\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.starting_number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of number block orders.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /number_block_orders\n@desc Create a number block order\n@required {range: int # The phone number range included in the block., starting_number: str # Starting phone number block}\n@optional {connection_id: str # Identifies the connection associated with this phone number., created_at: str(date-time) # An ISO 8901 datetime string denoting when the number order was created., customer_reference: str # A customer reference string for customer look ups., errors: str # Errors the reservation could happen upon, id: str(uuid), messaging_profile_id: str # Identifies the messaging profile associated with the phone number., phone_numbers_count: int # The count of phone numbers in the number order., record_type: str, requirements_met: bool # True if all requirements are met for every phone number, false otherwise., status: str(pending/success/failure) # The status of the order., updated_at: str(date-time) # An ISO 8901 datetime string for when the number order was updated.}\n@returns(200) {data: map{connection_id: str, created_at: str(date-time), customer_reference: str, id: str(uuid), messaging_profile_id: str, phone_numbers_count: int, range: int, record_type: str, requirements_met: bool, starting_number: str, status: str, updated_at: str(date-time)}} # Successful response with details about a number block order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /number_block_orders/{number_block_order_id}\n@desc Retrieve a number block order\n@required {number_block_order_id: str # The number block order ID.}\n@returns(200) {data: map{connection_id: str, created_at: str(date-time), customer_reference: str, id: str(uuid), messaging_profile_id: str, phone_numbers_count: int, range: int, record_type: str, requirements_met: bool, starting_number: str, status: str, updated_at: str(date-time)}} # Successful response with details about a number block order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group number_lookup\n@endpoint GET /number_lookup/{phone_number}\n@desc Lookup phone number data\n@required {phone_number: str # The phone number to be looked up}\n@optional {type: str(carrier/caller-name) # Specifies the type of number lookup to be performed}\n@returns(200) {data: map{caller_name: map{caller_name: str, error_code: str}, carrier: map{error_code: str?, mobile_country_code: str, mobile_network_code: str, name: str, normalized_carrier: str, type: str}, country_code: str, fraud: str?, national_format: str, phone_number: str, portability: map{altspid: str, altspid_carrier_name: str, altspid_carrier_type: str, city: str, line_type: str, lrn: str, ocn: str, ported_date: str, ported_status: str, spid: str, spid_carrier_name: str, spid_carrier_type: str, state: str}, record_type: str}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group number_order_phone_numbers\n@endpoint GET /number_order_phone_numbers\n@desc Retrieve a list of phone numbers associated to orders\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[country_code]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of number order phone numbers.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /number_order_phone_numbers/{id}/requirement_group\n@desc Update requirement group for a phone number order\n@required {id: str(uuid) # The unique identifier of the number order phone number, requirement_group_id: str(uuid) # The ID of the requirement group to associate}\n@returns(200) {data: map{bundle_id: str(uuid)?, country_code: str, deadline: str(date-time), id: str(uuid), is_block_number: bool, locality: str, order_request_id: str(uuid), phone_number: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], requirements_met: bool, requirements_status: str, status: str, sub_number_order_id: str(uuid)}} # Successful response with updated phone number order details\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /number_order_phone_numbers/{number_order_phone_number_id}\n@desc Retrieve a single phone number within a number order.\n@required {number_order_phone_number_id: str # The number order phone number ID.}\n@returns(200) {data: map{bundle_id: str(uuid)?, country_code: str, deadline: str(date-time), id: str(uuid), is_block_number: bool, locality: str, order_request_id: str(uuid), phone_number: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], requirements_met: bool, requirements_status: str, status: str, sub_number_order_id: str(uuid)}} # Successful response with details about a number order phone number.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /number_order_phone_numbers/{number_order_phone_number_id}\n@desc Update requirements for a single phone number within a number order.\n@required {number_order_phone_number_id: str # The number order phone number ID.}\n@optional {regulatory_requirements: [map{field_value: str, requirement_id: str(uuid)}]}\n@returns(200) {data: map{bundle_id: str(uuid)?, country_code: str, deadline: str(date-time), id: str(uuid), is_block_number: bool, locality: str, order_request_id: str(uuid), phone_number: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], requirements_met: bool, requirements_status: str, status: str, sub_number_order_id: str(uuid)}} # Successful response with details about a number order phone number.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group number_orders\n@endpoint GET /number_orders\n@desc List number orders\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers_count], filter[customer_reference], filter[requirements_met]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of number orders.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /number_orders\n@desc Create a number order\n@optional {billing_group_id: str # Identifies the billing group associated with the phone number., connection_id: str # Identifies the connection associated with this phone number., customer_reference: str # A customer reference string for customer look ups., messaging_profile_id: str # Identifies the messaging profile associated with the phone number., phone_numbers: [map{bundle_id: str, phone_number!: str, requirement_group_id: str}]}\n@returns(200) {data: map{billing_group_id: str, connection_id: str, created_at: str(date-time), customer_reference: str, id: str(uuid), messaging_profile_id: str, phone_numbers: [map], phone_numbers_count: int, record_type: str, requirements_met: bool, status: str, sub_number_orders_ids: [str], updated_at: str(date-time)}} # Successful response with details about a number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /number_orders/{number_order_id}\n@desc Retrieve a number order\n@required {number_order_id: str # The number order ID.}\n@returns(200) {data: map{billing_group_id: str, connection_id: str, created_at: str(date-time), customer_reference: str, id: str(uuid), messaging_profile_id: str, phone_numbers: [map], phone_numbers_count: int, record_type: str, requirements_met: bool, status: str, sub_number_orders_ids: [str], updated_at: str(date-time)}} # Successful response with details about a number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /number_orders/{number_order_id}\n@desc Update a number order\n@required {number_order_id: str # The number order ID.}\n@optional {customer_reference: str # A customer reference string for customer look ups., regulatory_requirements: [map{field_value: str, requirement_id: str(uuid)}]}\n@returns(200) {data: map{billing_group_id: str, connection_id: str, created_at: str(date-time), customer_reference: str, id: str(uuid), messaging_profile_id: str, phone_numbers: [map], phone_numbers_count: int, record_type: str, requirements_met: bool, status: str, sub_number_orders_ids: [str], updated_at: str(date-time)}} # Successful response with details about a number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group number_reservations\n@endpoint GET /number_reservations\n@desc List number reservations\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.phone_number], filter[customer_reference]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of number reservations.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /number_reservations\n@desc Create a number reservation\n@optional {created_at: str(date-time) # An ISO 8901 datetime string denoting when the numbers reservation was created., customer_reference: str # A customer reference string for customer look ups., id: str(uuid), phone_numbers: [map{created_at: str(date-time), errors: str, expired_at: str(date-time), id: str(uuid), phone_number: str, record_type: str, status: str, updated_at: str(date-time)}], record_type: str, status: str(pending/success/failure) # The status of the entire reservation., updated_at: str(date-time) # An ISO 8901 datetime string for when the number reservation was updated.}\n@returns(200) {data: map{created_at: str(date-time), customer_reference: str, errors: str, id: str(uuid), phone_numbers: [map], record_type: str, status: str, updated_at: str(date-time)}} # Successful response with details about a number reservation.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /number_reservations/{number_reservation_id}\n@desc Retrieve a number reservation\n@required {number_reservation_id: str # The number reservation ID.}\n@returns(200) {data: map{created_at: str(date-time), customer_reference: str, errors: str, id: str(uuid), phone_numbers: [map], record_type: str, status: str, updated_at: str(date-time)}} # Successful response with details about a number reservation.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /number_reservations/{number_reservation_id}/actions/extend\n@desc Extend a number reservation\n@required {number_reservation_id: str # The number reservation ID.}\n@returns(200) {data: map{created_at: str(date-time), customer_reference: str, errors: str, id: str(uuid), phone_numbers: [map], record_type: str, status: str, updated_at: str(date-time)}} # Successful response with details about a number reservation.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group numbers_features\n@endpoint POST /numbers_features\n@desc Retrieve the features for a list of numbers\n@required {phone_numbers: [str]}\n@returns(200) {data: [map]} # Successful response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group oauth\n@endpoint GET /oauth/authorize\n@desc OAuth authorization endpoint\n@required {response_type: str # OAuth response type, client_id: str # OAuth client identifier, redirect_uri: str(uri) # Redirect URI}\n@optional {scope: str # Space-separated list of requested scopes, state: str # State parameter for CSRF protection, code_challenge: str # PKCE code challenge, code_challenge_method: str(plain/S256) # PKCE code challenge method}\n@returns(200) Consent page displayed (when consent UI is embedded)\n@errors {302: Redirect to consent page or client with authorization code/error, 400: Invalid request, 404: Client not found, 422: Invalid redirect URI}\n\n@endpoint GET /oauth/consent/{consent_token}\n@desc Get OAuth consent token\n@required {consent_token: str # OAuth consent token}\n@returns(200) {data: map{client_id: str, logo_uri: str(uri)?, name: str, policy_uri: str(uri)?, redirect_uri: str(uri), requested_scopes: [map], tos_uri: str(uri)?, verified: bool}} # Consent token details\n@errors {422: Invalid consent token}\n\n@endpoint POST /oauth/grants\n@desc Create OAuth grant\n@required {allowed: bool # Whether the grant is allowed, consent_token: str # Consent token}\n@returns(200) {redirect_uri: str(uri)} # Grant created successfully\n@errors {422: Invalid consent token}\n\n@endpoint POST /oauth/introspect\n@desc Token introspection\n@required {token: str # The token to introspect}\n@returns(200) {active: bool, aud: str, client_id: str, exp: int, iat: int, iss: str, scope: str} # Introspection response\n@errors {400: Invalid request, 401: Invalid client credentials}\n\n@endpoint GET /oauth/jwks\n@desc JSON Web Key Set\n@returns(200) {keys: [map]} # JSON Web Key Set\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint POST /oauth/register\n@desc Dynamic client registration\n@optional {client_name: str # Human-readable string name of the client to be presented to the end-user, grant_types: [str]=authorization_code # Array of OAuth 2.0 grant type strings that the client may use, logo_uri: str(uri) # URL of the client logo, policy_uri: str(uri) # URL of the client's privacy policy, redirect_uris: [str(uri)] # Array of redirection URI strings for use in redirect-based flows, response_types: [str]=code # Array of the OAuth 2.0 response type strings that the client may use, scope: str # Space-separated string of scope values that the client may use, token_endpoint_auth_method: str(none/client_secret_basic/client_secret_post)=client_secret_basic # Authentication method for the token endpoint, tos_uri: str(uri) # URL of the client's terms of service}\n@returns(201) {client_id: str, client_id_issued_at: int, client_name: str, client_secret: str, grant_types: [str], logo_uri: str(uri), policy_uri: str(uri), redirect_uris: [str(uri)], response_types: [str], scope: str, token_endpoint_auth_method: str, tos_uri: str(uri)} # Client registered successfully\n@errors {400: Invalid client metadata}\n\n@endpoint POST /oauth/token\n@desc OAuth token endpoint\n@required {grant_type: str(client_credentials/authorization_code/refresh_token) # OAuth 2.0 grant type}\n@optional {client_id: str # OAuth client ID (if not using HTTP Basic auth), client_secret: str # OAuth client secret (if not using HTTP Basic auth), code: str # Authorization code (for authorization_code flow), code_verifier: str # PKCE code verifier (for authorization_code flow), redirect_uri: str(uri) # Redirect URI (for authorization_code flow), refresh_token: str # Refresh token (for refresh_token flow), scope: str # Space-separated list of requested scopes (for client_credentials)}\n@returns(200) {access_token: str, expires_in: int, refresh_token: str, scope: str, token_type: str} # Token response\n@errors {400: Invalid request, 401: Invalid client credentials}\n\n@endgroup\n\n@group oauth_clients\n@endpoint GET /oauth_clients\n@desc List OAuth clients\n@optional {page[size]: int=20: any # Number of results per page, page[number]: int=1 # Page number, filter[client_type]: str(confidential/public) # Filter by client type, filter[verified]: bool # Filter by verification status, filter[allowed_grant_types][contains]: str(client_credentials/authorization_code/refresh_token) # Filter by allowed grant type, filter[name]: str # Filter by exact client name, filter[name][contains]: str # Filter by client name containing text, filter[client_id]: str # Filter by client ID}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of OAuth clients\n@errors {401: Unauthorized}\n\n@endpoint POST /oauth_clients\n@desc Create OAuth client\n@required {allowed_grant_types: [str] # List of allowed OAuth grant types, allowed_scopes: [str] # List of allowed OAuth scopes, client_type: str(public/confidential) # OAuth client type, name: str # The name of the OAuth client}\n@optional {logo_uri: str(uri) # URL of the client logo, policy_uri: str(uri) # URL of the client's privacy policy, redirect_uris: [str(uri)]= # List of redirect URIs (required for authorization_code flow), require_pkce: bool=false # Whether PKCE (Proof Key for Code Exchange) is required for this client, tos_uri: str(uri) # URL of the client's terms of service}\n@returns(201) {data: map{allowed_grant_types: [str], allowed_scopes: [str], client_id: str, client_secret: str?, client_type: str, created_at: str(date-time), logo_uri: str(uri)?, name: str, org_id: str, policy_uri: str(uri)?, record_type: str, redirect_uris: [str(uri)], require_pkce: bool, tos_uri: str(uri)?, updated_at: str(date-time), user_id: str}} # OAuth client created successfully\n@errors {400: Invalid request, 401: Unauthorized, 422: Validation error}\n\n@endpoint DELETE /oauth_clients/{id}\n@desc Delete OAuth client\n@required {id: str(uuid) # OAuth client ID}\n@returns(204) OAuth client deleted successfully\n@errors {404: OAuth client not found}\n\n@endpoint GET /oauth_clients/{id}\n@desc Get OAuth client\n@required {id: str(uuid) # OAuth client ID}\n@returns(200) {data: map{allowed_grant_types: [str], allowed_scopes: [str], client_id: str, client_secret: str?, client_type: str, created_at: str(date-time), logo_uri: str(uri)?, name: str, org_id: str, policy_uri: str(uri)?, record_type: str, redirect_uris: [str(uri)], require_pkce: bool, tos_uri: str(uri)?, updated_at: str(date-time), user_id: str}} # OAuth client details\n@errors {404: OAuth client not found}\n\n@endpoint PUT /oauth_clients/{id}\n@desc Update OAuth client\n@required {id: str(uuid) # OAuth client ID}\n@optional {allowed_grant_types: [str] # List of allowed OAuth grant types, allowed_scopes: [str] # List of allowed OAuth scopes, logo_uri: str(uri) # URL of the client logo, name: str # The name of the OAuth client, policy_uri: str(uri) # URL of the client's privacy policy, redirect_uris: [str(uri)] # List of redirect URIs, require_pkce: bool # Whether PKCE (Proof Key for Code Exchange) is required for this client, tos_uri: str(uri) # URL of the client's terms of service}\n@returns(200) {data: map{allowed_grant_types: [str], allowed_scopes: [str], client_id: str, client_secret: str?, client_type: str, created_at: str(date-time), logo_uri: str(uri)?, name: str, org_id: str, policy_uri: str(uri)?, record_type: str, redirect_uris: [str(uri)], require_pkce: bool, tos_uri: str(uri)?, updated_at: str(date-time), user_id: str}} # OAuth client updated successfully\n@errors {404: OAuth client not found, 422: Validation error}\n\n@endgroup\n\n@group oauth_grants\n@endpoint GET /oauth_grants\n@desc List OAuth grants\n@optional {page[size]: int=20: any # Number of results per page, page[number]: int=1 # Page number}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of OAuth grants\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint DELETE /oauth_grants/{id}\n@desc Revoke OAuth grant\n@required {id: str(uuid) # OAuth grant ID}\n@returns(200) {data: map{client_id: str, created_at: str(date-time), id: str(uuid), last_used_at: str(date-time)?, record_type: str, scopes: [str]}} # OAuth grant revoked successfully\n@errors {404: OAuth grant not found}\n\n@endpoint GET /oauth_grants/{id}\n@desc Get OAuth grant\n@required {id: str(uuid) # OAuth grant ID}\n@returns(200) {data: map{client_id: str, created_at: str(date-time), id: str(uuid), last_used_at: str(date-time)?, record_type: str, scopes: [str]}} # OAuth grant details\n@errors {404: OAuth grant not found}\n\n@endgroup\n\n@group operator_connect\n@endpoint POST /operator_connect/actions/refresh\n@desc Refresh Operator Connect integration\n@returns(200) {message: str, success: bool} # Successful response\n@returns(202) {message: str, success: bool} # Successful response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group organizations\n@endpoint GET /organizations/users\n@desc List organization users\n@optional {page[number]: int=1: any # The page number to load, page[size]: int=250 # The size of the page, filter[user_status]: str(enabled/disabled/blocked) # Filter by user status, filter[email]: str # Filter by email address (partial match), include_groups: bool=false # 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.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of organization users.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint GET /organizations/users/users_groups_report\n@desc Get organization users groups report\n@optional {Accept: str(application/json/text/csv)=application/json # Specify the response format. Use 'application/json' for JSON format or 'text/csv' for CSV format.}\n@returns(200) {data: [map]} # Successful response with a list of organization users and their group memberships.\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /organizations/users/{id}\n@desc Get organization user\n@required {id: str # Organization User ID}\n@optional {include_groups: bool=false # 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.}\n@returns(200) {data: map{created_at: str, email: str(email), groups: [map], id: str, last_sign_in_at: str?, organization_user_bypasses_sso: bool, record_type: str, user_status: str}} # Successful response with details about an Organization User.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint POST /organizations/users/{id}/actions/remove\n@desc Delete organization user\n@required {id: str # Organization User ID}\n@returns(200) {data: map{created_at: str, email: str(email), groups: [map], id: str, last_sign_in_at: str?, organization_user_bypasses_sso: bool, record_type: str, user_status: str}} # Successful response with details about an Organization User.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endgroup\n\n@group ota_updates\n@endpoint GET /ota_updates\n@desc List OTA updates\n@optional {filter: map # Consolidated filter parameter for OTA updates (deepObject style). Originally: filter[status], filter[sim_card_id], filter[type], page: map # Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /ota_updates/{id}\n@desc Get OTA update\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{mobile_network_operators_preferences: [map]}, sim_card_id: str(uuid), status: str, type: str, updated_at: str}} # Successful response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group outbound_voice_profiles\n@endpoint GET /outbound_voice_profiles\n@desc Get all outbound voice profiles\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[name][contains], sort: str(enabled/-enabled/created_at/-created_at/name/-name/service_plan/-service_plan/traffic_type/-traffic_type/usage_payment_method/-usage_payment_method)=-created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the - prefix. That is:         name: sorts the result by the     name field in ascending order.            -name: sorts the result by the     name field in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Bad request}\n\n@endpoint POST /outbound_voice_profiles\n@desc Create an outbound voice profile\n@required {name: str # A user-supplied name to help with organization.}\n@optional {billing_group_id: str(uuid)=null # The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned)., call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str(time), start_time: str(time)} # (BETA) 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., concurrent_call_limit: int # Must be no more than your global concurrent call limit. Null means no limit., daily_spend_limit: str # 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., daily_spend_limit_enabled: bool=false # Specifies whether to enforce the daily_spend_limit on this outbound voice profile., enabled: bool=true # Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections., max_destination_rate: num # Maximum rate (price per minute) for a Destination to be allowed when making outbound calls., service_plan: str=global # Indicates the coverage of the termination regions., tags: [str], traffic_type: str=conversational # Specifies the type of traffic allowed in this profile., usage_payment_method: str=rate-deck # Setting for how costs for outbound profile are calculated., whitelisted_destinations: [str]=US,CA # The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.}\n@returns(200) {data: map{billing_group_id: str(uuid)?, call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str, start_time: str}, concurrent_call_limit: int?, connections_count: int, created_at: str, daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, id: str, max_destination_rate: num, name: str, record_type: str, service_plan: str, tags: [str], traffic_type: str, updated_at: str, usage_payment_method: str, whitelisted_destinations: [str]}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint DELETE /outbound_voice_profiles/{id}\n@desc Delete an outbound voice profile\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{billing_group_id: str(uuid)?, call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str, start_time: str}, concurrent_call_limit: int?, connections_count: int, created_at: str, daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, id: str, max_destination_rate: num, name: str, record_type: str, service_plan: str, tags: [str], traffic_type: str, updated_at: str, usage_payment_method: str, whitelisted_destinations: [str]}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /outbound_voice_profiles/{id}\n@desc Retrieve an outbound voice profile\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{billing_group_id: str(uuid)?, call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str, start_time: str}, concurrent_call_limit: int?, connections_count: int, created_at: str, daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, id: str, max_destination_rate: num, name: str, record_type: str, service_plan: str, tags: [str], traffic_type: str, updated_at: str, usage_payment_method: str, whitelisted_destinations: [str]}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint PATCH /outbound_voice_profiles/{id}\n@desc Updates an existing outbound voice profile.\n@required {id: str # Identifies the resource., name: str # A user-supplied name to help with organization.}\n@optional {billing_group_id: str(uuid)=null # The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned)., call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str(time), start_time: str(time)} # (BETA) Specifies the time window and call limits for calls made using this outbound voice profile., concurrent_call_limit: int # Must be no more than your global concurrent call limit. Null means no limit., daily_spend_limit: str # 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., daily_spend_limit_enabled: bool=false # Specifies whether to enforce the daily_spend_limit on this outbound voice profile., enabled: bool=true # Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound calls being blocked for the associated Connections., max_destination_rate: num # Maximum rate (price per minute) for a Destination to be allowed when making outbound calls., service_plan: str=global # Indicates the coverage of the termination regions., tags: [str], traffic_type: str=conversational # Specifies the type of traffic allowed in this profile., usage_payment_method: str=rate-deck # Setting for how costs for outbound profile are calculated., whitelisted_destinations: [str]=US,CA # The list of destinations you want to be able to call using this outbound voice profile formatted in alpha2.}\n@returns(200) {data: map{billing_group_id: str(uuid)?, call_recording: map{call_recording_caller_phone_numbers: [str], call_recording_channels: str, call_recording_format: str, call_recording_type: str}, calling_window: map{calls_per_cld: int, end_time: str, start_time: str}, concurrent_call_limit: int?, connections_count: int, created_at: str, daily_spend_limit: str, daily_spend_limit_enabled: bool, enabled: bool, id: str, max_destination_rate: num, name: str, record_type: str, service_plan: str, tags: [str], traffic_type: str, updated_at: str, usage_payment_method: str, whitelisted_destinations: [str]}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endgroup\n\n@group payment\n@endpoint GET /payment/auto_recharge_prefs\n@desc List auto recharge preferences\n@returns(200) {data: map{enabled: bool, id: str, invoice_enabled: bool, preference: str, recharge_amount: str, record_type: str, threshold_amount: str}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint PATCH /payment/auto_recharge_prefs\n@desc Update auto recharge preferences\n@optional {enabled: bool # Whether auto recharge is enabled., invoice_enabled: bool, preference: str(credit_paypal/ach) # The payment preference for auto recharge., recharge_amount: str # The amount to recharge the account, the actual recharge amount will be the amount necessary to reach the threshold amount plus the recharge amount., threshold_amount: str # The threshold amount at which the account will be recharged.}\n@returns(200) {data: map{enabled: bool, id: str, invoice_enabled: bool, preference: str, recharge_amount: str, record_type: str, threshold_amount: str}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endgroup\n\n@group phone_number_blocks\n@endpoint GET /phone_number_blocks/jobs\n@desc Lists the phone number blocks jobs\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str # Specifies the sort order for results. If not given, results are sorted by created_at in descending order., filter: map # Consolidated filter parameter (deepObject style). Originally: filter[type], filter[status]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone number blocks background jobs.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /phone_number_blocks/jobs/delete_phone_number_block\n@desc Deletes all numbers associated with a phone number block\n@required {phone_number_block_id: str}\n@returns(202) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone number blocks job delete phone numbers requested.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_number_blocks/jobs/{id}\n@desc Retrieves a phone number blocks job\n@required {id: str # Identifies the Phone Number Blocks Job.}\n@returns(200) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone number blocks job details.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group phone_numbers\n@endpoint GET /phone_numbers\n@desc List phone numbers\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(purchased_at/phone_number/connection_name/usage_payment_method) # Specifies the sort order for results. If not given, results are sorted by created_at in descending order., filter: map # 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], handle_messaging_profile_error: str(true/false)=false # 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.}\n@returns(200) {data: [map], errors: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone numbers.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /phone_numbers/actions/verify_ownership\n@desc Verify ownership of phone numbers\n@required {phone_numbers: [str] # Array of phone numbers to verify ownership for}\n@returns(200) {data: map{found: [map], not_found: [str], record_type: str}} # Phone number ownership verification completed.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/csv_downloads\n@desc List CSV downloads\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of CSV downloads.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /phone_numbers/csv_downloads\n@desc Create a CSV download\n@optional {csv_format: str(V1/V2)=V1 # Which format to use when generating the CSV file. The default for backwards compatibility is 'V1', filter: map # 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]}\n@returns(200) {data: [map]} # Successful response with details about a CSV download.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/csv_downloads/{id}\n@desc Retrieve a CSV download\n@required {id: str # Identifies the CSV download.}\n@returns(200) {data: [map]} # Successful response with details about a CSV download.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/jobs\n@desc Lists the phone numbers jobs\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str # Specifies the sort order for results. If not given, results are sorted by created_at in descending order., filter: map # Consolidated filter parameter (deepObject style). Originally: filter[type]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone numbers background jobs.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 422: Unprocessable Entity, 500: Unexpected error}\n\n@endpoint POST /phone_numbers/jobs/delete_phone_numbers\n@desc Delete a batch of numbers\n@required {phone_numbers: [str]}\n@returns(202) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), pending_operations: [map], phone_numbers: [map], record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone numbers job delete phone numbers requested.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Forbidden, 422: Unprocessable Entity, 500: Unexpected error}\n\n@endpoint POST /phone_numbers/jobs/update_emergency_settings\n@desc Update the emergency settings from a batch of numbers\n@required {emergency_enabled: bool # Indicates whether to enable or disable emergency services on the numbers., phone_numbers: [str]}\n@optional {emergency_address_id: str # 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.}\n@returns(202) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), pending_operations: [map], phone_numbers: [map], record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone numbers enable emergency requested.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Forbidden, 422: Unprocessable Entity, 500: Unexpected error}\n\n@endpoint POST /phone_numbers/jobs/update_phone_numbers\n@desc Update a batch of numbers\n@required {phone_numbers: [str] # 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').}\n@optional {filter: map # 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], billing_group_id: str # Identifies the billing group associated with the phone number., connection_id: str # Identifies the connection associated with the phone number., customer_reference: str # A customer reference string for customer look ups., deletion_lock_enabled: bool # 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., external_pin: str # 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: bool # 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., tags: [str] # A list of user-assigned tags to help organize phone numbers., voice: map{call_forwarding: map, call_recording: map, caller_id_name_enabled: bool, cnam_listing: map, inbound_call_screening: str, media_features: map, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}}\n@returns(202) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), pending_operations: [map], phone_numbers: [map], record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone numbers job update phone numbers requested.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 403: Forbidden, 422: Unprocessable Entity, 500: Unexpected error}\n\n@endpoint GET /phone_numbers/jobs/{id}\n@desc Retrieve a phone numbers job\n@required {id: str # Identifies the Phone Numbers Job.}\n@returns(200) {data: map{created_at: str, etc: str(date-time), failed_operations: [map], id: str(uuid), pending_operations: [map], phone_numbers: [map], record_type: str, status: str, successful_operations: [map], type: str, updated_at: str}} # Phone numbers job details.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: Not Found, 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/messaging\n@desc List phone numbers with messaging settings\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter[messaging_profile_id]: str(uuid) # Filter by messaging profile ID., filter[phone_number]: str # Filter by exact phone number (supports comma-separated list)., filter[phone_number][contains]: str # Filter by phone number substring., filter[type]: str(tollfree/longcode/shortcode) # Filter by phone number type., sort[phone_number]: str(asc/desc) # Sort by phone number.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone numbers with messaging settings.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /phone_numbers/slim\n@desc Slim List phone numbers\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], include_connection: bool=false # Include the connection associated with the phone number., include_tags: bool=false # Include the tags associated with the phone number., sort: str(purchased_at/phone_number/connection_name/usage_payment_method) # Specifies the sort order for results. If not given, results are sorted by created_at in descending order., filter: map # 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]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone numbers.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/voice\n@desc List phone numbers with voice settings\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: str(purchased_at/phone_number/connection_name/usage_payment_method) # Specifies the sort order for results. If not given, results are sorted by created_at in descending order., filter: map # Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[connection_name], filter[customer_reference], filter[voice.usage_payment_method]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of phone numbers with voice settings.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /phone_numbers/{id}\n@desc Delete a phone number\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{billing_group_id: str, call_forwarding_enabled: bool, call_recording_enabled: bool, caller_id_name_enabled: bool, cnam_listing_enabled: bool, connection_id: str, connection_name: str, created_at: str, customer_reference: str, deletion_lock_enabled: bool, emergency_address_id: str, emergency_enabled: bool, external_pin: str, hd_voice_enabled: bool, id: str, messaging_profile_id: str, messaging_profile_name: str, phone_number: str, phone_number_type: str, purchased_at: str, record_type: str, status: str, t38_fax_gateway_enabled: bool, tags: [str], updated_at: str}} # Successful response with details about a phone number.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/{id}\n@desc Retrieve a phone number\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{billing_group_id: str?, call_forwarding_enabled: bool, call_recording_enabled: bool, caller_id_name_enabled: bool, cnam_listing_enabled: bool, connection_id: str?, connection_name: str?, country_iso_alpha2: str, created_at: str(date-time), customer_reference: str?, deletion_lock_enabled: bool, emergency_address_id: str?, emergency_enabled: bool, emergency_status: str, external_pin: str?, hd_voice_enabled: bool, id: str, inbound_call_screening: str, messaging_profile_id: str?, messaging_profile_name: str?, phone_number: str, phone_number_type: str, purchased_at: str, record_type: str, source_type: any, status: str, t38_fax_gateway_enabled: bool, tags: [str], updated_at: str}} # Successful response with details about a phone number.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /phone_numbers/{id}\n@desc Update a phone number\n@required {id: str # Identifies the resource.}\n@optional {address_id: str # Identifies the address associated with the phone number., billing_group_id: str # Identifies the billing group associated with the phone number., connection_id: str # Identifies the connection associated with the phone number., customer_reference: str # A customer reference string for customer look ups., external_pin: str # 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: bool # Indicates whether HD voice is enabled for this number., id: str # Identifies the type of resource., tags: [str] # A list of user-assigned tags to help organize phone numbers.}\n@returns(200) {data: map{billing_group_id: str?, call_forwarding_enabled: bool, call_recording_enabled: bool, caller_id_name_enabled: bool, cnam_listing_enabled: bool, connection_id: str?, connection_name: str?, country_iso_alpha2: str, created_at: str(date-time), customer_reference: str?, deletion_lock_enabled: bool, emergency_address_id: str?, emergency_enabled: bool, emergency_status: str, external_pin: str?, hd_voice_enabled: bool, id: str, inbound_call_screening: str, messaging_profile_id: str?, messaging_profile_name: str?, phone_number: str, phone_number_type: str, purchased_at: str, record_type: str, source_type: any, status: str, t38_fax_gateway_enabled: bool, tags: [str], updated_at: str}} # Successful response with details about a phone number.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /phone_numbers/{id}/actions/bundle_status_change\n@desc Change the bundle status for a phone number (set to being in a bundle or remove from a bundle)\n@required {id: str # Identifies the resource., bundle_id: str # 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.}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, emergency: map{emergency_address_id: str, emergency_enabled: bool, emergency_status: str}, id: str, inbound_call_screening: str, media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool}, phone_number: str, record_type: str, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}} # Phone number bundle status change success\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /phone_numbers/{id}/actions/enable_emergency\n@desc Enable emergency for a phone number\n@required {id: str # Identifies the resource., emergency_address_id: str # Identifies the address to be used with emergency services., emergency_enabled: bool # Indicates whether to enable emergency services on this number.}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, emergency: map{emergency_address_id: str, emergency_enabled: bool, emergency_status: str}, id: str, inbound_call_screening: str, media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool}, phone_number: str, record_type: str, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}} # Phone number emergency enabled.\n@returns(202) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, emergency: map{emergency_address_id: str, emergency_enabled: bool, emergency_status: str}, id: str, inbound_call_screening: str, media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool}, phone_number: str, record_type: str, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}} # Phone number emergency requested.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/{id}/messaging\n@desc Retrieve a phone number with messaging settings\n@required {id: str # Identifies the type of resource.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), eligible_messaging_products: [str], features: map{mms: map?, sms: map?}, health: map{inbound_outbound_ratio: num(float), message_count: int, spam_ratio: num(float), success_ratio: num(float)}, id: str, messaging_product: str, messaging_profile_id: str?, organization_id: str, phone_number: str, record_type: str, tags: [str], traffic_type: str, type: str, updated_at: str(date-time)}} # Successful response with details about a phone number including messaging settings.\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /phone_numbers/{id}/messaging\n@desc Update the messaging profile and/or messaging product of a phone number\n@required {id: str # The phone number to update.}\n@optional {messaging_product: str # Configure the messaging product for this number:  * Omit this field or set its value to `null` to keep the current value. * Set this field to a quoted product ID to set this phone number to that product, messaging_profile_id: str # Configure the messaging profile this phone number is assigned to:  * Omit this field or set its value to `null` to keep the current value. * Set this field to `\"\"` to unassign the number from its messaging profile * Set this field to a quoted UUID of a messaging profile to assign this number to that messaging profile, tags: [str] # Tags to set on this phone number.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), eligible_messaging_products: [str], features: map{mms: map?, sms: map?}, health: map{inbound_outbound_ratio: num(float), message_count: int, spam_ratio: num(float), success_ratio: num(float)}, id: str, messaging_product: str, messaging_profile_id: str?, organization_id: str, phone_number: str, record_type: str, tags: [str], traffic_type: str, type: str, updated_at: str(date-time)}} # Successful response with details about a phone number including messaging settings.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /phone_numbers/{id}/voice\n@desc Retrieve a phone number with voice settings\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, emergency: map{emergency_address_id: str, emergency_enabled: bool, emergency_status: str}, id: str, inbound_call_screening: str, media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool}, phone_number: str, record_type: str, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}} # Successful response with details about a phone number including voice settings.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /phone_numbers/{id}/voice\n@desc Update a phone number with voice settings\n@required {id: str # Identifies the resource.}\n@optional {call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str} # The call forwarding settings for a phone number., call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str} # The call recording settings for a phone number., caller_id_name_enabled: bool=false # Controls whether the caller ID name is enabled for this phone number., cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool} # The CNAM listing settings for a phone number., inbound_call_screening: str(disabled/reject_calls/flag_calls)=disabled # 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., media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool} # The media features settings for a phone number., tech_prefix_enabled: bool=false # Controls whether a tech prefix is enabled for this phone number., translated_number: str # 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., usage_payment_method: str(pay-per-minute/channel)=pay-per-minute # Controls whether a number is billed per minute or uses your concurrent channels.}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, emergency: map{emergency_address_id: str, emergency_enabled: bool, emergency_status: str}, id: str, inbound_call_screening: str, media_features: map{accept_any_rtp_packets_enabled: bool, rtp_auto_adjust_enabled: bool, t38_fax_gateway_enabled: bool}, phone_number: str, record_type: str, tech_prefix_enabled: bool, translated_number: str, usage_payment_method: str}} # Successful response with details about a phone number including voice settings.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /phone_numbers/{phone_number_id}/voicemail\n@desc Get voicemail\n@returns(200) {data: map{enabled: bool, pin: str}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint PATCH /phone_numbers/{phone_number_id}/voicemail\n@desc Update voicemail\n@optional {enabled: bool # Whether voicemail is enabled., pin: str # The pin used for voicemail}\n@returns(200) {data: map{enabled: bool, pin: str}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint POST /phone_numbers/{phone_number_id}/voicemail\n@desc Create voicemail\n@optional {enabled: bool # Whether voicemail is enabled., pin: str # The pin used for voicemail}\n@returns(200) {data: map{enabled: bool, pin: str}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endgroup\n\n@group phone_numbers_regulatory_requirements\n@endpoint GET /phone_numbers_regulatory_requirements\n@desc Retrieve regulatory requirements for a list of phone numbers\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[phone_number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # An array of Regulatory Requirements Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group portability_checks\n@endpoint POST /portability_checks\n@desc Run a portability check\n@optional {phone_numbers: [str] # The list of +E.164 formatted phone numbers to check for portability}\n@returns(201) {data: [map]} # PortabilityCheck Response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endgroup\n\n@group porting\n@endpoint GET /porting/events\n@desc List all porting events\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[type], filter[porting_order_id], filter[created_at][gte], filter[created_at][lte]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details., 500: Internal server error}\n\n@endpoint GET /porting/events/{id}\n@desc Show a porting event\n@required {id: str(uuid) # Identifies the porting event.}\n@returns(200) {data: map} # Successful response\n@errors {404: Not found, 500: Internal server error}\n\n@endpoint POST /porting/events/{id}/republish\n@desc Republish a porting event\n@required {id: str(uuid) # Identifies the porting event.}\n@returns(204) No content\n@errors {404: Not found, 500: Internal server error}\n\n@endpoint GET /porting/loa_configurations\n@desc List LOA configurations\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint POST /porting/loa_configurations\n@desc Create a LOA configuration\n@required {address: map{city!: str, country_code!: str, extended_address: str, state!: str, street_address!: str, zip_code!: str} # The address of the company., company_name: str # The name of the company, contact: map{email!: str, phone_number!: str} # The contact information of the company., logo: map{document_id!: str(uuid)} # The logo of the LOA configuration, name: str # The name of the LOA configuration}\n@returns(201) {data: map{address: map{city: str, country_code: str, extended_address: str, state: str, street_address: str, zip_code: str}, company_name: str, contact: map{email: str, phone_number: str}, created_at: str(date-time), id: str(uuid), logo: map{content_type: str, document_id: str(uuid)}, name: str, organization_id: str, record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint POST /porting/loa_configurations/preview\n@desc Preview the LOA configuration parameters\n@required {address: map{city!: str, country_code!: str, extended_address: str, state!: str, street_address!: str, zip_code!: str} # The address of the company., company_name: str # The name of the company, contact: map{email!: str, phone_number!: str} # The contact information of the company., logo: map{document_id!: str(uuid)} # The logo of the LOA configuration, name: str # The name of the LOA configuration}\n@returns(200) Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint DELETE /porting/loa_configurations/{id}\n@desc Delete a LOA configuration\n@required {id: str(uuid) # Identifies a LOA configuration.}\n@returns(204) No content\n@errors {404: Resource not found, 500: Internal server error}\n\n@endpoint GET /porting/loa_configurations/{id}\n@desc Retrieve a LOA configuration\n@required {id: str(uuid) # Identifies a LOA configuration.}\n@returns(200) {data: map{address: map{city: str, country_code: str, extended_address: str, state: str, street_address: str, zip_code: str}, company_name: str, contact: map{email: str, phone_number: str}, created_at: str(date-time), id: str(uuid), logo: map{content_type: str, document_id: str(uuid)}, name: str, organization_id: str, record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Resource not found, 500: Internal server error}\n\n@endpoint PATCH /porting/loa_configurations/{id}\n@desc Update a LOA configuration\n@required {id: str(uuid) # Identifies a LOA configuration., address: map{city!: str, country_code!: str, extended_address: str, state!: str, street_address!: str, zip_code!: str} # The address of the company., company_name: str # The name of the company, contact: map{email!: str, phone_number!: str} # The contact information of the company., logo: map{document_id!: str(uuid)} # The logo of the LOA configuration, name: str # The name of the LOA configuration}\n@returns(200) {data: map{address: map{city: str, country_code: str, extended_address: str, state: str, street_address: str, zip_code: str}, company_name: str, contact: map{email: str, phone_number: str}, created_at: str(date-time), id: str(uuid), logo: map{content_type: str, document_id: str(uuid)}, name: str, organization_id: str, record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Resource not found, 422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /porting/loa_configurations/{id}/preview\n@desc Preview a LOA configuration\n@required {id: str(uuid) # Identifies a LOA configuration.}\n@returns(200) Successful response\n@errors {404: Resource not found, 500: Internal server error}\n\n@endpoint GET /porting/reports\n@desc List porting related reports\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint POST /porting/reports\n@desc Create a porting related report\n@required {params: any, report_type: str # Identifies the type of report}\n@returns(201) {data: map{created_at: str(date-time), document_id: str(uuid), id: str(uuid), params: any, record_type: str, report_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /porting/reports/{id}\n@desc Retrieve a report\n@required {id: str(uuid) # Identifies a report.}\n@returns(200) {data: map{created_at: str(date-time), document_id: str(uuid), id: str(uuid), params: any, record_type: str, report_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Resource not found, 500: Internal server error}\n\n@endpoint GET /porting/uk_carriers\n@desc List available carriers in the UK\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endgroup\n\n@group porting_orders\n@endpoint GET /porting_orders\n@desc List all porting orders\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], include_phone_numbers: bool=true # Include the first 50 phone number objects in the results, filter: map # 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], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders\n@desc Create a porting order\n@required {phone_numbers: [str] # The list of +E.164 formatted phone numbers}\n@optional {customer_group_reference: str # A customer-specified group reference for customer bookkeeping purposes, customer_reference: str # A customer-specified reference number for customer bookkeeping purposes}\n@returns(201) {data: [map]} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/exception_types\n@desc List all exception types\n@returns(200) {data: [map]} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/phone_number_configurations\n@desc List all phone number configurations\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[porting_order.status][in][], filter[porting_phone_number][in][], filter[user_bundle_id][in][], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/phone_number_configurations\n@desc Create a list of phone number configurations\n@optional {phone_number_configurations: [map{porting_phone_number_id!: str(uuid), user_bundle_id!: str(uuid)}]}\n@returns(201) {data: [map]} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint DELETE /porting_orders/{id}\n@desc Delete a porting order\n@required {id: str(uuid) # Porting Order id}\n@returns(204) No content\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{id}\n@desc Retrieve a porting order\n@required {id: str(uuid) # Porting Order id}\n@optional {include_phone_numbers: bool=true # Include the first 50 phone number objects in the results}\n@returns(200) {data: map{activation_settings: map{activation_status: any, fast_port_eligible: bool, foc_datetime_actual: str(date-time)?, foc_datetime_requested: str(date-time)?}, additional_steps: [str], created_at: str(date-time), customer_group_reference: str?, customer_reference: str?, description: str, documents: map{invoice: str(uuid)?, loa: str(uuid)?}, end_user: map{admin: map{account_number: str?, auth_person_name: str?, billing_phone_number: str?, business_identifier: str?, entity_name: str?, pin_passcode: str?, tax_identifier: str?}, location: map{administrative_area: str?, country_code: str?, extended_address: str?, locality: str?, postal_code: str?, street_address: str?}}, id: str(uuid), messaging: map{enable_messaging: bool, messaging_capable: bool, messaging_port_completed: bool, messaging_port_status: str}, misc: any, old_service_provider_ocn: str, parent_support_key: str?, phone_number_configuration: map{billing_group_id: str?, connection_id: str?, emergency_address_id: str?, messaging_profile_id: str?, tags: [str]}, phone_number_type: str, phone_numbers: [map], porting_phone_numbers_count: int, record_type: str, requirements: [map], requirements_met: bool, status: map{details: [map], value: str}, support_key: str?, updated_at: str(date-time), user_feedback: map{user_comment: str?, user_rating: int?}, user_id: str(uuid), webhook_url: str(uri)?}, meta: map{phone_numbers_url: str}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint PATCH /porting_orders/{id}\n@desc Edit a porting order\n@required {id: str(uuid) # Porting Order id}\n@optional {activation_settings: map{foc_datetime_requested: str(date-time)}, customer_group_reference: str, customer_reference: str, documents: map{invoice: str(uuid), loa: str(uuid)} # Can be specified directly or via the `requirement_group_id` parameter., end_user: map{admin: map, location: map}, messaging: map{enable_messaging: bool}, misc: any, phone_number_configuration: map{billing_group_id: str, connection_id: str, emergency_address_id: str, messaging_profile_id: str, tags: [str]}, requirement_group_id: str(uuid) # 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., requirements: [map{field_value!: str, requirement_type_id!: str}] # List of requirements for porting numbers., user_feedback: map{user_comment: str, user_rating: int}, webhook_url: str(uri)}\n@returns(200) {data: map{activation_settings: map{activation_status: any, fast_port_eligible: bool, foc_datetime_actual: str(date-time)?, foc_datetime_requested: str(date-time)?}, additional_steps: [str], created_at: str(date-time), customer_group_reference: str?, customer_reference: str?, description: str, documents: map{invoice: str(uuid)?, loa: str(uuid)?}, end_user: map{admin: map{account_number: str?, auth_person_name: str?, billing_phone_number: str?, business_identifier: str?, entity_name: str?, pin_passcode: str?, tax_identifier: str?}, location: map{administrative_area: str?, country_code: str?, extended_address: str?, locality: str?, postal_code: str?, street_address: str?}}, id: str(uuid), messaging: map{enable_messaging: bool, messaging_capable: bool, messaging_port_completed: bool, messaging_port_status: str}, misc: any, old_service_provider_ocn: str, parent_support_key: str?, phone_number_configuration: map{billing_group_id: str?, connection_id: str?, emergency_address_id: str?, messaging_profile_id: str?, tags: [str]}, phone_number_type: str, phone_numbers: [map], porting_phone_numbers_count: int, record_type: str, requirements: [map], requirements_met: bool, status: map{details: [map], value: str}, support_key: str?, updated_at: str(date-time), user_feedback: map{user_comment: str?, user_rating: int?}, user_id: str(uuid), webhook_url: str(uri)?}, meta: map{phone_numbers_url: str}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/actions/activate\n@desc Activate every number in a porting order asynchronously.\n@required {id: str(uuid) # Porting Order id}\n@returns(202) {data: map{activate_at: str(date-time), activation_type: str, activation_windows: [map], created_at: str(date-time), id: str(uuid), record_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/actions/cancel\n@desc Cancel a porting order\n@required {id: str(uuid) # Porting Order id}\n@returns(200) {data: map{activation_settings: map{activation_status: any, fast_port_eligible: bool, foc_datetime_actual: str(date-time)?, foc_datetime_requested: str(date-time)?}, additional_steps: [str], created_at: str(date-time), customer_group_reference: str?, customer_reference: str?, description: str, documents: map{invoice: str(uuid)?, loa: str(uuid)?}, end_user: map{admin: map{account_number: str?, auth_person_name: str?, billing_phone_number: str?, business_identifier: str?, entity_name: str?, pin_passcode: str?, tax_identifier: str?}, location: map{administrative_area: str?, country_code: str?, extended_address: str?, locality: str?, postal_code: str?, street_address: str?}}, id: str(uuid), messaging: map{enable_messaging: bool, messaging_capable: bool, messaging_port_completed: bool, messaging_port_status: str}, misc: any, old_service_provider_ocn: str, parent_support_key: str?, phone_number_configuration: map{billing_group_id: str?, connection_id: str?, emergency_address_id: str?, messaging_profile_id: str?, tags: [str]}, phone_number_type: str, phone_numbers: [map], porting_phone_numbers_count: int, record_type: str, requirements: [map], requirements_met: bool, status: map{details: [map], value: str}, support_key: str?, updated_at: str(date-time), user_feedback: map{user_comment: str?, user_rating: int?}, user_id: str(uuid), webhook_url: str(uri)?}, meta: map{phone_numbers_url: str}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/actions/confirm\n@desc Submit a porting order.\n@required {id: str(uuid) # Porting Order id}\n@returns(200) {data: map{activation_settings: map{activation_status: any, fast_port_eligible: bool, foc_datetime_actual: str(date-time)?, foc_datetime_requested: str(date-time)?}, additional_steps: [str], created_at: str(date-time), customer_group_reference: str?, customer_reference: str?, description: str, documents: map{invoice: str(uuid)?, loa: str(uuid)?}, end_user: map{admin: map{account_number: str?, auth_person_name: str?, billing_phone_number: str?, business_identifier: str?, entity_name: str?, pin_passcode: str?, tax_identifier: str?}, location: map{administrative_area: str?, country_code: str?, extended_address: str?, locality: str?, postal_code: str?, street_address: str?}}, id: str(uuid), messaging: map{enable_messaging: bool, messaging_capable: bool, messaging_port_completed: bool, messaging_port_status: str}, misc: any, old_service_provider_ocn: str, parent_support_key: str?, phone_number_configuration: map{billing_group_id: str?, connection_id: str?, emergency_address_id: str?, messaging_profile_id: str?, tags: [str]}, phone_number_type: str, phone_numbers: [map], porting_phone_numbers_count: int, record_type: str, requirements: [map], requirements_met: bool, status: map{details: [map], value: str}, support_key: str?, updated_at: str(date-time), user_feedback: map{user_comment: str?, user_rating: int?}, user_id: str(uuid), webhook_url: str(uri)?}, meta: map{phone_numbers_url: str}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/actions/share\n@desc Share a porting order\n@required {id: str(uuid) # Porting Order id}\n@optional {expires_in_seconds: int # The number of seconds the token will be valid for, permissions: str(porting_order.document.read/porting_order.document.update) # The permissions the token will have}\n@returns(201) {data: map{created_at: str(date-time), expires_at: str(date-time), expires_in_seconds: int, id: str(uuid), permissions: [str], porting_order_id: str(uuid), record_type: str, token: str}} # Successful response\n@errors {401: Unauthorized, 404: Porting Order not found}\n\n@endpoint GET /porting_orders/{id}/activation_jobs\n@desc List all porting activation jobs\n@required {id: str(uuid) # Porting Order id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{id}/activation_jobs/{activationJobId}\n@desc Retrieve a porting activation job\n@required {id: str(uuid) # Porting Order id, activationJobId: str(uuid) # Activation Job Identifier}\n@returns(200) {data: map{activate_at: str(date-time), activation_type: str, activation_windows: [map], created_at: str(date-time), id: str(uuid), record_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint PATCH /porting_orders/{id}/activation_jobs/{activationJobId}\n@desc Update a porting activation job\n@required {id: str(uuid) # Porting Order id, activationJobId: str(uuid) # Activation Job Identifier}\n@optional {activate_at: str(date-time) # The desired activation time. The activation time should be between any of the activation windows.}\n@returns(200) {data: map{activate_at: str(date-time), activation_type: str, activation_windows: [map], created_at: str(date-time), id: str(uuid), record_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{id}/additional_documents\n@desc List additional documents\n@required {id: str(uuid) # Porting Order id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[document_type], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /porting_orders/{id}/additional_documents\n@desc Create a list of additional documents\n@required {id: str(uuid) # Porting Order id}\n@optional {additional_documents: [map{document_id: str(uuid), document_type: str}]}\n@returns(201) {data: [map]} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint DELETE /porting_orders/{id}/additional_documents/{additional_document_id}\n@desc Delete an additional document\n@required {id: str(uuid) # Porting Order id, additional_document_id: str(uuid) # Additional document identification.}\n@returns(204) No content\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint GET /porting_orders/{id}/allowed_foc_windows\n@desc List allowed FOC dates\n@required {id: str(uuid) # Porting Order id}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /porting_orders/{id}/comments\n@desc List all comments of a porting order\n@required {id: str(uuid) # Porting Order id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/comments\n@desc Create a comment for a porting order\n@required {id: str(uuid) # Porting Order id}\n@optional {body: str}\n@returns(201) {data: map{body: str, created_at: str(date-time), id: str(uuid), porting_order_id: str(uuid), record_type: str, user_type: str}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{id}/loa_template\n@desc Download a porting order loa template\n@required {id: str(uuid) # Porting Order id}\n@optional {loa_configuration_id: str(uuid) # The identifier of the LOA configuration to use for the template. If not provided, the default LOA configuration will be used.}\n@returns(200) Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /porting_orders/{id}/requirements\n@desc List porting order requirements\n@required {id: str(uuid) # Porting Order id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{id}/sub_request\n@desc Retrieve the associated V1 sub_request_id and port_request_id\n@required {id: str(uuid) # Porting Order id}\n@returns(200) {data: map{port_request_id: str, sub_request_id: str}} # Successful response\n@errors {401: Unauthorized, 404: Porting Order not found}\n\n@endpoint GET /porting_orders/{id}/verification_codes\n@desc List verification codes\n@required {id: str(uuid) # Porting Order id}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[verified], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /porting_orders/{id}/verification_codes/send\n@desc Send the verification codes\n@required {id: str(uuid) # Porting Order id}\n@optional {phone_numbers: [str], verification_method: str(sms/call)}\n@returns(204) No content\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{id}/verification_codes/verify\n@desc Verify the verification code for a list of phone numbers\n@required {id: str(uuid) # Porting Order id}\n@optional {verification_codes: [map{code: str, phone_number: str}]}\n@returns(200) {data: [map]} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{porting_order_id}/action_requirements\n@desc List action requirements for a porting order\n@required {porting_order_id: str # The ID of the porting order}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[id][in][], filter[requirement_type_id], filter[action_type], filter[status], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Porting order not found, 500: Internal server error}\n\n@endpoint POST /porting_orders/{porting_order_id}/action_requirements/{id}/initiate\n@desc Initiate an action requirement\n@required {porting_order_id: str # The ID of the porting order, id: str # The ID of the action requirement, params: any}\n@returns(200) {data: map{action_type: str, action_url: str?, cancel_reason: str?, created_at: str(date-time), id: str, porting_order_id: str, record_type: str, requirement_type_id: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Porting order or action requirement not found, 422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /porting_orders/{porting_order_id}/associated_phone_numbers\n@desc List all associated phone numbers\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone numbers}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[action], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{porting_order_id}/associated_phone_numbers\n@desc Create an associated phone number\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number, action: str(keep/disconnect) # Specifies the action to take with this phone number during partial porting., phone_number_range: map{end_at: str, start_at: str}}\n@returns(201) {data: map{action: str, country_code: str, created_at: str(date-time), id: str(uuid), phone_number_range: map{end_at: str, start_at: str}, phone_number_type: str, porting_order_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint DELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}\n@desc Delete an associated phone number\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number, id: str(uuid) # Identifies the associated phone number to be deleted}\n@returns(200) {data: map{action: str, country_code: str, created_at: str(date-time), id: str(uuid), phone_number_range: map{end_at: str, start_at: str}, phone_number_type: str, porting_order_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{porting_order_id}/phone_number_blocks\n@desc List all phone number blocks\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number blocks}\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[porting_order_id], filter[support_key], filter[status], filter[phone_number], filter[activation_status], filter[portability_status], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{porting_order_id}/phone_number_blocks\n@desc Create a phone number block\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number block, activation_ranges: [map{end_at!: str, start_at!: str}] # 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., phone_number_range: map{end_at!: str, start_at!: str}}\n@returns(201) {data: map{activation_ranges: [map], country_code: str, created_at: str(date-time), id: str(uuid), phone_number_range: map{end_at: str, start_at: str}, phone_number_type: str, record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint DELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}\n@desc Delete a phone number block\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number block, id: str(uuid) # Identifies the phone number block to be deleted}\n@returns(200) {data: map{activation_ranges: [map], country_code: str, created_at: str(date-time), id: str(uuid), phone_number_range: map{end_at: str, start_at: str}, phone_number_type: str, record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /porting_orders/{porting_order_id}/phone_number_extensions\n@desc List all phone number extensions\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number extensions}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[porting_phone_number_id], sort: map # Consolidated sort parameter (deepObject style). Originally: sort[value]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /porting_orders/{porting_order_id}/phone_number_extensions\n@desc Create a phone number extension\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number extension, activation_ranges: [map{end_at!: int, start_at!: int}] # 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., extension_range: map{end_at!: int, start_at!: int}, porting_phone_number_id: str(uuid) # Identifies the porting phone number associated with this porting phone number extension.}\n@returns(201) {data: map{activation_ranges: [map], created_at: str(date-time), extension_range: map{end_at: int, start_at: int}, id: str(uuid), porting_phone_number_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint DELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}\n@desc Delete a phone number extension\n@required {porting_order_id: str(uuid) # Identifies the Porting Order associated with the phone number extension, id: str(uuid) # Identifies the phone number extension to be deleted}\n@returns(200) {data: map{activation_ranges: [map], created_at: str(date-time), extension_range: map{end_at: int, start_at: int}, id: str(uuid), porting_phone_number_id: str(uuid), record_type: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endgroup\n\n@group porting_phone_numbers\n@endpoint GET /porting_phone_numbers\n@desc List all porting phone numbers\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[porting_order_status]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized, 422: Unprocessable entity. Check message field in response for details.}\n\n@endgroup\n\n@group portouts\n@endpoint GET /portouts\n@desc List portout requests\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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]}\n@returns(200) {data: [map], meta: map{page_number: num(integer), page_size: num(integer), total_pages: num(integer), total_results: num(integer)}} # Portout Response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /portouts/events\n@desc List all port-out events\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[event_type], filter[portout_id], filter[created_at]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /portouts/events/{id}\n@desc Show a port-out event\n@required {id: str(uuid) # Identifies the port-out event.}\n@returns(200) {data: map} # Successful response\n@errors {404: Not found, 500: Internal server error}\n\n@endpoint POST /portouts/events/{id}/republish\n@desc Republish a port-out event\n@required {id: str(uuid) # Identifies the port-out event.}\n@returns(204) No content\n@errors {404: Not found, 500: Internal server error}\n\n@endpoint GET /portouts/rejections/{portout_id}\n@desc List eligible port-out rejection codes for a specific order\n@required {portout_id: str # Identifies a port out order.}\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[code], filter[code][in]}\n@returns(200) {data: [map]} # Successful response\n@errors {404: Resource not found, 422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /portouts/reports\n@desc List port-out related reports\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint POST /portouts/reports\n@desc Create a port-out related report\n@required {params: any, report_type: str # Identifies the type of report}\n@returns(201) {data: map{created_at: str(date-time), document_id: str(uuid), id: str(uuid), params: any, record_type: str, report_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {422: Unprocessable entity. Check message field in response for details., 500: Internal server error}\n\n@endpoint GET /portouts/reports/{id}\n@desc Retrieve a report\n@required {id: str(uuid) # Identifies a report.}\n@returns(200) {data: map{created_at: str(date-time), document_id: str(uuid), id: str(uuid), params: any, record_type: str, report_type: str, status: str, updated_at: str(date-time)}} # Successful response\n@errors {404: Resource not found, 500: Internal server error}\n\n@endpoint GET /portouts/{id}\n@desc Get a portout request\n@required {id: str(uuid) # Portout id}\n@returns(200) {data: map{already_ported: bool, authorized_name: str, carrier_name: str, city: str, created_at: str, current_carrier: str, end_user_name: str, foc_date: str, host_messaging: bool, id: str, inserted_at: str, lsr: [str(uri)], phone_numbers: [str], pon: str, reason: str?, record_type: str, rejection_code: int, requested_foc_date: str, service_address: str, spid: str, state: str, status: str, support_key: str, updated_at: str, user_id: str(uuid), vendor: str(uuid), zip: str}} # Portout Response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /portouts/{id}/comments\n@desc List all comments for a portout request\n@required {id: str(uuid) # Portout id}\n@returns(200) {data: [map], meta: map{page_number: num(integer), page_size: num(integer), total_pages: num(integer), total_results: num(integer)}} # Portout Comments\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint POST /portouts/{id}/comments\n@desc Create a comment on a portout request\n@required {id: str(uuid) # Portout id}\n@optional {body: str # Comment to post on this portout request}\n@returns(201) {data: map{body: str, created_at: str, id: str, portout_id: str, record_type: str, user_id: str}} # Portout Comment Response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint GET /portouts/{id}/supporting_documents\n@desc List supporting documents on a portout request\n@required {id: str(uuid) # Portout id}\n@returns(201) {data: [map]} # Portout Supporting Documents\n@errors {401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /portouts/{id}/supporting_documents\n@desc Create a list of supporting documents on a portout request\n@required {id: str(uuid) # Portout id}\n@optional {documents: [map{document_id!: str(uuid), type!: str}] # List of supporting documents parameters}\n@returns(201) {data: [map]} # Portout Supporting Documents\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endpoint PATCH /portouts/{id}/{status}\n@desc Update Status\n@required {id: str(uuid) # Portout id, status: str(authorized/rejected-pending) # Updated portout status, reason: str # Provide a reason if rejecting the port out request}\n@optional {host_messaging: bool=false # Indicates whether messaging services should be maintained with Telnyx after the port out completes}\n@returns(200) {data: map{already_ported: bool, authorized_name: str, carrier_name: str, city: str, created_at: str, current_carrier: str, end_user_name: str, foc_date: str, host_messaging: bool, id: str, inserted_at: str, lsr: [str(uri)], phone_numbers: [str], pon: str, reason: str?, record_type: str, rejection_code: int, requested_foc_date: str, service_address: str, spid: str, state: str, status: str, support_key: str, updated_at: str, user_id: str(uuid), vendor: str(uuid), zip: str}} # Portout Response\n@errors {401: Unauthorized, 404: Resource not found, 422: Unprocessable entity. Check message field in response for details.}\n\n@endgroup\n\n@group private_wireless_gateways\n@endpoint GET /private_wireless_gateways\n@desc Get all Private Wireless Gateways\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[name]: str # The name of the Private Wireless Gateway., filter[ip_range]: str # The IP address range of the Private Wireless Gateway., filter[region_code]: str # The name of the region where the Private Wireless Gateway is deployed., filter[created_at]: str # Private Wireless Gateway resource creation date., filter[updated_at]: str # When the Private Wireless Gateway was last updated.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /private_wireless_gateways\n@desc Create a Private Wireless Gateway\n@required {name: str # The private wireless gateway name., network_id: str(uuid) # The identification of the related network resource.}\n@optional {region_code: str # 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}\n@returns(202) {data: map{assigned_resources: [map], created_at: str, id: str(uuid), ip_range: str, name: str, network_id: str(uuid), record_type: str, region_code: str, status: map{error_code: str?, error_description: str?, value: str}, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /private_wireless_gateways/{id}\n@desc Delete a Private Wireless Gateway\n@required {id: str(uuid) # Identifies the private wireless gateway.}\n@returns(200) {data: map{assigned_resources: [map], created_at: str, id: str(uuid), ip_range: str, name: str, network_id: str(uuid), record_type: str, region_code: str, status: map{error_code: str?, error_description: str?, value: str}, updated_at: str}} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint GET /private_wireless_gateways/{id}\n@desc Get a Private Wireless Gateway\n@required {id: str(uuid) # Identifies the private wireless gateway.}\n@returns(200) {data: map{assigned_resources: [map], created_at: str, id: str(uuid), ip_range: str, name: str, network_id: str(uuid), record_type: str, region_code: str, status: map{error_code: str?, error_description: str?, value: str}, updated_at: str}} # Successful Response\n@errors {404: Resource not found}\n\n@endgroup\n\n@group public_internet_gateways\n@endpoint GET /public_internet_gateways\n@desc List all Public Internet Gateways\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[network_id], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /public_internet_gateways\n@desc Create a Public Internet Gateway\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /public_internet_gateways/{id}\n@desc Delete a Public Internet Gateway\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /public_internet_gateways/{id}\n@desc Retrieve a Public Internet Gateway\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group queues\n@endpoint GET /queues\n@desc List queues\n@optional {page[number]: int=1: any # The page number to load, page[size]: int=20 # The size of the page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of queues.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint POST /queues\n@desc Create a queue\n@required {queue_name: str # The name of the queue. Must be between 1 and 255 characters.}\n@optional {max_size: int=300 # The maximum number of calls allowed in the queue.}\n@returns(200) {data: map{average_wait_time_secs: int, created_at: str, current_size: int, id: str, max_size: int, name: str, record_type: str, updated_at: str}} # Successful response with details about a queue.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 422: 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.}\n\n@endpoint DELETE /queues/{queue_name}\n@desc Delete a queue\n@required {queue_name: str # Uniquely identifies the queue by name}\n@returns(204) Queue deleted successfully.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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.}\n\n@endpoint GET /queues/{queue_name}\n@desc Retrieve a call queue\n@required {queue_name: str # Uniquely identifies the queue by name}\n@returns(200) {data: map{average_wait_time_secs: int, created_at: str, current_size: int, id: str, max_size: int, name: str, record_type: str, updated_at: str}} # Successful response with details about a queue.\n@errors {404: 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.}\n\n@endpoint POST /queues/{queue_name}\n@desc Update a queue\n@required {queue_name: str # Uniquely identifies the queue by name, max_size: int # The maximum number of calls allowed in the queue.}\n@returns(200) {data: map{average_wait_time_secs: int, created_at: str, current_size: int, id: str, max_size: int, name: str, record_type: str, updated_at: str}} # Successful response with details about a queue.\n@errors {401: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included in the request., 404: 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., 422: 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.}\n\n@endpoint GET /queues/{queue_name}/calls\n@desc Retrieve calls from a queue\n@required {queue_name: str # Uniquely identifies the queue by name}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of calls in a queue.\n@errors {404: 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.}\n\n@endpoint DELETE /queues/{queue_name}/calls/{call_control_id}\n@desc Force remove a call from a queue\n@required {queue_name: str # Uniquely identifies the queue by name, call_control_id: str # Unique identifier and token for controlling the call}\n@returns(204) Call successfully removed from the queue\n@errors {404: 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.}\n\n@endpoint GET /queues/{queue_name}/calls/{call_control_id}\n@desc Retrieve a call from a queue\n@required {queue_name: str # Uniquely identifies the queue by name, call_control_id: str # Unique identifier and token for controlling the call}\n@returns(200) {data: map{call_control_id: str, call_leg_id: str, call_session_id: str, connection_id: str, enqueued_at: str, from: str, is_alive: bool, queue_id: str, queue_position: int, record_type: str, to: str, wait_time_secs: int}} # Successful response with details about a call in a queue.\n@errors {404: 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.}\n\n@endpoint PATCH /queues/{queue_name}/calls/{call_control_id}\n@desc Update queued call\n@required {queue_name: str # Uniquely identifies the queue by name, call_control_id: str # Unique identifier and token for controlling the call}\n@optional {keep_after_hangup: bool # Whether the call should remain in queue after hangup.}\n@returns(204) Call has been successfully updated.\n@errors {404: 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.}\n\n@endgroup\n\n@group recording_transcriptions\n@endpoint GET /recording_transcriptions\n@desc List all recording transcriptions\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Filter recording transcriptions by various attributes.}\n@returns(200) {data: [map], meta: map{cursors: map{after: str, before: str}, next: str, previous: str}} # A response listing multiple recording transcriptions.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint DELETE /recording_transcriptions/{recording_transcription_id}\n@desc Delete a recording transcription\n@required {recording_transcription_id: str(uuid) # Uniquely identifies the recording transcription by id.}\n@returns(200) {data: map{created_at: str, duration_millis: int(int32), id: str, record_type: str, recording_id: str, status: str, transcription_text: str, updated_at: str}} # A response with a single recording transcription resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint GET /recording_transcriptions/{recording_transcription_id}\n@desc Retrieve a recording transcription\n@required {recording_transcription_id: str(uuid) # Uniquely identifies the recording transcription by id.}\n@returns(200) {data: map{created_at: str, duration_millis: int(int32), id: str, record_type: str, recording_id: str, status: str, transcription_text: str, updated_at: str}} # A response with a single recording transcription resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endgroup\n\n@group recordings\n@endpoint GET /recordings\n@desc List all call recordings\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Filter recordings by various attributes.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A response containing multiple recordings.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 403: Forbidden. The request is understood but has been refused., 404: Resource not found. The requested resource or URL could not be found., 500: Internal server error. An unexpected error occurred on the server.}\n\n@endpoint POST /recordings/actions/delete\n@desc Delete a list of call recordings\n@required {ids: [str] # List of call recording IDs to delete.}\n@returns(200) {status: str} # The recordings have been successfully deleted.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n@example_request {\"ids\":[\"428c31b6-7af4-4bcb-b7f5-5013ef9657c1\",\"428c31b6-7af4-4bcb-b7f5-5013ef9657c2\"]}\n\n@endpoint DELETE /recordings/{recording_id}\n@desc Delete a call recording\n@required {recording_id: str # Uniquely identifies the recording by id.}\n@returns(200) {data: map{call_control_id: str, call_leg_id: str, call_session_id: str, channels: str, conference_id: str, connection_id: str, created_at: str, download_urls: map{mp3: str, wav: str}, duration_millis: int(int32), from: str, id: str, initiated_by: str, record_type: str, recording_ended_at: str, recording_started_at: str, source: str, status: str, to: str, updated_at: str}} # A response with a single recording resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endpoint GET /recordings/{recording_id}\n@desc Retrieve a call recording\n@required {recording_id: str # Uniquely identifies the recording by id.}\n@returns(200) {data: map{call_control_id: str, call_leg_id: str, call_session_id: str, channels: str, conference_id: str, connection_id: str, created_at: str, download_urls: map{mp3: str, wav: str}, duration_millis: int(int32), from: str, id: str, initiated_by: str, record_type: str, recording_ended_at: str, recording_started_at: str, source: str, status: str, to: str, updated_at: str}} # A response with a single recording resource.\n@errors {401: Unauthorized. The request lacks valid authentication credentials., 404: Resource not found. The requested resource or URL could not be found.}\n\n@endgroup\n\n@group regions\n@endpoint GET /regions\n@desc List all Regions\n@returns(200) {data: [map]} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group regulatory_requirements\n@endpoint GET /regulatory_requirements\n@desc Retrieve regulatory requirements\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[requirement_group_id], filter[country_code], filter[phone_number_type], filter[action]}\n@returns(200) {data: [map]} # An array of Regulatory Requirements Responses\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group reports\n@endpoint GET /reports/cdr_usage_reports/sync\n@desc Generates and fetches CDR Usage Reports\n@required {aggregation_type: str(NO_AGGREGATION/CONNECTION/TAG/BILLING_GROUP), product_breakdown: str(NO_BREAKDOWN/DID_VS_TOLL_FREE/COUNTRY/DID_VS_TOLL_FREE_PER_COUNTRY)}\n@optional {start_date: str(date-time), end_date: str(date-time), connections: [num]}\n@returns(200) {data: map{aggregation_type: str, connections: [int(int64)], created_at: str(date-time), end_time: str(date-time), id: str(uuid), product_breakdown: str, record_type: str, report_url: str, result: map, start_time: str(date-time), status: str, updated_at: str(date-time)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /reports/mdr_usage_reports\n@desc Fetch all Messaging usage reports\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint POST /reports/mdr_usage_reports\n@desc Create MDR Usage Report\n@returns(200) {data: map{aggregation_type: str, connections: [int(int64)], created_at: str(date-time), end_date: str(date-time), id: str(uuid), profiles: str, record_type: str, report_url: str, result: [map], start_date: str(date-time), status: str, updated_at: str(date-time)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /reports/mdr_usage_reports/sync\n@desc Generate and fetch MDR Usage Report\n@required {aggregation_type: str(NO_AGGREGATION/PROFILE/TAGS)}\n@optional {start_date: str(date-time), end_date: str(date-time), profiles: [str]}\n@returns(200) {data: map{aggregation_type: str, connections: [int(int64)], created_at: str(date-time), end_date: str(date-time), id: str(uuid), profiles: str, record_type: str, report_url: str, result: [map], start_date: str(date-time), status: str, updated_at: str(date-time)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint DELETE /reports/mdr_usage_reports/{id}\n@desc Delete MDR Usage Report\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: str, connections: [int(int64)], created_at: str(date-time), end_date: str(date-time), id: str(uuid), profiles: str, record_type: str, report_url: str, result: [map], start_date: str(date-time), status: str, updated_at: str(date-time)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /reports/mdr_usage_reports/{id}\n@desc Retrieve messaging report\n@required {id: str(uuid)}\n@returns(200) {data: map{aggregation_type: str, connections: [int(int64)], created_at: str(date-time), end_date: str(date-time), id: str(uuid), profiles: str, record_type: str, report_url: str, result: [map], start_date: str(date-time), status: str, updated_at: str(date-time)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /reports/mdrs\n@desc Fetch all Mdr records\n@optional {start_date: str # Pagination start date, end_date: str # Pagination end date, id: str, direction: str(INBOUND/OUTBOUND), profile: str, cld: str, cli: str, status: str(GW_TIMEOUT/DELIVERED/DLR_UNCONFIRMED/DLR_TIMEOUT/RECEIVED/GW_REJECT/FAILED), message_type: str(SMS/MMS)}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endpoint GET /reports/wdrs\n@desc Fetches all Wdr records\n@optional {start_date: str # Start date, end_date: str # End date, id: str, mcc: str, mnc: str, imsi: str, sim_group_name: str, sim_group_id: str, sim_card_id: str, phone_number: str, sort: [str]=created_at, page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int(int32), page_size: int(int32), total_pages: int(int32), total_results: int(int32)}} # Successful\n@errors {400: Bad Request}\n\n@endgroup\n\n@group reputation\n@endpoint GET /reputation/numbers\n@desc List reputation phone numbers (simplified)\n@optional {page[number]: int=1: any # Page number (1-indexed), page[size]: int=10 # Number of items per page, phone_number: str # Filter by specific phone number (E.164 format)}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List of phone numbers with reputation data\n@errors {401: Unauthorized — missing or invalid API key}\n\n@endpoint DELETE /reputation/numbers/{phone_number}\n@desc Disassociate a phone number (simplified)\n@required {phone_number: str # Phone number in E.164 format}\n@returns(204) Phone number disassociated successfully\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endpoint GET /reputation/numbers/{phone_number}\n@desc Get reputation data for a phone number (simplified)\n@required {phone_number: str # Phone number in E.164 format}\n@optional {fresh: bool=false # When true, fetches fresh reputation data (incurs API cost). When false, returns cached data.}\n@returns(200) {data: any} # Phone number reputation data\n@errors {401: Unauthorized — missing or invalid API key, 404: Resource not found}\n\n@endgroup\n\n@group requirement_groups\n@endpoint GET /requirement_groups\n@desc List requirement groups\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[country_code], filter[phone_number_type], filter[action], filter[status], filter[customer_reference]}\n@returns(200) List requirement groups\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /requirement_groups\n@desc Create a new requirement group\n@required {action: str(ordering/porting), country_code: str # ISO alpha 2 country code, phone_number_type: str(local/toll_free/mobile/national/shared_cost)}\n@optional {customer_reference: str, regulatory_requirements: [map{field_value: str, requirement_id: str}]}\n@returns(200) {action: str, country_code: str, created_at: str(date-time), customer_reference: str, id: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], status: str, updated_at: str(date-time)} # Requirement group created\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint DELETE /requirement_groups/{id}\n@desc Delete a requirement group by ID\n@required {id: str # ID of the requirement group}\n@returns(200) {action: str, country_code: str, created_at: str(date-time), customer_reference: str, id: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], status: str, updated_at: str(date-time)} # Deleted requirement group\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /requirement_groups/{id}\n@desc Get a single requirement group by ID\n@required {id: str # ID of the requirement group to retrieve}\n@returns(200) {action: str, country_code: str, created_at: str(date-time), customer_reference: str, id: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], status: str, updated_at: str(date-time)} # A single requirement group\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /requirement_groups/{id}\n@desc Update requirement values in requirement group\n@required {id: str # ID of the requirement group}\n@optional {customer_reference: str # Reference for the customer, regulatory_requirements: [map{field_value: str, requirement_id: str}]}\n@returns(200) {action: str, country_code: str, created_at: str(date-time), customer_reference: str, id: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], status: str, updated_at: str(date-time)} # Updated requirement group\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /requirement_groups/{id}/submit_for_approval\n@desc Submit a Requirement Group for Approval\n@required {id: str # ID of the requirement group to submit}\n@returns(200) {action: str, country_code: str, created_at: str(date-time), customer_reference: str, id: str, phone_number_type: str, record_type: str, regulatory_requirements: [map], status: str, updated_at: str(date-time)} # A single requirement group\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group requirement_types\n@endpoint GET /requirement_types\n@desc List all requirement types\n@optional {filter: map # Consolidated filter parameter for requirement types (deepObject style). Originally: filter[name], sort: [str] # Consolidated sort parameter for requirement types (deepObject style). Originally: sort[]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /requirement_types/{id}\n@desc Retrieve a requirement types\n@required {id: str(uuid) # Uniquely identifies the requirement_type record}\n@returns(200) {data: map{acceptance_criteria: map{acceptable_characters: str, acceptable_values: [str], locality_limit: str, max_length: int, min_length: int, time_limit: str}, created_at: str, description: str, example: str, id: str(uuid), name: str, record_type: str, type: str, updated_at: str}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group requirements\n@endpoint GET /requirements\n@desc List all requirements\n@optional {filter: map # Consolidated filter parameter for requirements (deepObject style). Originally: filter[country_code], filter[phone_number_type], filter[action], sort: [str] # Consolidated sort parameter for requirements (deepObject style). Originally: sort[], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /requirements/{id}\n@desc Retrieve a document requirement\n@required {id: str(uuid) # Uniquely identifies the requirement_type record}\n@returns(200) {data: map{action: str, country_code: str, created_at: str, id: str(uuid), locality: str, phone_number_type: str, record_type: str, requirements_types: [map], updated_at: str}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group room_compositions\n@endpoint GET /room_compositions\n@desc View a list of room compositions.\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room compositions response.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /room_compositions\n@desc Create a room composition.\n@optional {format: str=mp4 # The desired format of the room composition., resolution: str=1280x720 # 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, session_id: str(uuid) # id of the room session associated with the room composition., video_layout: map # Describes the video layout of the room composition in terms of regions., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(202) {data: map{completed_at: str(date-time), created_at: str(date-time), download_url: str, duration_secs: int, ended_at: str(date-time), format: str, id: str(uuid), record_type: str, resolution: str, room_id: str(uuid), session_id: str(uuid), size_mb: num(float), started_at: str(date-time), status: str, updated_at: str(date-time), user_id: str(uuid), video_layout: map, webhook_event_failover_url: str(uri), webhook_event_url: str(uri), webhook_timeout_secs: int}} # Create room composition response.\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /room_compositions/{room_composition_id}\n@desc Delete a room composition.\n@required {room_composition_id: str(uuid) # The unique identifier of a room composition.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /room_compositions/{room_composition_id}\n@desc View a room composition.\n@required {room_composition_id: str(uuid) # The unique identifier of a room composition.}\n@returns(200) {data: map{completed_at: str(date-time), created_at: str(date-time), download_url: str, duration_secs: int, ended_at: str(date-time), format: str, id: str(uuid), record_type: str, resolution: str, room_id: str(uuid), session_id: str(uuid), size_mb: num(float), started_at: str(date-time), status: str, updated_at: str(date-time), user_id: str(uuid), video_layout: map, webhook_event_failover_url: str(uri), webhook_event_url: str(uri), webhook_timeout_secs: int}} # Get room composition response.\n@errors {404: Resource not found}\n\n@endgroup\n\n@group room_participants\n@endpoint GET /room_participants\n@desc View a list of room participants.\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room participants response.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /room_participants/{room_participant_id}\n@desc View a room participant.\n@required {room_participant_id: str(uuid) # The unique identifier of a room participant.}\n@returns(200) {data: map{context: str, id: str(uuid), joined_at: str(date-time), left_at: str(date-time), record_type: str, session_id: str(uuid), updated_at: str(date-time)}} # Get room participant response.\n@errors {404: Resource not found}\n\n@endgroup\n\n@group room_recordings\n@endpoint DELETE /room_recordings\n@desc Delete several room recordings in a bulk.\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(201) {data: map{room_recordings: int}} # Successful response for Bulk Delete Room recordings requests\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /room_recordings\n@desc View a list of room recordings.\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room recordings response.\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /room_recordings/{room_recording_id}\n@desc Delete a room recording.\n@required {room_recording_id: str(uuid) # The unique identifier of a room recording.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /room_recordings/{room_recording_id}\n@desc View a room recording.\n@required {room_recording_id: str(uuid) # The unique identifier of a room recording.}\n@returns(200) {data: map{codec: str, completed_at: str(date-time), created_at: str(date-time), download_url: str, duration_secs: int, ended_at: str(date-time), id: str(uuid), participant_id: str(uuid), record_type: str, room_id: str(uuid), session_id: str(uuid), size_mb: num(float), started_at: str(date-time), status: str, type: str, updated_at: str(date-time)}} # Get room recording response.\n@errors {404: Resource not found}\n\n@endgroup\n\n@group room_sessions\n@endpoint GET /room_sessions\n@desc View a list of room sessions.\n@optional {include_participants: bool # To decide if room participants should be included in the response., filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room sessions response.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /room_sessions/{room_session_id}\n@desc View a room session.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@optional {include_participants: bool # To decide if room participants should be included in the response.}\n@returns(200) {data: map{active: bool, created_at: str(date-time), ended_at: str(date-time), id: str(uuid), participants: [map], record_type: str, room_id: str(uuid), updated_at: str(date-time)}} # Get room session response.\n@errors {404: Resource not found}\n\n@endpoint POST /room_sessions/{room_session_id}/actions/end\n@desc End a room session.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@returns(200) {data: map{result: str}} # Success Action Response\n@errors {4XX: Unexpected error}\n\n@endpoint POST /room_sessions/{room_session_id}/actions/kick\n@desc Kick participants from a room session.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@optional {exclude: [str(uuid)] # List of participant id to exclude from the action., participants: any # Either a list of participant id to perform the action on, or the keyword \"all\" to perform the action on all participant.}\n@returns(200) {data: map{result: str}} # Success Action Response\n@errors {4XX: Unexpected error}\n\n@endpoint POST /room_sessions/{room_session_id}/actions/mute\n@desc Mute participants in room session.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@optional {exclude: [str(uuid)] # List of participant id to exclude from the action., participants: any # Either a list of participant id to perform the action on, or the keyword \"all\" to perform the action on all participant.}\n@returns(200) {data: map{result: str}} # Success Action Response\n@errors {4XX: Unexpected error}\n\n@endpoint POST /room_sessions/{room_session_id}/actions/unmute\n@desc Unmute participants in room session.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@optional {exclude: [str(uuid)] # List of participant id to exclude from the action., participants: any # Either a list of participant id to perform the action on, or the keyword \"all\" to perform the action on all participant.}\n@returns(200) {data: map{result: str}} # Success Action Response\n@errors {4XX: Unexpected error}\n\n@endpoint GET /room_sessions/{room_session_id}/participants\n@desc View a list of room participants.\n@required {room_session_id: str(uuid) # The unique identifier of a room session.}\n@optional {filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room participants response.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group rooms\n@endpoint GET /rooms\n@desc View a list of rooms.\n@optional {include_sessions: bool # To decide if room sessions should be included in the response., filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List rooms response.\n@errors {4XX: Unexpected error}\n\n@endpoint POST /rooms\n@desc Create a room.\n@optional {enable_recording: bool=false # Enable or disable recording for that room., max_participants: int=10 # 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., unique_name: str # The unique (within the Telnyx account scope) name of the room., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(201) {data: map{active_session_id: str(uuid), created_at: str(date-time), enable_recording: bool, id: str(uuid), max_participants: int, record_type: str, sessions: [map], unique_name: str, updated_at: str(date-time), webhook_event_failover_url: str(uri), webhook_event_url: str(uri), webhook_timeout_secs: int}} # Create room response.\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /rooms/{room_id}\n@desc Delete a room.\n@required {room_id: str(uuid) # The unique identifier of a room.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /rooms/{room_id}\n@desc View a room.\n@required {room_id: str(uuid) # The unique identifier of a room.}\n@optional {include_sessions: bool # To decide if room sessions should be included in the response.}\n@returns(200) {data: map{active_session_id: str(uuid), created_at: str(date-time), enable_recording: bool, id: str(uuid), max_participants: int, record_type: str, sessions: [map], unique_name: str, updated_at: str(date-time), webhook_event_failover_url: str(uri), webhook_event_url: str(uri), webhook_timeout_secs: int}} # Get room response.\n@errors {404: Resource not found}\n\n@endpoint PATCH /rooms/{room_id}\n@desc Update a room.\n@required {room_id: str(uuid) # The unique identifier of a room.}\n@optional {enable_recording: bool=false # Enable or disable recording for that room., max_participants: int=10 # 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., unique_name: str # The unique (within the Telnyx account scope) name of the room., webhook_event_failover_url: str(uri)= # 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'., webhook_event_url: str(uri) # The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'., webhook_timeout_secs: int=null # Specifies how many seconds to wait before timing out a webhook.}\n@returns(200) {data: map{active_session_id: str(uuid), created_at: str(date-time), enable_recording: bool, id: str(uuid), max_participants: int, record_type: str, sessions: [map], unique_name: str, updated_at: str(date-time), webhook_event_failover_url: str(uri), webhook_event_url: str(uri), webhook_timeout_secs: int}} # Update room response.\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint POST /rooms/{room_id}/actions/generate_join_client_token\n@desc Create Client Token to join a room.\n@required {room_id: str(uuid) # The unique identifier of a room.}\n@optional {refresh_token_ttl_secs: int=3600 # 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., token_ttl_secs: int=600 # 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.}\n@returns(201) {data: map{refresh_token: str, refresh_token_expires_at: str(date-time), token: str, token_expires_at: str(date-time)}} # Create room client token response.\n@errors {403: Forbidden}\n\n@endpoint POST /rooms/{room_id}/actions/refresh_client_token\n@desc Refresh Client Token to join a room.\n@required {room_id: str(uuid) # The unique identifier of a room., refresh_token: str}\n@optional {token_ttl_secs: int=600 # 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.}\n@returns(201) {data: map{token: str, token_expires_at: str(date-time)}} # Refresh room client token response.\n@errors {403: Forbidden}\n\n@endpoint GET /rooms/{room_id}/sessions\n@desc View a list of room sessions.\n@required {room_id: str(uuid) # The unique identifier of a room.}\n@optional {include_participants: bool # To decide if room participants should be included in the response., filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List room sessions response.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group session_analysis\n@endpoint GET /session_analysis/metadata\n@desc Get metadata overview\n@returns(200) {meta: map{last_updated: str(date-time), total_record_types: int}, query_parameters: map, record_types: [map]} # Metadata overview\n@errors {401: Unauthorized, 500: Internal server error}\n\n@endpoint GET /session_analysis/metadata/{record_type}\n@desc Get record type metadata\n@required {record_type: str # The record type identifier (e.g. \"call-control\").}\n@returns(200) {aliases: [str], child_relationships: [map], event: str, examples: map, meta: map{max_recommended_depth: int, total_children: int, total_parents: int, total_siblings: int}, parent_relationships: [map], product: str, record_type: str} # Record type metadata\n@errors {404: Record type not found, 500: Internal server error}\n\n@endpoint GET /session_analysis/{record_type}/{event_id}\n@desc Get session analysis\n@required {record_type: str # The record type identifier., event_id: str(uuid) # The event identifier (UUID).}\n@optional {include_children: bool=true # Whether to include child events in the response., max_depth: int=2 # Maximum traversal depth for the event tree., expand: str(record/none)=record # Controls what data to expand on each event node., date_time: str(date-time) # ISO 8601 timestamp to narrow index selection for faster lookups.}\n@returns(200) {completed_at: str(date-time)?, cost: map{currency: str, total: str}, created_at: str(date-time), meta: map{event_count: int, products: [str]}, root: map{children: [map], cost: map{cumulative_cost: str, currency: str, event_cost: str}, event_name: str, id: str, links: map{records: str, self: str}, product: str, record: map, relationship: any}, session_id: str, status: str} # Session analysis result\n@errors {400: Invalid request parameters, 403: Forbidden, 404: Event not found, 500: Internal server error}\n\n@endgroup\n\n@group seti\n@endpoint GET /seti/black_box_test_results\n@desc Retrieve Black Box Test Results\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[product]}\n@returns(200) {data: [map]} # A list of black box test results.\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group short_codes\n@endpoint GET /short_codes\n@desc List short codes\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of short codes.\n@errors {4XX: Unexpected error}\n\n@endpoint GET /short_codes/{id}\n@desc Retrieve a short code\n@required {id: str(uuid) # The id of the short code}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), id: str(uuid), messaging_profile_id: str?, record_type: str, short_code: str, tags: [str], updated_at: str(date-time)}} # Successful response with details about a short code.\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /short_codes/{id}\n@desc Update short code\n@required {id: str(uuid) # The id of the short code, messaging_profile_id: str # Unique identifier for a messaging profile.}\n@optional {tags: [str]}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), id: str(uuid), messaging_profile_id: str?, record_type: str, short_code: str, tags: [str], updated_at: str(date-time)}} # Successful response with details about a short code.\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group sim_card_actions\n@endpoint GET /sim_card_actions\n@desc List SIM card actions\n@optional {filter: map # 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], page: map # Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_card_actions/{id}\n@desc Get SIM card action details\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group sim_card_data_usage_notifications\n@endpoint GET /sim_card_data_usage_notifications\n@desc List SIM card data usage notifications\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[sim_card_id]: str(uuid) # A valid SIM card ID.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_data_usage_notifications\n@desc Create a new SIM card data usage notification\n@required {sim_card_id: str(uuid) # The identification UUID of the related SIM card resource., threshold: map{amount: str, unit: str} # Data usage threshold that will trigger the notification.}\n@returns(201) {data: map{created_at: str, id: str(uuid), record_type: str, sim_card_id: str(uuid), threshold: map{amount: str, unit: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint DELETE /sim_card_data_usage_notifications/{id}\n@desc Delete SIM card data usage notifications\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, id: str(uuid), record_type: str, sim_card_id: str(uuid), threshold: map{amount: str, unit: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_card_data_usage_notifications/{id}\n@desc Get a single SIM card data usage notification\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, id: str(uuid), record_type: str, sim_card_id: str(uuid), threshold: map{amount: str, unit: str}, updated_at: str}} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint PATCH /sim_card_data_usage_notifications/{id}\n@desc Updates information for a SIM Card Data Usage Notification\n@required {id: str(uuid) # Identifies the resource.}\n@optional {created_at: str # ISO 8601 formatted date-time indicating when the resource was created., id: str(uuid) # Identifies the resource., record_type: str, sim_card_id: str(uuid) # The identification UUID of the related SIM card resource., threshold: map{amount: str, unit: str} # Data usage threshold that will trigger the notification., updated_at: str # ISO 8601 formatted date-time indicating when the resource was updated.}\n@returns(200) {data: map{created_at: str, id: str(uuid), record_type: str, sim_card_id: str(uuid), threshold: map{amount: str, unit: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group sim_card_group_actions\n@endpoint GET /sim_card_group_actions\n@desc List SIM card group actions\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[sim_card_group_id]: str(uuid) # A valid SIM card group ID., filter[status]: str(in-progress/completed/failed) # Filter by a specific status of the resource's lifecycle., filter[type]: str(set_private_wireless_gateway/remove_private_wireless_gateway/set_wireless_blocklist/remove_wireless_blocklist) # Filter by action type.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_card_group_actions/{id}\n@desc Get SIM card group action details\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{private_wireless_gateway_id: str(uuid)}, sim_card_group_id: str(uuid), status: str, type: str, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group sim_card_groups\n@endpoint GET /sim_card_groups\n@desc Get all SIM card groups\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[name]: str # A valid SIM card group name., filter[private_wireless_gateway_id]: str(uuid) # A Private Wireless Gateway ID associated with the group., filter[wireless_blocklist_id]: str(uuid) # A Wireless Blocklist ID associated with the group.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_groups\n@desc Create a SIM card group\n@required {name: str # A user friendly name for the SIM card group.}\n@optional {data_limit: map{amount: str, unit: str} # Upper limit on the amount of data the SIM cards, within the group, can use.}\n@returns(200) {data: map{consumed_data: map{amount: str, unit: str}, created_at: str, data_limit: map{amount: str, unit: str}, default: bool, id: str(uuid), name: str, private_wireless_gateway_id: str(uuid), record_type: str, updated_at: str, wireless_blocklist_id: str(uuid)}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint DELETE /sim_card_groups/{id}\n@desc Delete a SIM card group\n@required {id: str(uuid) # Identifies the SIM group.}\n@returns(200) {data: map{consumed_data: map{amount: str, unit: str}, created_at: str, data_limit: map{amount: str, unit: str}, default: bool, id: str(uuid), name: str, private_wireless_gateway_id: str(uuid), record_type: str, updated_at: str, wireless_blocklist_id: str(uuid)}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_card_groups/{id}\n@desc Get SIM card group\n@required {id: str(uuid) # Identifies the SIM group.}\n@optional {include_iccids: bool=false # It includes a list of associated ICCIDs.}\n@returns(200) {data: map{consumed_data: map{amount: str, unit: str}, created_at: str, data_limit: map{amount: str, unit: str}, default: bool, id: str(uuid), name: str, private_wireless_gateway_id: str(uuid), record_type: str, updated_at: str, wireless_blocklist_id: str(uuid)}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint PATCH /sim_card_groups/{id}\n@desc Update a SIM card group\n@required {id: str(uuid) # Identifies the SIM group.}\n@optional {data_limit: map{amount: str, unit: str} # Upper limit on the amount of data the SIM cards, within the group, can use., name: str # A user friendly name for the SIM card group.}\n@returns(200) {data: map{consumed_data: map{amount: str, unit: str}, created_at: str, data_limit: map{amount: str, unit: str}, default: bool, id: str(uuid), name: str, private_wireless_gateway_id: str(uuid), record_type: str, updated_at: str, wireless_blocklist_id: str(uuid)}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_groups/{id}/actions/remove_private_wireless_gateway\n@desc Request Private Wireless Gateway removal from SIM card group\n@required {id: str(uuid) # Identifies the SIM group.}\n@returns(202) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{private_wireless_gateway_id: str(uuid)}, sim_card_group_id: str(uuid), status: str, type: str, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_groups/{id}/actions/remove_wireless_blocklist\n@desc Request Wireless Blocklist removal from SIM card group\n@required {id: str(uuid) # Identifies the SIM group.}\n@returns(202) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{private_wireless_gateway_id: str(uuid)}, sim_card_group_id: str(uuid), status: str, type: str, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_groups/{id}/actions/set_private_wireless_gateway\n@desc Request Private Wireless Gateway assignment for SIM card group\n@required {id: str(uuid) # Identifies the SIM group., private_wireless_gateway_id: str(uuid) # The identification of the related Private Wireless Gateway resource.}\n@returns(202) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{private_wireless_gateway_id: str(uuid)}, sim_card_group_id: str(uuid), status: str, type: str, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_groups/{id}/actions/set_wireless_blocklist\n@desc Request Wireless Blocklist assignment for SIM card group\n@required {id: str(uuid) # Identifies the SIM group., wireless_blocklist_id: str(uuid) # The identification of the related Wireless Blocklist resource.}\n@returns(202) {data: map{created_at: str, id: str(uuid), record_type: str, settings: map{private_wireless_gateway_id: str(uuid)}, sim_card_group_id: str(uuid), status: str, type: str, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group sim_card_order_preview\n@endpoint POST /sim_card_order_preview\n@desc Preview SIM card orders\n@required {address_id: str # Uniquely identifies the address for the order., quantity: int # The amount of SIM cards that the user would like to purchase in the SIM card order.}\n@returns(202) {data: map{quantity: int, record_type: str, shipping_cost: map{amount: str, currency: str}, sim_cards_cost: map{amount: str, currency: str}, total_cost: map{amount: str, currency: str}}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group sim_card_orders\n@endpoint GET /sim_card_orders\n@desc Get all SIM card orders\n@optional {filter: map # 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], page: map # Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_card_orders\n@desc Create a SIM card order\n@required {address_id: str # Uniquely identifies the address for the order., quantity: int # The amount of SIM cards to order.}\n@returns(200) {data: map{cost: map{amount: str, currency: str}, created_at: str, id: str(uuid), order_address: map{administrative_area: str, business_name: str, country_code: str, extended_address: str, first_name: str, id: str, last_name: str, locality: str, postal_code: str, street_address: str}, quantity: int, record_type: str, status: str, tracking_url: str(uri), updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_card_orders/{id}\n@desc Get a single SIM card order\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{cost: map{amount: str, currency: str}, created_at: str, id: str(uuid), order_address: map{administrative_area: str, business_name: str, country_code: str, extended_address: str, first_name: str, id: str, last_name: str, locality: str, postal_code: str, street_address: str}, quantity: int, record_type: str, status: str, tracking_url: str(uri), updated_at: str}} # Successful Response\n@errors {404: Resource not found}\n\n@endgroup\n\n@group sim_cards\n@endpoint GET /sim_cards\n@desc Get all SIM cards\n@optional {filter: map # Consolidated filter parameter for SIM cards (deepObject style). Originally: filter[iccid], filter[msisdn], filter[status], filter[tags], page: map # Consolidated pagination parameter (deepObject style). Originally: page[number], page[size], include_sim_card_group: bool=false # It includes the associated SIM card group object in the response when present., filter[sim_card_group_id]: str(uuid) # A valid SIM card group ID., sort: str(current_billing_period_consumed_data.amount/-current_billing_period_consumed_data.amount) # Sorts SIM cards by the given field. Defaults to ascending order unless field is prefixed with a minus sign.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_cards/actions/bulk_disable_voice\n@desc Request bulk disabling voice on SIM cards.\n@required {sim_card_group_id: str}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /sim_cards/actions/bulk_enable_voice\n@desc Request bulk enabling voice on SIM cards.\n@required {sim_card_group_id: str}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /sim_cards/actions/bulk_set_public_ips\n@desc Request bulk setting SIM card public IPs.\n@required {sim_card_ids: [str(uuid)]}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /sim_cards/actions/validate_registration_codes\n@desc Validate SIM cards registration codes\n@optional {registration_codes: [str]}\n@returns(200) {data: [map]} # Successful\n@errors {401: Unauthorized}\n\n@endpoint DELETE /sim_cards/{id}\n@desc Deletes a SIM card\n@required {id: str(uuid) # Identifies the SIM.}\n@optional {report_lost: bool=false # Enables deletion of disabled eSIMs that can't be uninstalled from a device. This is irreversible and the eSIM cannot be re-registered.}\n@returns(200) {data: map{actions_in_progress: bool, authorized_imeis: [str]?, created_at: str, current_billing_period_consumed_data: map{amount: str, unit: str}, current_device_location: map{accuracy: int, accuracy_unit: str, latitude: str, longitude: str}, current_imei: str, current_mcc: str, current_mnc: str, data_limit: map{amount: str, unit: str}, eid: str?, esim_installation_status: str?, iccid: str, id: str(uuid), imsi: str, ipv4: str, ipv6: str, live_data_session: str, msisdn: str, pin_puk_codes: map{pin1: str, pin2: str, puk1: str, puk2: str}, record_type: str, resources_with_in_progress_actions: [map], sim_card_group_id: str(uuid), status: map{reason: str, value: str}, tags: [str], type: str, updated_at: str, version: str, voice_enabled: bool}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_cards/{id}\n@desc Get SIM card\n@required {id: str(uuid) # Identifies the SIM.}\n@optional {include_sim_card_group: bool=false # It includes the associated SIM card group object in the response when present., include_pin_puk_codes: bool=false # 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.}\n@returns(200) {data: map{actions_in_progress: bool, authorized_imeis: [str]?, created_at: str, current_billing_period_consumed_data: map{amount: str, unit: str}, current_device_location: map{accuracy: int, accuracy_unit: str, latitude: str, longitude: str}, current_imei: str, current_mcc: str, current_mnc: str, data_limit: map{amount: str, unit: str}, eid: str?, esim_installation_status: str?, iccid: str, id: str(uuid), imsi: str, ipv4: str, ipv6: str, live_data_session: str, msisdn: str, pin_puk_codes: map{pin1: str, pin2: str, puk1: str, puk2: str}, record_type: str, resources_with_in_progress_actions: [map], sim_card_group_id: str(uuid), status: map{reason: str, value: str}, tags: [str], type: str, updated_at: str, version: str, voice_enabled: bool}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint PATCH /sim_cards/{id}\n@desc Update a SIM card\n@required {id: str(uuid) # Identifies the SIM.}\n@optional {actions_in_progress: bool=false # Indicate whether the SIM card has any pending (in-progress) actions., authorized_imeis: [str] # List of IMEIs authorized to use a given SIM card., created_at: str # ISO 8601 formatted date-time indicating when the resource was created., current_billing_period_consumed_data: map{amount: str, unit: str} # The SIM card consumption so far in the current billing cycle., current_device_location: map{accuracy: int, accuracy_unit: str, latitude: str, longitude: str} # Current physical location data of a given SIM card. Accuracy is given in meters., current_imei: str # IMEI of the device where a given SIM card is currently being used., current_mcc: str # Mobile Country Code of the current network to which the SIM card is connected. It's a three decimal digit that identifies a country. This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code., current_mnc: str # 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.  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., data_limit: map{amount: str, unit: str} # The SIM card individual data limit configuration., eid: str # The Embedded Identity Document (eID) for eSIM cards., esim_installation_status: str(released/disabled) # The installation status of the eSIM. Only applicable for eSIM cards., iccid: str # 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., id: str(uuid) # Identifies the resource., imsi: str # SIM cards are identified on their individual network operators by a unique International Mobile Subscriber Identity (IMSI).  Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs. The IMSI is stored in the Subscriber  Identity Module (SIM) inside the device and is sent by the device to the appropriate network. It is used to acquire the details of the device in the Home  Location Register (HLR) or the Visitor Location Register (VLR)., ipv4: str # 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., ipv6: str # 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., live_data_session: str(connected/disconnected/unknown) # Indicates whether the device is actively connected to a network and able to run data., msisdn: str # Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.  MSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber's operator., pin_puk_codes: map{pin1: str, pin2: str, puk1: str, puk2: str} # PIN and PUK codes for the SIM card. Only available when include_pin_puk_codes=true is set in the request., record_type: str, resources_with_in_progress_actions: [map] # List of resources with actions in progress., sim_card_group_id: str(uuid) # The group SIMCardGroup identification. This attribute can be null when it's present in an associated resource., status: map{reason: str, value: str}, tags: [str] # Searchable tags associated with the SIM card, type: str(physical/esim) # The type of SIM card, updated_at: str # ISO 8601 formatted date-time indicating when the resource was updated., version: str # The version of the SIM card., voice_enabled: bool=false # Indicates whether voice services are enabled for the SIM card.}\n@returns(200) {data: map{actions_in_progress: bool, authorized_imeis: [str]?, created_at: str, current_billing_period_consumed_data: map{amount: str, unit: str}, current_device_location: map{accuracy: int, accuracy_unit: str, latitude: str, longitude: str}, current_imei: str, current_mcc: str, current_mnc: str, data_limit: map{amount: str, unit: str}, eid: str?, esim_installation_status: str?, iccid: str, id: str(uuid), imsi: str, ipv4: str, ipv6: str, live_data_session: str, msisdn: str, pin_puk_codes: map{pin1: str, pin2: str, puk1: str, puk2: str}, record_type: str, resources_with_in_progress_actions: [map], sim_card_group_id: str(uuid), status: map{reason: str, value: str}, tags: [str], type: str, updated_at: str, version: str, voice_enabled: bool}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_cards/{id}/actions/disable\n@desc Request a SIM card disable\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_cards/{id}/actions/enable\n@desc Request a SIM card enable\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /sim_cards/{id}/actions/remove_public_ip\n@desc Request removing a SIM card public IP\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_cards/{id}/actions/set_public_ip\n@desc Request setting a SIM card public IP\n@required {id: str(uuid) # Identifies the SIM.}\n@optional {region_code: str # The code of the region where the public IP should be assigned. A list of available regions can be found at the regions endpoint}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /sim_cards/{id}/actions/set_standby\n@desc Request setting a SIM card to standby\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(202) {data: map{action_type: str, created_at: str, id: str(uuid), record_type: str, settings: map?, sim_card_id: str(uuid), status: map{reason: str, value: str}, updated_at: str}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_cards/{id}/activation_code\n@desc Get activation code for an eSIM\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(200) {data: map{activation_code: str, record_type: str}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_cards/{id}/device_details\n@desc Get SIM card device details\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(200) {data: map{brand_name: str, device_type: str, imei: str, model_name: str, operating_system: str, record_type: str}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_cards/{id}/public_ip\n@desc Get SIM card public IP definition\n@required {id: str(uuid) # Identifies the SIM.}\n@returns(200) {data: map{created_at: str, ip: str, record_type: str, region_code: str, sim_card_id: str(uuid), type: str, updated_at: str}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /sim_cards/{id}/wireless_connectivity_logs\n@desc List wireless connectivity logs\n@required {id: str(uuid) # Identifies the SIM.}\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group siprec_connectors\n@endpoint POST /siprec_connectors\n@desc Create a SIPREC connector\n@required {host: str # Hostname/IPv4 address of the SIPREC SRS., name: str # Name for the SIPREC connector resource., port: int # Port for the SIPREC SRS.}\n@optional {app_subdomain: str # Subdomain to route the call when using Telnyx SRS (optional for non-Telnyx SRS).}\n@returns(201) {data: map{app_subdomain: str, created_at: str, host: str, name: str, port: int, record_type: str, updated_at: str}} # Return details of the SIPREC connector.\n@errors {422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint DELETE /siprec_connectors/{connector_name}\n@desc Delete a SIPREC connector\n@required {connector_name: str # Uniquely identifies a SIPREC connector.}\n@returns(204) The SIPREC connector was deleted successfully.\n@errors {404: The requested resource does not exist}\n\n@endpoint GET /siprec_connectors/{connector_name}\n@desc Retrieve a SIPREC connector\n@required {connector_name: str # Uniquely identifies a SIPREC connector.}\n@returns(200) {data: map{app_subdomain: str, created_at: str, host: str, name: str, port: int, record_type: str, updated_at: str}} # Return details of the SIPREC connector.\n@errors {404: The requested resource does not exist}\n\n@endpoint PUT /siprec_connectors/{connector_name}\n@desc Update a SIPREC connector\n@required {connector_name: str # Uniquely identifies a SIPREC connector., host: str # Hostname/IPv4 address of the SIPREC SRS., name: str # Name for the SIPREC connector resource., port: int # Port for the SIPREC SRS.}\n@optional {app_subdomain: str # Subdomain to route the call when using Telnyx SRS (optional for non-Telnyx SRS).}\n@returns(200) {data: map{app_subdomain: str, created_at: str, host: str, name: str, port: int, record_type: str, updated_at: str}} # Return details of the SIPREC connector.\n@errors {404: The requested resource does not exist, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endgroup\n\n@group speech-to-text\n@endpoint GET /speech-to-text/transcription\n@desc Speech to text over WebSocket\n@required {transcription_engine: str(Azure/Deepgram/Google/Telnyx) # The transcription engine to use for processing the audio stream., input_format: str(mp3/wav) # The format of input audio stream.}\n@optional {language: str # The language spoken in the audio stream., interim_results: bool # Whether to receive interim transcription results., model: any # The specific model to use within the selected transcription engine., endpointing: int # 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. Not all engines support this parameter., redact: str # Enable redaction of sensitive information (e.g., PCI data, SSN) from transcription results. Supported values depend on the transcription engine., keyterm: str # 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., keywords: str # Comma-separated list of keywords to boost in the transcription. The engine will prioritize recognition of these words.}\n@returns(200) WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation.\n@errors {101: WebSocket connection established. Communication proceeds via binary audio frames (client) and JSON transcript frames (server).  **Client → Server:** Binary audio data (mp3/wav). **Server → Client:** See `TranscriptFrame` and `SttErrorFrame` schemas., 400: Invalid parameters — engine not supported or missing required fields., 401: Authentication failed — missing or invalid Authorization header., 422: 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.}\n\n@endgroup\n\n@group storage\n@endpoint DELETE /storage/buckets/{bucketName}/ssl_certificate\n@desc Remove SSL Certificate\n@required {bucketName: str # Bucket Name}\n@returns(200) {data: map{created_at: str(date-time), id: str, issued_by: map{common_name: str, organization: str, organization_unit: str}, issued_to: map{common_name: str, organization: str, organization_unit: str}, valid_from: str(date-time), valid_to: str(date-time)}} # SSL Certificate Response\n@errors {401: Unauthorized, 404: Bucket or SSL certificate not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/buckets/{bucketName}/ssl_certificate\n@desc Get Bucket SSL Certificate\n@required {bucketName: str # The name of the bucket}\n@returns(200) {data: map{created_at: str(date-time), id: str, issued_by: map{common_name: str, organization: str, organization_unit: str}, issued_to: map{common_name: str, organization: str, organization_unit: str}, valid_from: str(date-time), valid_to: str(date-time)}} # SSL Certificate Response\n@errors {401: Unauthorized, 404: Bucket or SSL certificate not found, 422: Unprocessable Entity}\n\n@endpoint PUT /storage/buckets/{bucketName}/ssl_certificate\n@desc Add SSL Certificate\n@required {bucketName: str # The name of the bucket}\n@returns(200) {data: map{created_at: str(date-time), id: str, issued_by: map{common_name: str, organization: str, organization_unit: str}, issued_to: map{common_name: str, organization: str, organization_unit: str}, valid_from: str(date-time), valid_to: str(date-time)}} # SSL Certificate Response\n@errors {401: Unauthorized, 404: Bucket not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/buckets/{bucketName}/usage/api\n@desc Get API Usage\n@required {bucketName: str # The name of the bucket, filter: map # Consolidated filter parameter (deepObject style). Originally: filter[start_time], filter[end_time]}\n@returns(200) {data: [map]} # Bucket Usage\n@errors {401: Unauthorized, 404: Bucket not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/buckets/{bucketName}/usage/storage\n@desc Get Bucket Usage\n@required {bucketName: str # The name of the bucket}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Bucket Storage Usage\n@errors {401: Unauthorized, 404: Bucket not found, 422: Unprocessable Entity}\n\n@endpoint POST /storage/buckets/{bucketName}/{objectName}/presigned_url\n@desc Create Presigned Object URL\n@required {bucketName: str # The name of the bucket, objectName: str # The name of the object}\n@optional {ttl: int # The time to live of the token in seconds}\n@returns(200) {content: map{expires_at: str(date-time), presigned_url: str, token: str}} # Presigned URL Object Response\n@errors {401: Unauthorized, 404: Bucket or object not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/migration_source_coverage\n@desc List Migration Source coverage\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List Migrations Source Coverage Response\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint GET /storage/migration_sources\n@desc List all Migration Sources\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List Migration Sources Response\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint POST /storage/migration_sources\n@desc Create a Migration Source\n@required {bucket_name: str # Bucket name to migrate the data from., provider: str(aws/telnyx) # Cloud provider from which to migrate data. Use 'telnyx' if you want to migrate data from one Telnyx bucket to another., provider_auth: map{access_key: str, secret_access_key: str}}\n@optional {id: str # Unique identifier for the data migration source., source_region: str # For intra-Telnyx buckets migration, specify the source bucket region in this field.}\n@returns(200) {data: map{bucket_name: str, id: str, provider: str, provider_auth: map{access_key: str, secret_access_key: str}, source_region: str}} # Create Migration Source Response\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint DELETE /storage/migration_sources/{id}\n@desc Delete a Migration Source\n@required {id: str # Unique identifier for the data migration source.}\n@returns(200) {data: map{bucket_name: str, id: str, provider: str, provider_auth: map{access_key: str, secret_access_key: str}, source_region: str}} # Create Migration Source Response\n@errors {401: Unauthorized, 404: Migration source not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/migration_sources/{id}\n@desc Get a Migration Source\n@required {id: str # Unique identifier for the data migration source.}\n@returns(200) {data: map{bucket_name: str, id: str, provider: str, provider_auth: map{access_key: str, secret_access_key: str}, source_region: str}} # Create Migration Source Response\n@errors {401: Unauthorized, 404: Migration source not found, 422: Unprocessable Entity}\n\n@endpoint GET /storage/migrations\n@desc List all Migrations\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # List Migrations Response\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint POST /storage/migrations\n@desc Create a Migration\n@required {source_id: str # ID of the Migration Source from which to migrate data., target_bucket_name: str # Bucket name to migrate the data into. Will default to the same name as the `source_bucket_name`., target_region: str # Telnyx Cloud Storage region to migrate the data to.}\n@optional {bytes_migrated: int # Total amount of data that has been succesfully migrated., bytes_to_migrate: int # Total amount of data found in source bucket to migrate., created_at: str(date-time) # Time when data migration was created, eta: str(date-time) # Estimated time the migration will complete., id: str # Unique identifier for the data migration., last_copy: str(date-time) # Time when data migration was last copied from the source., refresh: bool # If true, will continue to poll the source bucket to ensure new data is continually migrated over., speed: int # Current speed of the migration., status: str(pending/checking/migrating/complete/error/stopped) # Status of the migration.}\n@returns(200) {data: map{bytes_migrated: int, bytes_to_migrate: int, created_at: str(date-time), eta: str(date-time), id: str, last_copy: str(date-time), refresh: bool, source_id: str, speed: int, status: str, target_bucket_name: str, target_region: str}} # Create Migration Response\n@errors {401: Unauthorized, 422: Unprocessable Entity}\n\n@endpoint GET /storage/migrations/{id}\n@desc Get a Migration\n@required {id: str # Unique identifier for the data migration.}\n@returns(200) {data: map{bytes_migrated: int, bytes_to_migrate: int, created_at: str(date-time), eta: str(date-time), id: str, last_copy: str(date-time), refresh: bool, source_id: str, speed: int, status: str, target_bucket_name: str, target_region: str}} # Create Migration Response\n@errors {401: Unauthorized, 404: Migration not found, 422: Unprocessable Entity}\n\n@endpoint POST /storage/migrations/{id}/actions/stop\n@desc Stop a Migration\n@required {id: str # Unique identifier for the data migration.}\n@returns(200) {data: map{bytes_migrated: int, bytes_to_migrate: int, created_at: str(date-time), eta: str(date-time), id: str, last_copy: str(date-time), refresh: bool, source_id: str, speed: int, status: str, target_bucket_name: str, target_region: str}} # Create Migration Response\n@errors {401: Unauthorized, 404: Migration not found, 422: Unprocessable Entity}\n\n@endgroup\n\n@group sub_number_orders\n@endpoint GET /sub_number_orders\n@desc List sub number orders\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[status], filter[order_request_id], filter[country_code], filter[phone_number_type], filter[phone_numbers_count]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with a list of sub number orders.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint POST /sub_number_orders/{id}/requirement_group\n@desc Update requirement group for a sub number order\n@required {id: str(uuid) # The ID of the sub number order, requirement_group_id: str(uuid) # The ID of the requirement group to associate}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), customer_reference: str, id: str(uuid), is_block_sub_number_order: bool, order_request_id: str(uuid), phone_number_type: str, phone_numbers: [map], phone_numbers_count: int, record_type: str, regulatory_requirements: [map], requirements_met: bool, status: str, updated_at: str(date-time)}} # Sub number order requirement group updated successfully\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n@example_request {\"requirement_group_id\":\"a4b201f9-8646-4e54-a7d2-b2e403eeaf8c\"}\n\n@endpoint GET /sub_number_orders/{sub_number_order_id}\n@desc Retrieve a sub number order\n@required {sub_number_order_id: str # The sub number order ID.}\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[include_phone_numbers]}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), customer_reference: str, id: str(uuid), is_block_sub_number_order: bool, order_request_id: str(uuid), phone_number_type: str, phone_numbers_count: int, record_type: str, regulatory_requirements: [map], requirements_met: bool, status: str, updated_at: str(date-time), user_id: str(uuid)}} # Successful response with details about a sub number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /sub_number_orders/{sub_number_order_id}\n@desc Update a sub number order's requirements\n@required {sub_number_order_id: str # The sub number order ID.}\n@optional {regulatory_requirements: [map{field_value: str, requirement_id: str(uuid)}]}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), customer_reference: str, id: str(uuid), is_block_sub_number_order: bool, order_request_id: str(uuid), phone_number_type: str, phone_numbers_count: int, record_type: str, regulatory_requirements: [map], requirements_met: bool, status: str, updated_at: str(date-time), user_id: str(uuid)}} # Successful response with details about a sub number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint PATCH /sub_number_orders/{sub_number_order_id}/cancel\n@desc Cancel a sub number order\n@required {sub_number_order_id: str # The ID of the sub number order.}\n@returns(200) {data: map{country_code: str, created_at: str(date-time), customer_reference: str, id: str(uuid), is_block_sub_number_order: bool, order_request_id: str(uuid), phone_number_type: str, phone_numbers_count: int, record_type: str, regulatory_requirements: [map], requirements_met: bool, status: str, updated_at: str(date-time), user_id: str(uuid)}} # Successful response with details about a sub number order.\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group sub_number_orders_report\n@endpoint POST /sub_number_orders_report\n@desc Create a sub number orders report\n@optional {country_code: str # Filter by country code, created_at_gt: str(date-time) # Filter for orders created after this date, created_at_lt: str(date-time) # Filter for orders created before this date, customer_reference: str # Filter by customer reference, order_request_id: str(uuid) # Filter by specific order request ID, status: str(pending/success/failure) # Filter by order status}\n@returns(202) {data: map{created_at: str(date-time), filters: map{country_code: str, created_at_gt: str(date-time), created_at_lt: str(date-time), customer_reference: str, order_request_id: str(uuid), status: str}, id: str(uuid), order_type: str, status: str, updated_at: str(date-time), user_id: str(uuid)}} # Sub number orders report response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /sub_number_orders_report/{report_id}\n@desc Retrieve a sub number orders report\n@required {report_id: str(uuid) # The unique identifier of the sub number orders report}\n@returns(200) {data: map{created_at: str(date-time), filters: map{country_code: str, created_at_gt: str(date-time), created_at_lt: str(date-time), customer_reference: str, order_request_id: str(uuid), status: str}, id: str(uuid), order_type: str, status: str, updated_at: str(date-time), user_id: str(uuid)}} # Sub number orders report response\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endpoint GET /sub_number_orders_report/{report_id}/download\n@desc Download a sub number orders report\n@required {report_id: str(uuid) # The unique identifier of the sub number orders report}\n@returns(200) CSV file download\n@errors {400: Bad request, the request was unacceptable, often due to missing a required parameter., 401: Unauthorized, 404: The requested resource doesn't exist., 422: Unprocessable entity. Check the 'detail' field in response for details., 500: Unexpected error}\n\n@endgroup\n\n@group telephony_credentials\n@endpoint GET /telephony_credentials\n@desc List all credentials\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[name], filter[status], filter[resource_id], filter[sip_username]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with multiple credentials\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /telephony_credentials\n@desc Create a credential\n@required {connection_id: str # Identifies the Credential Connection this credential is associated with.}\n@optional {expires_at: str # ISO-8601 formatted date indicating when the credential will expire., name: str, tag: str # Tags a credential. A single tag can hold at maximum 1000 credentials.}\n@returns(201) {data: map{created_at: str, expired: bool, expires_at: str, id: str, name: str, record_type: str, resource_id: str, sip_password: str, sip_username: str, updated_at: str, user_id: str}} # Successful response with details about a credential\n@errors {422: Bad request}\n\n@endpoint DELETE /telephony_credentials/{id}\n@desc Delete a credential\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{created_at: str, expired: bool, expires_at: str, id: str, name: str, record_type: str, resource_id: str, sip_password: str, sip_username: str, updated_at: str, user_id: str}} # Successful response with details about a credential\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint GET /telephony_credentials/{id}\n@desc Get a credential\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{created_at: str, expired: bool, expires_at: str, id: str, name: str, record_type: str, resource_id: str, sip_password: str, sip_username: str, updated_at: str, user_id: str}} # Successful response with details about a credential\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint PATCH /telephony_credentials/{id}\n@desc Update a credential\n@required {id: str # Identifies the resource.}\n@optional {connection_id: str # Identifies the Credential Connection this credential is associated with., expires_at: str # ISO-8601 formatted date indicating when the credential will expire., name: str, tag: str # Tags a credential. A single tag can hold at maximum 1000 credentials.}\n@returns(200) {data: map{created_at: str, expired: bool, expires_at: str, id: str, name: str, record_type: str, resource_id: str, sip_password: str, sip_username: str, updated_at: str, user_id: str}} # Successful response with details about a credential\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endpoint POST /telephony_credentials/{id}/token\n@desc Create an Access Token.\n@required {id: str # Identifies the resource.}\n@returns(201) JWT\n@errors {404: Resource not Found}\n\n@endgroup\n\n@group terms_of_service\n@endpoint POST /terms_of_service/number_reputation/agree\n@desc Agree to Number Reputation Terms of Service\n@returns(200) Terms of Service accepted successfully\n@errors {400: Bad request, 401: Unauthorized — missing or invalid API key, 422: Unprocessable entity — request structure is valid but contains semantic errors}\n\n@endgroup\n\n@group texml\n@endpoint GET /texml/Accounts/{account_sid}/Calls\n@desc Fetch multiple call resources\n@required {account_sid: str # The id of the account the resource belongs to.}\n@optional {Page: int # The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken., PageSize: int # The number of records to be displayed on a page, PageToken: str # Used to request the next page of results., To: str # Filters calls by the to number., From: str # Filters calls by the from number., Status: str(canceled/completed/failed/busy/no-answer) # Filters calls by status., StartTime: str # Filters calls by their start date. Expected format is YYYY-MM-DD., StartTime_gt: str # Filters calls by their start date (after). Expected format is YYYY-MM-DD, StartTime_lt: str # Filters calls by their start date (before). Expected format is YYYY-MM-DD, EndTime: str # Filters calls by their end date. Expected format is YYYY-MM-DD, EndTime_gt: str # Filters calls by their end date (after). Expected format is YYYY-MM-DD, EndTime_lt: str # Filters calls by their end date (before). Expected format is YYYY-MM-DD}\n@returns(200) {calls: [map], end: int, first_page_uri: str, next_page_uri: str, page: int, page_size: int, start: int, uri: str} # Multiple call resources.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls\n@desc Initiate an outbound call\n@required {account_sid: str # The id of the account the resource belongs to., ApplicationSid: str # The ID of the TeXML Application., From: str # The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country code., To: str # The phone number of the called party. Phone numbers are formatted with a `+` and country code.}\n@optional {AsyncAmd: bool=false # Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed., AsyncAmdStatusCallback: str # URL destination for Telnyx to send AMD callback events to for the call., AsyncAmdStatusCallbackMethod: str(GET/POST)=POST # HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application setting., CallerId: str # 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., CancelPlaybackOnDetectMessageEnd: bool=true # Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`., CancelPlaybackOnMachineDetection: bool=true # Whether to cancel ongoing playback on `machine` detection. Defaults to `true`., CustomHeaders: [map{name!: str, value!: str}] # Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties., DetectionMode: str(Premium/Regular)=Regular # Allows you to chose between Premium and Standard detections., FallbackUrl: str # A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding., MachineDetection: str(Enable/Disable/DetectMessageEnd)=Disable # Enables Answering Machine Detection., MachineDetectionSilenceTimeout: int=3500 # If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used., MachineDetectionSpeechEndThreshold: int=800 # Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used., MachineDetectionSpeechThreshold: int=3500 # Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used., MachineDetectionTimeout: int=30000 # Maximum timeout threshold in milliseconds for overall detection., PreferredCodecs: str # The list of comma-separated codecs to be offered on a call., Record: bool # Whether to record the entire participant's call leg. Defaults to `false`., RecordingChannels: str(mono/dual) # The number of channels in the final recording. Defaults to `mono`., RecordingStatusCallback: str # The URL the recording callbacks will be sent to., RecordingStatusCallbackEvent: str # 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`., RecordingStatusCallbackMethod: str(GET/POST) # HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`., RecordingTimeout: int=0 # 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), RecordingTrack: str(inbound/outbound/both) # The audio track to record for the call. The default is `both`., SendRecordingUrl: bool=true # Whether to send RecordingUrl in webhooks., SipAuthPassword: str # The password to use for SIP authentication., SipAuthUsername: str # The username to use for SIP authentication., SipRegion: str(US/Europe/Canada/Australia/Middle East)=US # Defines the SIP region to be used for the call., StatusCallback: str # URL destination for Telnyx to send status callback events to for the call., StatusCallbackEvent: str(initiated/ringing/answered/completed)=completed # The call events for which Telnyx should send a webhook. Multiple events can be defined when separated by a space., StatusCallbackMethod: str(GET/POST)=POST # HTTP request type used for `StatusCallback`., SuperviseCallSid: str # 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., SupervisingRole: str(barge/whisper/monitor)=barge # 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, Texml: str # TeXML to be used as instructions for the call. If provided, the call will execute these instructions instead of fetching from the Url., TimeLimit: int=14400 # 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., Timeout: int=30 # 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., Trim: str(trim-silence/do-not-trim) # Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`., Url: str # The URL from which Telnyx will retrieve the TeXML call instructions., UrlMethod: str(GET/POST)=POST # HTTP request type used for `Url`. The default value is inherited from TeXML Application setting.}\n@returns(200) {from: str, status: str, to: str} # Successful response upon initiating a TeXML call.\n@errors {422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint GET /texml/Accounts/{account_sid}/Calls/{call_sid}\n@desc Fetch a call\n@required {call_sid: str # The CallSid that identifies the call to update., account_sid: str # The id of the account the resource belongs to.}\n@returns(200) {account_sid: str, answered_by: str, caller_name: str, date_created: str, date_updated: str, direction: str, duration: str, end_time: str, from: str, from_formatted: str, price: str, price_unit: str, sid: str, start_time: str, status: str, to: str, to_formatted: str, uri: str} # Call resource.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}\n@desc Update call\n@required {call_sid: str # The CallSid that identifies the call to update., account_sid: str # The id of the account the resource belongs to.}\n@returns(200) {account_sid: str, answered_by: str, caller_name: str, date_created: str, date_updated: str, direction: str, duration: str, end_time: str, from: str, from_formatted: str, price: str, price_unit: str, sid: str, start_time: str, status: str, to: str, to_formatted: str, uri: str} # Call resource.\n@errors {404: Resource not found, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint GET /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json\n@desc Fetch recordings for a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update.}\n@returns(200) {end: int, first_page_uri: str(uri), next_page_uri: str, page: int, page_size: int, previous_page_uri: str(uri), recordings: [map], start: int, uri: str} # Successful Get Call Recordings Response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json\n@desc Request recording for a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update.}\n@returns(200) {account_sid: str, call_sid: str, channels: int, conference_sid: str(uuid)?, date_created: str(date-time), date_updated: str(date-time), duration: str?, error_code: str?, price: str?, price_unit: str?, sid: str, source: str, start_time: str(date-time), track: str, uri: str} # Successful call recording create response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json\n@desc Update recording on a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update., recording_sid: str(uuid) # Uniquely identifies the recording by id.}\n@returns(200) {account_sid: str, call_sid: str, channels: int, conference_sid: str(uuid)?, date_created: str(date-time), date_updated: str(date-time), duration: str?, error_code: str?, price: str?, price_unit: str?, sid: str, source: str, start_time: str(date-time), track: str, uri: str} # Successful call recording create response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json\n@desc Request siprec session for a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update.}\n@returns(200) {account_sid: str, call_sid: str, date_created: str, date_updated: str, error_code: str, sid: str, start_time: str, status: str, track: str, uri: str} # Successful SIPREC session create response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json\n@desc Updates siprec session for a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update., siprec_sid: str # The SiprecSid that uniquely identifies the Sip Recording.}\n@returns(200) {account_sid: str, call_sid: str, date_updated: str, error_code: str, sid: str, status: str, uri: str} # Successful SIPREC session update response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json\n@desc Start streaming media from a call.\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update.}\n@returns(200) {account_sid: str, call_sid: str, date_updated: str(date-time), name: str, sid: str, status: str, uri: str} # Successful call streaming create response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json\n@desc Update streaming on a call\n@required {account_sid: str # The id of the account the resource belongs to., call_sid: str # The CallSid that identifies the call to update., streaming_sid: str(uuid) # Uniquely identifies the streaming by id.}\n@returns(200) {account_sid: str, call_sid: str, date_updated: str(date-time), sid: str, status: str, uri: str} # Successful call streaming update response\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences\n@desc List conference resources\n@required {account_sid: str # The id of the account the resource belongs to.}\n@optional {Page: int # The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken., PageSize: int # The number of records to be displayed on a page, PageToken: str # Used to request the next page of results., FriendlyName: str # Filters conferences by their friendly name., Status: str(init/in-progress/completed) # Filters conferences by status., DateCreated: str # Filters conferences by the creation date. Expected format is YYYY-MM-DD. Also accepts inequality operators, e.g. DateCreated>=2023-05-22., DateUpdated: str # 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.}\n@returns(200) {conferences: [map], end: int, first_page_uri: str, next_page_uri: str, page: int, page_size: int, start: int, uri: str} # Multiple conference resources.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}\n@desc Fetch a conference resource\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {account_sid: str, api_version: str, call_sid_ending_conference: str, date_created: str, date_updated: str, friendly_name: str, reason_conference_ended: str, region: str, sid: str, status: str, subresource_uris: map, uri: str} # Conference resource.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}\n@desc Update a conference resource\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {account_sid: str, api_version: str, call_sid_ending_conference: str, date_created: str, date_updated: str, friendly_name: str, reason_conference_ended: str, region: str, sid: str, status: str, subresource_uris: map, uri: str} # Conference resource.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants\n@desc List conference participants\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {end: int, first_page_uri: str, next_page_uri: str, page: int, page_size: int, participants: [map], start: int, uri: str} # Multiple participant resources.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants\n@desc Dial a new conference participant\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {account_sid: str, call_sid: str, coaching: bool, coaching_call_sid: str, conference_sid: str(uuid), end_conference_on_exit: bool, hold: bool, muted: bool, status: str, uri: str} # New participant resource.\n@errors {404: Resource not found}\n\n@endpoint DELETE /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}\n@desc Delete a conference participant\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference., call_sid_or_participant_label: str # CallSid or Label of the Participant to update.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}\n@desc Get conference participant resource\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference., call_sid_or_participant_label: str # CallSid or Label of the Participant to update.}\n@returns(200) {account_sid: str, api_version: str, call_sid: str, call_sid_legacy: str, coaching: bool, coaching_call_sid: str, coaching_call_sid_legacy: str, conference_sid: str(uuid), date_created: str, date_updated: str, end_conference_on_exit: bool, hold: bool, muted: bool, status: str, uri: str} # Participant resource.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}\n@desc Update a conference participant\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference., call_sid_or_participant_label: str # CallSid or Label of the Participant to update.}\n@returns(200) {account_sid: str, api_version: str, call_sid: str, call_sid_legacy: str, coaching: bool, coaching_call_sid: str, coaching_call_sid_legacy: str, conference_sid: str(uuid), date_created: str, date_updated: str, end_conference_on_exit: bool, hold: bool, muted: bool, status: str, uri: str} # Participant resource.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings\n@desc List conference recordings\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {end: int, first_page_uri: str, next_page_uri: str, page: int, page_size: int, participants: [map], recordings: [map], start: int, uri: str} # Multiple conference recording resources.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json\n@desc Fetch recordings for a conference\n@required {account_sid: str # The id of the account the resource belongs to., conference_sid: str # The ConferenceSid that uniquely identifies a conference.}\n@returns(200) {end: int, first_page_uri: str(uri), next_page_uri: str, page: int, page_size: int, previous_page_uri: str(uri), recordings: [map], start: int, uri: str} # Successful Get Call Recordings Response\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Queues\n@desc List queue resources\n@required {account_sid: str # The id of the account the resource belongs to.}\n@optional {Page: int # The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken., PageSize: int # The number of records to be displayed on a page, PageToken: str # Used to request the next page of results., DateCreated: str # Filters conferences by the creation date. Expected format is YYYY-MM-DD. Also accepts inequality operators, e.g. DateCreated>=2023-05-22., DateUpdated: str # 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.}\n@returns(200) {end: int, first_page_uri: str, next_page_uri: str, page: int, page_size: int, queues: [map], start: int, uri: str} # Multiple queue resources.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Queues\n@desc Create a new queue\n@required {account_sid: str # The id of the account the resource belongs to.}\n@returns(200) {account_sid: str, average_wait_time: int, current_size: int, date_created: str, date_updated: str, max_size: int, sid: str, subresource_uris: map, uri: str} # Queue resource.\n@errors {404: Resource not found}\n\n@endpoint DELETE /texml/Accounts/{account_sid}/Queues/{queue_sid}\n@desc Delete a queue resource\n@required {account_sid: str # The id of the account the resource belongs to., queue_sid: str # The QueueSid that identifies the call queue.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Queues/{queue_sid}\n@desc Fetch a queue resource\n@required {account_sid: str # The id of the account the resource belongs to., queue_sid: str # The QueueSid that identifies the call queue.}\n@returns(200) {account_sid: str, average_wait_time: int, current_size: int, date_created: str, date_updated: str, max_size: int, sid: str, subresource_uris: map, uri: str} # Queue resource.\n@errors {404: Resource not found}\n\n@endpoint POST /texml/Accounts/{account_sid}/Queues/{queue_sid}\n@desc Update a queue resource\n@required {account_sid: str # The id of the account the resource belongs to., queue_sid: str # The QueueSid that identifies the call queue.}\n@returns(200) {account_sid: str, average_wait_time: int, current_size: int, date_created: str, date_updated: str, max_size: int, sid: str, subresource_uris: map, uri: str} # Queue resource.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Recordings.json\n@desc Fetch multiple recording resources\n@required {account_sid: str # The id of the account the resource belongs to.}\n@optional {Page: int # The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken., PageSize: int # The number of records to be displayed on a page, DateCreated: str(date-time) # 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.}\n@returns(200) {end: int, first_page_uri: str(uri), next_page_uri: str, page: int, page_size: int, previous_page_uri: str(uri), recordings: [map], start: int, uri: str} # Successful Get Call Recordings Response\n@errors {404: Resource not found}\n\n@endpoint DELETE /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json\n@desc Delete recording resource\n@required {account_sid: str # The id of the account the resource belongs to., recording_sid: str(uuid) # Uniquely identifies the recording by id.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json\n@desc Fetch recording resource\n@required {account_sid: str # The id of the account the resource belongs to., recording_sid: str(uuid) # Uniquely identifies the recording by id.}\n@returns(200) {account_sid: str, call_sid: str, channels: int, conference_sid: str(uuid)?, date_created: str(date-time), date_updated: str(date-time), duration: str?, error_code: str?, media_url: str(uri), sid: str, source: str, start_time: str(date-time), status: str, subresources_uris: map{transcriptions: str(uri)?}, uri: str} # Retrieves call recording resource.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Transcriptions.json\n@desc List recording transcriptions\n@required {account_sid: str # The id of the account the resource belongs to.}\n@optional {PageToken: str # Used to request the next page of results., PageSize: int # The number of records to be displayed on a page}\n@returns(200) {end: int, first_page_uri: str(uri), next_page_uri: str, page: int, page_size: int, previous_page_uri: str(uri), start: int, transcriptions: [map], uri: str} # Successful list Recording Transcriptions Response\n@errors {404: Resource not found}\n\n@endpoint DELETE /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json\n@desc Delete a recording transcription\n@required {account_sid: str # The id of the account the resource belongs to., recording_transcription_sid: str(uuid) # Uniquely identifies the recording transcription by id.}\n@returns(204) The resource was deleted successfully.\n@errors {404: Resource not found}\n\n@endpoint GET /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json\n@desc Fetch a recording transcription resource\n@required {account_sid: str # The id of the account the resource belongs to., recording_transcription_sid: str(uuid) # Uniquely identifies the recording transcription by id.}\n@returns(200) {account_sid: str, api_version: str, call_sid: str, date_created: str(date-time), date_updated: str(date-time), duration: str?, recording_sid: str, sid: str, status: str, transcription_text: str, uri: str} # Successful get Recording Transcription Response\n@errors {404: Resource not found}\n\n@endpoint POST /texml/secrets\n@desc Create a TeXML secret\n@required {name: str # Name used as a reference for the secret, if the name already exists within the account its value will be replaced, value: str # Secret value which will be used when rendering the TeXML template}\n@returns(201) {data: map{name: str, value: str}} # Successful response upon creating a TeXML secret.\n@errors {422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endgroup\n\n@group texml_applications\n@endpoint GET /texml_applications\n@desc List all TeXML Applications\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[outbound_voice_profile_id], filter[friendly_name], sort: str(created_at/friendly_name/active)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         friendly_name: sorts the result by the     friendly_name field in ascending order.            -friendly_name: sorts the result by the     friendly_name field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request. The request could not be understood or was missing required parameters., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action.}\n\n@endpoint POST /texml_applications\n@desc Creates a TeXML Application\n@required {friendly_name: str # A user-assigned name to help manage the application., voice_url: str(uri) # URL to which Telnyx will deliver your XML Translator webhooks.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this TeXML Application., dtmf_type: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., first_command_timeout: bool=false # Specifies whether calls to phone numbers associated with this connection should hangup after timing out., first_command_timeout_secs: int=30 # Specifies how many seconds to wait before timing out a dial command., inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, status_callback: str(uri)=null # URL for Telnyx to send requests to containing information about call progress events., status_callback_method: str(get/post)=post # HTTP request method Telnyx should use when requesting the status_callback URL., tags: [str] # Tags associated with the Texml Application., voice_fallback_url: str(uri)=null # URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your voice_url., voice_method: str(get/post)=post # HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or 'post'.}\n@returns(201) {data: map{active: bool, anchorsite_override: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, friendly_name: str, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, status_callback: str(uri), status_callback_method: str, tags: [str], updated_at: str, voice_fallback_url: str(uri), voice_method: str, voice_url: str(uri)}} # Successful response\n@errors {401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: Resource not found, 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endpoint DELETE /texml_applications/{id}\n@desc Deletes a TeXML Application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, friendly_name: str, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, status_callback: str(uri), status_callback_method: str, tags: [str], updated_at: str, voice_fallback_url: str(uri), voice_method: str, voice_url: str(uri)}} # Successful response\n@errors {400: Bad request. The request could not be understood or was missing required parameters., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint GET /texml_applications/{id}\n@desc Retrieve a TeXML Application\n@required {id: str # Identifies the resource.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, friendly_name: str, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, status_callback: str(uri), status_callback_method: str, tags: [str], updated_at: str, voice_fallback_url: str(uri), voice_method: str, voice_url: str(uri)}} # Successful response\n@errors {400: Bad request. The request could not be understood or was missing required parameters., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist.}\n\n@endpoint PATCH /texml_applications/{id}\n@desc Update a TeXML Application\n@required {id: str # Identifies the resource., friendly_name: str # A user-assigned name to help manage the application., voice_url: str(uri) # URL to which Telnyx will deliver your XML Translator webhooks.}\n@optional {active: bool=true # Specifies whether the connection can be used., anchorsite_override: str(Latency/Chicago, IL/Ashburn, VA/San Jose, CA/Sydney, Australia/Amsterdam, Netherlands/London, UK/Toronto, Canada/Vancouver, Canada/Frankfurt, Germany)=Latency # `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., call_cost_in_webhooks: bool=false # Specifies if call cost webhooks should be sent for this TeXML Application., dtmf_type: str(RFC 2833/Inband/SIP INFO)=RFC 2833 # 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., first_command_timeout: bool=false # Specifies whether calls to phone numbers associated with this connection should hangup after timing out., first_command_timeout_secs: int=30 # Specifies how many seconds to wait before timing out a dial command., inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, status_callback: str(uri)=null # URL for Telnyx to send requests to containing information about call progress events., status_callback_method: str(get/post)=post # HTTP request method Telnyx should use when requesting the status_callback URL., tags: [str] # Tags associated with the Texml Application., voice_fallback_url: str(uri)=null # URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your voice_url., voice_method: str(get/post)=post # HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or 'post'.}\n@returns(200) {data: map{active: bool, anchorsite_override: str, call_cost_in_webhooks: bool, created_at: str, dtmf_type: str, first_command_timeout: bool, first_command_timeout_secs: int, friendly_name: str, id: str, inbound: map{channel_limit: int, shaken_stir_enabled: bool, sip_subdomain: str, sip_subdomain_receive_settings: str}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, record_type: str, status_callback: str(uri), status_callback_method: str, tags: [str], updated_at: str, voice_fallback_url: str(uri), voice_method: str, voice_url: str(uri)}} # Successful response\n@errors {400: Bad request. The request could not be understood or was missing required parameters., 401: Unauthorized, 403: The user doesn't have the required permissions to perform the requested action., 404: The requested resource doesn't exist., 422: Unprocessable entity. The request was well-formed but contains semantic errors.}\n\n@endgroup\n\n@group text-to-speech\n@endpoint GET /text-to-speech/speech\n@desc Stream text to speech over WebSocket\n@optional {voice: str # Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id` (e.g. `telnyx.NaturalHD.Telnyx_Alloy`, `Telnyx.Ultra.`, 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., provider: str(aws/telnyx/azure/elevenlabs/minimax/murfai/rime/resemble)=telnyx # TTS provider. Defaults to `telnyx` if not specified. Ignored when `voice` is provided., model_id: str # Model identifier for the chosen provider. Examples: `Natural`, `NaturalHD`, `Ultra` (Telnyx); `Polly.Generative` (AWS)., voice_id: str # Voice identifier for the chosen provider., disable_cache: bool=false # When `true`, bypass the audio cache and generate fresh audio., audio_format: str(pcm/wav/mp3) # Audio output format override. Supported for Telnyx models. `pcm` and `wav` are available for `Natural`/`NaturalHD` models. The `Ultra` model outputs PCM at 24kHz s16le or MP3 at 128kbps 24kHz., socket_id: str # Client-provided socket identifier for tracking. If not provided, one is generated server-side.}\n@returns(200) WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation.\n@errors {101: WebSocket connection established. Communication proceeds via JSON frames.  **Client → Server:** See `ClientTextFrame` schema. **Server → Client:** See `AudioChunkFrame`, `FinalFrame`, and `ErrorFrame` schemas., 400: Invalid parameters — provider not supported or missing required fields., 401: Authentication failed — missing or invalid `x-telnyx-auth-rev2` header.}\n\n@endpoint POST /text-to-speech/speech\n@desc Generate speech from text\n@optional {aws: map{language_code: str, lexicon_names: [str], output_format: str, sample_rate: str, text_type: str} # AWS Polly provider-specific parameters., azure: map{api_key: str, deployment_id: str, effect: str, gender: str, language_code: str, output_format: str, region: str, text_type: str} # Azure Cognitive Services provider-specific parameters., disable_cache: bool=false # When `true`, bypass the audio cache and generate fresh audio., elevenlabs: map{api_key: str, language_code: str, voice_settings: map} # ElevenLabs provider-specific parameters., language: str # Language code (e.g. `en-US`). Usage varies by provider., minimax: map{language_boost: str, pitch: int, response_format: str, speed: num(float), vol: num(float)} # Minimax provider-specific parameters., output_type: str(binary_output/base64_output)=binary_output # Determines the response format. `binary_output` returns raw audio bytes, `base64_output` returns base64-encoded audio in JSON., provider: str(aws/telnyx/azure/elevenlabs/minimax/rime/resemble) # TTS provider. Required unless `voice` is provided., resemble: map{api_key: str, format: str, precision: str, sample_rate: str} # Resemble AI provider-specific parameters., rime: map{response_format: str, sampling_rate: int, voice_speed: num(float)} # Rime provider-specific parameters., telnyx: map{emotion: str, response_format: str, sampling_rate: int, temperature: num(float), voice_speed: num(float), volume: num(float)} # Telnyx provider-specific parameters. Use `voice_speed` and `temperature` for `Natural` and `NaturalHD` models. For the `Ultra` model, use `voice_speed`, `volume`, and `emotion`., text: str # The text to convert to speech., text_type: str(text/ssml) # Text type. Use `ssml` for SSML-formatted input (supported by AWS and Azure)., voice: str # Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id`. Examples: `telnyx.NaturalHD.Alloy`, `Telnyx.Ultra.`, `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., voice_settings: map # Provider-specific voice settings. Contents vary by provider — see provider-specific parameter objects below.}\n@returns(200) {base64_audio: str} # Speech generated successfully. The response format depends on the `output_type` parameter: - `binary_output` (default): Returns raw audio bytes with the appropriate `Content-Type` header (e.g. `audio/mpeg`). - `base64_output`: Returns a JSON object with `base64_audio` field.\n@errors {400: Bad request — invalid parameters or provider error., 401: Authentication failed — missing or invalid API key., 422: Validation failed — invalid or missing required fields.}\n\n@endpoint GET /text-to-speech/voices\n@desc List available voices\n@optional {provider: str(aws/telnyx/azure/elevenlabs/minimax/rime/resemble) # Filter voices by provider. If omitted, voices from all providers are returned., api_key: str # API key for providers that require one to list voices (e.g. ElevenLabs).}\n@returns(200) {voices: [map]} # List of available voices.\n@errors {400: Bad request — invalid provider or missing required API key., 401: Authentication failed — missing or invalid API key.}\n\n@endgroup\n\n@group traffic_policy_profiles\n@endpoint GET /traffic_policy_profiles\n@desc Get all traffic policy profiles\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[type]: str(whitelist/blacklist/throttling) # Filter by traffic policy profile type., filter[service]: str # Filter by service ID., sort: str(service/-service/type/-type) # Sorts traffic policy profiles by the given field. Defaults to ascending order unless field is prefixed with a minus sign.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint POST /traffic_policy_profiles\n@desc Create a traffic policy profile\n@required {type: str(whitelist/blacklist) # The type of the traffic policy profile.}\n@optional {domains: [str] # Array of domain names., ip_ranges: [str] # Array of IP ranges in CIDR notation., limit_bw_kbps: int(512/1024) # Bandwidth limit in kbps. Must be 512 or 1024., services: [str] # Array of PCEF service IDs to include in the profile.}\n@returns(201) {data: map{created_at: str, domains: [str], id: str(uuid), ip_ranges: [str], limit_bw_kbps: int?, record_type: str, services: [str], type: str, updated_at: str}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /traffic_policy_profiles/services\n@desc Get all available traffic policy profile services\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[group]: str # Filter services by group., filter[name]: str # Filter services by name.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint DELETE /traffic_policy_profiles/{id}\n@desc Delete a traffic policy profile\n@required {id: str(uuid) # Identifies the traffic policy profile.}\n@returns(200) {data: map{id: str(uuid)}} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint GET /traffic_policy_profiles/{id}\n@desc Get a traffic policy profile\n@required {id: str(uuid) # Identifies the traffic policy profile.}\n@returns(200) {data: map{created_at: str, domains: [str], id: str(uuid), ip_ranges: [str], limit_bw_kbps: int?, record_type: str, services: [str], type: str, updated_at: str}} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint PATCH /traffic_policy_profiles/{id}\n@desc Update a traffic policy profile\n@required {id: str(uuid) # Identifies the traffic policy profile.}\n@optional {domains: [str] # Array of domain names., ip_ranges: [str] # Array of IP ranges in CIDR notation., limit_bw_kbps: int(512/1024) # Bandwidth limit in kbps. Must be 512 or 1024, or null to remove., services: [str] # Array of PCEF service IDs to include in the profile., type: str(whitelist/blacklist/throttling) # The type of the traffic policy profile.}\n@returns(200) {data: map{created_at: str, domains: [str], id: str(uuid), ip_ranges: [str], limit_bw_kbps: int?, record_type: str, services: [str], type: str, updated_at: str}} # Successful Response\n@errors {404: Resource not found, 422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group usage_reports\n@endpoint GET /usage_reports\n@desc Get Telnyx product usage data (BETA)\n@required {product: str # Telnyx product, dimensions: [str] # Breakout by specified product dimensions, metrics: [str] # Specified product usage values}\n@optional {start_date: str # The start date for the time range you are interested in. The maximum time range is 31 days. Format: YYYY-MM-DDTHH:mm:ssZ, end_date: str # The end date for the time range you are interested in. The maximum time range is 31 days. Format: YYYY-MM-DDTHH:mm:ssZ, date_range: str # 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., filter: str # Filter records on dimensions, managed_accounts: bool # Return the aggregations for all Managed Accounts under the user making the request., sort: [str] # Specifies the sort order for results, format: str(csv/json) # Specify the response format (csv or json). JSON is returned by default, even if not specified., authorization_bearer: str, page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /usage_reports/options\n@desc Get Usage Reports query options (BETA)\n@optional {product: str # Options (dimensions and metrics) for a given product. If none specified, all products will be returned., authorization_bearer: str}\n@returns(200) {data: [map]} # Successful\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endgroup\n\n@group user_addresses\n@endpoint GET /user_addresses\n@desc List all user addresses\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number], filter: map # Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains], filter[street_address][contains], sort: str(created_at/first_name/last_name/business_name/street_address)=created_at # Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the  - prefix. That is:         street_address: sorts the result by the     street_address field in ascending order.            -street_address: sorts the result by the     street_address field in descending order.      If not given, results are sorted by created_at in descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {400: Bad request, 401: Unauthorized, 404: Resource not found}\n\n@endpoint POST /user_addresses\n@desc Creates a user address\n@required {business_name: str # The business name associated with the user address., country_code: str # The two-character (ISO 3166-1 alpha-2) country code of the user address., first_name: str # The first name associated with the user address., last_name: str # The last name associated with the user address., locality: str # The locality of the user address. For US addresses, this corresponds to the city of the address., street_address: str # The primary street address information about the user address.}\n@optional {administrative_area: str # The locality of the user address. For US addresses, this corresponds to the state of the address., borough: str # The borough of the user address. This field is not used for addresses in the US but is used for some international addresses., customer_reference: str # A customer reference string for customer look ups., extended_address: str # Additional street address information about the user address such as, but not limited to, unit number or apartment number., neighborhood: str # The neighborhood of the user address. This field is not used for addresses in the US but is used for some international addresses., phone_number: str # The phone number associated with the user address., postal_code: str # The postal code of the user address., skip_address_verification: bool=false # 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).}\n@returns(200) {data: map{administrative_area: str, borough: str, business_name: str, country_code: str, created_at: str, customer_reference: str, extended_address: str, first_name: str, id: str(uuid), last_name: str, locality: str, neighborhood: str, phone_number: str, postal_code: str, record_type: str, street_address: str, updated_at: str}} # Successful response\n@errors {422: Bad request}\n\n@endpoint GET /user_addresses/{id}\n@desc Retrieve a user address\n@required {id: str # user address ID}\n@returns(200) {data: map{administrative_area: str, borough: str, business_name: str, country_code: str, created_at: str, customer_reference: str, extended_address: str, first_name: str, id: str(uuid), last_name: str, locality: str, neighborhood: str, phone_number: str, postal_code: str, record_type: str, street_address: str, updated_at: str}} # Successful response\n@errors {401: Unauthorized, 404: Resource not found, 422: Bad request}\n\n@endgroup\n\n@group user_tags\n@endpoint GET /user_tags\n@desc List User Tags\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[starts_with]}\n@returns(200) {data: map{number_tags: [str], outbound_profile_tags: [str]}} # A list of your tags\n@errors {401: Unauthorized}\n\n@endgroup\n\n@group mobile_phone_numbers\n@endpoint GET /v2/mobile_phone_numbers\n@desc List Mobile Phone Numbers\n@optional {page[number]: int: any # The page number to load, page[size]: int # The size of the page}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint GET /v2/mobile_phone_numbers/{id}\n@desc Retrieve a Mobile Phone Number\n@required {id: str # The ID of the mobile phone number}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str?, forwards_to: str?}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, caller_id_name_enabled: bool, cnam_listing: map{cnam_listing_details: str?, cnam_listing_enabled: bool}, connection_id: str?, connection_name: str?, connection_type: str?, country_iso_alpha2: str, created_at: str(date-time), customer_reference: str?, id: str, inbound: map{interception_app_id: str?, interception_app_name: str?}, inbound_call_screening: str?, mobile_voice_enabled: bool, noise_suppression: str, outbound: map{interception_app_id: str?, interception_app_name: str?}, phone_number: str, record_type: str, sim_card_id: str(uuid), status: str, tags: [str], updated_at: str(date-time)}} # Successful response\n@errors {404: Resource not found}\n\n@endpoint PATCH /v2/mobile_phone_numbers/{id}\n@desc Update a Mobile Phone Number\n@required {id: str # The ID of the mobile phone number}\n@optional {call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str, forwards_to: str}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, caller_id_name_enabled: bool, cnam_listing: map{cnam_listing_details: str, cnam_listing_enabled: bool}, connection_id: str, customer_reference: str, inbound: map{interception_app_id: str}, inbound_call_screening: str(disabled/reject_calls/flag_calls), noise_suppression: bool, outbound: map{interception_app_id: str}, tags: [str]}\n@returns(200) {data: map{call_forwarding: map{call_forwarding_enabled: bool, forwarding_type: str?, forwards_to: str?}, call_recording: map{inbound_call_recording_channels: str, inbound_call_recording_enabled: bool, inbound_call_recording_format: str}, caller_id_name_enabled: bool, cnam_listing: map{cnam_listing_details: str?, cnam_listing_enabled: bool}, connection_id: str?, connection_name: str?, connection_type: str?, country_iso_alpha2: str, created_at: str(date-time), customer_reference: str?, id: str, inbound: map{interception_app_id: str?, interception_app_name: str?}, inbound_call_screening: str?, mobile_voice_enabled: bool, noise_suppression: str, outbound: map{interception_app_id: str?, interception_app_name: str?}, phone_number: str, record_type: str, sim_card_id: str(uuid), status: str, tags: [str], updated_at: str(date-time)}} # Successful response\n@errors {422: Unprocessable Entity}\n\n@endgroup\n\n@group mobile_voice_connections\n@endpoint GET /v2/mobile_voice_connections\n@desc List Mobile Voice Connections\n@optional {page[number]: int: any # The page number to load, page[size]: int # The size of the page, filter[connection_name][contains]: str # Filter by connection name containing the given string, sort: str # Sort by field (e.g., created_at, connection_name, active). Prefix with - for descending order.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint POST /v2/mobile_voice_connections\n@desc Create a Mobile Voice Connection\n@optional {active: bool=true, connection_name: str=Telnyx Mobile Voice IMS, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, tags: [str], webhook_api_version: str(1/2)=2, webhook_event_failover_url: str, webhook_event_url: str, webhook_timeout_secs: int}\n@returns(201) {data: map{active: bool, connection_name: str, created_at: str(date-time), id: str, inbound: map{channel_limit: int?}, outbound: map{channel_limit: int?, outbound_voice_profile_id: str?}, record_type: str, tags: [str], updated_at: str(date-time), webhook_api_version: str?, webhook_event_failover_url: str?, webhook_event_url: str?, webhook_timeout_secs: int?}} # Successful response\n@errors {403: Unauthorized or Limit Reached, 422: Unprocessable Entity}\n\n@endpoint DELETE /v2/mobile_voice_connections/{id}\n@desc Delete a Mobile Voice Connection\n@required {id: str # The ID of the mobile voice connection}\n@returns(200) {data: map{active: bool, connection_name: str, created_at: str(date-time), id: str, inbound: map{channel_limit: int?}, outbound: map{channel_limit: int?, outbound_voice_profile_id: str?}, record_type: str, tags: [str], updated_at: str(date-time), webhook_api_version: str?, webhook_event_failover_url: str?, webhook_event_url: str?, webhook_timeout_secs: int?}} # Successful response\n@errors {404: Resource not found}\n\n@endpoint GET /v2/mobile_voice_connections/{id}\n@desc Retrieve a Mobile Voice Connection\n@required {id: str # The ID of the mobile voice connection}\n@returns(200) {data: map{active: bool, connection_name: str, created_at: str(date-time), id: str, inbound: map{channel_limit: int?}, outbound: map{channel_limit: int?, outbound_voice_profile_id: str?}, record_type: str, tags: [str], updated_at: str(date-time), webhook_api_version: str?, webhook_event_failover_url: str?, webhook_event_url: str?, webhook_timeout_secs: int?}} # Successful response\n@errors {404: Resource not found}\n\n@endpoint PATCH /v2/mobile_voice_connections/{id}\n@desc Update a Mobile Voice Connection\n@required {id: str # The ID of the mobile voice connection}\n@optional {active: bool, connection_name: str, inbound: map{channel_limit: int}, outbound: map{channel_limit: int, outbound_voice_profile_id: str}, tags: [str], webhook_api_version: str(1/2), webhook_event_failover_url: str, webhook_event_url: str, webhook_timeout_secs: int}\n@returns(200) {data: map{active: bool, connection_name: str, created_at: str(date-time), id: str, inbound: map{channel_limit: int?}, outbound: map{channel_limit: int?, outbound_voice_profile_id: str?}, record_type: str, tags: [str], updated_at: str(date-time), webhook_api_version: str?, webhook_event_failover_url: str?, webhook_event_url: str?, webhook_timeout_secs: int?}} # Successful response\n@errors {404: Resource not found, 422: Unprocessable Entity}\n\n@endgroup\n\n@group payment\n@endpoint POST /v2/payment/stored_payment_transactions\n@desc Create a stored payment transaction\n@required {amount: str # Amount in dollars and cents, e.g. \"120.00\"}\n@returns(200) {data: map{amount_cents: int, amount_currency: str, auto_recharge: bool, created_at: str(date-time), id: str, processor_status: str, record_type: str, transaction_processing_type: str}} # Stored payment transaction created successfully\n@errors {401: Unauthorized, 403: Forbidden - insufficient permissions, 422: Unprocessable entity}\n@example_request {\"amount\":\"120.00\"}\n\n@endgroup\n\n@group whatsapp\n@endpoint GET /v2/whatsapp/business_accounts\n@desc List Whatsapp Business Accounts\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with list of Whatsapp business accounts\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /v2/whatsapp/business_accounts/{id}\n@desc Delete a Whatsapp Business Account\n@required {id: str # Whatsapp Business Account ID}\n@returns(204) Deleted\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/business_accounts/{id}\n@desc Get a single Whatsapp Business Account\n@required {id: str # Whatsapp Business Account ID}\n@returns(200) {data: map{account_review_status: str, business_verification_status: str, country: str, created_at: str(date-time), id: str(uuid), name: str, phone_numbers_count: int, record_type: str, status: str, waba_id: str}} # Successful response with Whatsapp business account\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/business_accounts/{id}/phone_numbers\n@desc List phone numbers for a WABA\n@required {id: str # Whatsapp Business Account ID}\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with Whatsapp phone numbers\n@errors {4XX: Unexpected error}\n\n@endpoint POST /v2/whatsapp/business_accounts/{id}/phone_numbers\n@desc Initialize Whatsapp phone number verification\n@required {id: str # Whatsapp Business Account ID, display_name: str, phone_number: str}\n@optional {language: str=en_US, verification_method: str(sms/voice)=sms}\n@returns(204) Verification initiated\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/business_accounts/{id}/settings\n@desc Get WABA settings\n@required {id: str # Whatsapp Business Account ID}\n@returns(200) {data: map{id: str(uuid), name: str, record_type: str, timezone: str, updated_at: str(date-time), webhook_enabled: bool, webhook_events: [str], webhook_failover_url: str(url), webhook_url: str(url)}} # Successful response with Whatsapp business account settings\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /v2/whatsapp/business_accounts/{id}/settings\n@desc Update WABA settings\n@required {id: str # Whatsapp Business Account ID}\n@optional {name: str, timezone: str # IANA timezone identifier, webhook_enabled: bool # Enable/disable receiving Whatsapp events, webhook_events: [str], webhook_failover_url: str(url) # Failover URL to send Whatsapp events, webhook_url: str(url) # URL to send Whatsapp events}\n@returns(200) {data: map{id: str(uuid), name: str, record_type: str, timezone: str, updated_at: str(date-time), webhook_enabled: bool, webhook_events: [str], webhook_failover_url: str(url), webhook_url: str(url)}} # Successful response with Whatsapp business account settings\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/message_templates\n@desc List Whatsapp message templates\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter[waba_id]: str # Filter by WABA ID, filter[category]: str(MARKETING/UTILITY/AUTHENTICATION) # Filter by category, filter[status]: str # Filter by template status, filter[search]: str # Search templates by name}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with Whatsapp template\n@errors {4XX: Unexpected error}\n\n@endpoint POST /v2/whatsapp/message_templates\n@desc Create a Whatsapp message template\n@required {category: str(MARKETING/UTILITY/AUTHENTICATION) # Template category: AUTHENTICATION, UTILITY, or MARKETING., components: [any] # 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., language: str # Template language code (e.g. en_US, es, pt_BR)., name: str # Template name. Lowercase letters, numbers, and underscores only., waba_id: str # The WhatsApp Business Account ID.}\n@returns(201) {data: map{category: str, components: [map], created_at: str(date-time), id: str, language: str, name: str, record_type: str, rejection_reason: str, status: str, template_id: str, updated_at: str(date-time), whatsapp_business_account: map{id: str}}} # Successful response with Whatsapp template\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/phone_numbers\n@desc List Whatsapp phone numbers\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response with Whatsapp phone numbers\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /v2/whatsapp/phone_numbers/{phone_number}\n@desc Delete a Whatsapp phone number\n@required {phone_number: str # Phone number (E.164 format)}\n@returns(204) Phone number was successfully deleted\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/phone_numbers/{phone_number}/calling_settings\n@desc Get calling settings for a phone number\n@required {phone_number: str # Phone number (E.164 format)}\n@returns(200) {data: map{enabled: bool, phone_number: str, record_type: str, updated_at: str(date-time)}} # Successful response with Whatsapp calling settings\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /v2/whatsapp/phone_numbers/{phone_number}/calling_settings\n@desc Enable or disable Whatsapp calling for a phone number\n@required {phone_number: str # Phone number (E.164 format), enabled: bool}\n@returns(200) {data: map{enabled: bool, phone_number: str, record_type: str, updated_at: str(date-time)}} # Successful response with Whatsapp calling settings\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp/phone_numbers/{phone_number}/profile\n@desc Get phone number business profile\n@required {phone_number: str # Phone number (E.164 format)}\n@returns(200) {data: map{about: str, address: str, category: str, created_at: str(date-time), description: str, display_name: str, email: str, id: str, phone_number_id: str, profile_photo_url: str, record_type: str, updated_at: str(date-time), website: str}} # Successful response with Whatsapp profile\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /v2/whatsapp/phone_numbers/{phone_number}/profile\n@desc Update phone number business profile\n@required {phone_number: str # Phone number (E.164 format)}\n@optional {about: str, address: str, category: str, description: str, display_name: str, email: str, website: str}\n@returns(200) {data: map{about: str, address: str, category: str, created_at: str(date-time), description: str, display_name: str, email: str, id: str, phone_number_id: str, profile_photo_url: str, record_type: str, updated_at: str(date-time), website: str}} # Successful response with Whatsapp profile\n@errors {4XX: Unexpected error}\n\n@endpoint DELETE /v2/whatsapp/phone_numbers/{phone_number}/profile/photo\n@desc Delete Whatsapp profile photo\n@required {phone_number: str # Phone number (E.164 format)}\n@returns(204) Photo deleted\n@errors {4XX: Unexpected error}\n\n@endpoint POST /v2/whatsapp/phone_numbers/{phone_number}/profile/photo\n@desc Upload Whatsapp profile photo\n@required {phone_number: str # Phone number (E.164 format)}\n@returns(200) {data: map{about: str, address: str, category: str, created_at: str(date-time), description: str, display_name: str, email: str, id: str, phone_number_id: str, profile_photo_url: str, record_type: str, updated_at: str(date-time), website: str}} # Successful response with Whatsapp profile\n@errors {4XX: Unexpected error}\n\n@endpoint POST /v2/whatsapp/phone_numbers/{phone_number}/resend_verification\n@desc Resend verification code\n@required {phone_number: str # Phone number (E.164 format)}\n@optional {verification_method: str(sms/voice)=sms}\n@returns(204) Code resent\n@errors {4XX: Unexpected error}\n\n@endpoint POST /v2/whatsapp/phone_numbers/{phone_number}/verify\n@desc Submit verification code for a phone number\n@required {phone_number: str # Phone number (E.164 format), code: str}\n@returns(204) Verified successfully\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group whatsapp_message_templates\n@endpoint DELETE /v2/whatsapp_message_templates/{id}\n@desc Delete a Whatsapp message template\n@required {id: str # Whatsapp message template ID}\n@returns(204) Deleted\n@errors {4XX: Unexpected error}\n\n@endpoint GET /v2/whatsapp_message_templates/{id}\n@desc Get a Whatsapp message template by ID\n@required {id: str # Whatsapp message template ID}\n@returns(200) {data: map{category: str, components: [map], created_at: str(date-time), id: str, language: str, name: str, record_type: str, rejection_reason: str, status: str, template_id: str, updated_at: str(date-time), whatsapp_business_account: map{id: str}}} # Successful response with Whatsapp template\n@errors {4XX: Unexpected error}\n\n@endpoint PATCH /v2/whatsapp_message_templates/{id}\n@desc Update a Whatsapp message template\n@required {id: str # Whatsapp message template ID}\n@optional {category: str(MARKETING/UTILITY/AUTHENTICATION), components: [any] # Updated template components. Same structure as the create request.}\n@returns(200) {data: map{category: str, components: [map], created_at: str(date-time), id: str, language: str, name: str, record_type: str, rejection_reason: str, status: str, template_id: str, updated_at: str(date-time), whatsapp_business_account: map{id: str}}} # Successful response with Whatsapp template\n@errors {4XX: Unexpected error}\n\n@endgroup\n\n@group x402\n@endpoint POST /v2/x402/credit_account\n@desc Settle a payment\n@required {id: str # The quote ID to settle.}\n@optional {PAYMENT-SIGNATURE: str # Signed payment authorization for the quote. Alternative to providing `payment_signature` in the request body., payment_signature: str # Base64-encoded signed payment authorization (x402 PaymentPayload). Can alternatively be provided via the PAYMENT-SIGNATURE header.}\n@returns(200) {data: map{amount: str, created_at: str(date-time), currency: str, id: str, quote_id: str, record_type: str, status: str, tx_hash: str?}} # Payment already settled (idempotent response)\n@returns(201) {data: map{amount: str, created_at: str(date-time), currency: str, id: str, quote_id: str, record_type: str, status: str, tx_hash: str?}} # Payment settled successfully\n@errors {400: Bad request — invalid signature, expired authorization, invalid nonce, or malformed payment payload, 401: Unauthorized, 403: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended, 422: Unprocessable entity — missing required parameters or insufficient funds/allowance, 500: Internal server error — facilitator unavailable, transaction failed on-chain, or unknown error, 502: Bad gateway — upstream settlement service error, 503: Service unavailable — facilitator or settlement timeout}\n@example_request {\"id\":\"quote_abc123\",\"payment_signature\":\"0xabc123...\"}\n\n@endpoint POST /v2/x402/credit_account/quote\n@desc Create a payment quote\n@required {amount_usd: str # Amount in USD to fund (minimum 5.00, maximum 10000.00).}\n@returns(200) {data: map{amount_crypto: str, amount_usd: str, expires_at: str(date-time), id: str, network: str, payment_requirements: map{accepts: [map], resource: map{description: str, mimeType: str, url: str}, x402Version: int}, record_type: str}} # Quote created successfully\n@errors {401: Unauthorized, 403: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended, 422: Unprocessable entity — invalid amount, 502: Bad gateway — upstream payment service failed to create quote}\n@example_request {\"amount_usd\":\"50.00\"}\n\n@endgroup\n\n@group verifications\n@endpoint GET /verifications/by_phone_number/{phone_number}\n@desc List verifications by phone number\n@required {phone_number: str # The phone number associated with the verifications to retrieve.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Expected verifications response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verifications/by_phone_number/{phone_number}/actions/verify\n@desc Verify verification code by phone number\n@required {phone_number: str # The phone number associated with the verification code being verified., code: str # This is the code the user submits for verification., verify_profile_id: str(uuid) # The identifier of the associated Verify profile.}\n@returns(200) {data: map{phone_number: str, response_code: str}} # Expected verify response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verifications/call\n@desc Trigger Call verification\n@required {phone_number: str # +E164 formatted phone number., verify_profile_id: str(uuid) # The identifier of the associated Verify profile.}\n@optional {custom_code: str=null # Send a self-generated numeric code to the end-user, extension: str=null # 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)., timeout_secs: int # The number of seconds the verification code is valid for.}\n@returns(200) {data: map{created_at: str, custom_code: str?, id: str(uuid), phone_number: str, record_type: str, status: str, timeout_secs: int, type: str, updated_at: str, verify_profile_id: str(uuid)}} # Expected verifications response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verifications/flashcall\n@desc Trigger Flash call verification\n@required {phone_number: str # +E164 formatted phone number., verify_profile_id: str(uuid) # The identifier of the associated Verify profile.}\n@optional {timeout_secs: int # The number of seconds the verification code is valid for.}\n@returns(200) {data: map{created_at: str, custom_code: str?, id: str(uuid), phone_number: str, record_type: str, status: str, timeout_secs: int, type: str, updated_at: str, verify_profile_id: str(uuid)}} # Expected verifications response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verifications/sms\n@desc Trigger SMS verification\n@required {phone_number: str # +E164 formatted phone number., verify_profile_id: str(uuid) # The identifier of the associated Verify profile.}\n@optional {custom_code: str=null # Send a self-generated numeric code to the end-user, timeout_secs: int # The number of seconds the verification code is valid for.}\n@returns(200) {data: map{created_at: str, custom_code: str?, id: str(uuid), phone_number: str, record_type: str, status: str, timeout_secs: int, type: str, updated_at: str, verify_profile_id: str(uuid)}} # Expected verifications response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint GET /verifications/{verification_id}\n@desc Retrieve verification\n@required {verification_id: str(uuid) # The identifier of the verification to retrieve.}\n@returns(200) {data: map{created_at: str, custom_code: str?, id: str(uuid), phone_number: str, record_type: str, status: str, timeout_secs: int, type: str, updated_at: str, verify_profile_id: str(uuid)}} # Expected verifications response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verifications/{verification_id}/actions/verify\n@desc Verify verification code by ID\n@required {verification_id: str(uuid) # The identifier of the verification to retrieve.}\n@optional {code: str # This is the code the user submits for verification., status: str(accepted/rejected) # Identifies if the verification code has been accepted or rejected. Only permitted if custom_code was used for the verification.}\n@returns(200) {data: map{phone_number: str, response_code: str}} # Expected verify response to a valid request.\n@errors {400: Bad Request}\n\n@endgroup\n\n@group verified_numbers\n@endpoint GET /verified_numbers\n@desc List all Verified Numbers\n@optional {page: map # Consolidated page parameter (deepObject style). Use page[size] and page[number] in the query string. Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Expected response to a valid request.\n@errors {400: Bad Request, 401: Unauthorized Request, 422: Unprocessable Entity}\n\n@endpoint POST /verified_numbers\n@desc Request phone number verification\n@required {phone_number: str, verification_method: str(sms/call) # Verification method.}\n@optional {extension: str=null # 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.}\n@returns(200) {phone_number: str, verification_method: str} # Expected response to a valid request.\n@errors {400: Bad Request, 401: Unauthorized Request, 422: Unprocessable Entity}\n@example_request {\"phone_number\":\"+15551234567\",\"verification_method\":\"call\"}\n\n@endpoint DELETE /verified_numbers/{phone_number}\n@desc Delete a verified number\n@required {phone_number: str # The phone number being deleted.}\n@returns(200) {data: map{phone_number: str, record_type: str, verified_at: str}} # Expected verifications response to a valid request.\n@errors {400: Bad Request, 401: Unauthorized Request, 404: Resource Not Found}\n\n@endpoint GET /verified_numbers/{phone_number}\n@desc Retrieve a verified number\n@required {phone_number: str # The phone number being requested.}\n@returns(200) {data: map{phone_number: str, record_type: str, verified_at: str}} # Expected verifications response to a valid request.\n@errors {400: Bad Request, 401: Unauthorized Request, 404: Resource Not Found}\n\n@endpoint POST /verified_numbers/{phone_number}/actions/verify\n@desc Submit verification code\n@required {phone_number: str # The phone number being verified., verification_code: str}\n@returns(200) {data: map{phone_number: str, record_type: str, verified_at: str}} # Expected response to a valid request.\n@errors {400: Bad Request, 401: Unauthorized Request, 404: Resource Not Found, 422: Unprocessable Entity}\n\n@endgroup\n\n@group verify_profiles\n@endpoint GET /verify_profiles\n@desc List all Verify profiles\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[name], page: map # Consolidated page parameter (deepObject style). Originally: page[size], page[number]}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Expected Verify profile response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint POST /verify_profiles\n@desc Create a Verify profile\n@required {name: str}\n@optional {call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, flashcall: map{app_name: str, default_verification_timeout_secs: int, whitelisted_destinations: [str]}, language: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, sms: map{alpha_sender: str, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, webhook_failover_url: str, webhook_url: str}\n@returns(200) {data: map{call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, created_at: str, flashcall: map{app_name: str, default_verification_timeout_secs: int}, id: str(uuid), language: str, name: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, record_type: str, sms: map{alpha_sender: str?, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, updated_at: str, webhook_failover_url: str, webhook_url: str}} # Expected Verify profile response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint GET /verify_profiles/templates\n@desc Retrieve Verify profile message templates\n@returns(200) {data: [map]} # Expected Verify profile message template response to a valid request.\n@errors {400: Bad Request, 500: Bad Request}\n\n@endpoint POST /verify_profiles/templates\n@desc Create message template\n@required {text: str # The text content of the message template.}\n@returns(200) {data: map{id: str(uuid), text: str}} # Expected message template response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint PATCH /verify_profiles/templates/{template_id}\n@desc Update message template\n@required {template_id: str(uuid) # The identifier of the message template to update., text: str # The text content of the message template.}\n@returns(200) {data: map{id: str(uuid), text: str}} # Expected message template response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint DELETE /verify_profiles/{verify_profile_id}\n@desc Delete Verify profile\n@required {verify_profile_id: str(uuid) # The identifier of the Verify profile to delete.}\n@returns(200) {data: map{call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, created_at: str, flashcall: map{app_name: str, default_verification_timeout_secs: int}, id: str(uuid), language: str, name: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, record_type: str, sms: map{alpha_sender: str?, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, updated_at: str, webhook_failover_url: str, webhook_url: str}} # Expected Verify profile response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint GET /verify_profiles/{verify_profile_id}\n@desc Retrieve Verify profile\n@required {verify_profile_id: str(uuid) # The identifier of the Verify profile to retrieve.}\n@returns(200) {data: map{call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, created_at: str, flashcall: map{app_name: str, default_verification_timeout_secs: int}, id: str(uuid), language: str, name: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, record_type: str, sms: map{alpha_sender: str?, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, updated_at: str, webhook_failover_url: str, webhook_url: str}} # Expected Verify profile response to a valid request.\n@errors {400: Bad Request}\n\n@endpoint PATCH /verify_profiles/{verify_profile_id}\n@desc Update Verify profile\n@required {verify_profile_id: str(uuid) # The identifier of the Verify profile to update.}\n@optional {call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, flashcall: map{app_name: str, default_verification_timeout_secs: int, whitelisted_destinations: [str]}, language: str, name: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, sms: map{alpha_sender: str, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, webhook_failover_url: str, webhook_url: str}\n@returns(200) {data: map{call: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, created_at: str, flashcall: map{app_name: str, default_verification_timeout_secs: int}, id: str(uuid), language: str, name: str, rcs: map{app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), sms_fallback: bool, whitelisted_destinations: [str]}, record_type: str, sms: map{alpha_sender: str?, app_name: str, code_length: int, default_verification_timeout_secs: int, messaging_template_id: str(uuid), whitelisted_destinations: [str]}, updated_at: str, webhook_failover_url: str, webhook_url: str}} # Expected Verify profile response to a valid request.\n@errors {400: Bad Request}\n\n@endgroup\n\n@group virtual_cross_connects\n@endpoint GET /virtual_cross_connects\n@desc List all Virtual Cross Connects\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[network_id], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /virtual_cross_connects\n@desc Create a Virtual Cross Connect\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /virtual_cross_connects/{id}\n@desc Delete a Virtual Cross Connect\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /virtual_cross_connects/{id}\n@desc Retrieve a Virtual Cross Connect\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint PATCH /virtual_cross_connects/{id}\n@desc Update the Virtual Cross Connect\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endgroup\n\n@group virtual_cross_connects_coverage\n@endpoint GET /virtual_cross_connects_coverage\n@desc List Virtual Cross Connect Cloud Coverage\n@optional {filters: map # Consolidated filters parameter (deepObject style). Originally: filters[available_bandwidth][contains], filter: map # 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], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group voice_clones\n@endpoint GET /voice_clones\n@desc List voice clones\n@optional {page[number]: int=1: any # Page number for pagination (1-based)., page[size]: int=20 # Number of results per page., filter[name]: str # Case-insensitive substring filter on the name field., filter[provider]: str(telnyx/minimax/Telnyx/Minimax) # Filter by voice synthesis provider. Case-insensitive., sort: str(name/-name/created_at/-created_at)=-created_at # Sort order. Prefix with `-` for descending. Defaults to `-created_at`.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A paginated list of voice clones.\n@errors {401: Unauthorized — missing or invalid bearer token.}\n\n@endpoint POST /voice_clones\n@desc Create a voice clone from a voice design\n@required {gender: str(male/female/neutral) # Gender of the voice clone., language: str # ISO 639-1 language code for the clone (e.g. `en`, `fr`, `de`)., name: str # Name for the voice clone., voice_design_id: str(uuid) # UUID of the source voice design to clone.}\n@optional {provider: str(telnyx/minimax/Telnyx/Minimax)=telnyx # Voice synthesis provider. Case-insensitive. Defaults to `telnyx`.}\n@returns(201) {data: map{created_at: str(date-time), gender: str?, id: str(uuid), label: str?, language: str?, name: str, provider: str, provider_supported_models: [str], provider_voice_id: str?, record_type: str, source_voice_design_id: str(uuid)?, source_voice_design_version: int?, updated_at: str(date-time)}} # Voice clone created successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design not found., 422: Unprocessable entity — validation error in the request body., 502: Bad gateway — upstream voice cloning service is unavailable.}\n\n@endpoint POST /voice_clones/from_upload\n@desc Create a voice clone from an audio file upload\n@returns(201) {data: map{created_at: str(date-time), gender: str?, id: str(uuid), label: str?, language: str?, name: str, provider: str, provider_supported_models: [str], provider_voice_id: str?, record_type: str, source_voice_design_id: str(uuid)?, source_voice_design_version: int?, updated_at: str(date-time)}} # Voice clone created successfully from the uploaded audio.\n@errors {400: Bad request — the audio file is invalid, unsupported, or exceeds the size limit., 401: Unauthorized — missing or invalid bearer token., 422: Unprocessable entity — validation error in the request body., 502: Bad gateway — upstream voice cloning service is unavailable.}\n\n@endpoint DELETE /voice_clones/{id}\n@desc Delete a voice clone\n@required {id: str(uuid) # The voice clone UUID.}\n@returns(204) Voice clone deleted successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice clone not found.}\n\n@endpoint PATCH /voice_clones/{id}\n@desc Update a voice clone\n@required {id: str(uuid) # The voice clone UUID., name: str # New name for the voice clone.}\n@optional {gender: str(male/female/neutral) # Updated gender for the voice clone., language: str # Updated ISO 639-1 language code or `auto`.}\n@returns(200) {data: map{created_at: str(date-time), gender: str?, id: str(uuid), label: str?, language: str?, name: str, provider: str, provider_supported_models: [str], provider_voice_id: str?, record_type: str, source_voice_design_id: str(uuid)?, source_voice_design_version: int?, updated_at: str(date-time)}} # Voice clone updated successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice clone not found., 422: Unprocessable entity — validation error in the request body.}\n\n@endpoint GET /voice_clones/{id}/sample\n@desc Download voice clone audio sample\n@required {id: str(uuid) # The voice clone UUID.}\n@returns(200) WAV audio sample binary.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice clone not found.}\n\n@endgroup\n\n@group voice_designs\n@endpoint GET /voice_designs\n@desc List voice designs\n@optional {page[number]: int=1: any # Page number for pagination (1-based)., page[size]: int=20 # Number of results per page., filter[name]: str # Case-insensitive substring filter on the name field., sort: str(name/-name/created_at/-created_at)=-created_at # Sort order. Prefix with `-` for descending. Defaults to `-created_at`.}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A paginated list of voice designs.\n@errors {401: Unauthorized — missing or invalid bearer token.}\n\n@endpoint POST /voice_designs\n@desc Create or add a version to a voice design\n@required {prompt: str # Natural language description of the voice style, e.g. 'Speak in a warm, friendly tone with a slight British accent'., text: str # Sample text to synthesize for this voice design.}\n@optional {language: str=Auto # Language for synthesis. Supported values: Auto, Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian. Defaults to Auto., max_new_tokens: int # Maximum number of tokens to generate. Default: 2048., name: str # 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., provider: str(telnyx/minimax/Telnyx/Minimax)=telnyx # Voice synthesis provider. `telnyx` uses the Qwen3TTS model; `minimax` uses the Minimax speech models. Case-insensitive. Defaults to `telnyx`., repetition_penalty: num(float) # Repetition penalty to reduce repeated patterns in generated audio. Default: 1.05., temperature: num(float) # Sampling temperature controlling randomness. Higher values produce more varied output. Default: 0.9., top_k: int # Top-k sampling parameter — limits the token vocabulary considered at each step. Default: 50., top_p: num(float) # Top-p (nucleus) sampling parameter — cumulative probability cutoff for token selection. Default: 1.0., voice_design_id: str(uuid) # ID of an existing voice design to add a new version to. When provided, a new version is created instead of a new design.}\n@returns(201) {data: map{created_at: str(date-time), id: str(uuid), name: str, prompt: str, provider: str?, provider_supported_models: [str], provider_voice_id: str?, record_type: str, text: str, updated_at: str(date-time), version: int, version_created_at: str(date-time), voice_sample_size: int}} # Voice design created or new version added successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design not found — the specified `voice_design_id` does not exist., 409: Conflict — the voice design has reached the maximum of 50 versions., 422: Unprocessable entity — validation error in the request body., 502: Bad gateway — upstream voice synthesis service is unavailable.}\n\n@endpoint DELETE /voice_designs/{id}\n@desc Delete a voice design\n@required {id: str # The voice design UUID or name.}\n@returns(204) Voice design deleted successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design not found.}\n\n@endpoint GET /voice_designs/{id}\n@desc Get a voice design\n@required {id: str # The voice design UUID or name.}\n@optional {version: int # Specific version number to retrieve. Defaults to the latest version.}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), name: str, prompt: str, provider: str?, provider_supported_models: [str], provider_voice_id: str?, record_type: str, text: str, updated_at: str(date-time), version: int, version_created_at: str(date-time), voice_sample_size: int}} # The requested voice design.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design not found.}\n\n@endpoint PATCH /voice_designs/{id}\n@desc Rename a voice design\n@required {id: str # The voice design UUID or name., name: str # New name for the voice design.}\n@returns(200) {data: map{created_at: str(date-time), id: str(uuid), name: str, provider: str?, provider_supported_models: [str], record_type: str, updated_at: str(date-time)}} # Voice design renamed successfully.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design not found., 422: Unprocessable entity — validation error in the request body.}\n\n@endpoint GET /voice_designs/{id}/sample\n@desc Download voice design audio sample\n@required {id: str # The voice design UUID or name.}\n@optional {version: int # Specific version number to download the sample for. Defaults to the latest version.}\n@returns(200) WAV audio sample binary.\n@errors {401: Unauthorized — missing or invalid bearer token., 404: Voice design or version not found.}\n\n@endpoint DELETE /voice_designs/{id}/versions/{version}\n@desc Delete a specific version of a voice design\n@required {id: str # The voice design UUID or name., version: int # The version number to delete.}\n@returns(204) Voice design version deleted successfully.\n@errors {400: Bad request — invalid version number., 401: Unauthorized — missing or invalid bearer token., 404: Voice design or version not found.}\n\n@endgroup\n\n@group webhook_deliveries\n@endpoint GET /webhook_deliveries\n@desc List webhook deliveries\n@optional {page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size], filter: map # 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]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A paginated array of webhook_delivery attempts\n@errors {401: Unauthorized, 422: Unprocessable entity}\n\n@endpoint GET /webhook_deliveries/{id}\n@desc Find webhook_delivery details by ID\n@required {id: str(uuid) # Uniquely identifies the webhook_delivery.}\n@returns(200) {data: any} # Webhook delivery record.\n@errors {401: Unauthorized, 404: WebhookDelivery not found}\n\n@endgroup\n\n@group wireguard_interfaces\n@endpoint GET /wireguard_interfaces\n@desc List all WireGuard Interfaces\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[network_id], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /wireguard_interfaces\n@desc Create a WireGuard Interface\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /wireguard_interfaces/{id}\n@desc Delete a WireGuard Interface\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /wireguard_interfaces/{id}\n@desc Retrieve a WireGuard Interfaces\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group wireguard_peers\n@endpoint GET /wireguard_peers\n@desc List all WireGuard Peers\n@optional {filter: map # Consolidated filter parameter (deepObject style). Originally: filter[wireguard_interface_id], page: map # Consolidated page parameter (deepObject style). Originally: page[number], page[size]}\n@returns(200) {data: [any], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint POST /wireguard_peers\n@desc Create a WireGuard Peer\n@returns(202) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /wireguard_peers/{id}\n@desc Delete the WireGuard Peer\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint GET /wireguard_peers/{id}\n@desc Retrieve the WireGuard Peer\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unexpected error}\n\n@endpoint PATCH /wireguard_peers/{id}\n@desc Update the WireGuard Peer\n@required {id: str(uuid) # Identifies the resource.}\n@optional {public_key: str # The WireGuard `PublicKey`.If you do not provide a Public Key, a new Public and Private key pair will be generated for you.}\n@returns(200) {data: any} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint GET /wireguard_peers/{id}/config\n@desc Retrieve Wireguard config template for Peer\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) Successful response\n@errors {422: Unexpected error}\n\n@endgroup\n\n@group wireless\n@endpoint GET /wireless/detail_records_reports\n@desc Get all Wireless Detail Records (WDRs) Reports\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page.}\n@returns(200) {data: [map]} # Successful response\n@errors {401: Unauthorized}\n\n@endpoint POST /wireless/detail_records_reports\n@desc Create a Wireless Detail Records (WDRs) Report\n@optional {end_time: str # ISO 8601 formatted date-time indicating the end time., start_time: str # ISO 8601 formatted date-time indicating the start time.}\n@returns(201) {data: map{created_at: str, end_time: str, id: str(uuid), record_type: str, report_url: str, start_time: str, status: str, updated_at: str}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /wireless/detail_records_reports/{id}\n@desc Delete a Wireless Detail Record (WDR) Report\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, end_time: str, id: str(uuid), record_type: str, report_url: str, start_time: str, status: str, updated_at: str}} # Successful response\n@errors {404: Resource not found}\n\n@endpoint GET /wireless/detail_records_reports/{id}\n@desc Get a Wireless Detail Record (WDR) Report\n@required {id: str(uuid) # Identifies the resource.}\n@returns(200) {data: map{created_at: str, end_time: str, id: str(uuid), record_type: str, report_url: str, start_time: str, status: str, updated_at: str}} # Successful response\n@errors {404: Resource not found}\n\n@endpoint GET /wireless/regions\n@desc Get all wireless regions\n@required {product: str # The product for which to list regions (e.g., 'public_ips', 'private_wireless_gateways').}\n@returns(200) {data: [map]} # A list of wireless regions\n@errors {404: Resource not found}\n\n@endgroup\n\n@group wireless_blocklist_values\n@endpoint GET /wireless_blocklist_values\n@desc Get all possible wireless blocklist values\n@required {type: str(country/mcc/plmn) # The Wireless Blocklist type for which to list possible values (e.g., `country`, `mcc`, `plmn`).}\n@returns(200) {data: any, meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # A list of possible wireless blocklist values\n@errors {404: Resource not found}\n\n@endgroup\n\n@group wireless_blocklists\n@endpoint GET /wireless_blocklists\n@desc Get all Wireless Blocklists\n@optional {page[number]: int=1: any # The page number to load., page[size]: int=20 # The size of the page., filter[name]: str # The name of the Wireless Blocklist., filter[type]: str # When the Private Wireless Gateway was last updated., filter[values]: str # Values to filter on (inclusive).}\n@returns(200) {data: [map], meta: map{page_number: int, page_size: int, total_pages: int, total_results: int}} # Successful Response\n@errors {401: Unauthorized}\n\n@endpoint PATCH /wireless_blocklists\n@desc Update a Wireless Blocklist\n@optional {name: str # The name of the Wireless Blocklist., type: str(country/mcc/plmn) # The type of wireless blocklist., values: [any] # Values to block. The values here depend on the `type` of Wireless Blocklist.}\n@returns(202) {data: map{created_at: str, id: str(uuid), name: str, record_type: str, type: str, updated_at: str, values: [any]}} # Successful response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint POST /wireless_blocklists\n@desc Create a Wireless Blocklist\n@required {name: str # The name of the Wireless Blocklist., type: str(country/mcc/plmn) # The type of wireless blocklist., values: [any] # Values to block. The values here depend on the `type` of Wireless Blocklist.}\n@returns(202) {data: map{created_at: str, id: str(uuid), name: str, record_type: str, type: str, updated_at: str, values: [any]}} # Successful Response\n@errors {422: Unprocessable entity. Check the 'detail' field in response for details.}\n\n@endpoint DELETE /wireless_blocklists/{id}\n@desc Delete a Wireless Blocklist\n@required {id: str(uuid) # Identifies the wireless blocklist.}\n@returns(200) {data: map{created_at: str, id: str(uuid), name: str, record_type: str, type: str, updated_at: str, values: [any]}} # Successful Response\n@errors {404: Resource not found}\n\n@endpoint GET /wireless_blocklists/{id}\n@desc Get a Wireless Blocklist\n@required {id: str(uuid) # Identifies the wireless blocklist.}\n@returns(200) {data: map{created_at: str, id: str(uuid), name: str, record_type: str, type: str, updated_at: str, values: [any]}} # Successful Response\n@errors {404: Resource not found}\n\n@endgroup\n\n@end\n"}}