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.startAIAssistant('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_ai_assistant(
call_control_id="call_control_id",
)
print(response.data)
AI Assistant configuration and per-call overrides. All fields except id are optional. Omitted assistant fields use the stored configuration. Supplied voice_settings and transcription objects replace their stored objects rather than merging individual settings; include every setting you want to retain. dynamic_variables are merged, with request values taking precedence.
Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for AWS.Polly.<voice_id> voices. There is a 3,000 character limit.
Example:
"Hello, can you tell me your age and where you live?"
The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. fixie-ai/ultravox-v0_4) will ignore this field.
A list of messages to seed the conversation history before the assistant starts. Follows the same message format as the ai_assistant_add_messages command.
Messages sent by an end user
User message.
Assistant Message
Tool Message
System Message
Developer Message
Show child attributes
Example:
{ "role": "user", "content": "Hello, I would like some help." }
When true, a call.ai_gather.message_history_updated webhook carrying the full message history is sent each time the conversation message history is updated. The assistant's own telephony_settings.send_message_history_updates overrides this value when it is set.
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.startAIAssistant('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_ai_assistant(
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":"6aef10fbbe4829dd4e3b2ca6","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":601},{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"Other APIs","count":406},{"language":"default","tag":"AI","count":395},{"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":178},{"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":"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":"llms-txt-v2","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":"comment-mode","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 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-ai-assistant","slug":"/api-reference/call-commands/start-ai-assistant","pageMetadata":{"title":"Start AI Assistant","description":"Start an AI assistant on the call.\n\n**Expected Webhooks:**\n\n- [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id` during startup\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n","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","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 a: \"a\",\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 an AI assistant on the call.\"\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.a, {\n href: \"/api-reference/callbacks/call-conversation-created\",\n children: _jsx(_components.code, {\n children: \"call.conversation.created\"\n })\n }), \" includes \", _jsx(_components.code, {\n children: \"conversation_id\"\n }), \" during startup\"]\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"call.conversation.ended\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"call.conversation_insights.generated\"\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 AI Assistant","description":"Start an AI assistant on the call.\n\n**Expected Webhooks:**\n\n- [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id` during startup\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n","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","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 AI Assistant","description":"Start an AI assistant on the call.\n\n**Expected Webhooks:**\n\n- [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id` during startup\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n","operationId":"CallStartAIAssistant","tags":["Call Commands"],"parameters":["d0269563-c0b3-4118-9670-fd31fa819fd4"],"requestBody":"8ed624d5-4398-4f24-a93d-409c01cd8b21","responses":{"200":"c6b43808-4d1a-4a99-988b-4c72e9a67bf8","422":"a62b6a02-ec32-46e3-9758-58a241852fe7","default":"1ef3010c-302b-4864-a9e1-cdce5e134383"},"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.startAIAssistant('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_ai_assistant(\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.StartAIAssistant(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartAIAssistantParams{},\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.ActionStartAiAssistantParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartAiAssistantResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartAiAssistantResponse response = client.calls().actions().startAiAssistant(\"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_ai_assistant(\"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->startAIAssistant(\n 'call_control_id',\n assistant: [\n 'id' => 'id',\n 'dynamicVariables' => [\n 'customer_name' => 'John', 'account_id' => 'ACC-12345'\n ],\n 'externalLlm' => [\n 'authenticationMethod' => 'token',\n 'baseURL' => 'base_url',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'fallbackConfig' => [\n 'externalLlm' => [\n 'authenticationMethod' => 'token',\n 'baseURL' => 'base_url',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n 'greeting' => 'greeting',\n 'instructions' => 'You are a friendly voice assistant.',\n 'llmAPIKeyRef' => 'my_llm_api_key',\n 'mcpServers' => [['foo' => 'bar']],\n 'model' => 'gpt-4o',\n 'name' => 'name',\n 'observabilitySettings' => ['foo' => 'bar'],\n 'openaiAPIKeyRef' => 'my_openai_api_key',\n 'tools' => [\n [\n 'bookAppointment' => [\n 'apiKeyRef' => 'my_calcom_api_key',\n 'eventTypeID' => 0,\n 'attendeeName' => 'attendee_name',\n 'attendeeTimezone' => 'attendee_timezone',\n ],\n 'type' => 'book_appointment',\n ],\n ],\n ],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n greeting: 'Hello, can you tell me your age and where you live?',\n interruptionSettings: ['enable' => true],\n messageHistory: [\n [\n 'content' => 'Hello, I would like some help.',\n 'role' => 'user',\n 'metadata' => ['foo' => 'bar'],\n ],\n ],\n participants: [\n [\n 'id' => 'v3:abc123def456',\n 'role' => 'user',\n 'name' => 'John Doe',\n 'onHangup' => 'continue_conversation',\n ],\n ],\n sendMessageHistoryUpdates: true,\n transcription: [\n 'language' => 'auto', 'model' => 'distil-whisper/distil-large-v2'\n ],\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions start-ai-assistant \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id"}],"method":"post","type":"path","servers":["0635ec9f-42f5-401e-98f7-c9c2b6ed8b0b"],"security":["bcc523b0-9e21-469e-85b8-03e709ed2323"],"path":"/calls/{call_control_id}/actions/ai_assistant_start","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Start AI Assistant","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.startAIAssistant('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_ai_assistant(\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.StartAIAssistant(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartAIAssistantParams{},\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.ActionStartAiAssistantParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartAiAssistantResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartAiAssistantResponse response = client.calls().actions().startAiAssistant(\"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_ai_assistant(\"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->startAIAssistant(\n 'call_control_id',\n assistant: [\n 'id' => 'id',\n 'dynamicVariables' => [\n 'customer_name' => 'John', 'account_id' => 'ACC-12345'\n ],\n 'externalLlm' => [\n 'authenticationMethod' => 'token',\n 'baseURL' => 'base_url',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'fallbackConfig' => [\n 'externalLlm' => [\n 'authenticationMethod' => 'token',\n 'baseURL' => 'base_url',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n 'greeting' => 'greeting',\n 'instructions' => 'You are a friendly voice assistant.',\n 'llmAPIKeyRef' => 'my_llm_api_key',\n 'mcpServers' => [['foo' => 'bar']],\n 'model' => 'gpt-4o',\n 'name' => 'name',\n 'observabilitySettings' => ['foo' => 'bar'],\n 'openaiAPIKeyRef' => 'my_openai_api_key',\n 'tools' => [\n [\n 'bookAppointment' => [\n 'apiKeyRef' => 'my_calcom_api_key',\n 'eventTypeID' => 0,\n 'attendeeName' => 'attendee_name',\n 'attendeeTimezone' => 'attendee_timezone',\n ],\n 'type' => 'book_appointment',\n ],\n ],\n ],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n greeting: 'Hello, can you tell me your age and where you live?',\n interruptionSettings: ['enable' => true],\n messageHistory: [\n [\n 'content' => 'Hello, I would like some help.',\n 'role' => 'user',\n 'metadata' => ['foo' => 'bar'],\n ],\n ],\n participants: [\n [\n 'id' => 'v3:abc123def456',\n 'role' => 'user',\n 'name' => 'John Doe',\n 'onHangup' => 'continue_conversation',\n ],\n ],\n sendMessageHistoryUpdates: true,\n transcription: [\n 'language' => 'auto', 'model' => 'distil-whisper/distil-large-v2'\n ],\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions start-ai-assistant \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"d0269563-c0b3-4118-9670-fd31fa819fd4":{"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":"AI Assistant request","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assistant":{"type":"object","description":"AI Assistant configuration and per-call overrides. All fields except `id` are optional. Omitted assistant fields use the stored configuration. Supplied `voice_settings` and `transcription` objects replace their stored objects rather than merging individual settings; include every setting you want to retain. `dynamic_variables` are merged, with request values taking precedence.","required":["id"],"properties":{"id":{"type":"string","description":"The identifier of the AI assistant to use.","isRequired":true,"uniqueKey":"assistant.id","typeLabel":"string"},"model":{"type":"string","description":"LLM model override for this call. If omitted, the assistant's configured model is used.","example":"gpt-4o","uniqueKey":"assistant.model","typeLabel":"string"},"name":{"type":"string","description":"Assistant name override for this call.","uniqueKey":"assistant.name","typeLabel":"string"},"instructions":{"type":"string","description":"System instructions for the voice assistant. Can be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). This will overwrite the instructions set in the assistant configuration.","example":"You are a friendly voice assistant.","uniqueKey":"assistant.instructions","typeLabel":"string"},"greeting":{"type":"string","maxLength":3000,"description":"Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.\u003cvoice_id>` voices. There is a 3,000 character limit.","uniqueKey":"assistant.greeting","typeLabel":"string"},"voice_settings":{"properties":{"voice":{"type":"string","description":"The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.\u003cmodel_id>.\u003cvoice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.","isRequired":true,"uniqueKey":"assistant.voice_settings.voice","typeLabel":"string"},"voice_speed":{"type":"number","default":1,"description":"The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine.","uniqueKey":"assistant.voice_settings.voice_speed","typeLabel":"number"},"api_key_ref":{"type":"string","description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","uniqueKey":"assistant.voice_settings.api_key_ref","typeLabel":"string"},"temperature":{"type":"number","default":0.5,"description":"Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.","uniqueKey":"assistant.voice_settings.temperature","typeLabel":"number"},"similarity_boost":{"type":"number","default":0.75,"description":"Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.","uniqueKey":"assistant.voice_settings.similarity_boost","typeLabel":"number"},"use_speaker_boost":{"type":"boolean","default":true,"description":"Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.","uniqueKey":"assistant.voice_settings.use_speaker_boost","typeLabel":"boolean"},"style":{"type":"number","default":0,"description":"Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.","uniqueKey":"assistant.voice_settings.style","typeLabel":"number"},"speed":{"type":"number","default":1,"description":"Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.","uniqueKey":"assistant.voice_settings.speed","typeLabel":"number"},"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. Only applicable when using MiniMax voices.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"assistant.voice_settings.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. Only applicable when using MiniMax voices.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"assistant.voice_settings.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"assistant.voice_settings.language_boost","typeLabel":"enum\u003cstring> | null"},"expressive_mode":{"type":"boolean","default":false,"description":"Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.","uniqueKey":"assistant.voice_settings.expressive_mode","typeLabel":"boolean"},"background_audio":{"oneOf":[{"type":"object","description":"Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.","required":["type","value"],"properties":{"type":{"type":"string","enum":["predefined_media"],"description":"Select from predefined media options.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.0.type","typeLabel":"enum\u003cstring>"},"value":{"type":"string","enum":["silence","office"],"default":"silence","description":"The predefined media to use. `silence` disables background audio.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.0.value","typeLabel":"enum\u003cstring>"},"volume":{"type":"number","minimum":0.1,"maximum":1,"multipleOf":0.1,"default":1,"description":"Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments.","uniqueKey":"assistant.voice_settings.background_audio.oneOf.0.volume","typeLabel":"number"}},"uniqueKey":"assistant.voice_settings.background_audio.oneOf.0","typeLabel":"object"},{"type":"object","description":"Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.","required":["type","value"],"properties":{"type":{"type":"string","enum":["media_url"],"description":"Provide a direct URL to an MP3 file. The audio will loop during the call.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.1.type","typeLabel":"enum\u003cstring>"},"value":{"type":"string","format":"uri","description":"HTTPS URL to an MP3 file.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.1.value","typeLabel":"string\u003curi>"}},"uniqueKey":"assistant.voice_settings.background_audio.oneOf.1","typeLabel":"object"},{"type":"object","description":"Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.","required":["type","value"],"properties":{"type":{"type":"string","enum":["media_name"],"description":"Reference a previously uploaded media by its name from Telnyx Media Storage.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.2.type","typeLabel":"enum\u003cstring>"},"value":{"type":"string","description":"The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage). The audio will loop during the call.","isRequired":true,"uniqueKey":"assistant.voice_settings.background_audio.oneOf.2.value","typeLabel":"string"}},"uniqueKey":"assistant.voice_settings.background_audio.oneOf.2","typeLabel":"object"}],"uniqueKey":"assistant.voice_settings.background_audio","typeLabel":"object"}},"type":"object","required":["voice"],"description":"Per-call voice configuration. Set the voice identifier in `voice_settings.voice`, not in `assistant.voice`. If supplied, this object replaces the stored voice settings.","uniqueKey":"assistant.voice_settings","typeLabel":"object"},"transcription":{"type":"object","description":"Per-call speech-to-text configuration for the assistant. If omitted, the stored assistant transcription configuration is used. If supplied, this object replaces the stored transcription settings. This is separate from the top-level `transcription` boolean on answer and dial commands.","properties":{"model":{"description":"The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `speechmatics/linden-1` (preview, vendor-hosted) for live streaming transcription; no auto-detect, so set `language` from Speechmatics' Realtime language list (defaults to `en`).\n- `assemblyai/universal-3-6-pro` (AssemblyAI Universal-3.6 Pro) for live streaming transcription. The legacy aliases `assemblyai/universal-3-5-pro` and `assemblyai/universal-streaming` are still accepted and run the same Universal-3.6 Pro model.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `nvidia/parakeet-v3` for multilingual transcription with automatic language detection.\n- `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based).\n- `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection.\n- `cohere/ar-stt` for non-streaming Arabic and English transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.","type":"string","enum":["deepgram/flux","flux","deepgram/nova-3","deepgram/nova-2","speechmatics/standard","speechmatics/enhanced","speechmatics/linden-1","assemblyai/universal-3-6-pro","assemblyai/universal-3-5-pro","assemblyai/universal-streaming","xai/grok-stt","soniox/stt-rt-v4","nvidia/parakeet-v3","omi-health/omi-med-stt-v1","humain/realtime","reson8/turns","cohere/ar-stt","azure/fast","azure/realtime","google/latest_long","distil-whisper/distil-large-v2","openai/whisper-large-v3-turbo"],"default":"distil-whisper/distil-large-v2","example":"distil-whisper/distil-large-v2","uniqueKey":"assistant.transcription.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-6-pro` (and its legacy aliases `assemblyai/universal-3-5-pro` and `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; language codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`, `ur`, `ru`, `ko`, `ca`, `gl`, `ro`, `et`, `fa`, `yue`, `af`, `mr`, `zu`, `xh`, `nn`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted. For `speechmatics/linden-1`, there is no auto-detect; set a code from Speechmatics' Realtime language list (see `SpeechmaticsTranscriptionLanguage`); unset defaults to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected (unlike `speechmatics/standard`, which defaults to `en`).","uniqueKey":"assistant.transcription.language","typeLabel":"string"}},"uniqueKey":"assistant.transcription","typeLabel":"object"},"tools":{"type":"array","description":"Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.","items":{"oneOf":[{"type":"object","title":"BookAppointmentTool","required":["type","book_appointment"],"properties":{"type":{"type":"string","enum":["book_appointment"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"book_appointment":{"properties":{"event_type_id":{"type":"integer","description":"Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-event-type-id)","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.book_appointment.event_type_id","typeLabel":"integer"},"api_key_ref":{"type":"string","description":"Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key.","example":"my_calcom_api_key","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.book_appointment.api_key_ref","typeLabel":"string"},"attendee_name":{"type":"string","description":"The name of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-name). If not provided, the assistant will ask for the attendee's name.","uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.book_appointment.attendee_name","typeLabel":"string"},"attendee_timezone":{"type":"string","description":"The timezone of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-timezone). If not provided, the assistant will ask for the attendee's timezone.","uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.book_appointment.attendee_timezone","typeLabel":"string"}},"type":"object","required":["event_type_id","api_key_ref"],"title":"BookAppointmentToolParams","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.0.book_appointment","typeLabel":"BookAppointmentToolParams · object"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.0","typeLabel":"BookAppointmentTool · object"},{"type":"object","title":"CheckAvailabilityTool","required":["type","check_availability"],"properties":{"type":{"type":"string","enum":["check_availability"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"check_availability":{"properties":{"event_type_id":{"type":"integer","description":"Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/slots/get-available-slots#parameter-event-type-id)","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.1.check_availability.event_type_id","typeLabel":"integer"},"api_key_ref":{"type":"string","description":"Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your Cal.com API key.","example":"my_calcom_api_key","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.1.check_availability.api_key_ref","typeLabel":"string"}},"type":"object","required":["event_type_id","api_key_ref"],"title":"CheckAvailabilityToolParams","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.1.check_availability","typeLabel":"CheckAvailabilityToolParams · object"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.1","typeLabel":"CheckAvailabilityTool · object"},{"type":"object","title":"WebhookTool","required":["type","webhook"],"properties":{"type":{"type":"string","enum":["webhook"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"webhook":{"properties":{"name":{"type":"string","description":"The name of the tool.","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.name","typeLabel":"string"},"description":{"type":"string","description":"The description of the tool.","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.description","typeLabel":"string"},"url":{"description":"The URL of the external tool to be called. This URL is going to be used by the assistant. The URL can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will be provided by the assistant if `path_parameters` are provided with the `id` attribute.","type":"string","example":"https://example.com/api/v1/function","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.url","typeLabel":"string"},"method":{"description":"The HTTP method to be used when calling the external tool.","type":"string","enum":["GET","POST","PUT","DELETE","PATCH"],"default":"POST","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.method","typeLabel":"enum\u003cstring>"},"headers":{"description":"The headers to be sent to the external tool.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.headers.items.[INDEX].name","typeLabel":"string"},"value":{"description":"The value of the header. Note that we support mustache templating for the value. For example you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret as the bearer token.","type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.headers.items.[INDEX].value","typeLabel":"string"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.headers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.headers","typeLabel":"object[]"},"body_parameters":{"description":"The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the body parameters.","type":"object","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.body_parameters.properties","typeLabel":"object"},"required":{"description":"The required properties of the body parameters.","type":"array","items":{"type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.body_parameters.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.body_parameters.required","typeLabel":"string[]"},"type":{"type":"string","enum":["object"],"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.body_parameters.type","typeLabel":"enum\u003cstring>"}},"example":{"properties":{"age":{"description":"The age of the customer.","type":"integer"},"location":{"description":"The location of the customer.","type":"string"}},"required":["age","location"],"type":"object"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.body_parameters","typeLabel":"object"},"path_parameters":{"description":"The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the path parameters.","type":"object","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.path_parameters.properties","typeLabel":"object"},"required":{"description":"The required properties of the path parameters.","type":"array","items":{"type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.path_parameters.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.path_parameters.required","typeLabel":"string[]"},"type":{"type":"string","enum":["object"],"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.path_parameters.type","typeLabel":"enum\u003cstring>"}},"example":{"properties":{"id":{"description":"The id of the customer.","type":"string"}},"required":["id"],"type":"object"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.path_parameters","typeLabel":"object"},"query_parameters":{"description":"The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format","type":"object","properties":{"properties":{"description":"The properties of the query parameters.","type":"object","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.query_parameters.properties","typeLabel":"object"},"required":{"description":"The required properties of the query parameters.","type":"array","items":{"type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.query_parameters.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.query_parameters.required","typeLabel":"string[]"},"type":{"type":"string","enum":["object"],"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.query_parameters.type","typeLabel":"enum\u003cstring>"}},"example":{"properties":{"page":{"description":"The page number.","type":"integer"}},"required":["page"],"type":"object"},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook.query_parameters","typeLabel":"object"}},"type":"object","required":["url","name","description"],"title":"WebhookToolParams","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.webhook","typeLabel":"WebhookToolParams · object"},"timeout_ms":{"type":"integer","default":5000,"maximum":60000,"description":"The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted. Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is not applied, and the tool runs at this default instead.","uniqueKey":"assistant.tools.items.[INDEX].oneOf.2.timeout_ms","typeLabel":"integer"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.2","typeLabel":"WebhookTool · object"},{"type":"object","title":"HangupTool","required":["type","hangup"],"properties":{"type":{"type":"string","enum":["hangup"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"hangup":{"properties":{"description":{"type":"string","default":"This tool is used to hang up the call.","description":"The description of the function that will be passed to the assistant.","uniqueKey":"assistant.tools.items.[INDEX].oneOf.3.hangup.description","typeLabel":"string"}},"type":"object","title":"HangupToolParams","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.3.hangup","typeLabel":"HangupToolParams · object"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.3","typeLabel":"HangupTool · object"},{"type":"object","title":"TransferTool","required":["type","transfer"],"properties":{"type":{"type":"string","enum":["transfer"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"transfer":{"properties":{"targets":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"to":{"type":"string","description":"The destination number or SIP URI of the call.","example":"+13129457420","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets.oneOf.0.items.[INDEX].to","typeLabel":"string"},"name":{"type":"string","description":"The name of the target.","example":"Support","uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets.oneOf.0.items.[INDEX].name","typeLabel":"string"}},"required":["to"],"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets.oneOf.0","typeLabel":"object[]"},{"type":"string","description":"The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.","example":"{{ targets }}","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.targets","typeLabel":"object[] | string"},"from":{"type":"string","example":"+35319605860","description":"Number or SIP URI placing the call.","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer.from","typeLabel":"string"}},"type":"object","required":["targets","from"],"title":"TransferToolParams","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4.transfer","typeLabel":"TransferToolParams · object"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.4","typeLabel":"TransferTool · object"},{"type":"object","title":"RetrievalTool","required":["type","retrieval"],"properties":{"type":{"type":"string","enum":["retrieval"],"isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"retrieval":{"properties":{"bucket_ids":{"items":{"type":"string","uniqueKey":"assistant.tools.items.[INDEX].oneOf.5.retrieval.bucket_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Bucket Ids","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.5.retrieval.bucket_ids","typeLabel":"string[]"},"max_num_results":{"description":"The maximum number of results to retrieve as context for the language model.","type":"integer","uniqueKey":"assistant.tools.items.[INDEX].oneOf.5.retrieval.max_num_results","typeLabel":"integer"}},"type":"object","required":["bucket_ids"],"title":"BucketIds","isRequired":true,"uniqueKey":"assistant.tools.items.[INDEX].oneOf.5.retrieval","typeLabel":"BucketIds · object"}},"uniqueKey":"assistant.tools.items.[INDEX].oneOf.5","typeLabel":"RetrievalTool · object"}],"uniqueKey":"assistant.tools.items.[INDEX]","typeLabel":"BookAppointmentTool · object | CheckAvailabilityTool · object | WebhookTool · object | HangupTool · object | TransferTool · object | RetrievalTool · object"},"uniqueKey":"assistant.tools","typeLabel":"(BookAppointmentTool · object | CheckAvailabilityTool · object | WebhookTool · object | HangupTool · object | TransferTool · object | RetrievalTool · object)[]"},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the LLM provider API key. Use this field to reference an [integration secret](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) containing your LLM provider API key. Supports any LLM provider (OpenAI, Anthropic, etc.).","example":"my_llm_api_key","uniqueKey":"assistant.llm_api_key_ref","typeLabel":"string"},"openai_api_key_ref":{"type":"string","description":"Deprecated — use `llm_api_key_ref` instead. Integration secret identifier for the OpenAI API key. This field is maintained for backward compatibility; `llm_api_key_ref` is the canonical field name and supports all LLM providers.","deprecated":true,"x-sdk-deprecation-message":"Use llm_api_key_ref instead","example":"my_openai_api_key","uniqueKey":"assistant.openai_api_key_ref","typeLabel":"string"},"dynamic_variables":{"type":"object","description":"Map of dynamic variables and their default values. Dynamic variables can be referenced in instructions, greeting, and tool definitions using the `{{variable_name}}` syntax. Call-control-agent automatically merges in `telnyx_call_*` variables (telnyx_call_to, telnyx_call_from, telnyx_conversation_channel, telnyx_agent_target, telnyx_end_user_target, telnyx_call_caller_id_name) and custom header variables.","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"assistant.dynamic_variables.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"assistant.dynamic_variables.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"assistant.dynamic_variables.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"assistant.dynamic_variables.additionalProperties","typeLabel":"string | number | boolean"},"example":{"customer_name":"John","account_id":"ACC-12345"},"uniqueKey":"assistant.dynamic_variables","typeLabel":"object"},"fallback_config":{"type":"object","description":"Fallback LLM configuration used when the primary LLM provider is unavailable.","properties":{"model":{"type":"string","description":"Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.","uniqueKey":"assistant.fallback_config.model","typeLabel":"string"},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the fallback model API key.","uniqueKey":"assistant.fallback_config.llm_api_key_ref","typeLabel":"string"},"external_llm":{"type":"object","description":"External LLM fallback configuration.","properties":{"model":{"type":"string","description":"Model identifier to use with the external LLM endpoint.","uniqueKey":"assistant.fallback_config.external_llm.model","typeLabel":"string"},"base_url":{"type":"string","description":"Base URL for the external LLM endpoint.","uniqueKey":"assistant.fallback_config.external_llm.base_url","typeLabel":"string"},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the external LLM API key.","uniqueKey":"assistant.fallback_config.external_llm.llm_api_key_ref","typeLabel":"string"},"authentication_method":{"type":"string","enum":["token","certificate"],"default":"token","description":"Authentication method used when connecting to the external LLM endpoint.","uniqueKey":"assistant.fallback_config.external_llm.authentication_method","typeLabel":"enum\u003cstring>"},"certificate_ref":{"type":"string","description":"Integration secret identifier for the client certificate used with certificate authentication.","uniqueKey":"assistant.fallback_config.external_llm.certificate_ref","typeLabel":"string"},"token_retrieval_url":{"type":"string","description":"URL used to retrieve an access token when certificate authentication is enabled.","uniqueKey":"assistant.fallback_config.external_llm.token_retrieval_url","typeLabel":"string"},"forward_metadata":{"type":"boolean","default":false,"description":"When enabled, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{\"extra_metadata\":{\"customer_name\":\"Jane\",\"account_id\":\"acct_789\",\"telnyx_agent_target\":\"+13125550100\",\"telnyx_end_user_target\":\"+13125550123\"}}`.","uniqueKey":"assistant.fallback_config.external_llm.forward_metadata","typeLabel":"boolean"}},"uniqueKey":"assistant.fallback_config.external_llm","typeLabel":"object"}},"uniqueKey":"assistant.fallback_config","typeLabel":"object"},"external_llm":{"type":"object","description":"External LLM configuration for bringing your own LLM endpoint.","properties":{"model":{"type":"string","description":"Model identifier to use with the external LLM endpoint.","uniqueKey":"assistant.external_llm.model","typeLabel":"string"},"base_url":{"type":"string","description":"Base URL for the external LLM endpoint.","uniqueKey":"assistant.external_llm.base_url","typeLabel":"string"},"llm_api_key_ref":{"type":"string","description":"Integration secret identifier for the external LLM API key.","uniqueKey":"assistant.external_llm.llm_api_key_ref","typeLabel":"string"},"authentication_method":{"type":"string","enum":["token","certificate"],"default":"token","description":"Authentication method used when connecting to the external LLM endpoint.","uniqueKey":"assistant.external_llm.authentication_method","typeLabel":"enum\u003cstring>"},"certificate_ref":{"type":"string","description":"Integration secret identifier for the client certificate used with certificate authentication.","uniqueKey":"assistant.external_llm.certificate_ref","typeLabel":"string"},"token_retrieval_url":{"type":"string","description":"URL used to retrieve an access token when certificate authentication is enabled.","uniqueKey":"assistant.external_llm.token_retrieval_url","typeLabel":"string"},"forward_metadata":{"type":"boolean","default":false,"description":"When enabled, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{\"extra_metadata\":{\"customer_name\":\"Jane\",\"account_id\":\"acct_789\",\"telnyx_agent_target\":\"+13125550100\",\"telnyx_end_user_target\":\"+13125550123\"}}`.","uniqueKey":"assistant.external_llm.forward_metadata","typeLabel":"boolean"}},"uniqueKey":"assistant.external_llm","typeLabel":"object"},"mcp_servers":{"type":"array","description":"MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.","items":{"type":"object","properties":{},"uniqueKey":"assistant.mcp_servers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"assistant.mcp_servers","typeLabel":"object[]"},"observability_settings":{"type":"object","description":"Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.","properties":{},"uniqueKey":"assistant.observability_settings","typeLabel":"object"}},"uniqueKey":"assistant","typeLabel":"object"},"greeting":{"description":"Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.\u003cvoice_id>` voices. There is a 3,000 character limit.","type":"string","example":"Hello, can you tell me your age and where you live?","uniqueKey":"greeting","typeLabel":"string"},"interruption_settings":{"type":"object","description":"Settings for handling user interruptions during assistant speech","properties":{"enable":{"type":"boolean","description":"When true, allows users to interrupt the assistant while speaking","default":true,"uniqueKey":"interruption_settings.enable","typeLabel":"boolean"}},"uniqueKey":"interruption_settings","typeLabel":"object"},"transcription":{"type":"object","description":"The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field.","properties":{"model":{"description":"The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `speechmatics/linden-1` (preview, vendor-hosted) for live streaming transcription; no auto-detect, so set `language` from Speechmatics' Realtime language list (defaults to `en`).\n- `assemblyai/universal-3-6-pro` (AssemblyAI Universal-3.6 Pro) for live streaming transcription. The legacy aliases `assemblyai/universal-3-5-pro` and `assemblyai/universal-streaming` are still accepted and run the same Universal-3.6 Pro model.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `nvidia/parakeet-v3` for multilingual transcription with automatic language detection.\n- `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based).\n- `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection.\n- `cohere/ar-stt` for non-streaming Arabic and English transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.","type":"string","enum":["deepgram/flux","flux","deepgram/nova-3","deepgram/nova-2","speechmatics/standard","speechmatics/enhanced","speechmatics/linden-1","assemblyai/universal-3-6-pro","assemblyai/universal-3-5-pro","assemblyai/universal-streaming","xai/grok-stt","soniox/stt-rt-v4","nvidia/parakeet-v3","omi-health/omi-med-stt-v1","humain/realtime","reson8/turns","cohere/ar-stt","azure/fast","azure/realtime","google/latest_long","distil-whisper/distil-large-v2","openai/whisper-large-v3-turbo"],"default":"distil-whisper/distil-large-v2","example":"distil-whisper/distil-large-v2","uniqueKey":"transcription.model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-6-pro` (and its legacy aliases `assemblyai/universal-3-5-pro` and `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; language codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`, `ur`, `ru`, `ko`, `ca`, `gl`, `ro`, `et`, `fa`, `yue`, `af`, `mr`, `zu`, `xh`, `nn`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted. For `speechmatics/linden-1`, there is no auto-detect; set a code from Speechmatics' Realtime language list (see `SpeechmaticsTranscriptionLanguage`); unset defaults to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected (unlike `speechmatics/standard`, which defaults to `en`).","uniqueKey":"transcription.language","typeLabel":"string"}},"uniqueKey":"transcription","typeLabel":"object"},"message_history":{"type":"array","description":"A list of messages to seed the conversation history before the assistant starts. Follows the same message format as the `ai_assistant_add_messages` command.","items":{"oneOf":[{"type":"object","title":"User message.","description":"Messages sent by an end user","required":["role","content"],"example":{"role":"user","content":"Hello, I would like some help."},"properties":{"role":{"description":"The role of the messages author, in this case `user`.","type":"string","enum":["user"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"description":"The contents of the user message.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.0.content","typeLabel":"string"},"metadata":{"description":"Metadata to add to the message","type":"object","uniqueKey":"message_history.items.[INDEX].oneOf.0.metadata","typeLabel":"object"}},"uniqueKey":"message_history.items.[INDEX].oneOf.0","typeLabel":"User message. · object"},{"type":"object","title":"Assistant Message","description":"Messages sent by the model in response to user messages.","required":["role"],"example":{"role":"assistant","content":"Hello, I'm John."},"properties":{"role":{"description":"The role of the messages author, in this case `assistant`.","type":"string","enum":["assistant"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"content":{"description":"The contents of the assistant message. Required unless `tool_calls`","type":"string","uniqueKey":"message_history.items.[INDEX].oneOf.1.content","typeLabel":"string"},"tool_calls":{"type":"array","description":"The tool calls generated by the model, such as function calls.","items":{"title":"Tool Call","type":"object","description":"A call to a function tool created by the model.","properties":{"id":{"description":"The ID of the tool call.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].id","typeLabel":"string"},"type":{"description":"The type of the tool. Currently, only `function` is supported.","type":"string","enum":["function"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"function":{"description":"The function that the model called.","type":"object","properties":{"name":{"type":"string","description":"The name of the function to call.","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function.name","typeLabel":"string"}},"required":["name"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls.items.[INDEX].function","typeLabel":"object"}},"required":["id","type","function"],"example":{"id":"call_123","type":"function","function":{"name":"get_weather"}},"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls.items.[INDEX]","typeLabel":"Tool Call · object"},"uniqueKey":"message_history.items.[INDEX].oneOf.1.tool_calls","typeLabel":"Tool Call · object[]"},"metadata":{"description":"Metadata to add to the message","type":"object","uniqueKey":"message_history.items.[INDEX].oneOf.1.metadata","typeLabel":"object"}},"uniqueKey":"message_history.items.[INDEX].oneOf.1","typeLabel":"Assistant Message · object"},{"type":"object","title":"Tool Message","required":["role","content","tool_call_id"],"example":{"role":"tool","content":"Hello, I'm John.","tool_call_id":"call_123"},"properties":{"role":{"description":"The role of the messages author, in this case `tool`.","type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"content":{"description":"The contents of the tool message.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.2.content","typeLabel":"string"},"tool_call_id":{"description":"Tool call that this message is responding to.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"metadata":{"description":"Metadata to add to the message","type":"object","uniqueKey":"message_history.items.[INDEX].oneOf.2.metadata","typeLabel":"object"}},"uniqueKey":"message_history.items.[INDEX].oneOf.2","typeLabel":"Tool Message · object"},{"type":"object","title":"System Message","description":"Developer-provided instructions that the model should follow, regardless of messages sent by the user.","required":["role","content"],"example":{"role":"system","content":"Get the user's favorite color"},"properties":{"role":{"description":"The role of the messages author, in this case `system`.","type":"string","enum":["system"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.3.role","typeLabel":"enum\u003cstring>"},"content":{"description":"The contents of the system message.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.3.content","typeLabel":"string"},"metadata":{"description":"Metadata to add to the message","type":"object","uniqueKey":"message_history.items.[INDEX].oneOf.3.metadata","typeLabel":"object"}},"uniqueKey":"message_history.items.[INDEX].oneOf.3","typeLabel":"System Message · object"},{"type":"object","title":"Developer Message","description":"Developer-provided instructions that the model should follow, regardless of messages sent by the user.","required":["role","content"],"example":{"role":"developer","content":"Get the user's favorite color"},"properties":{"role":{"description":"The role of the messages author, in this case developer.","type":"string","enum":["developer"],"isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.4.role","typeLabel":"enum\u003cstring>"},"content":{"description":"The contents of the developer message.","type":"string","isRequired":true,"uniqueKey":"message_history.items.[INDEX].oneOf.4.content","typeLabel":"string"},"metadata":{"description":"Metadata to add to the message","type":"object","uniqueKey":"message_history.items.[INDEX].oneOf.4.metadata","typeLabel":"object"}},"uniqueKey":"message_history.items.[INDEX].oneOf.4","typeLabel":"Developer Message · object"}],"uniqueKey":"message_history.items.[INDEX]","typeLabel":"User message. · object | Assistant Message · object | Tool Message · object | System Message · object | Developer Message · object"},"default":[],"uniqueKey":"message_history","typeLabel":"(User message. · object | Assistant Message · object | Tool Message · object | System Message · object | Developer Message · object)[]"},"send_message_history_updates":{"type":"boolean","description":"When `true`, a `call.ai_gather.message_history_updated` webhook carrying the full message history is sent each time the conversation message history is updated. The assistant's own `telephony_settings.send_message_history_updates` overrides this value when it is set.","default":false,"uniqueKey":"send_message_history_updates","typeLabel":"boolean"},"participants":{"type":"array","description":"A list of participants to add to the conversation when it starts.","items":{"type":"object","required":["id","role"],"properties":{"id":{"type":"string","description":"The call_control_id of the participant to add to the conversation.","example":"v3:abc123def456","isRequired":true,"uniqueKey":"participants.items.[INDEX].id","typeLabel":"string"},"role":{"type":"string","description":"The role of the participant in the conversation.","enum":["user"],"example":"user","isRequired":true,"uniqueKey":"participants.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Display name for the participant.","example":"John Doe","uniqueKey":"participants.items.[INDEX].name","typeLabel":"string"},"on_hangup":{"type":"string","description":"Determines what happens to the conversation when this participant hangs up.","enum":["continue_conversation","end_conversation"],"default":"continue_conversation","example":"continue_conversation","uniqueKey":"participants.items.[INDEX].on_hangup","typeLabel":"enum\u003cstring>"}},"uniqueKey":"participants.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"participants","typeLabel":"object[]"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","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"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"greeting":"Hello, can you tell me your age and where you live?","interruption_settings":{"enable":true},"transcription":{"model":"distil-whisper/distil-large-v2","language":"\u003cstring>"},"message_history":[],"send_message_history_updates":false,"participants":[],"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"c6b43808-4d1a-4a99-988b-4c72e9a67bf8":{"description":"Successful response upon making a call control command that includes conversation_id.","content":{"application/json":{"schema":{"type":"object","title":"Call Control Command Response With Conversation ID","properties":{"data":{"type":"object","title":"Call Control Command Result With Conversation ID","example":{"result":"ok","conversation_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"},"properties":{"result":{"type":"string","example":"ok","uniqueKey":"data.result","typeLabel":"string"},"conversation_id":{"type":"string","format":"uuid","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the conversation created by the command.","uniqueKey":"data.conversation_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"data","typeLabel":"Call Control Command Result With Conversation ID · object"}},"uniqueKey":"","typeLabel":"Call Control Command Response With Conversation ID · object"},"examples":{"Example":{"title":"Example","value":{"data":{"result":"ok","conversation_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a62b6a02-ec32-46e3-9758-58a241852fe7":{"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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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","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"},"1ef3010c-302b-4864-a9e1-cdce5e134383":{"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":{"bcc523b0-9e21-469e-85b8-03e709ed2323":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0635ec9f-42f5-401e-98f7-c9c2b6ed8b0b":{"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 AI Assistant - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T06:52:23.088Z","originalFileLocation":"api-reference/call-commands/start-ai-assistant.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 an AI assistant on the call. Expected Webhooks: - call.conversation.created includes conversation_id during startup - call.conversation.ended - call.conversation_insights.generated\">\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 AI Assistant - 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-ai-assistant\">\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=Call+Commands+API\u0026amp;title=Start+AI+Assistant\u0026amp;description=Start+an+AI+assistant+on+the+call.%0A%0A**Expected+Webhooks%3A**%0A%0A-+%5B%60call.conversation.created%60%5D%28%2Fapi-reference%2Fcallbacks%2Fcall-conversation-created%29+includes+%60conver\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=e8ef4bda411252f583c77ade1b926d76da5040ba44d48d05584fd357896705d6\">\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 AI Assistant - 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=Call+Commands+API\u0026amp;title=Start+AI+Assistant\u0026amp;description=Start+an+AI+assistant+on+the+call.%0A%0A**Expected+Webhooks%3A**%0A%0A-+%5B%60call.conversation.created%60%5D%28%2Fapi-reference%2Fcallbacks%2Fcall-conversation-created%29+includes+%60conver\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=e8ef4bda411252f583c77ade1b926d76da5040ba44d48d05584fd357896705d6\">\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-ai-assistant\">\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-ai-assistant.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-ai-assistant#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant\",\"name\":\"Start AI Assistant\",\"description\":\"Start an AI assistant on the call. Expected Webhooks: - call.conversation.created includes conversation_id during startup - call.conversation.ended - call.conversation_insights.generated\",\"dateModified\":\"2026-11-07T06:52:23.088Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant#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 AI Assistant\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant#apireference\",\"headline\":\"Start AI Assistant\",\"name\":\"Start AI Assistant\",\"description\":\"Start an AI assistant on the call. Expected Webhooks: - call.conversation.created includes conversation_id during startup - call.conversation.ended - call.conversation_insights.generated\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/start-ai-assistant#webpage\"},\"dateModified\":\"2026-11-07T06:52:23.088Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","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":"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","description":"\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","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","description":"Emitted when a conversation is created for a call, including when an AI assistant starts automatically after an `answer` command with `assistant.id` or a `dial` command with `assistant.id`, or through `ai_assistant_start` or `gather_using_ai`. Read `data.payload.conversation_id` and correlate it with `data.payload.call_control_id`.\n\nFor the answer-with-assistant flow, the `answer` response does not include the conversation ID. This webhook supplies it during assistant startup without waiting for `call.conversation.ended` or polling the Conversations API. It is delivered to the configured Call Control webhook URL and does not require `send_message_history_updates`.\n\nThe event indicates that the conversation was created; it does not confirm that the assistant is ready to speak or that greeting audio has started.\n\nThis webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.","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","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","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 AI Assistant - Telnyx","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BUDYNlhG.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","AssistantPageLink-9EK5IAXV.js"]}