Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.
Expected Webhooks:
call.conversation.ended - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload reason is customer_disconnect.
POST
/
calls
/
{call_control_id}
/
actions
/
conversation_relay_start
JavaScript
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const response = await client.calls.actions.startConversationRelay('call_control_id');console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.start_conversation_relay(
call_control_id="call_control_id",
)
print(response.data)
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
call_control_id
string
required
Unique identifier and token for controlling the call
Body
application/json
Conversation Relay start request
Start a Conversation Relay session. A WebSocket URL is required: provide it as url, conversation_relay_url, or conversation_relay_settings.url; top-level values take precedence over nested settings. Use transcription_engine and transcription_engine_config for speech-to-text configuration; the transcription object is not supported.
conversation_relay_settings
Conversation Relay Settings · object
conditionally required
Conversation Relay connection settings. This object can provide url, dtmf_detection, interruptible, interruptible_greeting, and languages. Top-level aliases override nested values when both are present.
Public alias for conversation_relay_url. Must start with ws:// or wss://. If both are present, this value wins.
Pattern: ^wss?://
Example:
"wss://example.com/conversation-relay"
dtmf_detection
boolean
default:false
Public alias for conversation_relay_dtmf_detection. If both are present, this value wins.
Example:
true
conversation_relay_url
string
WebSocket URL for your Conversation Relay server. Must start with ws:// or wss://.
Pattern: ^wss?://
Example:
"wss://example.com/conversation-relay"
conversation_relay_dtmf_detection
boolean
default:false
Enable DTMF detection for the relay session.
Example:
true
voice
string
default: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.<VoiceId> (e.g., AWS.Polly.Joanna). For neural voices, which provide more realistic, human-like speech, append -Neural to the VoiceId (e.g., AWS.Polly.Joanna-Neural). Check the available voices for compatibility.
Azure: Use Azure.<VoiceId> (e.g., Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural). For a complete list of voices, go to Azure Voice Gallery.
ElevenLabs: Use ElevenLabs.<ModelId>.<VoiceId> (e.g., ElevenLabs.BaseModel.John). The ModelId part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under "voice_settings": {"api_key_ref": "<secret_id>"}. See integration secrets documentation for details. Check available voices.
Fish Audio: Use FishAudio.<ModelId>.<VoiceId> (e.g., FishAudio.s2.1-pro.<reference_id>). Supported models: s2.1-pro, s2-pro, s1. VoiceId is a Fish Voice-Library reference ID.
Soniox: Use Soniox.<ModelId>.<VoiceId> (e.g., Soniox.tts-rt-v2.Emma). Supported model: tts-rt-v2. Browse the catalog via the Voices API. Every voice speaks all supported languages; set language to the two-letter ISO 639-1 code of the text, for example it. SSML is not supported. Use voice_settings to configure speed (0.7 to 1.3) and reduce_silence.
xAI: Use xAI.<VoiceId> (e.g., xAI.eve). Available voices: eve, ara, rex, sal, leo.
Humain: Use Humain.<VoiceId> (e.g., Humain.sara-ar). Available voices: sara-en, abdulaziz-en, sara-ar, abdulaziz-ar, nourah-ar, abdullah-ar. Native Arabic (Saudi dialect) and English voices only — no ModelId segment.
Example:
"Telnyx.KokoroTTS.af"
voice_settings
ElevenLabs Voice Settings · object
The settings associated with the voice selected
ElevenLabs Voice Settings
Telnyx Voice Settings
AWS Voice Settings
Minimax Voice Settings
Azure Voice Settings
Resemble Voice Settings
Inworld Voice Settings
xAI Voice Settings
Soniox Voice Settings
Show child attributes
greeting
string
Text played when the relay session starts.
Example:
"Hi! Ask me anything!"
language
string
default:en
Default language for the relay session. This value is used for both text-to-speech and speech recognition.
Example:
"en-US"
languages
Conversation Relay Language · object[]
Per-language TTS and transcription settings.
Show child attributes
interruption_settings
Conversation Relay Interruption Settings · object
Settings for handling caller interruptions during Conversation Relay speech.
Show child attributes
transcription
object
deprecated
Not supported for Conversation Relay start requests. Use transcription_engine and transcription_engine_config instead.
assistant
Conversation Relay Custom Parameters · object
Custom parameters for the Conversation Relay session. Pass key-value data as assistant.dynamic_variables to make it available to the relay session.
Show child attributes
client_state
string
Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.
Example:
"aGF2ZSBhIG5pY2UgZGF5ID1d"
command_id
string
Use this field to avoid duplicate commands. Telnyx will ignore any command with the same command_id for the same call_control_id.
Example:
"891510ac-f3e4-11e8-af5b-de00688a4901"
tts_provider
string
Text-to-speech provider. If omitted, Telnyx derives it from voice or provider.
Example:
"telnyx"
provider
string
Structured voice provider. Must be supplied together with structured_provider.
Example:
"elevenlabs"
structured_provider
Conversation Relay Structured Provider · object
Provider-specific structured voice settings. Must be supplied together with provider; Telnyx sends the value as the nested provider configuration for Conversation Relay.
Example:
{ "voice_id": "voice-id", "model_id": "Default" }
transcription_engine
enum<string>
default:Google
Engine to use for speech recognition. Legacy values A - Google, B - Telnyx are supported for backward compatibility. For Conversation Relay, use this field with transcription_engine_config; the transcription object is not supported.
Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as transcription_model, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (deepgram/flux), interim_results, eot_threshold and eager_eot_threshold control the interim prompts and the eagerEndOfTurn and turnResumed frames sent to your WebSocket server.
Controls when caller input can interrupt assistant speech. any allows speech or DTMF interruptions; none disables interruptions; speech allows speech only; dtmf allows DTMF only.
Available options:
none,
any,
speech,
dtmf
Example:
"speech"
interruptible_greeting
enum<string>
default:any
Controls when caller input can interrupt assistant speech. any allows speech or DTMF interruptions; none disables interruptions; speech allows speech only; dtmf allows DTMF only.
Available options:
none,
any,
speech,
dtmf
Example:
"speech"
custom_parameters
object
Custom key-value parameters forwarded to the relay session as assistant.dynamic_variables. If assistant.dynamic_variables is also present, these values are merged in.
Example:
{ "customer_id": "12345" }
Response
Successful response upon starting Conversation Relay.
data
Call Control Command Result With Conversation Relay ID · object
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const response = await client.calls.actions.startConversationRelay('call_control_id');console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.start_conversation_relay(
call_control_id="call_control_id",
)
print(response.data)
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Telnyx","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","colors":{"primary":"#00B688","light":"#00B688","dark":"#00B688"},"logo":{"light":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=5ee3f61d11ba90a197dd9a1e3499fab6","dark":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo-dark.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=d65aaa12ec708c79e5833cbdea958055"},"favicon":"https://mintcdn.com/telnyx/t-qaBUa_gCxdRz_m/favicon.ico?fit=max\u0026auto=format\u0026n=t-qaBUa_gCxdRz_m\u0026q=85\u0026s=8291283238ab8c0e2a7a985e69f38c2f","background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"triangle-exclamation","href":"/docs/development/api-fundamentals/api-errors","label":"Error codes"},{"icon":"headset","href":"https://telnyx.com/contact-us","label":"Contact us"},{"icon":"user","href":"https://portal.telnyx.com/#/login/sign-in","label":"Login"}],"primary":{"type":"button","label":"Sign Up","href":"https://telnyx.com/sign-up"}},"footer":{"socials":{"github":"https://github.com/team-telnyx","linkedin":"https://www.linkedin.com/company/telnyx","slack":"https://joinslack.telnyx.com","x":"https://x.com/telnyx"},"links":[{"header":"Resources","items":[{"label":"Pricing","href":"https://developers.telnyx.com/internal/pages/pricing"},{"label":"Compare Telnyx","href":"https://developers.telnyx.com/internal/pages/compare"},{"label":"Support center","href":"https://support.telnyx.com/en"},{"label":"SETI","href":"https://seti.telnyx.com"},{"label":"Agent platform configs","href":"https://github.com/team-telnyx/ai"},{"label":"About Telnyx","href":"https://developers.telnyx.com/internal/pages/about"},{"label":"Service status","href":"https://status.telnyx.com"}]},{"header":"Updates","items":[{"label":"Release notes","href":"https://telnyx.com/release-notes"}]},{"header":"Community","items":[{"label":"Low Latency Club","href":"https://lowlatencyclub.ai/"}]},{"header":"Legal","items":[{"label":"Privacy policy","href":"https://telnyx.com/privacy-policy"},{"label":"Terms and conditions","href":"https://telnyx.com/terms-and-conditions"}]}]},"seo":{"metatags":{"og:description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute"},"organization":{"name":"Telnyx","url":"https://telnyx.com","logo":"https://telnyx.com/favicon.ico","sameAs":["https://x.com/telnyx","https://www.linkedin.com/company/telnyx/","https://github.com/team-telnyx"]}},"fonts":{"heading":{"family":"PP Formula","weight":800,"source":"assets/fonts/PPFormula-Extrabold.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"assets/fonts/Inter-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-NRRX236"}},"banner":{"content":"Check out our upcoming events and meetups! [View events →](https://lowlatencyclub.ai/)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"telnyx","hasAudioNarration":false,"actualSubdomain":"telnyx","customDomains":["developers.telnyx.com"],"gitSource":{"type":"github","owner":"team-telnyx","repo":"developer-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af767b762361d2b3643c4b6","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":597},{"language":"default","tag":"Calling","count":593},{"language":"default","tag":"Other APIs","count":406},{"language":"default","tag":"AI","count":397},{"language":"default","tag":"Messaging","count":353},{"language":"default","tag":"Numbers","count":287},{"language":"default","tag":"Agent Platform","count":282},{"language":"default","tag":"Assistants","count":202},{"language":"default","tag":"Voice API","count":179},{"language":"default","tag":"SMS \u0026 MMS","count":149}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[class*=\"sidebar\"] [class*=\"tag\"],[class*=\"sidebar\"] [class*=\"badge\"],nav [class*=\"tag\"],nav [class*=\"badge\"]{font-size:0.8rem!important}#ot-sdk-btn-floating{left:auto!important;right:10px!important}body:has([aria-label=\"Preview Widget\"]) #ot-sdk-btn-floating{bottom:88px!important}#navbar .nav-tabs-item:has(>div>svg[style*=\"/book-open.svg\"]){display:none}.nav-tabs a.nav-tabs-item:not([aria-current=\"location\"]){display:none}#navbar div:has(>div>.nav-tabs>a.nav-tabs-item:first-child:last-child){display:none}@media (width >= 64rem){.txd-side{display:block}button[data-component-part=\"products-selector-trigger\"],button.tx-product-switcher{display:none!important}}#mobile-nav [data-component-part=\"products-selector-trigger\"],#mobile-nav #navigation-items>div:has(>div>button[aria-haspopup=\"menu\"]),#mobile-nav.tx-has-directory #navigation-items{display:none!important}#mobile-nav .tx-mobile-directory{padding:0;margin-bottom:1.5rem}#mobile-nav .tx-mobile-directory a,#mobile-nav .tx-mobile-directory .tx-dir-suite-head{min-height:2.75rem}#mobile-nav .tx-mobile-directory :is(a,.tx-dir-suite-head):focus-visible{outline:2px solid currentColor;outline-offset:-2px}.txd-shell{display:flex;gap:0;max-width:none;margin:0;padding:3rem 2rem 6rem 0}.txd-side{width:18rem;flex-shrink:0}.txd-main{flex:1;min-width:0;max-width:56rem;margin-left:11.75rem}@media (max-width: 80rem){.txd-main{margin-left:4rem}}@media (width \u003c 64rem){.txd-shell{display:block;padding:2rem 1.5rem 5rem}.txd-side{display:none}.txd-main{margin-left:0}}:is(#tx-directory,.tx-mobile-directory){margin:0 0 0.5rem;padding:0 0.5rem 0 1rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label{font-size:0.72rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;opacity:0.55;margin:0 0 0.4rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label-gap{margin-top:1.5rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link,:is(#tx-directory,.tx-mobile-directory) summary{display:flex;align-items:center;cursor:pointer;font-size:0.875rem;line-height:1.25rem;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81);text-decoration:none}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link,html.dark :is(#tx-directory,.tx-mobile-directory) summary{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,:is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#00b688;background:transparent;box-shadow:none;font-weight:400;text-shadow:-0.2px 0 0 currentColor, 0.2px 0 0 currentColor}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,html.dark :is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#5eead4;background:transparent;box-shadow:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover{cursor:default;opacity:0.45;background:transparent;color:inherit}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon sup{font-size:0.6rem;line-height:1;letter-spacing:0.05em;text-transform:uppercase;margin-left:0.4rem;vertical-align:super}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite{margin-bottom:0.15rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{display:flex;align-items:center;cursor:pointer;user-select:none;font-size:0.875rem;line-height:1.25rem;font-weight:500;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head::after{content:'';width:0.42rem;height:0.42rem;margin-left:auto;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform 0.15s;flex-shrink:0;opacity:0.7}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head::after{transform:rotate(45deg)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04);font-weight:600}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite>ul{display:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>ul{display:block}:is(#tx-directory,.tx-mobile-directory) ul{margin:0.15rem 0 0.5rem;padding:0}:is(#tx-directory,.tx-mobile-directory) li{list-style:none}:is(#tx-directory,.tx-mobile-directory) li a{display:flex;align-items:center;font-size:0.875rem;line-height:1.25rem;padding:0.3rem 0.5rem 0.3rem 1.6rem;border-radius:0.375rem;color:rgb(107 114 128);text-decoration:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-section-item{font-weight:500}html.dark :is(#tx-directory,.tx-mobile-directory) li a{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-icon{display:inline-block;width:1rem;height:1rem;flex-shrink:0;margin-right:0.5rem;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.txi-arrows-left-right-to-line{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\")}.txi-bolt{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\")}.txi-brain{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\")}.txi-brain-circuit{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\")}.txi-brands-whatsapp{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\")}.txi-broadcast-tower{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\")}.txi-browser{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\")}.txi-circle-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\")}.txi-clone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\")}.txi-cloud{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\")}.txi-code{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\")}.txi-comment-sms{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\")}.txi-cubes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\")}.txi-database{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\")}.txi-door-open{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\")}.txi-envelope{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\")}.txi-eye{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\")}.txi-file-certificate{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\")}.txi-fingerprint{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\")}.txi-folder-tree{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\")}.txi-globe{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\")}.txi-hard-drive{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\")}.txi-hashtag{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\")}.txi-headset{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\")}.txi-key{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\")}.txi-layer-group{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\")}.txi-magnifying-glass{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\")}.txi-message{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\")}.txi-message-dots{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\")}.txi-microchip-ai{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\")}.txi-microphone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\")}.txi-network-wired{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\")}.txi-phone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\")}.txi-phone-volume{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\")}.txi-plug{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\")}.txi-right-left{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\")}.txi-robot{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\")}.txi-server{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\")}.txi-share-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\")}.txi-shield{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\")}.txi-shield-check{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\")}.txi-signal{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\")}.txi-sim-card{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\")}.txi-split{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\")}.txi-table{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\")}.txi-tower-control{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\")}.txi-train-tunnel{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\")}.txi-video{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\")}.txi-wand-magic-sparkles{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\")}.txi-waveform{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\")}.txi-waveform-lines{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\")}.txd-main .txd-h1{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:2.1rem;font-weight:500;letter-spacing:-0.01em;margin:1.2rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h1{color:rgb(229 231 235)}.txd-main .txd-lead{font-size:1.3rem;line-height:1.55;font-weight:500;margin:0.9rem 0 1.3rem;color:rgb(31 41 55)}html.dark .txd-main .txd-lead{color:rgb(209 213 219)}.txd-main .txd-h2{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:1.45rem;font-weight:500;margin:2.4rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h2{color:rgb(229 231 235)}.txd-main .txd-section-h{font-size:1.05rem;font-weight:600;margin:1.8rem 0 0.2rem;opacity:0.85}.txd-main .txd-p{margin:0.7rem 0 1rem;line-height:1.65;color:rgb(75 85 99)}html.dark .txd-main .txd-p{color:rgb(156 163 175)}.txd-main .txd-p a{text-decoration:underline}.txd-main .txd-h1{max-width:46rem;line-height:1.12}.txd-main .txd-hero-copy{max-width:45rem}.txd-main .txd-follow-up{margin-top:1rem}.txd-main .txd-follow-up a{color:#00b688;font-weight:600;text-decoration:none}.txd-main .txd-follow-up a:hover{text-decoration:underline}.txd-main a:focus-visible{outline:2px solid #00b688;outline-offset:3px}@media (max-width: 48rem){.txd-main .txd-h1{font-size:1.9rem}}@media (min-width: 64.01rem) and (max-width: 90rem){.txd-main{margin-right:4rem}}.rm-explorer{--rm-border: rgb(15 23 42 / 14%);--rm-muted: #5f6b68;--rm-soft: #f6f8f7}.dark .rm-explorer{--rm-border: rgb(255 255 255 / 14%);--rm-muted: #a2aaa8;--rm-soft: #151a19}#resource-map-toolbar{position:sticky;top:5rem;z-index:20;margin:1.25rem 0 1.75rem;padding:.75rem 0;background:var(--rm-surface, #fff);border-bottom:1px solid var(--rm-border)}.dark #resource-map-toolbar{background:#0b0e0d}.rm-controls{display:grid;grid-template-columns:minmax(15rem, 1fr) minmax(10rem, auto) auto;gap:.625rem;align-items:center}.rm-search{position:relative;min-width:0}.rm-search svg{position:absolute;top:50%;left:.75rem;width:1rem;height:1rem;color:var(--rm-muted);fill:none;stroke:currentColor;stroke-width:1.8;transform:translateY(-50%);pointer-events:none}.rm-search input,.rm-area-select,.rm-collapse,.rm-clear,.rm-empty button{min-height:2.5rem;color:inherit;background:transparent;border:1px solid var(--rm-border);border-radius:.5rem;font:inherit;font-size:.875rem}.rm-search input{width:100%;padding:.58rem 2.6rem .58rem 2.35rem}.rm-search input::placeholder{color:var(--rm-muted);opacity:1}.rm-shortcut{position:absolute;top:50%;right:.65rem;display:grid;width:1.5rem;height:1.5rem;place-items:center;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.35rem;font:inherit;font-size:.72rem;transform:translateY(-50%);pointer-events:none}.rm-area-wrap{position:relative;max-width:13rem}.rm-area-select{width:100%;max-width:13rem;padding:.55rem 2.25rem .55rem .75rem;appearance:none;cursor:pointer}.rm-area-caret{position:absolute;top:50%;right:.85rem;width:.45rem;height:.45rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none}.rm-collapse,.rm-clear,.rm-empty button{padding:.5rem .75rem;font-weight:650;cursor:pointer}.rm-search input:focus-visible,.rm-area-select:focus-visible,.rm-collapse:focus-visible,.rm-clear:focus-visible,.rm-empty button:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-color:#00b688;box-shadow:none!important}.rm-collapse:hover,.rm-clear:hover,.rm-empty button:hover{color:#08785d;background:var(--rm-soft)}.dark .rm-collapse:hover,.dark .rm-clear:hover,.dark .rm-empty button:hover{color:#5eead4}.rm-meta{display:flex;min-height:1.65rem;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .15rem 0}.rm-status{color:var(--rm-muted);font-size:.78rem;line-height:1.35}.rm-clear{min-height:1.8rem;padding:.2rem .55rem;border-color:transparent;font-size:.78rem}.rm-empty{display:grid;justify-items:start;gap:.35rem;margin:-.5rem 0 1.75rem;padding:1.1rem 1.2rem;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.75rem;font-size:.875rem}.rm-empty strong{color:inherit;font-size:.95rem}.rm-empty button{min-height:2.2rem;margin-top:.35rem}.rm-resource-list{display:block!important;margin:0 0 .75rem!important;border-color:var(--rm-border)!important;border-top:0!important;border-radius:0 0 .75rem .75rem!important}.rm-resource-list>details.accordion{margin:0!important;border:0!important;border-radius:0!important}.rm-resource-list>details.accordion+details.accordion{border-top:1px solid var(--rm-border)!important}.rm-resource-list>details.accordion>summary{min-height:3rem;padding:.7rem .9rem!important;border-radius:0!important}.rm-resource-list>details.accordion:first-child>summary{border-radius:0!important}.rm-resource-list>details.accordion:last-child:not([open])>summary{border-radius:0 0 .75rem .75rem!important}.rm-resource-list [data-component-part=\"accordion-title\"]{display:flex;min-width:0;align-items:baseline;justify-content:space-between;gap:1rem}.rm-resource-name{min-width:0;overflow-wrap:anywhere;font-weight:650}.rm-method-count{flex:0 0 auto;color:var(--rm-muted);font-size:.75rem;font-weight:500;white-space:nowrap}.rm-resource-list details[open]>summary{background:var(--rm-soft)}.rm-resource-list details[open] [data-component-part=\"accordion-content\"]{margin-right:1rem;margin-left:1rem}.rm-resource-list tbody tr.rm-row-match{background:rgb(0 182 136 / 8%)}.rm-resource-list td:first-child code{white-space:nowrap}.rm-resource-list tbody tr[hidden],.rm-explorer h2[hidden],.rm-resource-list[hidden],.rm-empty[hidden],.rm-collapse[hidden],.rm-clear[hidden]{display:none!important}.rm-explorer h2{position:relative;min-height:3rem;margin:.45rem 0 0!important;scroll-margin-top:10rem;border:1px solid var(--rm-border);border-radius:.75rem}.rm-explorer h2.rm-section-open{border-radius:.75rem .75rem 0 0}.rm-section-toggle{display:grid;width:100%;min-height:3rem;grid-template-columns:minmax(0, 1fr) auto auto;align-items:center;gap:.75rem;padding:.6rem .9rem;color:inherit;text-align:left;background:transparent;border:0;cursor:pointer}.rm-section-toggle:hover,.rm-section-toggle:focus-visible{background:var(--rm-soft)}.rm-section-toggle:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-radius:.7rem}.rm-section-name{font-size:1rem;font-weight:700}.rm-section-count{display:grid;min-width:1.65rem;min-height:1.4rem;place-items:center;padding:3px 6px;color:#08785d;background:rgb(0 182 136 / 10%);border-radius:.35rem;font-size:12px;font-weight:700;line-height:16px;white-space:nowrap}.dark .rm-section-count{color:#5eead4;background:#12302b}.rm-section-caret{width:.5rem;height:.5rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-.15rem)}.rm-section-toggle[aria-expanded=\"true\"] .rm-section-caret{transform:rotate(225deg) translate(-.1rem, -.05rem)}@media (max-width: 767px){#resource-map-toolbar{position:static;top:auto;z-index:auto;margin-top:1rem;padding-top:.6rem}.rm-controls{grid-template-columns:minmax(0, 1fr) auto}.rm-search{grid-column:1 / -1}.rm-search input{padding-right:.75rem}.rm-shortcut{display:none}.rm-area-wrap,.rm-area-select{width:100%;max-width:none}.rm-resource-list [data-component-part=\"accordion-title\"]{gap:.65rem}.rm-method-count{font-size:.7rem}.rm-resource-list table,.rm-resource-list tbody{display:block;width:100%;min-width:0!important}.rm-resource-list thead{display:none}.rm-resource-list tbody tr{display:grid;width:100%;grid-template-columns:minmax(0, 1fr);gap:.45rem;padding:.75rem 0}.rm-resource-list tbody tr+tr{border-top:1px solid var(--rm-border)}.rm-resource-list tbody td{display:grid;width:100%;min-width:0!important;grid-template-columns:4.5rem minmax(0, 1fr);align-items:start;gap:.5rem;padding:0!important;border:0!important}.rm-resource-list tbody td::before{color:var(--rm-muted);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.rm-resource-list tbody td:first-child::before{content:\"Method\"}.rm-resource-list tbody td:last-child::before{content:\"Endpoint\"}.rm-resource-list tbody td code,.rm-resource-list tbody td a{min-width:0;white-space:normal!important;overflow-wrap:anywhere}}@media (prefers-reduced-motion: reduce){.rm-explorer *,.rm-explorer *::before,.rm-explorer *::after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.sdk-launchpad{--sdk-border: #d8e1de;--sdk-panel: #ffffff;margin:1rem 0 1.5rem;padding:1rem;overflow:hidden;color:inherit;background:var(--sdk-panel);border:1px solid var(--sdk-border);border-radius:12px}.dark .sdk-launchpad{--sdk-border: #293431;--sdk-panel: #101513}.sdk-launchpad-kicker{margin:0 0 .25rem!important;color:#08785d;font-size:.68rem;font-weight:800;letter-spacing:.1em}.dark .sdk-launchpad-kicker{color:#5eead4}.sdk-launchpad>h2{margin-top:.25rem}.sdk-launchpad [role=\"tablist\"]{display:flex;flex-wrap:wrap;gap:.25rem}.sdk-launchpad [role=\"tab\"]{min-width:56px;min-height:44px}.sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#08785d!important}.dark .sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#5eead4!important}.sdk-launchpad [role=\"tab\"]:focus-visible,.sdk-launchpad a:focus-visible,.sdk-launchpad-code:focus-visible{outline:2px solid #08785d;outline-offset:2px}.dark .sdk-launchpad [role=\"tab\"]:focus-visible,.dark .sdk-launchpad a:focus-visible,.dark .sdk-launchpad-code:focus-visible{outline-color:#5eead4}.sdk-launchpad-code{max-width:100%;overflow-x:auto;border-radius:.5rem}.sdk-launchpad-code pre{max-width:none;overflow-x:visible!important}.sdk-launchpad-code button{min-width:44px;min-height:44px}#content-area:has(#sdk-launchpad) .chat-assistant-floating-input{display:none}@media (max-width: 640px){.sdk-launchpad{margin-top:.75rem;padding:.75rem}.sdk-launchpad-kicker{display:none}.sdk-launchpad [role=\"tablist\"]{display:grid;grid-template-columns:repeat(6, minmax(0, 1fr));gap:.2rem;overflow:visible}.sdk-launchpad [role=\"tab\"]{min-width:0;min-height:44px;padding-inline:.2rem;font-size:.75rem;line-height:1.15;white-space:nowrap}}.sdk-directory li{margin-block:.5rem}.mdx-content.prose{line-height:1.6}#sidebar-content .sidebar-group li>:is(a,button){padding-top:0.3rem;padding-bottom:0.3rem}#sidebar-content .sidebar-group-header{margin-bottom:0.25rem}#sidebar-content div:has(>.sidebar-group-header){margin-top:1.5rem}#table-of-contents a{line-height:1.25rem;padding-top:5px;padding-bottom:5px}.mdx-content table td{min-width:0!important}.mdx-content table td :is(code,a){overflow-wrap:anywhere}.mdx-content table :is(th,td):first-child code{white-space:nowrap;word-break:normal;overflow-wrap:normal}@media (min-width: 768px){.tx-table-grid table{table-layout:fixed}.tx-table-grid table :is(th,td):first-child{width:40%}}@media (min-width: 768px){.tx-table-grid-3 table{table-layout:fixed}.tx-table-grid-3 table :is(th,td):first-child{width:22%}.tx-table-grid-3 table :is(th,td):last-child{width:18%}}.tx-retirement-banner{margin-bottom:1.5rem}.tx-retirement-banner>div{margin:0}@media (min-width: 1024px){.tx-retirement-banner{position:sticky;top:calc(6rem + var(--banner-height, 0px));z-index:20;padding-top:.5rem;background:rgb(var(--background-light, 255 255 255))}.dark .tx-retirement-banner{background:rgb(var(--background-dark, 9 12 14))}}#content>.callout:first-child{margin-top:0}#content strong{font-weight:600}"}],"page":{"pagePath":"api-reference/call-commands/start-conversation-relay","slug":"/api-reference/call-commands/start-conversation-relay","pageMetadata":{"title":"Start Conversation Relay","description":"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/conversation_relay_start","href":"/api-reference/call-commands/start-conversation-relay","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Expected Webhooks:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.conversation.ended\"\n }), \" - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload \", _jsx(_components.code, {\n children: \"reason\"\n }), \" is \", _jsx(_components.code, {\n children: \"customer_disconnect\"\n }), \".\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Start Conversation Relay","description":"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/conversation_relay_start","href":"/api-reference/call-commands/start-conversation-relay","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/telnyx/a2dd5aaa2ff5831a/reading-progress.js","/_mintlify/custom/telnyx/7b77ce9cedb163fd/webmcp-init.js","/_mintlify/custom/telnyx/7fbfee588ac7ad38/structured-data.js","/_mintlify/custom/telnyx/41d9633b1a2dd405/scripts/tests/generate-llms-txt.test.js","/_mintlify/custom/telnyx/8851ad5fd6e9b5c7/scripts/tests/direct-source-workflows.test.js","/_mintlify/custom/telnyx/1cd11353bb65f5a7/scripts/tests/redirects.test.js","/_mintlify/custom/telnyx/f981035eb45fcbdb/scripts/tests/generate-error-catalog.test.js","/_mintlify/custom/telnyx/132bc205f55282a5/scripts/tests/sync-llms-automerge.test.js","/_mintlify/custom/telnyx/05e787f15f45952b/scripts/tests/webhook-catalog-lifecycle.test.js","/_mintlify/custom/telnyx/01b840b27496e6c8/scripts/tests/repository-structure.test.js","/_mintlify/custom/telnyx/5ebc7d6e18012563/scripts/tests/legacy-content-usage.test.js","/_mintlify/custom/telnyx/ac1f21e68bf4050a/scripts/docs/check-llms-links.js","/_mintlify/custom/telnyx/5f7d2f1ae375b9ad/scripts/docs/check-llms-native-routes.js","/_mintlify/custom/telnyx/b8d13287c2dcc5b9/scripts/docs/fetch-coverage.js","/_mintlify/custom/telnyx/e0a29f76f2645359/scripts/docs/generate-error-catalog.js","/_mintlify/custom/telnyx/9ffa8f6166445a46/scripts/docs/generate-llms-txt.js","/_mintlify/custom/telnyx/f1f111fe784c3ede/scripts/docs/update-tts-voices.js","/_mintlify/custom/telnyx/c48ad0189f7f1c57/scripts/docs/build-sdk-doc-pages.js","/_mintlify/custom/telnyx/f840117777d76f9e/scripts/tests/sdk-doc-pages.test.js","/_mintlify/custom/telnyx/414c53c50b0e1968/resource-map-filter.js","/_mintlify/custom/telnyx/80af622b3010a712/scripts/tests/sdk-language-switcher.test.js","/_mintlify/custom/telnyx/52fa0fbcb966f8b6/sdk-language-switcher.js","/_mintlify/custom/telnyx/660ec334a362cf1c/home-directory.js","/_mintlify/custom/telnyx/33d3f1dbdec08735/scripts/generate-home-directory.js","/_mintlify/custom/telnyx/137e3eb8e1d1d85a/scripts/tests/api-fundamentals.test.js","/_mintlify/custom/telnyx/24a8eed3a5010d4c/scripts/tests/agent-sdk-workflow.test.js","/_mintlify/custom/telnyx/abc2169efcd5115c/scripts/tests/homepage-overview.test.js","/_mintlify/custom/telnyx/8edf49ac62deef02/scripts/tests/batch-detail-records-navigation.test.js","/_mintlify/custom/telnyx/e005178572336f01/scripts/tests/api-discoverability.test.js","/_mintlify/custom/telnyx/78cb83896fbea5cf/scripts/tests/home-directory.test.js","/_mintlify/custom/telnyx/11ae45253e6b7be6/scripts/tests/agent-readiness.test.js","/_mintlify/custom/telnyx/82396d5a75077c2a/scripts/tests/sample-workflow-regressions.test.js","/_mintlify/custom/telnyx/5f6625c0420c9328/scripts/tests/openapi-mintlify-parsing.test.js","/_mintlify/custom/telnyx/c7dca602ca9641ec/scripts/tests/llms-markdown-assets.test.js","/_mintlify/custom/telnyx/02d6acd7c86b79f9/scripts/tests/agent-browser-quickstart.test.js"],"openApiReferenceData":{"operation":{"summary":"Start Conversation Relay","description":"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n","operationId":"CallStartConversationRelay","tags":["Call Commands"],"parameters":["1b5e5556-f459-4f95-a68a-f951c07bef1d"],"requestBody":"08e5fb21-cd4b-456d-855a-db73706ad2f7","responses":{"200":"090cde2d-1e8c-42d1-a566-1ed659224c1c","422":"df554798-54c4-460f-8eb7-53ae1ad60f83","default":"f3a983d4-c898-4bb2-bd39-4ea8bd4ddafb"},"x-codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id');\n\nconsole.log(response.data);"},{"lang":"Python","source":"import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get(\"TELNYX_API_KEY\"), # This is the default and can be omitted\n)\nresponse = client.calls.actions.start_conversation_relay(\n call_control_id=\"call_control_id\",\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Calls.Actions.StartConversationRelay(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartConversationRelayParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"},{"lang":"Java","source":"package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartConversationRelayResponse response = client.calls().actions().startConversationRelay(\"call_control_id\");\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.actions.start_conversation_relay(\"call_control_id\")\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->actions->startConversationRelay(\n 'call_control_id',\n assistant: [\n 'dynamicVariables' => ['customer_id' => '12345', 'tier' => 'premium']\n ],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conversationRelayDtmfDetection: true,\n conversationRelaySettings: [\n 'url' => 'wss://example.com/conversation-relay',\n 'dtmfDetection' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'dtmf',\n 'languages' => [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n ],\n conversationRelayURL: 'wss://example.com/conversation-relay',\n customParameters: ['customer_id' => 'bar'],\n dtmfDetection: true,\n greeting: 'Hi! Ask me anything!',\n interruptible: 'speech',\n interruptibleGreeting: 'dtmf',\n interruptionSettings: [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n language: 'en-US',\n languages: [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n provider: 'elevenlabs',\n structuredProvider: ['voice_id' => 'bar', 'model_id' => 'bar'],\n transcription: ['foo' => 'bar'],\n transcriptionEngine: 'Google',\n transcriptionEngineConfig: [\n 'transcription_model' => 'bar',\n 'interim_results' => 'bar',\n 'keywords_boosting' => 'bar',\n ],\n ttsProvider: 'telnyx',\n url: 'wss://example.com/conversation-relay',\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: ['type' => 'telnyx', 'voiceSpeed' => 1],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions start-conversation-relay \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id"}],"method":"post","type":"path","servers":["d6674bd7-47bb-47b6-b17a-a4ac033c966f"],"security":["5f287a6e-2dfa-48a1-b966-b3213062b307"],"path":"/calls/{call_control_id}/actions/conversation_relay_start","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Start Conversation Relay","codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id');\n\nconsole.log(response.data);"},{"lang":"Python","source":"import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get(\"TELNYX_API_KEY\"), # This is the default and can be omitted\n)\nresponse = client.calls.actions.start_conversation_relay(\n call_control_id=\"call_control_id\",\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Calls.Actions.StartConversationRelay(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartConversationRelayParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Data)\n}\n"},{"lang":"Java","source":"package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartConversationRelayResponse response = client.calls().actions().startConversationRelay(\"call_control_id\");\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.actions.start_conversation_relay(\"call_control_id\")\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->actions->startConversationRelay(\n 'call_control_id',\n assistant: [\n 'dynamicVariables' => ['customer_id' => '12345', 'tier' => 'premium']\n ],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conversationRelayDtmfDetection: true,\n conversationRelaySettings: [\n 'url' => 'wss://example.com/conversation-relay',\n 'dtmfDetection' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'dtmf',\n 'languages' => [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n ],\n conversationRelayURL: 'wss://example.com/conversation-relay',\n customParameters: ['customer_id' => 'bar'],\n dtmfDetection: true,\n greeting: 'Hi! Ask me anything!',\n interruptible: 'speech',\n interruptibleGreeting: 'dtmf',\n interruptionSettings: [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n language: 'en-US',\n languages: [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n provider: 'elevenlabs',\n structuredProvider: ['voice_id' => 'bar', 'model_id' => 'bar'],\n transcription: ['foo' => 'bar'],\n transcriptionEngine: 'Google',\n transcriptionEngineConfig: [\n 'transcription_model' => 'bar',\n 'interim_results' => 'bar',\n 'keywords_boosting' => 'bar',\n ],\n ttsProvider: 'telnyx',\n url: 'wss://example.com/conversation-relay',\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: ['type' => 'telnyx', 'voiceSpeed' => 1],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions start-conversation-relay \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"1b5e5556-f459-4f95-a68a-f951c07bef1d":{"name":"call_control_id","description":"Unique identifier and token for controlling the call","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Unique identifier and token for controlling the call","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"description":"Conversation Relay start request","required":true,"content":{"application/json":{"schema":{"type":"object","title":"Conversation Relay Start Request","description":"Start a Conversation Relay session. A WebSocket URL is required: provide it as `url`, `conversation_relay_url`, or `conversation_relay_settings.url`; top-level values take precedence over nested settings. Use `transcription_engine` and `transcription_engine_config` for speech-to-text configuration; the `transcription` object is not supported.","conditionallyRequiredProperties":{"conversation_relay_settings":[{}]},"example":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"interruptible":"speech","interruptible_greeting":"dtmf","greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","voice_settings":{"type":"telnyx"},"language":"en-US","languages":[{"language":"en-US","tts_provider":"telnyx","voice":"Telnyx.KokoroTTS.af","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}],"custom_parameters":{"customer_id":"12345"}},"properties":{"conversation_relay_settings":{"type":"object","title":"Conversation Relay Settings","description":"Conversation Relay connection settings. This object can provide `url`, `dtmf_detection`, `interruptible`, `interruptible_greeting`, and `languages`. Top-level aliases override nested values when both are present.","properties":{"url":{"type":"string","pattern":"^wss?://","description":"WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.","example":"wss://example.com/conversation-relay","isRequired":true,"uniqueKey":"conversation_relay_settings.url","typeLabel":"string"},"dtmf_detection":{"type":"boolean","description":"Whether to enable DTMF detection during the relay session.","default":false,"example":true,"uniqueKey":"conversation_relay_settings.dtmf_detection","typeLabel":"boolean"},"interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_settings.interruptible","typeLabel":"enum\u003cstring>"},"interruptible_greeting":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_settings.interruptible_greeting","typeLabel":"enum\u003cstring>"},"languages":{"type":"array","description":"Language-specific TTS and transcription settings.","items":{"type":"object","title":"Conversation Relay Language","description":"Language-specific TTS and transcription settings for Conversation Relay.","properties":{"language":{"type":"string","description":"BCP 47 language tag for this language configuration.","example":"en-US","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].language","typeLabel":"string"},"tts_provider":{"type":"string","description":"Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.","example":"telnyx","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].tts_provider","typeLabel":"string"},"voice":{"type":"string","description":"Voice identifier for this language.","example":"Telnyx.KokoroTTS.af","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"type":"object","title":"Conversation Relay Transcription Engine Config","description":"Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.","properties":{"interim_results":{"type":"boolean","default":false,"description":"Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_engine_config.interim_results","typeLabel":"boolean"},"eot_threshold":{"type":"number","minimum":0.5,"maximum":0.9,"default":0.7,"description":"Deepgram Flux: confidence required to end the caller's turn.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_engine_config.eot_threshold","typeLabel":"number"},"eager_eot_threshold":{"type":"number","minimum":0.3,"maximum":0.7,"description":"Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_engine_config.eager_eot_threshold","typeLabel":"number"}},"additionalProperties":true,"example":{"transcription_model":"deepgram/flux","interim_results":true,"eager_eot_threshold":0.5},"uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_engine_config","typeLabel":"Conversation Relay Transcription Engine Config · object"},"transcription_provider":{"type":"string","description":"Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.","example":"Deepgram","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].transcription_provider","typeLabel":"string"},"speech_model":{"type":"string","description":"Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.","example":"nova-3","uniqueKey":"conversation_relay_settings.languages.items.[INDEX].speech_model","typeLabel":"string"}},"required":["language"],"uniqueKey":"conversation_relay_settings.languages.items.[INDEX]","typeLabel":"Conversation Relay Language · object"},"uniqueKey":"conversation_relay_settings.languages","typeLabel":"Conversation Relay Language · object[]"}},"required":["url"],"example":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"interruptible":"speech","interruptible_greeting":"dtmf","languages":[{"language":"en-US","tts_provider":"telnyx","voice":"Telnyx.KokoroTTS.af","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}]},"conditionalRequirements":[{}],"uniqueKey":"conversation_relay_settings","typeLabel":"Conversation Relay Settings · object"},"url":{"type":"string","pattern":"^wss?://","description":"Public alias for `conversation_relay_url`. Must start with `ws://` or `wss://`. If both are present, this value wins.","example":"wss://example.com/conversation-relay","uniqueKey":"url","typeLabel":"string"},"dtmf_detection":{"type":"boolean","description":"Public alias for `conversation_relay_dtmf_detection`. If both are present, this value wins.","default":false,"example":true,"uniqueKey":"dtmf_detection","typeLabel":"boolean"},"conversation_relay_url":{"type":"string","pattern":"^wss?://","description":"WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.","example":"wss://example.com/conversation-relay","uniqueKey":"conversation_relay_url","typeLabel":"string"},"conversation_relay_dtmf_detection":{"type":"boolean","description":"Enable DTMF detection for the relay session.","default":false,"example":true,"uniqueKey":"conversation_relay_dtmf_detection","typeLabel":"boolean"},"voice":{"description":"The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.\u003cVoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.\u003cVoiceId>` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-CA-LiamNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\n- **ElevenLabs:** Use `ElevenLabs.\u003cModelId>.\u003cVoiceId>` (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\": \"\u003csecret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.\u003cmodel_id>.\u003cvoice_id>`\n- **Inworld:** Use `Inworld.\u003cModelId>.\u003cVoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`.\n- **Fish Audio:** Use `FishAudio.\u003cModelId>.\u003cVoiceId>` (e.g., `FishAudio.s2.1-pro.\u003creference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.\u003cModelId>.\u003cVoiceId>` (e.g., `Soniox.tts-rt-v2.Emma`). Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices). Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n- **xAI:** Use `xAI.\u003cVoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.\u003cVoiceId>` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`, `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.","type":"string","default":"Telnyx.KokoroTTS.af","example":"Telnyx.KokoroTTS.af","uniqueKey":"voice","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"greeting":{"type":"string","description":"Text played when the relay session starts.","example":"Hi! Ask me anything!","uniqueKey":"greeting","typeLabel":"string"},"language":{"type":"string","description":"Default language for the relay session. This value is used for both text-to-speech and speech recognition.","default":"en","example":"en-US","uniqueKey":"language","typeLabel":"string"},"languages":{"type":"array","description":"Per-language TTS and transcription settings.","items":{"type":"object","title":"Conversation Relay Language","description":"Language-specific TTS and transcription settings for Conversation Relay.","properties":{"language":{"type":"string","description":"BCP 47 language tag for this language configuration.","example":"en-US","isRequired":true,"uniqueKey":"languages.items.[INDEX].language","typeLabel":"string"},"tts_provider":{"type":"string","description":"Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.","example":"telnyx","uniqueKey":"languages.items.[INDEX].tts_provider","typeLabel":"string"},"voice":{"type":"string","description":"Voice identifier for this language.","example":"Telnyx.KokoroTTS.af","uniqueKey":"languages.items.[INDEX].voice","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"languages.items.[INDEX].voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"languages.items.[INDEX].voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google","uniqueKey":"languages.items.[INDEX].transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"type":"object","title":"Conversation Relay Transcription Engine Config","description":"Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.","properties":{"interim_results":{"type":"boolean","default":false,"description":"Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.","uniqueKey":"languages.items.[INDEX].transcription_engine_config.interim_results","typeLabel":"boolean"},"eot_threshold":{"type":"number","minimum":0.5,"maximum":0.9,"default":0.7,"description":"Deepgram Flux: confidence required to end the caller's turn.","uniqueKey":"languages.items.[INDEX].transcription_engine_config.eot_threshold","typeLabel":"number"},"eager_eot_threshold":{"type":"number","minimum":0.3,"maximum":0.7,"description":"Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.","uniqueKey":"languages.items.[INDEX].transcription_engine_config.eager_eot_threshold","typeLabel":"number"}},"additionalProperties":true,"example":{"transcription_model":"deepgram/flux","interim_results":true,"eager_eot_threshold":0.5},"uniqueKey":"languages.items.[INDEX].transcription_engine_config","typeLabel":"Conversation Relay Transcription Engine Config · object"},"transcription_provider":{"type":"string","description":"Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.","example":"Deepgram","uniqueKey":"languages.items.[INDEX].transcription_provider","typeLabel":"string"},"speech_model":{"type":"string","description":"Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.","example":"nova-3","uniqueKey":"languages.items.[INDEX].speech_model","typeLabel":"string"}},"required":["language"],"uniqueKey":"languages.items.[INDEX]","typeLabel":"Conversation Relay Language · object"},"uniqueKey":"languages","typeLabel":"Conversation Relay Language · object[]"},"interruption_settings":{"type":"object","title":"Conversation Relay Interruption Settings","description":"Settings for handling caller interruptions during Conversation Relay speech.","properties":{"enable":{"type":"boolean","description":"Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.","uniqueKey":"interruption_settings.enable","typeLabel":"boolean"},"interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"interruption_settings.interruptible","typeLabel":"enum\u003cstring>"},"interruptible_greeting":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"interruption_settings.interruptible_greeting","typeLabel":"enum\u003cstring>"},"welcome_greeting_interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"interruption_settings.welcome_greeting_interruptible","typeLabel":"enum\u003cstring>"}},"uniqueKey":"interruption_settings","typeLabel":"Conversation Relay Interruption Settings · object"},"transcription":{"type":"object","deprecated":true,"description":"Not supported for Conversation Relay start requests. Use `transcription_engine` and `transcription_engine_config` instead.","additionalProperties":true,"uniqueKey":"transcription","typeLabel":"object"},"assistant":{"type":"object","title":"Conversation Relay Custom Parameters","description":"Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session.","properties":{"dynamic_variables":{"type":"object","description":"Custom key-value parameters forwarded to the Conversation Relay session.","additionalProperties":{"type":"string","uniqueKey":"assistant.dynamic_variables.additionalProperties","typeLabel":"string"},"example":{"customer_id":"12345","tier":"premium"},"uniqueKey":"assistant.dynamic_variables","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"assistant","typeLabel":"Conversation Relay Custom Parameters · object"},"client_state":{"type":"string","description":"Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","uniqueKey":"client_state","typeLabel":"string"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901","uniqueKey":"command_id","typeLabel":"string"},"tts_provider":{"type":"string","description":"Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.","example":"telnyx","uniqueKey":"tts_provider","typeLabel":"string"},"provider":{"type":"string","description":"Structured voice provider. Must be supplied together with `structured_provider`.","example":"elevenlabs","uniqueKey":"provider","typeLabel":"string"},"structured_provider":{"type":"object","title":"Conversation Relay Structured Provider","description":"Provider-specific structured voice settings. Must be supplied together with `provider`; Telnyx sends the value as the nested provider configuration for Conversation Relay.","additionalProperties":true,"example":{"voice_id":"voice-id","model_id":"Default"},"uniqueKey":"structured_provider","typeLabel":"Conversation Relay Structured Provider · object"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google","uniqueKey":"transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"type":"object","title":"Conversation Relay Transcription Engine Config","description":"Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.","properties":{"interim_results":{"type":"boolean","default":false,"description":"Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.","uniqueKey":"transcription_engine_config.interim_results","typeLabel":"boolean"},"eot_threshold":{"type":"number","minimum":0.5,"maximum":0.9,"default":0.7,"description":"Deepgram Flux: confidence required to end the caller's turn.","uniqueKey":"transcription_engine_config.eot_threshold","typeLabel":"number"},"eager_eot_threshold":{"type":"number","minimum":0.3,"maximum":0.7,"description":"Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.","uniqueKey":"transcription_engine_config.eager_eot_threshold","typeLabel":"number"}},"additionalProperties":true,"example":{"transcription_model":"deepgram/flux","interim_results":true,"eager_eot_threshold":0.5},"uniqueKey":"transcription_engine_config","typeLabel":"Conversation Relay Transcription Engine Config · object"},"interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"interruptible","typeLabel":"enum\u003cstring>"},"interruptible_greeting":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"interruptible_greeting","typeLabel":"enum\u003cstring>"},"custom_parameters":{"type":"object","description":"Custom key-value parameters forwarded to the relay session as `assistant.dynamic_variables`. If `assistant.dynamic_variables` is also present, these values are merged in.","additionalProperties":true,"example":{"customer_id":"12345"},"uniqueKey":"custom_parameters","typeLabel":"object"}},"uniqueKey":"","typeLabel":"Conversation Relay Start Request · object"},"examples":{"Example":{"title":"Example","value":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"interruptible":"speech","interruptible_greeting":"dtmf","greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","voice_settings":{"type":"telnyx"},"language":"en-US","languages":[{"language":"en-US","tts_provider":"telnyx","voice":"Telnyx.KokoroTTS.af","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}],"custom_parameters":{"customer_id":"12345"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"090cde2d-1e8c-42d1-a566-1ed659224c1c":{"description":"Successful response upon starting Conversation Relay.","content":{"application/json":{"schema":{"type":"object","title":"Call Control Command Response With Conversation Relay ID","properties":{"data":{"type":"object","title":"Call Control Command Result With Conversation Relay ID","example":{"result":"ok","conversation_relay_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"},"properties":{"result":{"type":"string","example":"ok","uniqueKey":"data.result","typeLabel":"string"},"conversation_relay_id":{"type":"string","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the Conversation Relay session created by the command.","uniqueKey":"data.conversation_relay_id","typeLabel":"string"}},"uniqueKey":"data","typeLabel":"Call Control Command Result With Conversation Relay ID · object"}},"uniqueKey":"","typeLabel":"Call Control Command Response With Conversation Relay ID · object"},"examples":{"Example":{"title":"Example","value":{"data":{"result":"ok","conversation_relay_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"}}}},"exampleType":"generated"}},"exampleType":"generated"},"df554798-54c4-460f-8eb7-53ae1ad60f83":{"description":"Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations.","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"required":["code","title"],"properties":{"code":{"type":"string","format":"integer","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string\u003cinteger>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","format":"json-pointer","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string\u003cjson-pointer>"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"missing_required_parameter":{"title":"missing_required_parameter","summary":"Missing required parameter","value":{"errors":[{"code":"10004","title":"Missing required parameter","detail":"The 'to' parameter is required and cannot be blank.","source":{"pointer":"/to"}}]}},"invalid_call_control_id":{"title":"invalid_call_control_id","summary":"Invalid call control ID","value":{"errors":[{"code":"90015","title":"Invalid Call Control ID","detail":"The call_control_id provided was not valid.","source":{"pointer":"/call_control_id"}}]}},"call_already_ended":{"title":"call_already_ended","summary":"Call has already ended","value":{"errors":[{"code":"90018","title":"Call has already ended","detail":"This call is no longer active and can't receive commands."}]}},"call_not_answered":{"title":"call_not_answered","summary":"Call not answered yet","value":{"errors":[{"code":"90034","title":"Call not answered yet","detail":"This call can't receive this command because it has not been answered yet."}]}},"cannot_record_before_audio_started":{"title":"cannot_record_before_audio_started","summary":"Cannot record before audio started","value":{"errors":[{"code":"90020","title":"Call recording triggered before audio started","detail":"Call recording cannot be started until audio has commenced on the call."}]}},"transcription_already_active":{"title":"transcription_already_active","summary":"Transcription already active","value":{"errors":[{"code":"90054","title":"Call transcription is already in progress","detail":"Call transcription can not be started more than once."}]}},"ai_assistant_already_active":{"title":"ai_assistant_already_active","summary":"AI Assistant already active","value":{"errors":[{"code":"90061","title":"AI Assistant is already in progress","detail":"AI Assistant cannot be started more than once."}]}},"conference_already_ended":{"title":"conference_already_ended","summary":"Conference has already ended","value":{"errors":[{"code":"90019","title":"Conference has already ended","detail":"This conference is no longer active and can't receive commands."}]}},"conference_name_conflict":{"title":"conference_name_conflict","summary":"Conference name conflict","value":{"errors":[{"code":"90033","title":"Unable to execute command","detail":"Conference with given name already exists and it's active."}]}},"max_participants_reached":{"title":"max_participants_reached","summary":"Maximum participants reached","value":{"errors":[{"code":"90032","title":"Maximum number of participants reached","detail":"The maximum allowed value of `max_participants` has been reached at 100."}]}},"queue_full":{"title":"queue_full","summary":"Queue is full","value":{"errors":[{"code":"90036","title":"Queue full","detail":"The 'support' queue is full and can't accept more calls."}]}},"call_already_in_queue":{"title":"call_already_in_queue","summary":"Call already in queue","value":{"errors":[{"code":"90038","title":"Call already in queue","detail":"Call can't be added to a queue it's already in."}]}},"invalid_connection_id":{"title":"invalid_connection_id","summary":"Invalid connection ID","value":{"errors":[{"code":"10015","title":"Invalid value for connection_id (Call Control App ID)","detail":"The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call Control Apps with valid webhook URL are accepted.","source":{"pointer":"/connection_id"}}]}},"invalid_phone_number_format":{"title":"invalid_phone_number_format","summary":"Invalid phone number format","value":{"errors":[{"code":"10016","title":"Phone number must be in +E164 format","detail":"The 'to' parameter must be in E164 format.","source":{"pointer":"/to"}}]}},"srtp_not_supported_for_pstn":{"title":"srtp_not_supported_for_pstn","summary":"SRTP not supported for PSTN calls","value":{"errors":[{"source":{"pointer":"/media_encryption"},"title":"Media encryption not supported for PSTN calls","detail":"SRTP media encryption is not supported for PSTN calls.","code":"10011"}]}},"fork_not_found":{"title":"fork_not_found","summary":"Call is not forked","value":{"errors":[{"code":"90031","title":"Call is not currently forked","detail":"Can't stop forking, because the call isn't currently forked."}]}},"media_streaming_used":{"title":"media_streaming_used","summary":"Media streaming in use","value":{"errors":[{"code":"90045","title":"Media Streaming is used","detail":"This command can't be issued when media streaming is used."}]}},"invalid_enumerated_value":{"title":"invalid_enumerated_value","summary":"Invalid enumerated value","value":{"errors":[{"code":"10032","title":"Invalid enumerated value","detail":"The value must be one of: dual, single.","source":{"pointer":"/record_channels"}}]}},"value_outside_range":{"title":"value_outside_range","summary":"Value outside of range","value":{"errors":[{"code":"10033","title":"Value outside of range","detail":"The value is outside of allowed range 1 to 5000","source":{"pointer":"/max_participants"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"f3a983d4-c898-4bb2-bd39-4ea8bd4ddafb":{"description":"Unexpected error","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"required":["code","title"],"properties":{"code":{"type":"string","format":"integer","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string\u003cinteger>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","format":"json-pointer","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string\u003cjson-pointer>"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"type":"object","uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"5f287a6e-2dfa-48a1-b966-b3213062b307":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"d6674bd7-47bb-47b6-b17a-a4ac033c966f":{"url":"https://api.telnyx.com/v2","description":"Version 2.0.0 of the Telnyx API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/source/external/call-control/call-control.json"},"subdomain":"telnyx","siteName":"Telnyx","title":"Start Conversation Relay - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-13T12:15:12.011Z","originalFileLocation":"api-reference/call-commands/start-conversation-relay.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time. Expected Webhooks: - call.conversation.ended - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload reason is customer_disconnect.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Telnyx\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Start Conversation Relay - Telnyx\">\u003cmeta data-mint-head property=\"og:description\" content=\"Infrastructure for real-time agents. Voice, AI, Edge Compute\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Telnyx\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Start+Conversation+Relay\u0026amp;title=Start+Conversation+Relay\u0026amp;description=Start+a+Conversation+Relay+session+on+an+active+call.+Conversation+Relay+connects+the+call+audio+to+your+WebSocket+so+your+application+can+exchange+realtime+mes\u0026amp;theme=203f74ffadd35d8bb68c8ebf\u0026amp;signature=38d68b4ecc182ada3071e92f60911a849a5662e5910bb07004050c166b0ff188\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Start Conversation Relay - Telnyx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Infrastructure for real-time agents. Voice, AI, Edge Compute\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Start+Conversation+Relay\u0026amp;title=Start+Conversation+Relay\u0026amp;description=Start+a+Conversation+Relay+session+on+an+active+call.+Conversation+Relay+connects+the+call+audio+to+your+WebSocket+so+your+application+can+exchange+realtime+mes\u0026amp;theme=203f74ffadd35d8bb68c8ebf\u0026amp;signature=38d68b4ecc182ada3071e92f60911a849a5662e5910bb07004050c166b0ff188\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/telnyx/MhCJ9JWG11MInbt6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Telnyx\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00B688\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/call-commands/start-conversation-relay.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://telnyx.com/#organization\",\"name\":\"Telnyx\",\"url\":\"https://telnyx.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://telnyx.com/favicon.ico\"},\"sameAs\":[\"https://x.com/telnyx\",\"https://www.linkedin.com/company/telnyx/\",\"https://github.com/team-telnyx\"]},{\"@type\":\"WebSite\",\"@id\":\"https://developers.telnyx.com#website\",\"name\":\"Telnyx\",\"url\":\"https://developers.telnyx.com\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay\",\"name\":\"Start Conversation Relay\",\"description\":\"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time. Expected Webhooks: - call.conversation.ended - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload reason is customer_disconnect.\",\"dateModified\":\"2026-11-13T12:15:12.011Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://developers.telnyx.com/api-reference/call-control-applications/list-call-control-applications\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Voice API Commands\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/dial\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Start Conversation Relay\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay#apireference\",\"headline\":\"Start Conversation Relay\",\"name\":\"Start Conversation Relay\",\"description\":\"Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time. Expected Webhooks: - call.conversation.ended - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload reason is customer_disconnect.\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-conversation-relay#webpage\"},\"dateModified\":\"2026-11-13T12:15:12.011Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","agentPointerHref":"/api-reference/call-commands/start-conversation-relay.md","siteName":"Telnyx","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/overview"}]},{"product":"Other APIs","icon":"ellipsis","pages":[{"title":"Other APIs","href":"/docs/other-apis"}]},{"product":"Agent Platform","icon":"circle-nodes","pages":[{"title":"Agent Platform","href":"/docs/agent-platform"}]},{"product":"AI","icon":"microchip-ai","pages":[{"title":"AI","href":"/docs/inference/models"}]},{"product":"Voice","icon":"waveform","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"product":"Compute","icon":"server","pages":[{"title":"Compute","href":"/docs/edge-compute/platform-overview"}]},{"product":"Storage","icon":"hard-drive","pages":[{"title":"Storage","href":"/docs/cloud-storage/overview"}]},{"product":"Virtual Private Cloud","icon":"cloud","pages":[{"title":"Virtual Private Cloud","href":"/docs/virtual-private-cloud"}]},{"product":"Calling","icon":"phone","tabs":[{"tab":"Voice API","icon":"phone-volume","groups":[{"group":"Voice API Fundamentals","pages":[{"title":"Getting Started with Telnyx Voice API","sidebarTitle":"Getting Started","href":"/docs/voice/programmable-voice/voice-api-fundamentals"},{"title":"Commands and Resources","sidebarTitle":"Commands and Resources","href":"/docs/voice/programmable-voice/voice-api-commands-and-resources/index"},{"title":"Voice API Webhooks","sidebarTitle":"Webhooks","href":"/docs/voice/programmable-voice/voice-api-webhooks/index"},{"title":"Sending Commands for Programmable Voice","sidebarTitle":"Sending Commands","href":"/docs/voice/programmable-voice/sending-commands/index"},{"title":"Receiving Webhooks for Programmable Voice","sidebarTitle":"Receiving Webhooks","href":"/docs/voice/programmable-voice/receiving-webhooks/index"},{"title":"Command Retries","sidebarTitle":"Command Retries","href":"/docs/voice/programmable-voice/command-retries/index"},{"title":"Dials Per Second Limit","sidebarTitle":"Dials Per Second Limit","href":"/docs/voice/programmable-voice/dials-per-second-limit/index"},{"title":"Dial Metrics","sidebarTitle":"Dial Metrics","href":"/docs/voice/programmable-voice/dial-metrics/index"}]},{"group":"Voice Features","pages":[{"title":"Speech-to-Text with Voice API and TeXML","sidebarTitle":"Speech-to-Text","href":"/docs/voice/programmable-voice/speech-to-text/index"},{"title":"Text-to-Speech","sidebarTitle":"Text-to-Speech","href":"/docs/voice/programmable-voice/tts/index"},{"title":"Queueing Calls","sidebarTitle":"Call Queueing","href":"/docs/voice/programmable-voice/queueing-calls/index"},{"title":"Answering Machine Detection","sidebarTitle":"Answering Machine Detection","href":"/docs/voice/programmable-voice/answering-machine-detection/index"},{"title":"Custom voicemail greeting","sidebarTitle":"Custom Voicemail Greeting","href":"/docs/voice/programmable-voice/custom-voicemail-greeting/index"},{"title":"Storing call recordings","sidebarTitle":"Call Recordings Storage","href":"/docs/voice/programmable-voice/storing-call-recordings/index"},{"title":"Call Recordings Redaction","sidebarTitle":"Call Recordings Redaction","href":"/docs/voice/programmable-voice/recording-redaction/index"},{"title":"Pay over Voice","sidebarTitle":"Pay","href":"/docs/voice/programmable-voice/pay/index"},{"group":"SIPREC Recording","pages":[{"title":"Telnyx SIPREC server (SRS) Configuration Guide","sidebarTitle":"SIPREC Server Configuration","href":"/docs/voice/programmable-voice/siprec-server/index"},{"title":"Using SIPREC client for Voice API and TeXML calls","sidebarTitle":"SIPREC Client","href":"/docs/voice/programmable-voice/siprec-client/index"}]}]},{"group":"AI Capabilities","pages":[{"title":"Gather using AI","sidebarTitle":"Gather Using AI","href":"/docs/voice/programmable-voice/gather-using-ai/index"},{"title":"Attach an AI Assistant to a Call","href":"/docs/voice/programmable-voice/ai-assistant-start/index"},{"title":"Dialogflow ES","sidebarTitle":"Dialogflow Integration","href":"/docs/voice/programmable-voice/dialogflow-es/index"},{"title":"Media Streaming over Websockets","sidebarTitle":"Real-Time Media Streaming","href":"/docs/voice/programmable-voice/media-streaming/index"},{"title":"Conversation Relay over WebSockets","sidebarTitle":"Conversation Relay","href":"/docs/voice/programmable-voice/conversation-relay/index"},{"title":"Noise Suppression","sidebarTitle":"Noise Suppression","href":"/docs/voice/programmable-voice/noise-suppression/index"},{"title":"Deepfake Detection","sidebarTitle":"Deepfake Detection","href":"/docs/voice/programmable-voice/deepfake-detection/index"}]},{"group":"Tutorials","pages":[{"title":"IVR Demo","sidebarTitle":"IVR","href":"/docs/voice/programmable-voice/ivr-demo/index"},{"title":"Call Center Demo","sidebarTitle":"Call Center","href":"/docs/voice/programmable-voice/call-center/index"},{"title":"Call Tracking Demo","sidebarTitle":"Call Tracking","href":"/docs/voice/programmable-voice/call-tracking/index"},{"title":"Conferencing Demo","sidebarTitle":"Conferencing","href":"/docs/voice/programmable-voice/conferencing-demo/index"}]},{"group":"Regional \u0026 Restrictions","pages":[{"title":"Voice API Services in Europe","sidebarTitle":"Voice API Services in Europe","href":"/docs/voice/programmable-voice/voice-api-services-in-europe/index"},{"title":"Programmable Voice restrictions for L1 verified accounts","sidebarTitle":"L1 Account Restrictions","href":"/docs/voice/programmable-voice/l1-accounts-restirctions/index"}]},{"group":"API Reference","pages":[{"group":"Voice API Applications","pages":[{"group":"Applications","pages":[{"title":"List call control applications","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_control_applications","href":"/api-reference/call-control-applications/list-call-control-applications"},{"title":"Create a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /call_control_applications","href":"/api-reference/call-control-applications/create-a-call-control-application"},{"title":"Delete a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json delete /call_control_applications/{id}","href":"/api-reference/call-control-applications/delete-a-call-control-application"},{"title":"Retrieve a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_control_applications/{id}","href":"/api-reference/call-control-applications/retrieve-a-call-control-application"},{"title":"Update a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json patch /call_control_applications/{id}","href":"/api-reference/call-control-applications/update-a-call-control-application"}]},{"group":"Active Calls","pages":[{"title":"List all active calls for given connection","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /connections/{connection_id}/active_calls","href":"/api-reference/call-information/list-all-active-calls-for-given-connection"}]},{"group":"Call Events","pages":[{"title":"List call events","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_events","href":"/api-reference/debugging/list-call-events"}]},{"group":"Call Information","pages":[{"title":"Retrieve a call status","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /calls/{call_control_id}","href":"/api-reference/call-information/retrieve-a-call-status"}]},{"group":"Dial Metrics","pages":[{"title":"List dial metrics","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /dial_metrics","href":"/api-reference/call-information/list-dial-metrics"}]}]},{"group":"Voice API Commands","pages":[{"group":"Dial","pages":[{"group":"Call Commands API","pages":[{"title":"Dial","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls","href":"/api-reference/call-commands/dial"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call cost","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callCost","href":"/api-reference/callbacks/call-cost"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call hold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callHold","href":"/api-reference/callbacks/call-hold"},{"title":"Call initiated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callInitiated","href":"/api-reference/callbacks/call-initiated"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"},{"title":"Call unhold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callUnhold","href":"/api-reference/callbacks/call-unhold"}]}]},{"group":"Answer","pages":[{"group":"Call Commands API","pages":[{"title":"Answer call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/answer","href":"/api-reference/call-commands/answer-call"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"}]}]},{"group":"Bridge","pages":[{"group":"Call Commands API","pages":[{"title":"Bridge calls","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/bridge","href":"/api-reference/call-commands/bridge-calls"}]},{"group":"Callbacks API","pages":[{"title":"Call bridged","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callBridged","href":"/api-reference/callbacks/call-bridged"}]}]},{"group":"Start AI assistant","pages":[{"group":"Call Commands API","pages":[{"title":"Start AI Assistant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_start","href":"/api-reference/call-commands/start-ai-assistant"}]},{"group":"Callbacks API","pages":[{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationEnded","href":"/api-reference/callbacks/call-conversation-ended"},{"title":"Call conversation insights generated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationInsightsGenerated","href":"/api-reference/callbacks/call-conversation-insights-generated"},{"title":"Call analyzed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnalyzed","href":"/api-reference/callbacks/call-analyzed"}]}]},{"group":"Join AI assistant","pages":[{"group":"Call Commands API","pages":[{"title":"Join AI Assistant Conversation","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_join","href":"/api-reference/call-commands/join-ai-assistant-conversation"}]},{"group":"Callbacks API","pages":[{"title":"Call conversation ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationEnded","href":"/api-reference/callbacks/call-conversation-ended"},{"title":"Call conversation insights generated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationInsightsGenerated","href":"/api-reference/callbacks/call-conversation-insights-generated"},{"title":"Call analyzed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnalyzed","href":"/api-reference/callbacks/call-analyzed"}]}]},{"group":"Stop AI assistant","pages":[{"title":"Stop AI Assistant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_stop","href":"/api-reference/call-commands/stop-ai-assistant"}]},{"group":"Add messages to AI Assistant","pages":[{"title":"Add messages to AI Assistant","description":"Add messages to the conversation started by an AI assistant on the call.","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_add_messages","href":"/api-reference/call-commands/add-messages-to-ai-assistant"}]},{"group":"Start Conversation Relay","pages":[{"title":"Start Conversation Relay","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/conversation_relay_start","href":"/api-reference/call-commands/start-conversation-relay"}]},{"group":"Stop Conversation Relay","pages":[{"title":"Stop Conversation Relay","description":"Stop the active Conversation Relay session on a call.","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/conversation_relay_stop","href":"/api-reference/call-commands/stop-conversation-relay"}]},{"group":"Conversation Relay","pages":[{"group":"Websockets","pages":[{"asyncapi":"openapi/asyncapi/conversation-relay/conversation-relay.yml conversation-relay-websocket","href":"/api-reference/websockets/conversationrelay-websocket-channel","title":"ConversationRelay WebSocket channel","version":null}]}]},{"group":"Update client state","pages":[{"title":"Update client state","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json put /calls/{call_control_id}/actions/client_state_update","href":"/api-reference/call-commands/update-client-state"}]},{"group":"Enqueue call","pages":[{"group":"Call Commands API","pages":[{"title":"Enqueue call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/enqueue","href":"/api-reference/call-commands/enqueue-call"}]},{"group":"Callbacks API","pages":[{"title":"Call enqueued","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callEnqueued","href":"/api-reference/callbacks/call-enqueued"},{"title":"Call left queue","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callLeftQueue","href":"/api-reference/callbacks/call-left-queue"}]}]},{"group":"Forking start","pages":[{"group":"Call Commands API","pages":[{"title":"Forking start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/fork_start","href":"/api-reference/call-commands/forking-start"}]},{"group":"Callbacks API","pages":[{"title":"Call fork started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callForkStarted","href":"/api-reference/callbacks/call-fork-started"}]}]},{"group":"Forking stop","pages":[{"group":"Call Commands API","pages":[{"title":"Forking stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/fork_stop","href":"/api-reference/call-commands/forking-stop"}]},{"group":"Callbacks API","pages":[{"title":"Call fork stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callForkStopped","href":"/api-reference/callbacks/call-fork-stopped"}]}]},{"group":"Gather","pages":[{"group":"Call Commands API","pages":[{"title":"Gather","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/gather","href":"/api-reference/call-commands/gather"}]},{"group":"Callbacks API","pages":[{"title":"Call dtmf received","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDtmfReceived","href":"/api-reference/callbacks/call-dtmf-received"},{"title":"Call gather ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callGatherEnded","href":"/api-reference/callbacks/call-gather-ended"}]}]},{"group":"Gather stop","pages":[{"group":"Call Commands API","pages":[{"title":"Gather stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/gather_stop","href":"/api-reference/call-commands/gather-stop"}]},{"group":"Callbacks API","pages":[{"title":"Call gather ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callGatherEnded","href":"/api-reference/callbacks/call-gather-ended"}]}]},{"group":"Gather using AI","pages":[{"group":"Call Commands API","pages":[{"title":"Gather using AI","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/gather_using_ai","href":"/api-reference/call-commands/gather-using-ai"}]},{"group":"Callbacks API","pages":[{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call ai gather ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook CallAIGatherEnded","href":"/api-reference/callbacks/call-ai-gather-ended"},{"title":"Call ai gather message history updated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook CallAIGatherMessageHistoryUpdated","href":"/api-reference/callbacks/call-ai-gather-message-history-updated"},{"title":"Call ai gather partial results","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook CallAIGatherPartialResults","href":"/api-reference/callbacks/call-ai-gather-partial-results"},{"title":"Call conversation ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationEnded","href":"/api-reference/callbacks/call-conversation-ended"}]}]},{"group":"Gather using audio","pages":[{"group":"Call Commands API","pages":[{"title":"Gather using audio","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/gather_using_audio","href":"/api-reference/call-commands/gather-using-audio"}]},{"group":"Callbacks API","pages":[{"title":"Call dtmf received","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDtmfReceived","href":"/api-reference/callbacks/call-dtmf-received"},{"title":"Call gather ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callGatherEnded","href":"/api-reference/callbacks/call-gather-ended"},{"title":"Call playback ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPlaybackEnded","href":"/api-reference/callbacks/call-playback-ended"},{"title":"Call playback started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPlaybackStarted","href":"/api-reference/callbacks/call-playback-started"}]}]},{"group":"Gather using speak","pages":[{"group":"Call Commands API","pages":[{"title":"Gather using speak","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/gather_using_speak","href":"/api-reference/call-commands/gather-using-speak"}]},{"group":"Callbacks API","pages":[{"title":"Call dtmf received","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDtmfReceived","href":"/api-reference/callbacks/call-dtmf-received"},{"title":"Call gather ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callGatherEnded","href":"/api-reference/callbacks/call-gather-ended"}]}]},{"group":"Hangup","pages":[{"group":"Call Commands API","pages":[{"title":"Hangup call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/hangup","href":"/api-reference/call-commands/hangup-call"}]},{"group":"Callbacks API","pages":[{"title":"Call hangup","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callHangup","href":"/api-reference/callbacks/call-hangup"},{"title":"Call recording saved","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callRecordingSaved","href":"/api-reference/callbacks/call-recording-saved"}]}]},{"group":"Reject a call","pages":[{"group":"Call Commands API","pages":[{"title":"Reject a call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/reject","href":"/api-reference/call-commands/reject-a-call"}]},{"group":"Callbacks API","pages":[{"title":"Call hangup","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callHangup","href":"/api-reference/callbacks/call-hangup"}]}]},{"group":"Remove call from the queue","pages":[{"title":"Remove call from a queue","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/leave_queue","href":"/api-reference/call-commands/remove-call-from-a-queue"}]},{"group":"Process a payment","pages":[{"group":"Call Commands API","pages":[{"title":"Process a payment","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/pay","href":"/api-reference/call-commands/process-a-payment"}]},{"group":"Callbacks API","pages":[{"title":"Call payment completed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPaymentCompleted","href":"/api-reference/callbacks/call-payment-completed"},{"title":"Call payment progress","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPaymentProgress","href":"/api-reference/callbacks/call-payment-progress"}]}]},{"group":"Play audio playback","pages":[{"group":"Call Commands API","pages":[{"title":"Play audio URL","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/playback_start","href":"/api-reference/call-commands/play-audio-url"}]},{"group":"Callbacks API","pages":[{"title":"Call playback ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPlaybackEnded","href":"/api-reference/callbacks/call-playback-ended"},{"title":"Call playback started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPlaybackStarted","href":"/api-reference/callbacks/call-playback-started"}]}]},{"group":"Stop audio playback","pages":[{"group":"Call Commands API","pages":[{"title":"Stop audio playback","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/playback_stop","href":"/api-reference/call-commands/stop-audio-playback"}]},{"group":"Callbacks API","pages":[{"title":"Call playback ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callPlaybackEnded","href":"/api-reference/callbacks/call-playback-ended"},{"title":"Call speak ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSpeakEnded","href":"/api-reference/callbacks/call-speak-ended"}]}]},{"group":"Recording start","pages":[{"group":"Call Commands API","pages":[{"title":"Recording start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/record_start","href":"/api-reference/call-commands/recording-start"}]},{"group":"Callbacks API","pages":[{"title":"Call recording error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callRecordingError","href":"/api-reference/callbacks/call-recording-error"},{"title":"Call recording saved","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callRecordingSaved","href":"/api-reference/callbacks/call-recording-saved"},{"title":"Call recording transcription saved","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callRecordingTranscriptionSaved","href":"/api-reference/callbacks/call-recording-transcription-saved"}]}]},{"group":"Recording stop","pages":[{"group":"Call Commands API","pages":[{"title":"Recording stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/record_stop","href":"/api-reference/call-commands/recording-stop"}]},{"group":"Callbacks API","pages":[{"title":"Call recording saved","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callRecordingSaved","href":"/api-reference/callbacks/call-recording-saved"}]}]},{"group":"Recording resume","pages":[{"title":"Record resume","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/record_resume","href":"/api-reference/call-commands/record-resume"}]},{"group":"Recording pause","pages":[{"title":"Record pause","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/record_pause","href":"/api-reference/call-commands/record-pause"}]},{"group":"Send DTMF","pages":[{"title":"Send DTMF","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/send_dtmf","href":"/api-reference/call-commands/send-dtmf"}]},{"group":"SIP refer","pages":[{"group":"Call Commands API","pages":[{"title":"SIP Refer a call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/refer","href":"/api-reference/call-commands/sip-refer-a-call"}]},{"group":"Callbacks API","pages":[{"title":"Call refer completed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callReferCompleted","href":"/api-reference/callbacks/call-refer-completed"},{"title":"Call refer failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callReferFailed","href":"/api-reference/callbacks/call-refer-failed"},{"title":"Call refer started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callReferStarted","href":"/api-reference/callbacks/call-refer-started"}]}]},{"group":"SIPREC start","pages":[{"group":"Call Commands API","pages":[{"title":"SIPREC start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/siprec_start","href":"/api-reference/call-commands/siprec-start"}]},{"group":"Callbacks API","pages":[{"title":"Call siprec failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSiprecFailed","href":"/api-reference/callbacks/call-siprec-failed"},{"title":"Call siprec started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSiprecStarted","href":"/api-reference/callbacks/call-siprec-started"},{"title":"Call siprec stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSiprecStopped","href":"/api-reference/callbacks/call-siprec-stopped"}]}]},{"group":"SIPREC stop","pages":[{"group":"Call Commands API","pages":[{"title":"SIPREC stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/siprec_stop","href":"/api-reference/call-commands/siprec-stop"}]},{"group":"Callbacks API","pages":[{"title":"Call siprec stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSiprecStopped","href":"/api-reference/callbacks/call-siprec-stopped"}]}]},{"group":"Speak text","pages":[{"group":"Call Commands API","pages":[{"title":"Speak text","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/speak","href":"/api-reference/call-commands/speak-text"}]},{"group":"Callbacks API","pages":[{"title":"Call speak ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSpeakEnded","href":"/api-reference/callbacks/call-speak-ended"},{"title":"Call speak started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callSpeakStarted","href":"/api-reference/callbacks/call-speak-started"}]}]},{"group":"Streaming start","pages":[{"group":"Call Commands API","pages":[{"title":"Streaming start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/streaming_start","href":"/api-reference/call-commands/streaming-start"}]},{"group":"Callbacks API","pages":[{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"}]}]},{"group":"Streaming stop","pages":[{"group":"Call Commands API","pages":[{"title":"Streaming stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/streaming_stop","href":"/api-reference/call-commands/streaming-stop"}]},{"group":"Callbacks API","pages":[{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"}]}]},{"group":"Media Streaming","pages":[{"group":"Websockets","pages":[{"asyncapi":"openapi/asyncapi/media-streaming/media-streaming.yml media-streaming-websocket","href":"/api-reference/websockets/stream-call-media-over-websocket","title":"Stream call media over WebSocket","version":null}]}]},{"group":"Noise Suppression start","pages":[{"title":"Noise Suppression Start (BETA)","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/suppression_start","href":"/api-reference/call-commands/noise-suppression-start-beta"}]},{"group":"Noise Suppression stop","pages":[{"title":"Noise Suppression Stop (BETA)","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/suppression_stop","href":"/api-reference/call-commands/noise-suppression-stop-beta"}]},{"group":"Switch supervisor role","pages":[{"title":"Switch supervisor role","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/switch_supervisor_role","href":"/api-reference/call-commands/switch-supervisor-role"}]},{"group":"Transcription start","pages":[{"group":"Call Commands API","pages":[{"title":"Transcription start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/transcription_start","href":"/api-reference/call-commands/transcription-start"}]},{"group":"Callbacks API","pages":[{"title":"Transcription","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook transcription","href":"/api-reference/callbacks/transcription"}]}]},{"group":"Transcription stop","pages":[{"title":"Transcription stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/transcription_stop","href":"/api-reference/call-commands/transcription-stop"}]},{"group":"Transfer call","pages":[{"group":"Call Commands API","pages":[{"title":"Transfer call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/transfer","href":"/api-reference/call-commands/transfer-call"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call bridged","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callBridged","href":"/api-reference/callbacks/call-bridged"},{"title":"Call initiated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callInitiated","href":"/api-reference/callbacks/call-initiated"},{"title":"Call machine detection ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachineDetectionEnded","href":"/api-reference/callbacks/call-machine-detection-ended"},{"title":"Call machine greeting ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachineGreetingEnded","href":"/api-reference/callbacks/call-machine-greeting-ended"},{"title":"Call machine premium detection ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachinePremiumDetectionEnded","href":"/api-reference/callbacks/call-machine-premium-detection-ended"},{"title":"Call machine premium detection started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachinePremiumDetectionStarted","href":"/api-reference/callbacks/call-machine-premium-detection-started"},{"title":"Call machine premium greeting ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachinePremiumGreetingEnded","href":"/api-reference/callbacks/call-machine-premium-greeting-ended"},{"title":"Call machine premium call screening detected","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callMachinePremiumCallScreeningDetected","href":"/api-reference/callbacks/call-machine-premium-call-screening-detected"}]}]},{"group":"Conference Commands","pages":[{"group":"Conference Commands API","pages":[{"title":"List conferences","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /conferences","href":"/api-reference/conference-commands/list-conferences"},{"title":"Create conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences","href":"/api-reference/conference-commands/create-conference"},{"title":"Retrieve a conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /conferences/{id}","href":"/api-reference/conference-commands/retrieve-a-conference"},{"title":"Hold conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/hold","href":"/api-reference/conference-commands/hold-conference-participants"},{"title":"Join a conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/join","href":"/api-reference/conference-commands/join-a-conference"},{"title":"Leave a conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/leave","href":"/api-reference/conference-commands/leave-a-conference"},{"title":"Mute conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/mute","href":"/api-reference/conference-commands/mute-conference-participants"},{"title":"Play audio to conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/play","href":"/api-reference/conference-commands/play-audio-to-conference-participants"},{"title":"Conference recording pause","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/record_pause","href":"/api-reference/conference-commands/conference-recording-pause"},{"title":"Conference recording resume","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/record_resume","href":"/api-reference/conference-commands/conference-recording-resume"},{"title":"Conference recording start","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/record_start","href":"/api-reference/conference-commands/conference-recording-start"},{"title":"Conference recording stop","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/record_stop","href":"/api-reference/conference-commands/conference-recording-stop"},{"title":"Speak text to conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/speak","href":"/api-reference/conference-commands/speak-text-to-conference-participants"},{"title":"Stop audio being played on the conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/stop","href":"/api-reference/conference-commands/stop-audio-being-played-on-the-conference"},{"title":"Unhold conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/unhold","href":"/api-reference/conference-commands/unhold-conference-participants"},{"title":"Unmute conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/unmute","href":"/api-reference/conference-commands/unmute-conference-participants"},{"title":"Update conference participant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/update","href":"/api-reference/conference-commands/update-conference-participant"},{"title":"End a conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/end","href":"/api-reference/conference-commands/end-a-conference"},{"title":"Gather DTMF using audio prompt in a conference","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/gather_using_audio","href":"/api-reference/conference-commands/gather-dtmf-using-audio-prompt-in-a-conference"},{"title":"Send DTMF to conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /conferences/{id}/actions/send_dtmf","href":"/api-reference/conference-commands/send-dtmf-to-conference-participants"},{"title":"List conference participants","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /conferences/{conference_id}/participants","href":"/api-reference/conference-commands/list-conference-participants"},{"title":"Retrieve a conference participant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /conferences/{id}/participants/{participant_id}","href":"/api-reference/conference-commands/retrieve-a-conference-participant"},{"title":"Update a conference participant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json patch /conferences/{id}/participants/{participant_id}","href":"/api-reference/conference-commands/update-a-conference-participant"}]},{"group":"Callbacks API","pages":[{"title":"Conference created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceCreated","href":"/api-reference/callbacks/conference-created"},{"title":"Conference ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceEnded","href":"/api-reference/callbacks/conference-ended"},{"title":"Conference floor changed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceFloorChanged","href":"/api-reference/callbacks/conference-floor-changed"},{"title":"Conference participant joined","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantJoined","href":"/api-reference/callbacks/conference-participant-joined"},{"title":"Conference participant left","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantLeft","href":"/api-reference/callbacks/conference-participant-left"},{"title":"Conference participant playback ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantPlaybackEnded","href":"/api-reference/callbacks/conference-participant-playback-ended"},{"title":"Conference participant playback started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantPlaybackStarted","href":"/api-reference/callbacks/conference-participant-playback-started"},{"title":"Conference participant speak ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantSpeakEnded","href":"/api-reference/callbacks/conference-participant-speak-ended"},{"title":"Conference participant speak started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceParticipantSpeakStarted","href":"/api-reference/callbacks/conference-participant-speak-started"},{"title":"Conference playback ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferencePlaybackEnded","href":"/api-reference/callbacks/conference-playback-ended"},{"title":"Conference playback started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferencePlaybackStarted","href":"/api-reference/callbacks/conference-playback-started"},{"title":"Conference recording saved","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceRecordingSaved","href":"/api-reference/callbacks/conference-recording-saved"},{"title":"Conference speak ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceSpeakEnded","href":"/api-reference/callbacks/conference-speak-ended"},{"title":"Conference speak started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook conferenceSpeakStarted","href":"/api-reference/callbacks/conference-speak-started"}]}]}]},{"group":"Pay Connectors API","pages":[{"title":"Create a Pay connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/pay-connectors.json post /pay_connectors","href":"/api-reference/pay-connectors/create-a-pay-connector"},{"title":"List Pay connectors","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/pay-connectors.json get /pay_connectors","href":"/api-reference/pay-connectors/list-pay-connectors"},{"title":"Retrieve a Pay connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/pay-connectors.json get /pay_connectors/{name}","href":"/api-reference/pay-connectors/retrieve-a-pay-connector"},{"title":"Update a Pay connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/pay-connectors.json patch /pay_connectors/{name}","href":"/api-reference/pay-connectors/update-a-pay-connector"},{"title":"Delete a Pay connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/pay-connectors.json delete /pay_connectors/{name}","href":"/api-reference/pay-connectors/delete-a-pay-connector"}]},{"group":"SIPREC Connectors API","pages":[{"title":"Create a SIPREC connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/siprec/siprec.json post /siprec_connectors","href":"/api-reference/siprec-connectors/create-a-siprec-connector"},{"title":"Retrieve a SIPREC connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/siprec/siprec.json get /siprec_connectors/{connector_name}","href":"/api-reference/siprec-connectors/retrieve-a-siprec-connector"},{"title":"Update a SIPREC connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/siprec/siprec.json put /siprec_connectors/{connector_name}","href":"/api-reference/siprec-connectors/update-a-siprec-connector"},{"title":"Delete a SIPREC connector","deprecated":null,"version":null,"openapi":"/openapi/source/external/siprec/siprec.json delete /siprec_connectors/{connector_name}","href":"/api-reference/siprec-connectors/delete-a-siprec-connector"}]}]},{"group":"For AI Agents","pages":[{"title":"Voice API llms.txt","sidebarTitle":"Voice API llms txt","href":"/docs/development/llms/calling-voice-api-llms-txt/index"},{"title":"Voice API llms-full.txt","sidebarTitle":"Voice API llms full txt","href":"/docs/development/llms/calling-voice-api-llms-full-txt/index"}]}]},{"tab":"TeXML","icon":"code","pages":[{"title":"TeXML","href":"/docs/voice/programmable-voice/texml-fundamentals"}]},{"tab":"SIP Trunking","icon":"headset","pages":[{"title":"SIP Trunking","href":"/docs/voice/sip-trunking/get-started"}]},{"tab":"UAC Connections","icon":"plug","pages":[{"title":"UAC Connections","href":"/docs/voice/uac-connections"}]},{"tab":"WebRTC","icon":"browser","pages":[{"title":"WebRTC","href":"/docs/voice/webrtc/fundamentals"}]},{"tab":"Trusted Calling","icon":"shield-check","pages":[{"title":"Trusted Calling","href":"/docs/branded-calling/overview"}]}]},{"product":"Messaging","icon":"message","pages":[{"title":"Messaging","href":"/docs/messaging/messages/send-message"}]},{"product":"Numbers","icon":"hashtag","pages":[{"title":"Numbers","href":"/docs/numbers/phone-numbers/getting-started"}]},{"product":"Wireless","icon":"broadcast-tower","pages":[{"title":"Wireless","href":"/docs/iot-sim/wireless-overview"}]}]},"basePath":"","title":"Start Conversation Relay - Telnyx","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-Dlc3Qr3h.js","dist-D2J8knkn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-Dq9TQuNi.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-DdEMm2kG.js","utils-BMo572L7.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C-4m9KAx.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DPLK2Oq9.js","snippetPresets-BKjfJMC9.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-BIYvYBgk.js","ApiExamples-DTsgtCEj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C8vmhyQM.js","shallow-r9w8LQGS.js","getApiPlaygroundDisplay-DjPI64HQ.js","CodeSnippet-C8Bvhl16.js","CodeSnippets-BtWUwcMy.js","getPastedJson-Dcm_3Pgl.js","icon-BXwrTpjc.js","MethodPill-CcjfVmmy.js","DuplicateIcon-BuKIbXAQ.js","createIcon-DaL9yXsO.js","DynamicMarkdown-Co5nikxh.js","SectionHeading-P4UNTsMZ.js","axios-vUo_bRtp.js","Markdown-CEfymfIH.js","AssistantPageLink-BgZ2ThuU.js"]}