Dial a number or SIP URI from a given connection. A successful response will include a call_leg_id which can be used to correlate the command with subsequent webhooks.
To place the call with an AI assistant from the start, include assistant.id and any per-call overrides in the assistant object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers.
Expected Webhooks:
call.initiated
call.answered or call.hangup
call.conversation.created when the requested assistant conversation is created, or call.conversation.start_failed when it could not be started after the called party answered
call.hold and call.unhold if the call is held/unheld
call.machine.detection.ended if answering_machine_detection was requested
call.machine.greeting.ended if answering_machine_detection was requested to detect the end of machine greeting
call.machine.premium.detection.ended if answering_machine_detection=premium was requested
call.machine.premium.greeting.ended if answering_machine_detection=premium was requested and a beep was detected
call.machine.premium.call_screening.detected if answering_machine_detection=premium_ios_call_screening_detection was requested and an Apple Call Screening tone was detected
call.deepfake_detection.result if deepfake_detection was enabled
call.deepfake_detection.error if deepfake_detection was enabled and an error occurred
streaming.started, streaming.stopped or streaming.failed if stream_url was set
When the record parameter is set to record-from-answer, the response will include a recording_id field.
POST
/
calls
JavaScript
import Telnyx from 'telnyx';const client = new Telnyx({ apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted});const response = await client.calls.dial({ connection_id: '7267xxxxxxxxxxxxxx', from: '+18005550101', to: '+18005550100 or sip:[email protected];secure=srtp',});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.dial(
connection_id="7267xxxxxxxxxxxxxx",
from_="+18005550101",
to="+18005550100 or sip:[email protected];secure=srtp",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Calls.Dial(context.TODO(), telnyx.CallDialParams{
ConnectionID: "7267xxxxxxxxxxxxxx",
From: "+18005550101",
To: telnyx.CallDialParamsToUnion{
OfString: telnyx.String("+18005550100 or sip:[email protected];secure=srtp"),
},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.calls.CallDialParams;
import com.telnyx.sdk.models.calls.CallDialResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
CallDialParams params = CallDialParams.builder()
.connectionId("7267xxxxxxxxxxxxxx")
.from("+18005550101")
.to("+18005550100 or sip:[email protected];secure=srtp")
.build();
CallDialResponse response = client.calls().dial(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.dial(
connection_id: "7267xxxxxxxxxxxxxx",
from: "+18005550101",
to: "+18005550100 or sip:[email protected];secure=srtp"
)
puts(response)
The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings. For SIP URI destinations, append ;secure=true or ;secure=srtp to enable SRTP media encryption for that endpoint, or ;secure=dtls to enable DTLS media encryption for that endpoint. If media_encryption is set to SRTP or DTLS, it takes precedence over any per-endpoint secure URI parameter. For a single string destination, you may append a comma followed by DTMF digits (e.g. +18004247767,200) to play those digits as DTMF once the called party answers — equivalent to setting send_digits_on_answer separately. If both are present, the explicit send_digits_on_answer parameter takes precedence. This shorthand is not supported when to is an array.
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.
Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on answer and dial. It uses public field names (url, dtmf_detection, greeting, voice, language, etc.) and maps them to the underlying Conversation Relay action. client_state, tts_language, and transcription_language inside this object are ignored; use the parent command's client_state and command_id fields instead.
The to number of an active inbound call, in +E164 format. Telnyx checks whether there is currently an active inbound call where to matches this diversion value and from matches the from number supplied for this request. If such a call exists, the from number is treated as verified (since it is already on an active inbound call to you) and can be used as the caller id for this outbound call.
The from_display_name string to be used as the caller id name (SIP From Display Name) presented to the destination (to number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the from field.
Indicates the privacy level to be used for the call. When set to id, caller ID information (name and number) will be hidden from the called party. When set to none or omitted, caller ID will be shown normally.
The URL of a file to be played back to the callee when the call is answered. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request.
DTMF digits to send automatically after the called party answers. Useful for reaching an extension behind an IVR (e.g. "200" to dial extension 200 once the called party picks up). Allowed characters: 0-9, A-D, w (0.5s pause), W (1s pause), *, #. Maximum 64 characters. When omitted, no automatic DTMF is sent. May also be supplied inline by appending ,<digits> to to (e.g. to=+18004247767,200); if both forms are present, this explicit field takes precedence.
The media_name of a file to be played back to the callee when the call is answered. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
The number of seconds that Telnyx will wait for the call to be answered by the destination to which it is being called. If the timeout is reached before an answer is received, the call will hangup and a call.hangup webhook with a hangup_cause of timeout will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds.
Whether to keep trying the remaining routing paths (e.g. alternate providers/gateways) for the same destination after timeout_secs is reached for the current attempt. When set to false, reaching timeout_secs aborts the entire dial attempt and the call.hangup webhook reports a hangup_cause of no_answer instead of timeout.
Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call will hangup and a call.hangup webhook with a hangup_cause of time_limit will be sent. For example, by setting a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length.
Enables Answering Machine Detection. Telnyx offers Premium and Standard detections. With Premium detection, when a call is answered, Telnyx runs real-time detection and sends a call.machine.premium.detection.ended webhook with one of the following results: human_residence, human_business, machine, silence or fax_detected. If we detect a beep, we also send a call.machine.premium.greeting.ended webhook with the result of beep_detected. If we detect a beep before call.machine.premium.detection.ended we only send call.machine.premium.greeting.ended, and if we detect a beep after call.machine.premium.detection.ended, we send both webhooks. With Standard detection, when a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine and sends an call.machine.detection.ended webhook with the analysis result. If greeting_end or detect_words is used and a machine is detected, you will receive another call.machine.greeting.ended webhook when the answering machine greeting ends with a beep or silence. If detect_beep is used, you will only receive call.machine.greeting.ended if a beep is detected. If answering_machine_detection is set to premium_ios_call_screening_detection, Premium AMD runs with iOS Call Screening support: after an initial machine result, Telnyx listens for the iOS call-screening prompt to end or for an Apple Call Screening tone, sends call.machine.premium.greeting.ended with result=prompt_ended or call.machine.premium.call_screening.detected with result=screening respectively. When the Apple Call Screening tone is detected, Premium AMD is restarted on the screened call and a call.machine.premium.detection.ended webhook with the post-screening classification follows.
Optional configuration parameters to modify 'answering_machine_detection' performance. Only total_analysis_time_millis and greeting_duration_millis parameters are applicable when premium is selected as answering_machine_detection. prompt_end_timeout_millis is additionally applicable when premium_ios_call_screening_detection is selected.
Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a detection service that analyzes whether the voice is AI-generated. Results are delivered via the call.deepfake_detection.result webhook.
Indicates the intent to bridge this call with the call specified in link_to. When bridge_intent is true, link_to becomes required and the from number will be overwritten by the from number from the linked call.
If supplied with the value self, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. When park_after_unbridge is set, link_to becomes required.
Defines whether media should be encrypted on the call. For SIP URI destinations, media encryption can also be requested per endpoint with the secure URI parameter: ;secure=true or ;secure=srtp enables SRTP, and ;secure=dtls enables DTLS. This parameter, when set to SRTP or DTLS, takes precedence over the per-endpoint secure value.
Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used.
A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook URLs associated with that event type will be called instead of the default webhook URL. Events not mapped here will use the default webhook URL.
A map of event types to retry policies. Each retry policy contains an array of retries_ms specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
Defines the maximum length for the recording in seconds when record is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite).
The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when record is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite).
The audio track to be recorded. Can be either both, inbound or outbound. If only single track is specified (inbound, outbound), channels configuration is ignored and it will be recorded as mono (single channel).
The role of the supervisor call. 'barge' means that supervisor call hears and is being heard by both ends of the call (caller & callee). 'whisper' means that only supervised_call_control_id hears supervisor but supervisor can hear everything. 'monitor' means that nobody can hear supervisor call, but supervisor can hear everything on the call.
When set to true, routes the call directly to the mobile device associated with the destination Telnyx Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to prevent the call from being intercepted again. Defaults to false.
Example:
true
Response
Successful response with details about a call status that includes recording_id.
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.dial({ connection_id: '7267xxxxxxxxxxxxxx', from: '+18005550101', to: '+18005550100 or sip:[email protected];secure=srtp',});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.dial(
connection_id="7267xxxxxxxxxxxxxx",
from_="+18005550101",
to="+18005550100 or sip:[email protected];secure=srtp",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Calls.Dial(context.TODO(), telnyx.CallDialParams{
ConnectionID: "7267xxxxxxxxxxxxxx",
From: "+18005550101",
To: telnyx.CallDialParamsToUnion{
OfString: telnyx.String("+18005550100 or sip:[email protected];secure=srtp"),
},
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.calls.CallDialParams;
import com.telnyx.sdk.models.calls.CallDialResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
CallDialParams params = CallDialParams.builder()
.connectionId("7267xxxxxxxxxxxxxx")
.from("+18005550101")
.to("+18005550100 or sip:[email protected];secure=srtp")
.build();
CallDialResponse response = client.calls().dial(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.dial(
connection_id: "7267xxxxxxxxxxxxxx",
from: "+18005550101",
to: "+18005550100 or sip:[email protected];secure=srtp"
)
puts(response)
{"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":""},"chroma":{"liveDeploymentHistoryId":"6ae4ed457ca9272f171b11b1","collectionId":"ebeb81c3-2805-46cf-a75c-aa7e47f3c730","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4ed457ca9272f171b11b1"},"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":"6ae4eef91af8f8b3409d37a1","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"API Reference","count":552},{"language":"default","tag":"Other APIs","count":402},{"language":"default","tag":"AI","count":382},{"language":"default","tag":"Messaging","count":353},{"language":"default","tag":"Numbers","count":287},{"language":"default","tag":"Agent Platform","count":218},{"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[class*=sidebar] [class*=badge],[class*=sidebar] [class*=tag],nav [class*=badge],nav [class*=tag]{font-size:.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\"]),#navbar div:has(>div>.nav-tabs>a.nav-tabs-item:first-child:last-child){display:none}.nav-tabs a.nav-tabs-item:not([aria-current=location]){display:none}#mobile-nav #navigation-items>div:has(>div>button[aria-haspopup=menu]),#mobile-nav [data-component-part=products-selector-trigger],#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 .tx-dir-suite-head,#mobile-nav .tx-mobile-directory a{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}}:is(#tx-directory, .tx-mobile-directory){margin:0 0 .5rem;padding:0 .5rem 0 1rem}:is(#tx-directory, .tx-mobile-directory) .tx-dir-label{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:.55;margin: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:.875rem;line-height:1.25rem;padding:.35rem .5rem;border-radius:.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/.04)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-link[aria-current=page]{color:#00b688;background:0 0;box-shadow:none;font-weight:400;text-shadow:-.2px 0 0 currentColor,.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/.06)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-link[aria-current=page]{color:#5eead4;background:0 0;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:.45;background:0 0;color:inherit}:is(#tx-directory, .tx-mobile-directory) .tx-dir-soon sup{font-size:.6rem;line-height:1;letter-spacing:.05em;text-transform:uppercase;margin-left:.4rem;vertical-align:super}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite{margin-bottom:.15rem}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head{display:flex;align-items:center;cursor:pointer;user-select:none;font-size:.875rem;line-height:1.25rem;font-weight:500;padding:.35rem .5rem;border-radius:.375rem;color:rgb(55 65 81)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head,html.dark :is(#tx-directory, .tx-mobile-directory) li a{color:rgb(156 163 175)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head:hover,:is(#tx-directory, .tx-mobile-directory) li a:hover{color:rgb(17 24 39);background:rgb(0 0 0/.04)}html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head:hover,html.dark :is(#tx-directory, .tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head,html.dark :is(#tx-directory, .tx-mobile-directory) li a:hover{color:rgb(229 231 235);background:rgb(255 255 255/.06)}:is(#tx-directory, .tx-mobile-directory) .tx-dir-suite-head::after{content:'';width:.42rem;height:.42rem;margin-left:auto;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;flex-shrink:0;opacity:.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/.04);font-weight:600}: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:.15rem 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:.875rem;line-height:1.25rem;padding:.3rem .5rem .3rem 1.6rem;border-radius:.375rem;color:rgb(107 114 128);text-decoration:none}:is(#tx-directory, .tx-mobile-directory) .tx-dir-section-item{font-weight:500}:is(#tx-directory, .tx-mobile-directory) .tx-dir-icon{display:inline-block;width:1rem;height:1rem;flex-shrink:0;margin-right:.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-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:-.01em;margin:1.2rem 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:.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 .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 .2rem;opacity:.85}.txd-main .txd-p{margin:.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-follow-up a:hover,.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 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-area-select,.rm-collapse,.rm-search input{min-height:2.5rem;font-size:.875rem}.rm-area-select,.rm-clear,.rm-collapse,.rm-empty button,.rm-search input{color:inherit;background:0 0;border:1px solid var(--rm-border);border-radius:.5rem;font:inherit}.rm-empty button{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{padding:.5rem .75rem}.rm-clear,.rm-collapse,.rm-empty button{font-weight:650;cursor:pointer}.rm-empty button{padding:.5rem .75rem}.rm-area-select:focus-visible,.rm-clear:focus-visible,.rm-collapse:focus-visible,.rm-empty button:focus-visible,.rm-search input:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-color:#00b688;box-shadow:none!important}.rm-clear:hover,.rm-collapse:hover,.rm-empty button:hover{color:#08785d;background:var(--rm-soft)}.dark .rm-clear:hover,.dark .rm-collapse: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-clear[hidden],.rm-collapse[hidden],.rm-empty[hidden],.rm-explorer h2[hidden],.rm-resource-list tbody tr[hidden],.rm-resource-list[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:0 0;border:0;cursor:pointer}.rm-section-toggle:focus-visible,.rm-section-toggle:hover{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-resource-list thead,.rm-shortcut{display:none}.rm-area-select,.rm-area-wrap{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 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 a,.rm-resource-list tbody td code{min-width:0;white-space:normal!important;overflow-wrap:anywhere}}@media (prefers-reduced-motion:reduce){.rm-explorer *,.rm-explorer ::after,.rm-explorer ::before{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%}}.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/dial","slug":"/api-reference/call-commands/dial","pageMetadata":{"title":"Dial","description":"Dial a number or SIP URI from a given connection. A successful response will include a `call_leg_id` which can be used to correlate the command with subsequent webhooks.\n\nTo place the call with an AI assistant from the start, include `assistant.id` and any per-call overrides in the `assistant` object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.conversation.created` when the requested assistant conversation is created, or `call.conversation.start_failed` when it could not be started after the called party answered\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.machine.premium.call_screening.detected` if `answering_machine_detection=premium_ios_call_screening_detection` was requested and an Apple Call Screening tone was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls","href":"/api-reference/call-commands/dial","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Dial a number or SIP URI from a given connection. A successful response will include a \", _jsx(_components.code, {\n children: \"call_leg_id\"\n }), \" which can be used to correlate the command with subsequent webhooks.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"To place the call with an AI assistant from the start, include \", _jsx(_components.code, {\n children: \"assistant.id\"\n }), \" and any per-call overrides in the \", _jsx(_components.code, {\n children: \"assistant\"\n }), \" object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Expected Webhooks:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"call.initiated\"\n })\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.answered\"\n }), \" or \", _jsx(_components.code, {\n children: \"call.hangup\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.conversation.created\"\n }), \" when the requested assistant conversation is created, or \", _jsx(_components.code, {\n children: \"call.conversation.start_failed\"\n }), \" when it could not be started after the called party answered\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.hold\"\n }), \" and \", _jsx(_components.code, {\n children: \"call.unhold\"\n }), \" if the call is held/unheld\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.machine.detection.ended\"\n }), \" if \", _jsx(_components.code, {\n children: \"answering_machine_detection\"\n }), \" was requested\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.machine.greeting.ended\"\n }), \" if \", _jsx(_components.code, {\n children: \"answering_machine_detection\"\n }), \" was requested to detect the end of machine greeting\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.machine.premium.detection.ended\"\n }), \" if \", _jsx(_components.code, {\n children: \"answering_machine_detection=premium\"\n }), \" was requested\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.machine.premium.greeting.ended\"\n }), \" if \", _jsx(_components.code, {\n children: \"answering_machine_detection=premium\"\n }), \" was requested and a beep was detected\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.machine.premium.call_screening.detected\"\n }), \" if \", _jsx(_components.code, {\n children: \"answering_machine_detection=premium_ios_call_screening_detection\"\n }), \" was requested and an Apple Call Screening tone was detected\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.deepfake_detection.result\"\n }), \" if \", _jsx(_components.code, {\n children: \"deepfake_detection\"\n }), \" was enabled\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"call.deepfake_detection.error\"\n }), \" if \", _jsx(_components.code, {\n children: \"deepfake_detection\"\n }), \" was enabled and an error occurred\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"streaming.started\"\n }), \", \", _jsx(_components.code, {\n children: \"streaming.stopped\"\n }), \" or \", _jsx(_components.code, {\n children: \"streaming.failed\"\n }), \" if \", _jsx(_components.code, {\n children: \"stream_url\"\n }), \" was set\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When the \", _jsx(_components.code, {\n children: \"record\"\n }), \" parameter is set to \", _jsx(_components.code, {\n children: \"record-from-answer\"\n }), \", the response will include a \", _jsx(_components.code, {\n children: \"recording_id\"\n }), \" field.\"]\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":"Dial","description":"Dial a number or SIP URI from a given connection. A successful response will include a `call_leg_id` which can be used to correlate the command with subsequent webhooks.\n\nTo place the call with an AI assistant from the start, include `assistant.id` and any per-call overrides in the `assistant` object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.conversation.created` when the requested assistant conversation is created, or `call.conversation.start_failed` when it could not be started after the called party answered\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.machine.premium.call_screening.detected` if `answering_machine_detection=premium_ios_call_screening_detection` was requested and an Apple Call Screening tone was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls","href":"/api-reference/call-commands/dial","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/7ad13bb6588be22f/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/3d8fe29c5f30f1bc/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/3de33ceedb29f568/home-directory.js","/_mintlify/custom/telnyx/da7a630a1adf8a7a/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":"Dial","description":"Dial a number or SIP URI from a given connection. A successful response will include a `call_leg_id` which can be used to correlate the command with subsequent webhooks.\n\nTo place the call with an AI assistant from the start, include `assistant.id` and any per-call overrides in the `assistant` object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.conversation.created` when the requested assistant conversation is created, or `call.conversation.start_failed` when it could not be started after the called party answered\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.machine.premium.call_screening.detected` if `answering_machine_detection=premium_ios_call_screening_detection` was requested and an Apple Call Screening tone was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n","operationId":"DialCall","tags":["Call Commands"],"requestBody":"647d1bcf-0e31-4d81-b5bd-1e740e009a5a","responses":{"200":"b332cc54-7df8-44be-a0eb-8694e58ce3b1","400":"fc173dca-0581-4a72-93de-90d145efbba5","422":"cb33ef90-0caa-4680-87c6-34f4bec1cd63","429":"3be306b5-864b-4869-993b-6bc963247466","500":"09b601ec-07cb-4700-adf9-ad94c08d2ac1","503":"875e8c4a-44c4-46b8-a516-dc22a4d065ee","default":"17b6bca0-0a95-476f-9518-5b2aa3e90863"},"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.dial({\n connection_id: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:[email protected];secure=srtp',\n});\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.dial(\n connection_id=\"7267xxxxxxxxxxxxxx\",\n from_=\"+18005550101\",\n to=\"+18005550100 or sip:[email protected];secure=srtp\",\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.Dial(context.TODO(), telnyx.CallDialParams{\n\t\tConnectionID: \"7267xxxxxxxxxxxxxx\",\n\t\tFrom: \"+18005550101\",\n\t\tTo: telnyx.CallDialParamsToUnion{\n\t\t\tOfString: telnyx.String(\"+18005550100 or sip:[email protected];secure=srtp\"),\n\t\t},\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.CallDialParams;\nimport com.telnyx.sdk.models.calls.CallDialResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n CallDialParams params = CallDialParams.builder()\n .connectionId(\"7267xxxxxxxxxxxxxx\")\n .from(\"+18005550101\")\n .to(\"+18005550100 or sip:[email protected];secure=srtp\")\n .build();\n CallDialResponse response = client.calls().dial(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.dial(\n connection_id: \"7267xxxxxxxxxxxxxx\",\n from: \"+18005550101\",\n to: \"+18005550100 or sip:[email protected];secure=srtp\"\n)\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Calls\\StreamBidirectionalCodec;\nuse Telnyx\\Calls\\StreamBidirectionalMode;\nuse Telnyx\\Calls\\StreamBidirectionalSamplingRate;\nuse Telnyx\\Calls\\StreamBidirectionalTargetLegs;\nuse Telnyx\\Calls\\StreamCodec;\nuse Telnyx\\Calls\\Actions\\GoogleTranscriptionLanguage;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->dial(\n connectionID: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:[email protected];secure=srtp',\n answeringMachineDetection: 'detect',\n answeringMachineDetectionConfig: [\n 'afterGreetingSilenceMillis' => 1000,\n 'betweenWordsSilenceMillis' => 1000,\n 'greetingDurationMillis' => 1000,\n 'greetingSilenceDurationMillis' => 2000,\n 'greetingTotalAnalysisTimeMillis' => 50000,\n 'initialSilenceMillis' => 1000,\n 'maximumNumberOfWords' => 1000,\n 'maximumWordLengthMillis' => 2000,\n 'silenceThreshold' => 512,\n 'totalAnalysisTimeMillis' => 5000,\n ],\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 audioURL: 'http://www.example.com/sounds/greeting.wav',\n billingGroupID: 'f5586561-8ff0-4291-a0ac-84fe544797bd',\n bridgeIntent: true,\n bridgeOnAnswer: true,\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conferenceConfig: [\n 'id' => '0ccc7b54-4df3-4bca-a65a-3da1ecc777f0',\n 'beepEnabled' => 'on_exit',\n 'conferenceName' => 'telnyx-conference',\n 'earlyMedia' => false,\n 'endConferenceOnExit' => true,\n 'hold' => true,\n 'holdAudioURL' => 'http://example.com/message.wav',\n 'holdMediaName' => 'my_media_uploaded_to_media_storage_api',\n 'mute' => true,\n 'softEndConferenceOnExit' => true,\n 'startConferenceOnCreate' => false,\n 'startConferenceOnEnter' => true,\n 'supervisorRole' => 'whisper',\n 'whisperCallControlIDs' => [\n 'v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ',\n 'v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw',\n ],\n ],\n conversationRelayConfig: [\n 'url' => 'wss://example.com/conversation-relay',\n 'customParameters' => ['customer_id' => 'bar'],\n 'dtmfDetection' => true,\n 'greeting' => 'Hi! Ask me anything!',\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'dtmf',\n 'interruptionSettings' => [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n 'language' => 'en-US',\n 'languages' => [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.Ultra.alloy',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n 'provider' => 'elevenlabs',\n 'structuredProvider' => ['voice_id' => 'bar', 'model_id' => 'bar'],\n 'transcriptionEngine' => 'Google',\n 'transcriptionEngineConfig' => [\n 'transcription_model' => 'bar',\n 'interim_results' => 'bar',\n 'keywords_boosting' => 'bar',\n ],\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => ['type' => 'telnyx', 'voiceSpeed' => 1],\n ],\n customHeaders: [\n ['name' => 'head_1', 'value' => 'val_1'],\n ['name' => 'head_2', 'value' => 'val_2'],\n ],\n deepfakeDetection: ['enabled' => true, 'rtpTimeout' => 30, 'timeout' => 15],\n dialogflowConfig: [\n 'analyzeSentiment' => false, 'partialAutomatedAgentReply' => false\n ],\n enableDialogflow: false,\n fromDisplayName: 'Company Name',\n linkTo: 'ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==',\n mediaEncryption: 'SRTP',\n mediaName: 'my_media_uploaded_to_media_storage_api',\n parkAfterUnbridge: 'self',\n preferredCodecs: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264',\n preventDoubleBridge: true,\n privacy: 'id',\n record: 'record-from-answer',\n recordChannels: 'single',\n recordCustomFileName: 'my_recording_file_name',\n recordFormat: 'wav',\n recordMaxLength: 1000,\n recordTimeoutSecs: 100,\n recordTrack: 'outbound',\n recordTrim: 'trim-silence',\n sendDigitsOnAnswer: 'wwww200',\n sendSilenceWhenIdle: true,\n sipAuthPassword: 'password',\n sipAuthUsername: 'username',\n sipHeaders: [['name' => 'User-to-User', 'value' => '12345']],\n sipRegion: 'Canada',\n sipTransportProtocol: 'TLS',\n soundModifications: [\n 'octaves' => 0.1, 'pitch' => 0.8, 'semitone' => -2, 'track' => 'both'\n ],\n streamAuthToken: 'your-auth-token',\n streamBidirectionalCodec: StreamBidirectionalCodec::G722,\n streamBidirectionalMode: StreamBidirectionalMode::RTP,\n streamBidirectionalSamplingRate: StreamBidirectionalSamplingRate::RATE_16000,\n streamBidirectionalTargetLegs: StreamBidirectionalTargetLegs::BOTH,\n streamCodec: StreamCodec::PCMA,\n streamEstablishBeforeCallOriginate: true,\n streamTrack: 'both_tracks',\n streamURL: 'wss://www.example.com/websocket',\n superviseCallControlID: 'v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg',\n supervisorRole: 'barge',\n timeLimitSecs: 60,\n timeoutSecs: 60,\n transcription: true,\n transcriptionConfig: [\n 'clientState' => 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n 'commandID' => '891510ac-f3e4-11e8-af5b-de00688a4901',\n 'transcriptionEngine' => 'Google',\n 'transcriptionEngineConfig' => [\n 'enableSpeakerDiarization' => true,\n 'hints' => ['string'],\n 'interimResults' => true,\n 'language' => GoogleTranscriptionLanguage::EN,\n 'maxSpeakerCount' => 4,\n 'minSpeakerCount' => 4,\n 'model' => 'latest_long',\n 'profanityFilter' => true,\n 'speechContext' => [['boost' => 1, 'phrases' => ['string']]],\n 'transcriptionEngine' => 'Google',\n 'useEnhanced' => true,\n ],\n 'transcriptionTracks' => 'both',\n ],\n webhookRetriesPolicies: [\n 'call.hangup' => ['retriesMs' => [1000, 2000, 5000]]\n ],\n webhookURL: 'https://www.example.com/server-b/',\n webhookURLMethod: 'POST',\n webhookURLs: [\n 'call.hangup' => 'https://www.example.com/webhooks/hangup',\n 'call.bridge' => 'https://www.example.com/webhooks/bridge',\n ],\n webhookURLsMethod: 'POST',\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls dial \\\n --api-key 'My API Key' \\\n --connection-id 7267xxxxxxxxxxxxxx \\\n --from +18005550101 \\\n --to '+18005550100 or sip:[email protected];secure=srtp'"}],"method":"post","type":"path","servers":["98f9771b-68f2-449f-b83a-07d37fd4949c"],"security":["7ff8a089-f4c2-47c6-8f00-ed3f4f370dc1"],"path":"/calls","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Dial","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.dial({\n connection_id: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:[email protected];secure=srtp',\n});\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.dial(\n connection_id=\"7267xxxxxxxxxxxxxx\",\n from_=\"+18005550101\",\n to=\"+18005550100 or sip:[email protected];secure=srtp\",\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.Dial(context.TODO(), telnyx.CallDialParams{\n\t\tConnectionID: \"7267xxxxxxxxxxxxxx\",\n\t\tFrom: \"+18005550101\",\n\t\tTo: telnyx.CallDialParamsToUnion{\n\t\t\tOfString: telnyx.String(\"+18005550100 or sip:[email protected];secure=srtp\"),\n\t\t},\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.CallDialParams;\nimport com.telnyx.sdk.models.calls.CallDialResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n CallDialParams params = CallDialParams.builder()\n .connectionId(\"7267xxxxxxxxxxxxxx\")\n .from(\"+18005550101\")\n .to(\"+18005550100 or sip:[email protected];secure=srtp\")\n .build();\n CallDialResponse response = client.calls().dial(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.dial(\n connection_id: \"7267xxxxxxxxxxxxxx\",\n from: \"+18005550101\",\n to: \"+18005550100 or sip:[email protected];secure=srtp\"\n)\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Calls\\StreamBidirectionalCodec;\nuse Telnyx\\Calls\\StreamBidirectionalMode;\nuse Telnyx\\Calls\\StreamBidirectionalSamplingRate;\nuse Telnyx\\Calls\\StreamBidirectionalTargetLegs;\nuse Telnyx\\Calls\\StreamCodec;\nuse Telnyx\\Calls\\Actions\\GoogleTranscriptionLanguage;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->dial(\n connectionID: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:[email protected];secure=srtp',\n answeringMachineDetection: 'detect',\n answeringMachineDetectionConfig: [\n 'afterGreetingSilenceMillis' => 1000,\n 'betweenWordsSilenceMillis' => 1000,\n 'greetingDurationMillis' => 1000,\n 'greetingSilenceDurationMillis' => 2000,\n 'greetingTotalAnalysisTimeMillis' => 50000,\n 'initialSilenceMillis' => 1000,\n 'maximumNumberOfWords' => 1000,\n 'maximumWordLengthMillis' => 2000,\n 'silenceThreshold' => 512,\n 'totalAnalysisTimeMillis' => 5000,\n ],\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 audioURL: 'http://www.example.com/sounds/greeting.wav',\n billingGroupID: 'f5586561-8ff0-4291-a0ac-84fe544797bd',\n bridgeIntent: true,\n bridgeOnAnswer: true,\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conferenceConfig: [\n 'id' => '0ccc7b54-4df3-4bca-a65a-3da1ecc777f0',\n 'beepEnabled' => 'on_exit',\n 'conferenceName' => 'telnyx-conference',\n 'earlyMedia' => false,\n 'endConferenceOnExit' => true,\n 'hold' => true,\n 'holdAudioURL' => 'http://example.com/message.wav',\n 'holdMediaName' => 'my_media_uploaded_to_media_storage_api',\n 'mute' => true,\n 'softEndConferenceOnExit' => true,\n 'startConferenceOnCreate' => false,\n 'startConferenceOnEnter' => true,\n 'supervisorRole' => 'whisper',\n 'whisperCallControlIDs' => [\n 'v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ',\n 'v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw',\n ],\n ],\n conversationRelayConfig: [\n 'url' => 'wss://example.com/conversation-relay',\n 'customParameters' => ['customer_id' => 'bar'],\n 'dtmfDetection' => true,\n 'greeting' => 'Hi! Ask me anything!',\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'dtmf',\n 'interruptionSettings' => [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n 'language' => 'en-US',\n 'languages' => [\n [\n 'language' => 'en-US',\n 'speechModel' => 'nova-3',\n 'transcriptionEngine' => 'Deepgram',\n 'transcriptionEngineConfig' => ['transcription_model' => 'bar'],\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.Ultra.alloy',\n 'voiceSettings' => [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n ],\n ],\n 'provider' => 'elevenlabs',\n 'structuredProvider' => ['voice_id' => 'bar', 'model_id' => 'bar'],\n 'transcriptionEngine' => 'Google',\n 'transcriptionEngineConfig' => [\n 'transcription_model' => 'bar',\n 'interim_results' => 'bar',\n 'keywords_boosting' => 'bar',\n ],\n 'ttsProvider' => 'telnyx',\n 'voice' => 'Telnyx.KokoroTTS.af',\n 'voiceSettings' => ['type' => 'telnyx', 'voiceSpeed' => 1],\n ],\n customHeaders: [\n ['name' => 'head_1', 'value' => 'val_1'],\n ['name' => 'head_2', 'value' => 'val_2'],\n ],\n deepfakeDetection: ['enabled' => true, 'rtpTimeout' => 30, 'timeout' => 15],\n dialogflowConfig: [\n 'analyzeSentiment' => false, 'partialAutomatedAgentReply' => false\n ],\n enableDialogflow: false,\n fromDisplayName: 'Company Name',\n linkTo: 'ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==',\n mediaEncryption: 'SRTP',\n mediaName: 'my_media_uploaded_to_media_storage_api',\n parkAfterUnbridge: 'self',\n preferredCodecs: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264',\n preventDoubleBridge: true,\n privacy: 'id',\n record: 'record-from-answer',\n recordChannels: 'single',\n recordCustomFileName: 'my_recording_file_name',\n recordFormat: 'wav',\n recordMaxLength: 1000,\n recordTimeoutSecs: 100,\n recordTrack: 'outbound',\n recordTrim: 'trim-silence',\n sendDigitsOnAnswer: 'wwww200',\n sendSilenceWhenIdle: true,\n sipAuthPassword: 'password',\n sipAuthUsername: 'username',\n sipHeaders: [['name' => 'User-to-User', 'value' => '12345']],\n sipRegion: 'Canada',\n sipTransportProtocol: 'TLS',\n soundModifications: [\n 'octaves' => 0.1, 'pitch' => 0.8, 'semitone' => -2, 'track' => 'both'\n ],\n streamAuthToken: 'your-auth-token',\n streamBidirectionalCodec: StreamBidirectionalCodec::G722,\n streamBidirectionalMode: StreamBidirectionalMode::RTP,\n streamBidirectionalSamplingRate: StreamBidirectionalSamplingRate::RATE_16000,\n streamBidirectionalTargetLegs: StreamBidirectionalTargetLegs::BOTH,\n streamCodec: StreamCodec::PCMA,\n streamEstablishBeforeCallOriginate: true,\n streamTrack: 'both_tracks',\n streamURL: 'wss://www.example.com/websocket',\n superviseCallControlID: 'v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg',\n supervisorRole: 'barge',\n timeLimitSecs: 60,\n timeoutSecs: 60,\n transcription: true,\n transcriptionConfig: [\n 'clientState' => 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n 'commandID' => '891510ac-f3e4-11e8-af5b-de00688a4901',\n 'transcriptionEngine' => 'Google',\n 'transcriptionEngineConfig' => [\n 'enableSpeakerDiarization' => true,\n 'hints' => ['string'],\n 'interimResults' => true,\n 'language' => GoogleTranscriptionLanguage::EN,\n 'maxSpeakerCount' => 4,\n 'minSpeakerCount' => 4,\n 'model' => 'latest_long',\n 'profanityFilter' => true,\n 'speechContext' => [['boost' => 1, 'phrases' => ['string']]],\n 'transcriptionEngine' => 'Google',\n 'useEnhanced' => true,\n ],\n 'transcriptionTracks' => 'both',\n ],\n webhookRetriesPolicies: [\n 'call.hangup' => ['retriesMs' => [1000, 2000, 5000]]\n ],\n webhookURL: 'https://www.example.com/server-b/',\n webhookURLMethod: 'POST',\n webhookURLs: [\n 'call.hangup' => 'https://www.example.com/webhooks/hangup',\n 'call.bridge' => 'https://www.example.com/webhooks/bridge',\n ],\n webhookURLsMethod: 'POST',\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls dial \\\n --api-key 'My API Key' \\\n --connection-id 7267xxxxxxxxxxxxxx \\\n --from +18005550101 \\\n --to '+18005550100 or sip:[email protected];secure=srtp'"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"description":"Call request","required":true,"content":{"application/json":{"schema":{"type":"object","title":"Dial Request","required":["connection_id","to","from"],"example":{"to":"+18005550100 or sip:[email protected];secure=srtp","from":"+18005550101","from_display_name":"Company Name","connection_id":"7267xxxxxxxxxxxxxx","conference_config":{"conference_name":"telnyx-conference","start_conference_on_enter":true},"audio_url":"http://www.example.com/sounds/greeting.wav","send_digits_on_answer":"wwww200","timeout_secs":60,"time_limit_secs":60,"webhook_url":"https://www.example.com/server-b/","webhook_url_method":"POST","webhook_urls":{"call.hangup":["https://www.example.com/webhooks/hangup"],"call.bridge":["https://www.example.com/webhooks/bridge"]},"webhook_urls_method":"POST","webhook_retries_policies":{"call.hangup":{"retries_ms":[1000,2000,5000]}},"answering_machine_detection":"detect","answering_machine_detection_config":{"total_analysis_time_millis":5000,"after_greeting_silence_millis":1000,"between_words_silence_millis":1000,"greeting_duration_millis":1000,"initial_silence_millis":1000,"maximum_number_of_words":1000,"maximum_word_length_millis":2000,"silence_threshold":512,"greeting_total_analysis_time_millis":50000,"greeting_silence_duration_millis":2000},"deepfake_detection":{"enabled":true,"timeout":15,"rtp_timeout":30},"custom_headers":[{"name":"head_1","value":"val_1"},{"name":"head_2","value":"val_2"}],"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","link_to":"ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==","bridge_intent":true,"bridge_on_answer":true,"media_encryption":"SRTP","sip_auth_username":"username","sip_auth_password":"password","sip_headers":[{"name":"User-to-User","value":"12345"}],"sip_transport_protocol":"TLS","stream_url":"wss://www.example.com/websocket","stream_track":"both_tracks","send_silence_when_idle":true,"enable_dialogflow":false,"dialogflow_config":{"analyze_sentiment":false,"partial_automated_agent_reply":false},"conversation_relay_config":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","language":"en-US","interruptible":"speech","interruptible_greeting":"dtmf","custom_parameters":{"customer_id":"12345"}}},"properties":{"to":{"oneOf":[{"type":"string","description":"The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings. For SIP URI destinations, append `;secure=true` or `;secure=srtp` to enable SRTP media encryption for that endpoint, or `;secure=dtls` to enable DTLS media encryption for that endpoint. If `media_encryption` is set to `SRTP` or `DTLS`, it takes precedence over any per-endpoint `secure` URI parameter. For a single string destination, you may append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits as DTMF once the called party answers — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer` parameter takes precedence. This shorthand is not supported when `to` is an array.","example":"+18005550100 or sip:[email protected];secure=srtp","isRequired":true,"uniqueKey":"to.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"to.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings. For SIP URI destinations, append `;secure=true` or `;secure=srtp` to enable SRTP media encryption for that endpoint, or `;secure=dtls` to enable DTLS media encryption for that endpoint. If `media_encryption` is set to `SRTP` or `DTLS`, it takes precedence over any per-endpoint `secure` URI parameter. For a single string destination, you may append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits as DTMF once the called party answers — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer` parameter takes precedence. This shorthand is not supported when `to` is an array.","example":["+18005550100","sip:[email protected];secure=srtp"],"isRequired":true,"uniqueKey":"to.oneOf.1","typeLabel":"string[]"}],"isRequired":true,"uniqueKey":"to","typeLabel":"string | string[]"},"from":{"description":"The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format.","type":"string","example":"+18005550101","isRequired":true,"uniqueKey":"from","typeLabel":"string"},"connection_id":{"type":"string","description":"The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.","isRequired":true,"uniqueKey":"connection_id","typeLabel":"string"},"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"},"conversation_relay_config":{"type":"object","title":"Conversation Relay Embedded Config","description":"Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on `answer` and `dial`. It uses public field names (`url`, `dtmf_detection`, `greeting`, `voice`, `language`, etc.) and maps them to the underlying Conversation Relay action. `client_state`, `tts_language`, and `transcription_language` inside this object are ignored; use the parent command's `client_state` and `command_id` fields instead.","properties":{"url":{"type":"string","pattern":"^wss?://","description":"WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.","example":"wss://example.com/conversation-relay","isRequired":true,"uniqueKey":"conversation_relay_config.url","typeLabel":"string"},"dtmf_detection":{"type":"boolean","description":"Enable DTMF detection for the relay session.","default":false,"example":true,"uniqueKey":"conversation_relay_config.dtmf_detection","typeLabel":"boolean"},"greeting":{"type":"string","description":"Text played when the relay session starts.","example":"Hi! Ask me anything!","uniqueKey":"conversation_relay_config.greeting","typeLabel":"string"},"voice":{"description":"The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.\u003cVoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.\u003cVoiceId>` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-CA-LiamNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\n- **ElevenLabs:** Use `ElevenLabs.\u003cModelId>.\u003cVoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"\u003csecret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.\u003cmodel_id>.\u003cvoice_id>`\n- **Inworld:** Use `Inworld.\u003cModelId>.\u003cVoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`.\n- **Fish Audio:** Use `FishAudio.\u003cModelId>.\u003cVoiceId>` (e.g., `FishAudio.s2.1-pro.\u003creference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID.\n- **Soniox:** Use `Soniox.\u003cModelId>.\u003cVoiceId>` (e.g., `Soniox.tts-rt-v2.Emma`). Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices). Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n- **xAI:** Use `xAI.\u003cVoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.\u003cVoiceId>` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`, `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.","type":"string","default":"Telnyx.KokoroTTS.af","example":"Telnyx.KokoroTTS.af","uniqueKey":"conversation_relay_config.voice","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"conversation_relay_config.voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"conversation_relay_config.voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"conversation_relay_config.voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"conversation_relay_config.voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"conversation_relay_config.voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"conversation_relay_config.voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"conversation_relay_config.voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"conversation_relay_config.voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"conversation_relay_config.voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"conversation_relay_config.voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"conversation_relay_config.voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"tts_provider":{"type":"string","description":"Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.","example":"telnyx","uniqueKey":"conversation_relay_config.tts_provider","typeLabel":"string"},"provider":{"type":"string","description":"Structured voice provider. Must be supplied together with `structured_provider`.","example":"elevenlabs","uniqueKey":"conversation_relay_config.provider","typeLabel":"string"},"structured_provider":{"type":"object","title":"Conversation Relay Structured Provider","description":"Provider-specific structured voice settings. Must be supplied together with `provider`; Telnyx sends the value as the nested provider configuration for Conversation Relay.","additionalProperties":true,"example":{"voice_id":"voice-id","model_id":"Default"},"uniqueKey":"conversation_relay_config.structured_provider","typeLabel":"Conversation Relay Structured Provider · object"},"language":{"type":"string","description":"Default language for both text-to-speech and speech recognition.","default":"en","example":"en-US","uniqueKey":"conversation_relay_config.language","typeLabel":"string"},"languages":{"type":"array","description":"Per-language TTS and transcription settings.","items":{"type":"object","title":"Conversation Relay Language","description":"Language-specific TTS and transcription settings for Conversation Relay.","properties":{"language":{"type":"string","description":"BCP 47 language tag for this language configuration.","example":"en-US","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].language","typeLabel":"string"},"tts_provider":{"type":"string","description":"Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.","example":"telnyx","uniqueKey":"conversation_relay_config.languages.items.[INDEX].tts_provider","typeLabel":"string"},"voice":{"type":"string","description":"Voice identifier for this language.","example":"Telnyx.KokoroTTS.af","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"conversation_relay_config.languages.items.[INDEX].voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google","uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"type":"object","title":"Conversation Relay Transcription Engine Config","description":"Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.","properties":{"interim_results":{"type":"boolean","default":false,"description":"Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_engine_config.interim_results","typeLabel":"boolean"},"eot_threshold":{"type":"number","minimum":0.5,"maximum":0.9,"default":0.7,"description":"Deepgram Flux: confidence required to end the caller's turn.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_engine_config.eot_threshold","typeLabel":"number"},"eager_eot_threshold":{"type":"number","minimum":0.3,"maximum":0.7,"description":"Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.","uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_engine_config.eager_eot_threshold","typeLabel":"number"}},"additionalProperties":true,"example":{"transcription_model":"deepgram/flux","interim_results":true,"eager_eot_threshold":0.5},"uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_engine_config","typeLabel":"Conversation Relay Transcription Engine Config · object"},"transcription_provider":{"type":"string","description":"Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.","example":"Deepgram","uniqueKey":"conversation_relay_config.languages.items.[INDEX].transcription_provider","typeLabel":"string"},"speech_model":{"type":"string","description":"Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.","example":"nova-3","uniqueKey":"conversation_relay_config.languages.items.[INDEX].speech_model","typeLabel":"string"}},"required":["language"],"uniqueKey":"conversation_relay_config.languages.items.[INDEX]","typeLabel":"Conversation Relay Language · object"},"uniqueKey":"conversation_relay_config.languages","typeLabel":"Conversation Relay Language · object[]"},"interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_config.interruptible","typeLabel":"enum\u003cstring>"},"interruptible_greeting":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_config.interruptible_greeting","typeLabel":"enum\u003cstring>"},"interruption_settings":{"type":"object","title":"Conversation Relay Interruption Settings","description":"Settings for handling caller interruptions during Conversation Relay speech.","properties":{"enable":{"type":"boolean","description":"Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.","uniqueKey":"conversation_relay_config.interruption_settings.enable","typeLabel":"boolean"},"interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_config.interruption_settings.interruptible","typeLabel":"enum\u003cstring>"},"interruptible_greeting":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_config.interruption_settings.interruptible_greeting","typeLabel":"enum\u003cstring>"},"welcome_greeting_interruptible":{"type":"string","description":"Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.","enum":["none","any","speech","dtmf"],"default":"any","example":"speech","uniqueKey":"conversation_relay_config.interruption_settings.welcome_greeting_interruptible","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conversation_relay_config.interruption_settings","typeLabel":"Conversation Relay Interruption Settings · object"},"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","A","B"],"default":"Google","example":"Google","uniqueKey":"conversation_relay_config.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"type":"object","title":"Conversation Relay Transcription Engine Config","description":"Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.","properties":{"interim_results":{"type":"boolean","default":false,"description":"Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.","uniqueKey":"conversation_relay_config.transcription_engine_config.interim_results","typeLabel":"boolean"},"eot_threshold":{"type":"number","minimum":0.5,"maximum":0.9,"default":0.7,"description":"Deepgram Flux: confidence required to end the caller's turn.","uniqueKey":"conversation_relay_config.transcription_engine_config.eot_threshold","typeLabel":"number"},"eager_eot_threshold":{"type":"number","minimum":0.3,"maximum":0.7,"description":"Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.","uniqueKey":"conversation_relay_config.transcription_engine_config.eager_eot_threshold","typeLabel":"number"}},"additionalProperties":true,"example":{"transcription_model":"deepgram/flux","interim_results":true,"eager_eot_threshold":0.5},"uniqueKey":"conversation_relay_config.transcription_engine_config","typeLabel":"Conversation Relay Transcription Engine Config · object"},"custom_parameters":{"type":"object","description":"Custom key-value parameters forwarded to the relay session as assistant dynamic variables.","additionalProperties":true,"example":{"customer_id":"12345"},"uniqueKey":"conversation_relay_config.custom_parameters","typeLabel":"object"}},"required":["url"],"example":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","voice_settings":{"type":"telnyx"},"language":"en-US","languages":[{"language":"en-US","voice":"Telnyx.Ultra.alloy","tts_provider":"telnyx","transcription_engine":"Deepgram","transcription_engine_config":{"transcription_model":"deepgram/nova-3"}}],"interruptible":"speech","interruptible_greeting":"dtmf","custom_parameters":{"customer_id":"12345"}},"uniqueKey":"conversation_relay_config","typeLabel":"Conversation Relay Embedded Config · object"},"diversion":{"description":"The `to` number of an active inbound call, in +E164 format. Telnyx checks whether there is currently an active inbound call where `to` matches this `diversion` value and `from` matches the `from` number supplied for this request. If such a call exists, the `from` number is treated as verified (since it is already on an active inbound call to you) and can be used as the caller id for this outbound call.","type":"string","example":"+18005550101","uniqueKey":"diversion","typeLabel":"string"},"from_display_name":{"description":"The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from` field.","type":"string","example":"Company Name","uniqueKey":"from_display_name","typeLabel":"string"},"privacy":{"type":"string","description":"Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally.","enum":["id","none"],"example":"id","uniqueKey":"privacy","typeLabel":"enum\u003cstring>"},"audio_url":{"type":"string","example":"http://example.com/message.wav","description":"The URL of a file to be played back to the callee when the call is answered. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request.","uniqueKey":"audio_url","typeLabel":"string"},"send_digits_on_answer":{"type":"string","example":"wwww200","description":"DTMF digits to send automatically after the called party answers. Useful for reaching an extension behind an IVR (e.g. `\"200\"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent. May also be supplied inline by appending `,\u003cdigits>` to `to` (e.g. `to=+18004247767,200`); if both forms are present, this explicit field takes precedence.","uniqueKey":"send_digits_on_answer","typeLabel":"string"},"media_name":{"type":"string","example":"my_media_uploaded_to_media_storage_api","description":"The media_name of a file to be played back to the callee when the call is answered. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.","uniqueKey":"media_name","typeLabel":"string"},"preferred_codecs":{"type":"string","description":"The list of comma-separated codecs in a preferred order for the forked media to be received.","example":"G722,PCMU,PCMA,G729,OPUS,VP8,H264","uniqueKey":"preferred_codecs","typeLabel":"string"},"timeout_secs":{"description":"The number of seconds that Telnyx will wait for the call to be answered by the destination to which it is being called. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds.","default":30,"type":"integer","example":60,"format":"int32","uniqueKey":"timeout_secs","typeLabel":"integer\u003cint32>"},"retry_on_timeout":{"description":"Whether to keep trying the remaining routing paths (e.g. alternate providers/gateways) for the same destination after `timeout_secs` is reached for the current attempt. When set to `false`, reaching `timeout_secs` aborts the entire dial attempt and the `call.hangup` webhook reports a `hangup_cause` of `no_answer` instead of `timeout`.","default":true,"type":"boolean","example":true,"uniqueKey":"retry_on_timeout","typeLabel":"boolean"},"time_limit_secs":{"description":"Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length.","default":14400,"type":"integer","example":600,"format":"int32","minimum":30,"maximum":14400,"uniqueKey":"time_limit_secs","typeLabel":"integer\u003cint32>"},"answering_machine_detection":{"description":"Enables Answering Machine Detection. Telnyx offers Premium and Standard detections. With Premium detection, when a call is answered, Telnyx runs real-time detection and sends a `call.machine.premium.detection.ended` webhook with one of the following results: `human_residence`, `human_business`, `machine`, `silence` or `fax_detected`. If we detect a beep, we also send a `call.machine.premium.greeting.ended` webhook with the result of `beep_detected`. If we detect a beep before `call.machine.premium.detection.ended` we only send `call.machine.premium.greeting.ended`, and if we detect a beep after `call.machine.premium.detection.ended`, we send both webhooks. With Standard detection, when a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine and sends an `call.machine.detection.ended` webhook with the analysis result. If `greeting_end` or `detect_words` is used and a `machine` is detected, you will receive another `call.machine.greeting.ended` webhook when the answering machine greeting ends with a beep or silence. If `detect_beep` is used, you will only receive `call.machine.greeting.ended` if a beep is detected. If `answering_machine_detection` is set to `premium_ios_call_screening_detection`, Premium AMD runs with iOS Call Screening support: after an initial `machine` result, Telnyx listens for the iOS call-screening prompt to end or for an Apple Call Screening tone, sends `call.machine.premium.greeting.ended` with `result=prompt_ended` or `call.machine.premium.call_screening.detected` with `result=screening` respectively. When the Apple Call Screening tone is detected, Premium AMD is restarted on the screened call and a `call.machine.premium.detection.ended` webhook with the post-screening classification follows.","default":"disabled","type":"string","enum":["premium","premium_ios_call_screening_detection","detect","detect_beep","detect_words","greeting_end","disabled"],"uniqueKey":"answering_machine_detection","typeLabel":"enum\u003cstring>"},"answering_machine_detection_config":{"description":"Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis` and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection. `prompt_end_timeout_millis` is additionally applicable when `premium_ios_call_screening_detection` is selected.","type":"object","properties":{"total_analysis_time_millis":{"description":"Maximum timeout threshold for overall detection.","default":3500,"type":"integer","example":5000,"format":"int32","uniqueKey":"answering_machine_detection_config.total_analysis_time_millis","typeLabel":"integer\u003cint32>"},"beep_detection_profile":{"description":"Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default profile.","default":"both","type":"string","example":"freq_only","enum":["both","freq_only"],"uniqueKey":"answering_machine_detection_config.beep_detection_profile","typeLabel":"enum\u003cstring>"},"beep_min_frequency_hz":{"description":"Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile is in use. Only used when beep detection is active.","type":"integer","example":550,"format":"int32","minimum":200,"maximum":4000,"uniqueKey":"answering_machine_detection_config.beep_min_frequency_hz","typeLabel":"integer\u003cint32>"},"beep_max_frequency_hz":{"description":"Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when beep detection is active.","type":"integer","example":2000,"format":"int32","minimum":200,"maximum":4000,"uniqueKey":"answering_machine_detection_config.beep_max_frequency_hz","typeLabel":"integer\u003cint32>"},"beep_min_tone_duration_millis":{"description":"Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such as call-progress blips. Only used when beep detection is active.","type":"integer","example":300,"format":"int32","minimum":50,"maximum":5000,"uniqueKey":"answering_machine_detection_config.beep_min_tone_duration_millis","typeLabel":"integer\u003cint32>"},"beep_spectral_confirmation":{"description":"When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used when beep detection is active.","type":"boolean","example":true,"uniqueKey":"answering_machine_detection_config.beep_spectral_confirmation","typeLabel":"boolean"},"beep_spectral_window_millis":{"description":"Length of the spectral confirmation window, in milliseconds. Only used when beep detection is active.","type":"integer","example":100,"format":"int32","minimum":20,"maximum":1000,"uniqueKey":"answering_machine_detection_config.beep_spectral_window_millis","typeLabel":"integer\u003cint32>"},"beep_spectral_min_purity":{"description":"Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed tones such as ringback, which combines two frequencies. Only used when beep detection is active.","type":"number","example":0.8,"minimum":0,"maximum":1,"uniqueKey":"answering_machine_detection_config.beep_spectral_min_purity","typeLabel":"number"},"beep_spectral_reject_fax_cng":{"description":"When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when beep detection is active.","type":"boolean","example":true,"uniqueKey":"answering_machine_detection_config.beep_spectral_reject_fax_cng","typeLabel":"boolean"},"after_greeting_silence_millis":{"description":"Silence duration threshold after a greeting message or voice for it be considered human.","default":800,"type":"integer","example":1000,"format":"int32","uniqueKey":"answering_machine_detection_config.after_greeting_silence_millis","typeLabel":"integer\u003cint32>"},"between_words_silence_millis":{"description":"Maximum threshold for silence between words.","default":50,"type":"integer","example":100,"format":"int32","uniqueKey":"answering_machine_detection_config.between_words_silence_millis","typeLabel":"integer\u003cint32>"},"greeting_duration_millis":{"description":"Maximum threshold of a human greeting. If greeting longer than this value, considered machine.","default":3500,"type":"integer","example":1500,"format":"int32","uniqueKey":"answering_machine_detection_config.greeting_duration_millis","typeLabel":"integer\u003cint32>"},"initial_silence_millis":{"description":"If initial silence duration is greater than this value, consider it a machine.","default":3500,"type":"integer","example":1800,"format":"int32","uniqueKey":"answering_machine_detection_config.initial_silence_millis","typeLabel":"integer\u003cint32>"},"maximum_number_of_words":{"description":"If number of detected words is greater than this value, consder it a machine.","default":5,"type":"integer","example":3,"format":"int32","uniqueKey":"answering_machine_detection_config.maximum_number_of_words","typeLabel":"integer\u003cint32>"},"maximum_word_length_millis":{"description":"If a single word lasts longer than this threshold, consider it a machine.","default":3500,"type":"integer","example":2000,"format":"int32","uniqueKey":"answering_machine_detection_config.maximum_word_length_millis","typeLabel":"integer\u003cint32>"},"silence_threshold":{"description":"Minimum noise threshold for any analysis.","default":256,"type":"integer","example":512,"format":"int32","uniqueKey":"answering_machine_detection_config.silence_threshold","typeLabel":"integer\u003cint32>"},"greeting_total_analysis_time_millis":{"description":"If machine already detected, maximum timeout threshold to determine the end of the machine greeting.","default":5000,"type":"integer","example":7500,"format":"int32","uniqueKey":"answering_machine_detection_config.greeting_total_analysis_time_millis","typeLabel":"integer\u003cint32>"},"greeting_silence_duration_millis":{"description":"If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended.","default":1500,"type":"integer","example":2000,"format":"int32","uniqueKey":"answering_machine_detection_config.greeting_silence_duration_millis","typeLabel":"integer\u003cint32>"},"prompt_end_timeout_millis":{"description":"Maximum time Telnyx waits, in milliseconds, for the iOS call-screening prompt to end after Premium AMD initially detects a `machine`. Used when `answering_machine_detection` is `premium_ios_call_screening_detection`. Defaults to 5000 milliseconds.","default":5000,"type":"integer","example":5000,"format":"int32","minimum":1000,"maximum":120000,"uniqueKey":"answering_machine_detection_config.prompt_end_timeout_millis","typeLabel":"integer\u003cint32>"}},"uniqueKey":"answering_machine_detection_config","typeLabel":"object"},"deepfake_detection":{"description":"Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a detection service that analyzes whether the voice is AI-generated. Results are delivered via the `call.deepfake_detection.result` webhook.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean","default":false,"description":"Whether deepfake detection is enabled.","isRequired":true,"uniqueKey":"deepfake_detection.enabled","typeLabel":"boolean"},"timeout":{"type":"integer","format":"int32","default":15,"minimum":5,"maximum":60,"description":"Maximum time in seconds to wait for a detection result before timing out.","uniqueKey":"deepfake_detection.timeout","typeLabel":"integer\u003cint32>"},"rtp_timeout":{"type":"integer","format":"int32","default":30,"minimum":5,"maximum":120,"description":"Maximum time in seconds to wait for RTP audio before timing out. If no audio is received within this window, detection stops with an error.","uniqueKey":"deepfake_detection.rtp_timeout","typeLabel":"integer\u003cint32>"}},"uniqueKey":"deepfake_detection","typeLabel":"object"},"conference_config":{"description":"Optional configuration parameters to dial new participant into a conference.","type":"object","properties":{"id":{"description":"Conference ID to be joined","type":"string","example":"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0","format":"uuid","uniqueKey":"conference_config.id","typeLabel":"string\u003cuuid>"},"conference_name":{"description":"Conference name to be joined","type":"string","example":"telnyx-conference","uniqueKey":"conference_config.conference_name","typeLabel":"string"},"early_media":{"description":"Controls the moment when dialled call is joined into conference. If set to `true` user will be joined as soon as media is available (ringback). If `false` user will be joined when call is answered. Defaults to `true`","type":"boolean","example":false,"default":true,"uniqueKey":"conference_config.early_media","typeLabel":"boolean"},"end_conference_on_exit":{"description":"Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".","example":true,"type":"boolean","uniqueKey":"conference_config.end_conference_on_exit","typeLabel":"boolean"},"soft_end_conference_on_exit":{"description":"Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".","example":true,"type":"boolean","uniqueKey":"conference_config.soft_end_conference_on_exit","typeLabel":"boolean"},"hold":{"description":"Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".","example":true,"type":"boolean","uniqueKey":"conference_config.hold","typeLabel":"boolean"},"hold_audio_url":{"type":"string","example":"http://example.com/message.wav","description":"The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\".","uniqueKey":"conference_config.hold_audio_url","typeLabel":"string"},"hold_media_name":{"type":"string","example":"my_media_uploaded_to_media_storage_api","description":"The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\".","uniqueKey":"conference_config.hold_media_name","typeLabel":"string"},"mute":{"description":"Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".","example":true,"type":"boolean","uniqueKey":"conference_config.mute","typeLabel":"boolean"},"start_conference_on_enter":{"description":"Whether the conference should be started after the participant joins the conference. Defaults to \"false\".","example":true,"type":"boolean","uniqueKey":"conference_config.start_conference_on_enter","typeLabel":"boolean"},"start_conference_on_create":{"description":"Whether the conference should be started on creation. If the conference isn't started all participants that join are automatically put on hold. Defaults to \"true\".","example":false,"type":"boolean","uniqueKey":"conference_config.start_conference_on_create","typeLabel":"boolean"},"supervisor_role":{"description":"Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. \"barge\" means the supervisor enters the conference as a normal participant. This is the same as \"none\". \"monitor\" means the supervisor is muted but can hear all participants. \"whisper\" means that only the specified \"whisper_call_control_ids\" can hear the supervisor. Defaults to \"none\".","example":"whisper","type":"string","enum":["barge","monitor","none","whisper"],"uniqueKey":"conference_config.supervisor_role","typeLabel":"enum\u003cstring>"},"whisper_call_control_ids":{"description":"Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only.","example":["v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ","v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw"],"type":"array","items":{"type":"string","uniqueKey":"conference_config.whisper_call_control_ids.items.[INDEX]","typeLabel":"string"},"uniqueKey":"conference_config.whisper_call_control_ids","typeLabel":"string[]"},"beep_enabled":{"description":"Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting.","enum":["always","never","on_enter","on_exit"],"example":"on_exit","type":"string","uniqueKey":"conference_config.beep_enabled","typeLabel":"enum\u003cstring>"}},"uniqueKey":"conference_config","typeLabel":"object"},"custom_headers":{"description":"Custom headers to be added to the SIP INVITE.","type":"array","example":[{"name":"head_1","value":"val_1"},{"name":"head_2","value":"val_2"}],"items":{"type":"object","title":"Custom SIP Header","required":["name","value"],"properties":{"name":{"description":"The name of the header to add.","type":"string","example":"head_1","isRequired":true,"uniqueKey":"custom_headers.items.[INDEX].name","typeLabel":"string"},"value":{"description":"The value of the header.","type":"string","example":"val_1","isRequired":true,"uniqueKey":"custom_headers.items.[INDEX].value","typeLabel":"string"}},"example":{"name":"head_1","value":"val_1"},"uniqueKey":"custom_headers.items.[INDEX]","typeLabel":"Custom SIP Header · object"},"uniqueKey":"custom_headers","typeLabel":"Custom SIP Header · object[]"},"billing_group_id":{"description":"Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.","type":"string","format":"uuid","example":"f5586561-8ff0-4291-a0ac-84fe544797bd","uniqueKey":"billing_group_id","typeLabel":"string\u003cuuid>"},"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 others Dial commands with the same `command_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901","uniqueKey":"command_id","typeLabel":"string"},"link_to":{"description":"Use another call's control id for sharing the same call session id","type":"string","example":"ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==","uniqueKey":"link_to","typeLabel":"string"},"bridge_intent":{"description":"Indicates the intent to bridge this call with the call specified in link_to. When bridge_intent is true, link_to becomes required and the from number will be overwritten by the from number from the linked call.","type":"boolean","default":false,"example":true,"uniqueKey":"bridge_intent","typeLabel":"boolean"},"bridge_on_answer":{"description":"Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required.","type":"boolean","default":false,"example":true,"uniqueKey":"bridge_on_answer","typeLabel":"boolean"},"prevent_double_bridge":{"description":"Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.","type":"boolean","default":false,"example":true,"uniqueKey":"prevent_double_bridge","typeLabel":"boolean"},"park_after_unbridge":{"description":"If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. When park_after_unbridge is set, link_to becomes required.","type":"string","example":"self","uniqueKey":"park_after_unbridge","typeLabel":"string"},"media_encryption":{"description":"Defines whether media should be encrypted on the call. For SIP URI destinations, media encryption can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP, and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint `secure` value.","default":"disabled","type":"string","enum":["disabled","SRTP","DTLS"],"uniqueKey":"media_encryption","typeLabel":"enum\u003cstring>"},"sip_auth_username":{"description":"SIP Authentication username used for SIP challenges.","type":"string","uniqueKey":"sip_auth_username","typeLabel":"string"},"sip_auth_password":{"description":"SIP Authentication password used for SIP challenges.","type":"string","uniqueKey":"sip_auth_password","typeLabel":"string"},"sip_headers":{"description":"SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.","type":"array","example":[{"name":"User-to-User","value":"value"}],"items":{"type":"object","title":"SIP Header","required":["name","value"],"properties":{"name":{"description":"The name of the header to add.","type":"string","enum":["User-to-User"],"example":"User-to-User","isRequired":true,"uniqueKey":"sip_headers.items.[INDEX].name","typeLabel":"enum\u003cstring>"},"value":{"description":"The value of the header.","type":"string","example":"value","isRequired":true,"uniqueKey":"sip_headers.items.[INDEX].value","typeLabel":"string"}},"example":{"name":"User-to-User","value":"value"},"uniqueKey":"sip_headers.items.[INDEX]","typeLabel":"SIP Header · object"},"uniqueKey":"sip_headers","typeLabel":"SIP Header · object[]"},"sip_transport_protocol":{"description":"Defines SIP transport protocol to be used on the call.","default":"UDP","type":"string","enum":["UDP","TCP","TLS"],"uniqueKey":"sip_transport_protocol","typeLabel":"enum\u003cstring>"},"sound_modifications":{"type":"object","title":"Sound modifications","description":"Use this field to modify sound effects, for example adjust the pitch.","properties":{"pitch":{"description":"Set the pitch directly, value should be > 0, default 1 (lower = lower tone)","type":"number","format":"float","example":0.8,"uniqueKey":"sound_modifications.pitch","typeLabel":"number\u003cfloat>"},"semitone":{"description":"Adjust the pitch in semitones, values should be between -14 and 14, default 0","type":"number","format":"float","example":-10,"uniqueKey":"sound_modifications.semitone","typeLabel":"number\u003cfloat>"},"octaves":{"description":"Adjust the pitch in octaves, values should be between -1 and 1, default 0","type":"number","format":"float","example":-0.5,"uniqueKey":"sound_modifications.octaves","typeLabel":"number\u003cfloat>"},"track":{"description":"The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`","type":"string","example":"inbound","default":"outbound","uniqueKey":"sound_modifications.track","typeLabel":"string"}},"example":{"pitch":0.8,"semitone":-2,"octaves":0.1,"track":"both"},"uniqueKey":"sound_modifications","typeLabel":"Sound modifications · object"},"stream_url":{"description":"The destination WebSocket address where the stream is going to be delivered.","type":"string","example":"wss://www.example.com/websocket","uniqueKey":"stream_url","typeLabel":"string"},"stream_track":{"description":"Specifies which track should be streamed.","type":"string","enum":["inbound_track","outbound_track","both_tracks"],"default":"inbound_track","example":"both_tracks","uniqueKey":"stream_track","typeLabel":"enum\u003cstring>"},"stream_codec":{"description":"Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used.","title":"Stream Codec","type":"string","enum":["PCMU","PCMA","G722","OPUS","AMR-WB","L16","default"],"default":"default","example":"PCMA","uniqueKey":"stream_codec","typeLabel":"enum\u003cstring>"},"stream_bidirectional_mode":{"type":"string","title":"Bidirectional Stream Mode","description":"Configures method of bidirectional streaming (mp3, rtp).","enum":["mp3","rtp"],"default":"mp3","example":"rtp","uniqueKey":"stream_bidirectional_mode","typeLabel":"enum\u003cstring>"},"stream_bidirectional_codec":{"type":"string","title":"Bidirectional Stream Codec","description":"Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.","enum":["PCMU","PCMA","G722","OPUS","AMR-WB","L16"],"default":"PCMU","example":"G722","uniqueKey":"stream_bidirectional_codec","typeLabel":"enum\u003cstring>"},"stream_bidirectional_target_legs":{"type":"string","title":"Bidirectional Stream Target Legs","description":"Specifies which call legs should receive the bidirectional stream audio.","enum":["both","self","opposite"],"default":"opposite","example":"both","uniqueKey":"stream_bidirectional_target_legs","typeLabel":"enum\u003cstring>"},"stream_bidirectional_sampling_rate":{"type":"integer","title":"Bidirectional Stream Sampling Rate","description":"Audio sampling rate.","enum":[8000,16000,22050,24000,48000],"default":8000,"example":16000,"uniqueKey":"stream_bidirectional_sampling_rate","typeLabel":"enum\u003cinteger>"},"stream_establish_before_call_originate":{"description":"Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish.","type":"boolean","default":false,"example":true,"uniqueKey":"stream_establish_before_call_originate","typeLabel":"boolean"},"send_silence_when_idle":{"description":"Generate silence RTP packets when no transmission available.","type":"boolean","default":false,"example":true,"uniqueKey":"send_silence_when_idle","typeLabel":"boolean"},"webhook_url":{"description":"Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.","type":"string","example":"https://www.example.com/server-b/","uniqueKey":"webhook_url","typeLabel":"string"},"webhook_url_method":{"description":"HTTP request type used for `webhook_url`.","default":"POST","type":"string","enum":["POST","GET"],"example":"GET","uniqueKey":"webhook_url_method","typeLabel":"enum\u003cstring>"},"webhook_urls":{"description":"A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook URLs associated with that event type will be called instead of the default webhook URL. Events not mapped here will use the default webhook URL.","type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"uri","uniqueKey":"webhook_urls.additionalProperties.items.[INDEX]","typeLabel":"string\u003curi>"},"uniqueKey":"webhook_urls.additionalProperties","typeLabel":"string\u003curi>[]"},"example":{"call.hangup":["https://www.example.com/webhooks/hangup"],"call.bridge":["https://www.example.com/webhooks/bridge"]},"uniqueKey":"webhook_urls","typeLabel":"object"},"webhook_urls_method":{"description":"HTTP request method to invoke `webhook_urls`.","type":"string","enum":["POST","GET"],"default":"POST","example":"POST","uniqueKey":"webhook_urls_method","typeLabel":"enum\u003cstring>"},"webhook_retries_policies":{"description":"A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.","type":"object","additionalProperties":{"type":"object","properties":{"retries_ms":{"type":"array","items":{"type":"integer","uniqueKey":"webhook_retries_policies.additionalProperties.retries_ms.items.[INDEX]","typeLabel":"integer"},"maxItems":5,"description":"Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms.","uniqueKey":"webhook_retries_policies.additionalProperties.retries_ms","typeLabel":"integer[]"}},"uniqueKey":"webhook_retries_policies.additionalProperties","typeLabel":"object"},"example":{"call.hangup":{"retries_ms":[1000,2000,5000]}},"uniqueKey":"webhook_retries_policies","typeLabel":"object"},"record":{"description":"Start recording automatically after an event. Disabled by default.","type":"string","enum":["record-from-answer"],"example":"record-from-answer","uniqueKey":"record","typeLabel":"enum\u003cstring>"},"record_channels":{"description":"Defines which channel should be recorded ('single' or 'dual') when `record` is specified.","type":"string","enum":["single","dual"],"default":"dual","example":"single","uniqueKey":"record_channels","typeLabel":"enum\u003cstring>"},"record_format":{"description":"Defines the format of the recording ('wav' or 'mp3') when `record` is specified.","type":"string","enum":["wav","mp3"],"default":"mp3","example":"wav","uniqueKey":"record_format","typeLabel":"enum\u003cstring>"},"record_max_length":{"description":"Defines the maximum length for the recording in seconds when `record` is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite).","type":"integer","format":"int32","default":0,"example":1000,"uniqueKey":"record_max_length","typeLabel":"integer\u003cint32>"},"record_timeout_secs":{"description":"The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite).","type":"integer","format":"int32","default":0,"example":100,"uniqueKey":"record_timeout_secs","typeLabel":"integer\u003cint32>"},"record_track":{"description":"The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel).","type":"string","example":"outbound","default":"both","enum":["both","inbound","outbound"],"uniqueKey":"record_track","typeLabel":"enum\u003cstring>"},"record_trim":{"description":"When set to `trim-silence`, silence will be removed from the beginning and end of the recording.","enum":["trim-silence"],"type":"string","example":"trim-silence","uniqueKey":"record_trim","typeLabel":"enum\u003cstring>"},"record_custom_file_name":{"description":"The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.","type":"string","minLength":1,"maxLength":40,"example":"my_recording_file_name","uniqueKey":"record_custom_file_name","typeLabel":"string"},"supervise_call_control_id":{"description":"The call leg which will be supervised by the new call.","type":"string","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","uniqueKey":"supervise_call_control_id","typeLabel":"string"},"supervisor_role":{"description":"The role of the supervisor call. 'barge' means that supervisor call hears and is being heard by both ends of the call (caller \u0026 callee). 'whisper' means that only supervised_call_control_id hears supervisor but supervisor can hear everything. 'monitor' means that nobody can hear supervisor call, but supervisor can hear everything on the call.","type":"string","enum":["barge","whisper","monitor"],"default":"barge","uniqueKey":"supervisor_role","typeLabel":"enum\u003cstring>"},"enable_dialogflow":{"description":"Enables Dialogflow for the current call. The default value is false.","type":"boolean","default":false,"example":true,"uniqueKey":"enable_dialogflow","typeLabel":"boolean"},"dialogflow_config":{"type":"object","title":"Dialogflow Config","properties":{"analyze_sentiment":{"description":"Enable sentiment analysis from Dialogflow.","type":"boolean","example":true,"default":false,"uniqueKey":"dialogflow_config.analyze_sentiment","typeLabel":"boolean"},"partial_automated_agent_reply":{"description":"Enable partial automated agent reply from Dialogflow.","type":"boolean","example":true,"default":false,"uniqueKey":"dialogflow_config.partial_automated_agent_reply","typeLabel":"boolean"}},"uniqueKey":"dialogflow_config","typeLabel":"Dialogflow Config · object"},"transcription":{"description":"Enable transcription upon call answer. The default value is false.","type":"boolean","default":false,"example":true,"uniqueKey":"transcription","typeLabel":"boolean"},"transcription_config":{"type":"object","title":"Transcription start request","properties":{"transcription_engine":{"description":"Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.","type":"string","enum":["Google","Telnyx","Deepgram","Azure","xAI","AssemblyAI","Speechmatics","Soniox","Parakeet","Humain","Reson8","Cohere","A","B"],"default":"Google","example":"Google","uniqueKey":"transcription_config.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_engine_config":{"oneOf":[{"type":"object","title":"Transcription engine Google config","properties":{"transcription_engine":{"type":"string","enum":["Google"],"description":"Engine identifier for Google transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"Google transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["af","sq","am","ar","hy","az","eu","bn","bs","bg","my","ca","yue","zh","hr","cs","da","nl","en","et","fil","fi","fr","gl","ka","de","el","gu","iw","hi","hu","is","id","it","ja","jv","kn","kk","km","ko","lo","lv","lt","mk","ms","ml","mr","mn","ne","no","fa","pl","pt","pa","ro","ru","rw","sr","si","sk","sl","ss","st","es","su","sw","sv","ta","te","th","tn","tr","ts","uk","ur","uz","ve","vi","xh","zu"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.language","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.interim_results","typeLabel":"boolean"},"enable_speaker_diarization":{"type":"boolean","description":"Enables speaker diarization.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.enable_speaker_diarization","typeLabel":"boolean"},"min_speaker_count":{"description":"Defines minimum number of speakers in the conversation.","type":"integer","example":4,"default":2,"format":"int32","uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.min_speaker_count","typeLabel":"integer\u003cint32>"},"max_speaker_count":{"description":"Defines maximum number of speakers in the conversation.","type":"integer","example":4,"default":6,"format":"int32","uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.max_speaker_count","typeLabel":"integer\u003cint32>"},"profanity_filter":{"description":"Enables profanity_filter.","type":"boolean","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.profanity_filter","typeLabel":"boolean"},"use_enhanced":{"description":"Enables enhanced transcription, this works for models `phone_call` and `video`.","type":"boolean","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.use_enhanced","typeLabel":"boolean"},"model":{"description":"The model to use for transcription.","type":"string","enum":["latest_long","latest_short","command_and_search","phone_call","video","default","medical_conversation","medical_dictation"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.model","typeLabel":"enum\u003cstring>"},"hints":{"description":"Hints to improve transcription accuracy.","type":"array","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.hints.items.[INDEX]","typeLabel":"string"},"default":[],"example":[],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.hints","typeLabel":"string[]"},"speech_context":{"description":"Speech context to improve transcription accuracy.","type":"array","items":{"type":"object","properties":{"phrases":{"type":"array","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.speech_context.items.[INDEX].phrases.items.[INDEX]","typeLabel":"string"},"default":[],"example":[],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.speech_context.items.[INDEX].phrases","typeLabel":"string[]"},"boost":{"type":"number","description":"Boost factor for the speech context.","default":1,"minimum":0,"maximum":20,"example":1,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.speech_context.items.[INDEX].boost","typeLabel":"number"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.speech_context.items.[INDEX]","typeLabel":"object"},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0.speech_context","typeLabel":"object[]"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.0","typeLabel":"Transcription engine Google config · object"},{"type":"object","title":"Transcription engine Telnyx config","properties":{"transcription_engine":{"type":"string","enum":["Telnyx"],"description":"Engine identifier for Telnyx transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.1.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"Telnyx transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["en","zh","de","es","ru","ko","fr","ja","pt","tr","pl","ca","nl","ar","sv","it","id","hi","fi","vi","he","uk","el","ms","cs","ro","da","hu","ta","no","th","ur","hr","bg","lt","la","mi","ml","cy","sk","te","fa","lv","bn","sr","az","sl","kn","et","mk","br","eu","is","hy","ne","mn","bs","kk","sq","sw","gl","mr","pa","si","km","sn","yo","so","af","oc","ka","be","tg","sd","gu","am","yi","lo","uz","fo","ht","ps","tk","nn","mt","sa","lb","my","bo","tl","mg","as","tt","haw","ln","ha","ba","jw","su","auto_detect"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.1.language","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["openai/whisper-tiny","openai/whisper-large-v3-turbo"],"default":"openai/whisper-tiny","uniqueKey":"transcription_config.transcription_engine_config.oneOf.1.transcription_model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.1","typeLabel":"Transcription engine Telnyx config · object"},{"type":"object","title":"DeepgramNova2Config","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-2","language":"en","smart_format":false,"hints":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/nova-2"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.interim_results","typeLabel":"boolean"},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.utterance_end_ms","typeLabel":"integer"},"language":{"title":"Deepgram nova-2 transcription engine list of languages","type":"string","description":"Language to use for speech recognition with nova-2 model","example":"en","default":"en","enum":["bg","ca","zh","zh-CN","zh-Hans","zh-TW","zh-Hant","zh-HK","cs","da","da-DK","nl","en","en-US","en-AU","en-GB","en-NZ","en-IN","et","fi","nl-BE","fr","fr-CA","de","de-CH","el","hi","hu","id","it","ja","ko","ko-KR","lv","lt","ms","no","pl","pt","pt-BR","pt-PT","ro","ru","sk","es","es-419","sv","sv-SE","th","th-TH","tr","uk","vi","auto_detect"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.language","typeLabel":"enum\u003cstring>"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.smart_format","typeLabel":"boolean"},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.keywords_boosting.additionalProperties","typeLabel":"number"},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.keywords_boosting","typeLabel":"object"},"hints":{"type":"array","description":"Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`, `deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.hints.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2.hints","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.2","typeLabel":"DeepgramNova2Config · object"},{"type":"object","title":"DeepgramNova2SpecialtyConfig","description":"Deepgram Nova-2 specialty models: `deepgram/nova-2-medical` (medical vocabulary) and `deepgram/nova-2-phonecall` (low-bandwidth phone audio). English only.","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-2-medical","language":"en-US","smart_format":false,"hints":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/nova-2-medical","deepgram/nova-2-phonecall"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.interim_results","typeLabel":"boolean"},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.utterance_end_ms","typeLabel":"integer"},"language":{"type":"string","enum":["en","en-US","en-AU","en-GB","en-IN","en-NZ"],"default":"en","description":"Language to transcribe. Deepgram's medical and phonecall models support English only.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.language","typeLabel":"enum\u003cstring>"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.smart_format","typeLabel":"boolean"},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.keywords_boosting.additionalProperties","typeLabel":"number"},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.keywords_boosting","typeLabel":"object"},"hints":{"type":"array","description":"Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`, `deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.hints.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3.hints","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.3","typeLabel":"DeepgramNova2SpecialtyConfig · object"},{"type":"object","title":"DeepgramNova3Config","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-3","language":"en","smart_format":false,"keyterms":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/nova-3"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.interim_results","typeLabel":"boolean"},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.utterance_end_ms","typeLabel":"integer"},"language":{"title":"Deepgram nova-3 transcription engine list of languages","type":"string","description":"Language to use for speech recognition with nova-3 model","example":"en","default":"en","enum":["en","en-US","en-AU","en-GB","en-IN","en-NZ","de","nl","sv","sv-SE","da","da-DK","es","es-419","fr","fr-CA","pt","pt-BR","pt-PT","auto_detect"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.language","typeLabel":"enum\u003cstring>"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.smart_format","typeLabel":"boolean"},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.keywords_boosting.additionalProperties","typeLabel":"number"},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.keywords_boosting","typeLabel":"object"},"keyterms":{"type":"array","description":"Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.keyterms.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4.keyterms","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.4","typeLabel":"DeepgramNova3Config · object"},{"type":"object","title":"DeepgramNova3MedicalConfig","description":"Deepgram Nova-3 medical model, tuned for medical vocabulary. English only.","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/nova-3-medical","language":"en-US","smart_format":false,"keyterms":["Telnyx","LiveKit","VoIP"],"keywords_boosting":{"snuffleupagus":5,"systrom":2,"krieger":1}},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/nova-3-medical"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.interim_results","typeLabel":"boolean"},"utterance_end_ms":{"type":"integer","default":1000,"example":800,"minimum":0,"maximum":5000,"description":"Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.utterance_end_ms","typeLabel":"integer"},"language":{"type":"string","enum":["en","en-US","en-AU","en-GB","en-IN","en-NZ"],"default":"en","description":"Language to transcribe. Deepgram's medical and phonecall models support English only.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.language","typeLabel":"enum\u003cstring>"},"smart_format":{"type":"boolean","default":true,"example":false,"description":"Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.smart_format","typeLabel":"boolean"},"keywords_boosting":{"type":"object","description":"Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{\"snuffleupagus\": 5, \"systrom\": 2, \"krieger\": 1}`.","additionalProperties":{"type":"number","description":"Boost intensifier for the keyword. Higher values increase recognition confidence.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.keywords_boosting.additionalProperties","typeLabel":"number"},"default":null,"example":{"snuffleupagus":5,"systrom":2,"krieger":1},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.keywords_boosting","typeLabel":"object"},"keyterms":{"type":"array","description":"Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.keyterms.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5.keyterms","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.5","typeLabel":"DeepgramNova3MedicalConfig · object"},{"type":"object","title":"DeepgramFluxConfig","description":"Deepgram Flux (English), a conversational speech recognition model with built-in end-of-turn detection. `smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux.","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/flux","language":"en","keyterms":["Telnyx","LiveKit","VoIP"]},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/flux"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.interim_results","typeLabel":"boolean"},"language":{"type":"string","enum":["en"],"default":"en","description":"Language to transcribe. `deepgram/flux` supports English only.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.language","typeLabel":"enum\u003cstring>"},"keyterms":{"type":"array","description":"Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.keyterms.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.6.keyterms","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.6","typeLabel":"DeepgramFluxConfig · object"},{"type":"object","title":"DeepgramFluxMultiConfig","description":"Deepgram Flux multilingual, a conversational speech recognition model with built-in end-of-turn detection. `smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux.","required":["transcription_engine","transcription_model"],"example":{"transcription_engine":"Deepgram","transcription_model":"deepgram/flux-multi","language":"es","keyterms":["Telnyx","LiveKit","VoIP"]},"properties":{"transcription_engine":{"type":"string","enum":["Deepgram"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"type":"string","enum":["deepgram/flux-multi"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.interim_results","typeLabel":"boolean"},"language":{"type":"string","enum":["en","es","fr","de","hi","ru","pt","ja","it","nl","auto"],"default":"en","description":"Language to transcribe. Flux-multi uses the language as a hint; `auto` lets Flux detect the language.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.language","typeLabel":"enum\u003cstring>"},"keyterms":{"type":"array","description":"Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`); use `hints` on Nova-2.","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.keyterms.items.[INDEX]","typeLabel":"string"},"maxItems":100,"default":[],"example":["Telnyx","LiveKit","VoIP"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.7.keyterms","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.7","typeLabel":"DeepgramFluxMultiConfig · object"},{"type":"object","title":"Transcription engine Azure config","required":["transcription_engine","region"],"properties":{"transcription_engine":{"type":"string","enum":["Azure"],"description":"Engine identifier for Azure transcription service","isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.8.transcription_engine","typeLabel":"enum\u003cstring>"},"region":{"title":"Azure transcription engine list of regions","type":"string","description":"Azure region to use for speech recognition","example":"eastus","enum":["australiaeast","centralindia","eastus","northcentralus","westeurope","westus2"],"isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.8.region","typeLabel":"enum\u003cstring>"},"language":{"title":"Azure transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["af","am","ar","bg","bn","bs","ca","cs","cy","da","de","el","en","es","et","eu","fa","fi","fr","ga","gl","gu","he","hi","hr","hu","hy","id","is","it","ja","ka","kk","km","kn","ko","lo","lt","lv","mk","ml","mn","mr","ms","mt","my","nb","ne","nl","pl","ps","pt","ro","ru","si","sk","sl","so","sq","sr","sv","sw","ta","te","th","tr","uk","ur","uz","vi","wuu","yue","zh","zu","auto"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.8.language","typeLabel":"enum\u003cstring>"},"api_key_ref":{"type":"string","description":"Reference to the API key for authentication. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. The parameter is optional as defaults are available for some regions.","uniqueKey":"transcription_config.transcription_engine_config.oneOf.8.api_key_ref","typeLabel":"string"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.8","typeLabel":"Transcription engine Azure config · object"},{"type":"object","title":"Transcription engine xAI config","properties":{"transcription_engine":{"type":"string","enum":["xAI"],"description":"Engine identifier for xAI transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.9.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"xAI transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["ar","cs","da","de","en","es","fa","fil","fr","hi","id","it","ja","ko","mk","ms","nl","pl","pt","ro","ru","sv","th","tr","vi"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.9.language","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["xai/grok-stt"],"default":"xai/grok-stt","uniqueKey":"transcription_config.transcription_engine_config.oneOf.9.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.9.interim_results","typeLabel":"boolean"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.9","typeLabel":"Transcription engine xAI config · object"},{"type":"object","title":"Transcription engine AssemblyAI config","properties":{"transcription_engine":{"type":"string","enum":["AssemblyAI"],"description":"Engine identifier for AssemblyAI transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.10.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription. `assemblyai/universal-3-6-pro` is the AssemblyAI Universal-3.6 Pro model. `assemblyai/universal-3-5-pro` (the default) and `assemblyai/universal-streaming` are legacy aliases that run the same Universal-3.6 Pro model.","type":"string","enum":["assemblyai/universal-3-6-pro","assemblyai/universal-3-5-pro","assemblyai/universal-streaming"],"default":"assemblyai/universal-3-5-pro","uniqueKey":"transcription_config.transcription_engine_config.oneOf.10.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.10.interim_results","typeLabel":"boolean"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.10","typeLabel":"Transcription engine AssemblyAI config · object"},{"type":"object","title":"Transcription engine Speechmatics config","properties":{"transcription_engine":{"type":"string","enum":["Speechmatics"],"description":"Engine identifier for Speechmatics transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.11.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"Speechmatics transcription engine list of languages","type":"string","description":"Language to use for speech recognition. Accepted values depend on the selected `transcription_model`. `speechmatics/standard` supports: `en`, `ba`, `eu`, `gl`, `ga`, `mt`, `mn`, `sw`, `ug`, `cy`, `ar_en`, `cmn_en`, `en_ms`, `en_ta`, `tl`, `es-bilingual-en`, `cmn_en_ms_ta`. `speechmatics/linden-1` (preview) supports the same languages as Speechmatics Realtime: `ar`, `ar_en`, `ba`, `be`, `bg`, `bn`, `ca`, `cmn`, `cmn_en`, `cmn_en_ms_ta`, `cs`, `cy`, `da`, `de`, `el`, `en`, `en_ms`, `en_ta`, `eo`, `es`, `es-bilingual-en`, `et`, `eu`, `fa`, `fi`, `fr`, `ga`, `gl`, `he`, `hi`, `hr`, `hu`, `ia`, `id`, `it`, `ja`, `ko`, `lt`, `lv`, `mn`, `mr`, `ms`, `mt`, `nl`, `no`, `pl`, `pt`, `ro`, `ru`, `sk`, `sl`, `sv`, `sw`, `ta`, `th`, `tl`, `tr`, `ug`, `uk`, `ur`, `vi`, `yue`, plus the spelling and script variants `en-US`, `en-GB`, `en-AU`, `cmn-Hans`, and `cmn-Hant` (`en` alone uses the default spelling). A value outside the selected model's list is rejected. For `speechmatics/standard`, unset, blank, `auto`, `auto_beta`, or `multi` defaults to `en`; for `speechmatics/linden-1`, only an unset language defaults to `en`, and `auto`, `auto_beta`, or `multi` is rejected.","example":"en","default":"en","enum":["en","ba","eu","gl","ga","mt","mn","sw","ug","cy","ar_en","cmn_en","en_ms","en_ta","tl","es-bilingual-en","cmn_en_ms_ta","ar","be","bg","bn","ca","cmn","cs","da","de","el","eo","es","et","fa","fi","fr","he","hi","hr","hu","ia","id","it","ja","ko","lt","lv","mr","ms","nl","no","pl","pt","ro","ru","sk","sl","sv","ta","th","tr","uk","ur","vi","yue","en-US","en-GB","en-AU","cmn-Hans","cmn-Hant"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.11.language","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription. `speechmatics/linden-1` is a preview, vendor-hosted model with its own language support (see `language`).","type":"string","enum":["speechmatics/standard","speechmatics/linden-1"],"default":"speechmatics/standard","uniqueKey":"transcription_config.transcription_engine_config.oneOf.11.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.11.interim_results","typeLabel":"boolean"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.11","typeLabel":"Transcription engine Speechmatics config · object"},{"type":"object","title":"Transcription engine Soniox config","required":["transcription_engine"],"properties":{"transcription_engine":{"type":"string","enum":["Soniox"],"description":"Engine identifier for Soniox transcription service","isRequired":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["soniox/stt-rt-v4"],"default":"soniox/stt-rt-v4","uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.transcription_model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"ISO 639-1 language hint (e.g. `en`, `es`), or `auto` to omit the hint and let Soniox auto-detect supported languages multilingually.","default":"auto","example":"auto","uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.language","typeLabel":"string"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.interim_results","typeLabel":"boolean"},"enable_endpoint_detection":{"type":"boolean","description":"When true, Soniox emits end-of-utterance events at the cadence configured by `max_endpoint_delay_ms`.","default":false,"example":false,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.enable_endpoint_detection","typeLabel":"boolean"},"max_endpoint_delay_ms":{"type":"integer","minimum":500,"maximum":3000,"description":"Maximum silence (in milliseconds) before Soniox emits an end-of-utterance event. Only honored when `enable_endpoint_detection` is true. Range: 500-3000 ms.","example":1000,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.12.max_endpoint_delay_ms","typeLabel":"integer"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.12","typeLabel":"Transcription engine Soniox config · object"},{"type":"object","title":"Transcription engine Parakeet config","properties":{"transcription_engine":{"type":"string","enum":["Parakeet"],"description":"Engine identifier for Parakeet transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.13.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["nvidia/parakeet-v3","omi-health/omi-med-stt-v1"],"default":"nvidia/parakeet-v3","uniqueKey":"transcription_config.transcription_engine_config.oneOf.13.transcription_model","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.13.interim_results","typeLabel":"boolean"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.13","typeLabel":"Transcription engine Parakeet config · object"},{"type":"object","title":"Transcription engine Humain config","properties":{"transcription_engine":{"type":"string","enum":["Humain"],"description":"Engine identifier for Humain transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.14.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["humain/realtime"],"default":"humain/realtime","uniqueKey":"transcription_config.transcription_engine_config.oneOf.14.transcription_model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"The language of the audio to be transcribed. `codeswitch` enables Arabic/English code-switching. `auto` resolves server-side to code-switching.","enum":["ar","en","codeswitch","auto"],"default":"en","example":"en","uniqueKey":"transcription_config.transcription_engine_config.oneOf.14.language","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.14","typeLabel":"Transcription engine Humain config · object"},{"type":"object","title":"Transcription engine Reson8 config","properties":{"transcription_engine":{"type":"string","enum":["Reson8"],"description":"Engine identifier for Reson8 transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.15.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["reson8/turns"],"default":"reson8/turns","uniqueKey":"transcription_config.transcription_engine_config.oneOf.15.transcription_model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"The language of the audio to be transcribed. `auto` (the default, also applied when `language` is omitted) enables automatic language detection.","enum":["auto","nl","en","fr","fy","de","it","pl","pt","es","sv"],"default":"auto","example":"auto","uniqueKey":"transcription_config.transcription_engine_config.oneOf.15.language","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.15","typeLabel":"Transcription engine Reson8 config · object"},{"type":"object","title":"Transcription engine Cohere config","properties":{"transcription_engine":{"type":"string","enum":["Cohere"],"description":"Engine identifier for Cohere transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.16.transcription_engine","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["cohere/ar-stt"],"default":"cohere/ar-stt","uniqueKey":"transcription_config.transcription_engine_config.oneOf.16.transcription_model","typeLabel":"enum\u003cstring>"},"language":{"type":"string","description":"The language of the audio to be transcribed. Unlike other self-hosted models, Cohere does not auto-detect the language; `auto` is not supported.","enum":["ar","en"],"default":"ar","example":"ar","uniqueKey":"transcription_config.transcription_engine_config.oneOf.16.language","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.16","typeLabel":"Transcription engine Cohere config · object"},{"type":"object","title":"Transcription engine A config","properties":{"transcription_engine":{"type":"string","enum":["A"],"description":"Engine identifier for Google transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"Google transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["af","sq","am","ar","hy","az","eu","bn","bs","bg","my","ca","yue","zh","hr","cs","da","nl","en","et","fil","fi","fr","gl","ka","de","el","gu","iw","hi","hu","is","id","it","ja","jv","kn","kk","km","ko","lo","lv","lt","mk","ms","ml","mr","mn","ne","no","fa","pl","pt","pa","ro","ru","rw","sr","si","sk","sl","ss","st","es","su","sw","sv","ta","te","th","tn","tr","ts","uk","ur","uz","ve","vi","xh","zu"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.language","typeLabel":"enum\u003cstring>"},"interim_results":{"type":"boolean","description":"Whether to send also interim results. If set to false, only final results will be sent.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.interim_results","typeLabel":"boolean"},"enable_speaker_diarization":{"type":"boolean","description":"Enables speaker diarization.","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.enable_speaker_diarization","typeLabel":"boolean"},"min_speaker_count":{"description":"Defines minimum number of speakers in the conversation.","type":"integer","example":4,"default":2,"format":"int32","uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.min_speaker_count","typeLabel":"integer\u003cint32>"},"max_speaker_count":{"description":"Defines maximum number of speakers in the conversation.","type":"integer","example":4,"default":6,"format":"int32","uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.max_speaker_count","typeLabel":"integer\u003cint32>"},"profanity_filter":{"description":"Enables profanity_filter.","type":"boolean","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.profanity_filter","typeLabel":"boolean"},"use_enhanced":{"description":"Enables enhanced transcription, this works for models `phone_call` and `video`.","type":"boolean","default":false,"example":true,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.use_enhanced","typeLabel":"boolean"},"model":{"description":"The model to use for transcription.","type":"string","enum":["latest_long","latest_short","command_and_search","phone_call","video","default","medical_conversation","medical_dictation"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.model","typeLabel":"enum\u003cstring>"},"hints":{"description":"Hints to improve transcription accuracy.","type":"array","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.hints.items.[INDEX]","typeLabel":"string"},"default":[],"example":["Telnyx"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.hints","typeLabel":"string[]"},"speech_context":{"description":"Speech context to improve transcription accuracy.","type":"array","items":{"type":"object","properties":{"phrases":{"type":"array","items":{"type":"string","uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.speech_context.items.[INDEX].phrases.items.[INDEX]","typeLabel":"string"},"default":[],"example":["Telnyx"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.speech_context.items.[INDEX].phrases","typeLabel":"string[]"},"boost":{"type":"number","description":"Boost factor for the speech context.","default":1,"minimum":0,"maximum":20,"example":1,"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.speech_context.items.[INDEX].boost","typeLabel":"number"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.speech_context.items.[INDEX]","typeLabel":"object"},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17.speech_context","typeLabel":"object[]"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.17","typeLabel":"Transcription engine A config · object"},{"type":"object","title":"Transcription engine B config","properties":{"transcription_engine":{"type":"string","enum":["B"],"description":"Engine identifier for Telnyx transcription service","uniqueKey":"transcription_config.transcription_engine_config.oneOf.18.transcription_engine","typeLabel":"enum\u003cstring>"},"language":{"title":"Telnyx transcription engine list of languages","type":"string","description":"Language to use for speech recognition","example":"en","default":"en","enum":["en","zh","de","es","ru","ko","fr","ja","pt","tr","pl","ca","nl","ar","sv","it","id","hi","fi","vi","he","uk","el","ms","cs","ro","da","hu","ta","no","th","ur","hr","bg","lt","la","mi","ml","cy","sk","te","fa","lv","bn","sr","az","sl","kn","et","mk","br","eu","is","hy","ne","mn","bs","kk","sq","sw","gl","mr","pa","si","km","sn","yo","so","af","oc","ka","be","tg","sd","gu","am","yi","lo","uz","fo","ht","ps","tk","nn","mt","sa","lb","my","bo","tl","mg","as","tt","haw","ln","ha","ba","jw","su","auto_detect"],"uniqueKey":"transcription_config.transcription_engine_config.oneOf.18.language","typeLabel":"enum\u003cstring>"},"transcription_model":{"description":"The model to use for transcription.","type":"string","enum":["openai/whisper-tiny","openai/whisper-large-v3-turbo"],"default":"openai/whisper-tiny","uniqueKey":"transcription_config.transcription_engine_config.oneOf.18.transcription_model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"transcription_config.transcription_engine_config.oneOf.18","typeLabel":"Transcription engine B config · object"}],"uniqueKey":"transcription_config.transcription_engine_config","typeLabel":"Transcription engine Google config · object | Transcription engine Telnyx config · object | DeepgramNova2Config · object | DeepgramNova2SpecialtyConfig · object | DeepgramNova3Config · object | DeepgramNova3MedicalConfig · object | DeepgramFluxConfig · object | DeepgramFluxMultiConfig · object | Transcription engine Azure config · object | Transcription engine xAI config · object | Transcription engine AssemblyAI config · object | Transcription engine Speechmatics config · object | Transcription engine Soniox config · object | Transcription engine Parakeet config · object | Transcription engine Humain config · object | Transcription engine Reson8 config · object | Transcription engine Cohere config · object | Transcription engine A config · object | Transcription engine B config · 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":"transcription_config.client_state","typeLabel":"string"},"transcription_tracks":{"description":"Indicates which leg of the call will be transcribed. Use `inbound` for the leg that requested the transcription, `outbound` for the other leg, and `both` for both legs of the call. Will default to `inbound`.","type":"string","example":"both","default":"inbound","uniqueKey":"transcription_config.transcription_tracks","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":"transcription_config.command_id","typeLabel":"string"}},"example":{"transcription_engine":"Google","transcription_engine_config":{"transcription_engine":"Google","language":"en"},"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"},"uniqueKey":"transcription_config","typeLabel":"Transcription start request · object"},"sip_region":{"description":"Defines the SIP region to be used for the call.","type":"string","default":"US","enum":["US","Europe","Canada","Australia","Middle East"],"example":"Canada","uniqueKey":"sip_region","typeLabel":"enum\u003cstring>"},"stream_auth_token":{"description":"An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.","type":"string","maxLength":4000,"example":"your-auth-token","uniqueKey":"stream_auth_token","typeLabel":"string"},"route_to_mobile":{"description":"When set to true, routes the call directly to the mobile device associated with the destination Telnyx Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to prevent the call from being intercepted again. Defaults to false.","type":"boolean","default":false,"example":true,"uniqueKey":"route_to_mobile","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"Dial Request · object"},"examples":{"Example":{"title":"Example","value":{"to":"+18005550100 or sip:[email protected];secure=srtp","from":"+18005550101","from_display_name":"Company Name","connection_id":"7267xxxxxxxxxxxxxx","conference_config":{"conference_name":"telnyx-conference","start_conference_on_enter":true},"audio_url":"http://www.example.com/sounds/greeting.wav","send_digits_on_answer":"wwww200","timeout_secs":60,"time_limit_secs":60,"webhook_url":"https://www.example.com/server-b/","webhook_url_method":"POST","webhook_urls":{"call.hangup":["https://www.example.com/webhooks/hangup"],"call.bridge":["https://www.example.com/webhooks/bridge"]},"webhook_urls_method":"POST","webhook_retries_policies":{"call.hangup":{"retries_ms":[1000,2000,5000]}},"answering_machine_detection":"detect","answering_machine_detection_config":{"total_analysis_time_millis":5000,"after_greeting_silence_millis":1000,"between_words_silence_millis":1000,"greeting_duration_millis":1000,"initial_silence_millis":1000,"maximum_number_of_words":1000,"maximum_word_length_millis":2000,"silence_threshold":512,"greeting_total_analysis_time_millis":50000,"greeting_silence_duration_millis":2000},"deepfake_detection":{"enabled":true,"timeout":15,"rtp_timeout":30},"custom_headers":[{"name":"head_1","value":"val_1"},{"name":"head_2","value":"val_2"}],"client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901","link_to":"ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==","bridge_intent":true,"bridge_on_answer":true,"media_encryption":"SRTP","sip_auth_username":"username","sip_auth_password":"password","sip_headers":[{"name":"User-to-User","value":"12345"}],"sip_transport_protocol":"TLS","stream_url":"wss://www.example.com/websocket","stream_track":"both_tracks","send_silence_when_idle":true,"enable_dialogflow":false,"dialogflow_config":{"analyze_sentiment":false,"partial_automated_agent_reply":false},"conversation_relay_config":{"url":"wss://example.com/conversation-relay","dtmf_detection":true,"greeting":"Hi! Ask me anything!","voice":"Telnyx.KokoroTTS.af","tts_provider":"telnyx","language":"en-US","interruptible":"speech","interruptible_greeting":"dtmf","custom_parameters":{"customer_id":"12345"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b332cc54-7df8-44be-a0eb-8694e58ce3b1":{"description":"Successful response with details about a call status that includes recording_id.","content":{"application/json":{"schema":{"type":"object","title":"Retrieve Call Status Response With Recording ID","properties":{"data":{"type":"object","title":"Call With Recording ID","required":["call_control_id","call_leg_id","call_session_id","is_alive","record_type"],"example":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","call_leg_id":"2dc6fc34-f9e0-11ea-b68e-02420a0f7768","call_session_id":"2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","is_alive":false,"call_duration":50,"record_type":"call","recording_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","start_time":"2019-01-23T18:10:02.574Z","end_time":"2019-01-23T18:11:52.574Z"},"properties":{"record_type":{"type":"string","enum":["call"],"example":"call","isRequired":true,"uniqueKey":"data.record_type","typeLabel":"enum\u003cstring>"},"call_session_id":{"description":"ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call","type":"string","example":"428c31b6-7af4-4bcb-b68e-5013ef9657c1","isRequired":true,"uniqueKey":"data.call_session_id","typeLabel":"string"},"call_leg_id":{"description":"ID that is unique to the call and can be used to correlate webhook events","type":"string","example":"428c31b6-7af4-4bcb-b7f5-5013ef9657c1","isRequired":true,"uniqueKey":"data.call_leg_id","typeLabel":"string"},"call_control_id":{"description":"Unique identifier and token for controlling the call.","type":"string","example":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","isRequired":true,"uniqueKey":"data.call_control_id","typeLabel":"string"},"is_alive":{"description":"Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is asynchronous).","type":"boolean","example":true,"isRequired":true,"uniqueKey":"data.is_alive","typeLabel":"boolean"},"client_state":{"description":"State received from a command.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","uniqueKey":"data.client_state","typeLabel":"string"},"call_duration":{"description":"Indicates the duration of the call in seconds","type":"integer","example":50,"uniqueKey":"data.call_duration","typeLabel":"integer"},"recording_id":{"type":"string","format":"uuid","example":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","description":"The ID of the recording. Only present when the record parameter is set to record-from-answer.","uniqueKey":"data.recording_id","typeLabel":"string\u003cuuid>"},"start_time":{"description":"ISO 8601 formatted date indicating when the call started","type":"string","example":"2019-01-23T18:10:02.574Z","uniqueKey":"data.start_time","typeLabel":"string"},"end_time":{"description":"ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive","type":"string","example":"2019-01-23T18:11:52.574Z","uniqueKey":"data.end_time","typeLabel":"string"}},"uniqueKey":"data","typeLabel":"Call With Recording ID · object"}},"uniqueKey":"","typeLabel":"Retrieve Call Status Response With Recording ID · object"},"examples":{"Example":{"title":"Example","value":{"data":{"call_control_id":"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg","call_leg_id":"2dc6fc34-f9e0-11ea-b68e-02420a0f7768","call_session_id":"2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","is_alive":false,"call_duration":50,"record_type":"call","recording_id":"d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a","start_time":"2019-01-23T18:10:02.574Z","end_time":"2019-01-23T18:11:52.574Z"}}}},"exampleType":"generated"}},"exampleType":"generated"},"fc173dca-0581-4a72-93de-90d145efbba5":{"description":"Bad request. The request was invalid or cannot be served. Common causes include: audio file download failures, attempting to delete non-empty queues, invalid characters in the request, or character encoding errors.","content":{"application/json":{"schema":{"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":{"audio_file_download_failed":{"title":"audio_file_download_failed","value":{"errors":[{"code":"90040","title":"Downloading audio file failed","detail":"Provided audio file couldn't be downloaded."}]}},"queue_not_empty":{"title":"queue_not_empty","value":{"errors":[{"code":"90050","title":"Unable to delete queue","detail":"Only empty queues can be deleted."}]}},"invalid_characters":{"title":"invalid_characters","value":{"errors":[{"code":"10015","title":"Bad Request","detail":"Invalid characters in the request."}]}},"character_encoding_error":{"title":"character_encoding_error","value":{"errors":[{"code":"10028","title":"Character encoding error","detail":"Error decoding request body at position 42","meta":{"url":"https://developers.telnyx.com/docs/overview/errors/10028"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"cb33ef90-0caa-4680-87c6-34f4bec1cd63":{"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"},"3be306b5-864b-4869-993b-6bc963247466":{"description":"Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce the rate of outbound dial attempts and retry.","content":{"application/json":{"schema":{"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":"90103","title":"Dials per second limit exceeded.","detail":"You have exceeded the number of dials per second allowed for your account."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"90103","title":"Dials per second limit exceeded.","detail":"You have exceeded the number of dials per second allowed for your account."}]}}},"exampleType":"examples"}},"exampleType":"examples"},"09b601ec-07cb-4700-adf9-ad94c08d2ac1":{"description":"Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled exceptions or system failures.","content":{"application/json":{"schema":{"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":"Internal server error","detail":"Internal server error"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Internal server error","detail":"Internal server error"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"875e8c4a-44c4-46b8-a516-dc22a4d065ee":{"description":"Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded.","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":"Service unavailable","detail":"Service unavailable"}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Service unavailable","detail":"Service unavailable"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"17b6bca0-0a95-476f-9518-5b2aa3e90863":{"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":{"7ff8a089-f4c2-47c6-8f00-ed3f4f370dc1":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"98f9771b-68f2-449f-b83a-07d37fd4949c":{"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":"Dial - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T19:30:07.876Z","originalFileLocation":"api-reference/call-commands/dial.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=\"Dial a number or SIP URI from a given connection. A successful response will include a call_leg_id which can be used to correlate the command with subsequent webhooks. To place the call with an AI assistant from the start, include assistant.id and any per-call overrides in the assistant object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers. Expected Webhooks: - call.initiated - call.answered or call.hangup - call.conversation.created when the requested assistant conversation is created, or call.conversation.start_failed when it could not be started after the called party answered - call.hold and call.unhold if the call is held/unheld - call.machine.detection.ended if answering_machine_detection was requested - call.machine.greeting.ended if answering_machine_detection was requested to detect the end of machine greeting - call.machine.premium.detection.ended if answering_machine_detection=premium was requested - call.machine.premium.greeting.ended if answering_machine_detection=premium was requested and a beep was detected - call.machine.premium.call_screening.detected if answering_machine_detection=premium_ios_call_screening_detection was requested and an Apple Call Screening tone was detected - call.deepfake_detection.result if deepfake_detection was enabled - call.deepfake_detection.error if deepfake_detection was enabled and an error occurred - streaming.started, streaming.stopped or streaming.failed if stream_url was set When the record parameter is set to record-from-answer, the response will include a recording_id field.\">\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=\"Dial - 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/dial\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://telnyx.mintlify.app/_mintlify/api/og/v2?division=Call+Commands+API\u0026amp;title=Dial\u0026amp;description=Dial+a+number+or+SIP+URI+from+a+given+connection.+A+successful+response+will+include+a+%60call_leg_id%60+which+can+be+used+to+correlate+the+command+with+subsequent+\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=c3bda81b945fbfa6b95392cbfd21000af31d27f7dbc8a589b9672dcaa42ecdfb\">\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=\"Dial - 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.app/_mintlify/api/og/v2?division=Call+Commands+API\u0026amp;title=Dial\u0026amp;description=Dial+a+number+or+SIP+URI+from+a+given+connection.+A+successful+response+will+include+a+%60call_leg_id%60+which+can+be+used+to+correlate+the+command+with+subsequent+\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=c3bda81b945fbfa6b95392cbfd21000af31d27f7dbc8a589b9672dcaa42ecdfb\">\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/dial\">\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/dial.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/dial#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/dial\",\"name\":\"Dial\",\"description\":\"Dial a number or SIP URI from a given connection. A successful response will include a call_leg_id which can be used to correlate the command with subsequent webhooks. To place the call with an AI assistant from the start, include assistant.id and any per-call overrides in the assistant object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers. Expected Webhooks: - call.initiated - call.answered or call.hangup - call.conversation.created when the requested assistant conversation is created, or call.conversation.start_failed when it could not be started after the called party answered - call.hold and call.unhold if the call is held/unheld - call.machine.detection.ended if answering_machine_detection was requested - call.machine.greeting.ended if answering_machine_detection was requested to detect the end of machine greeting - call.machine.premium.detection.ended if answering_machine_detection=premium was requested - call.machine.premium.greeting.ended if answering_machine_detection=premium was requested and a beep was detected - call.machine.premium.call_screening.detected if answering_machine_detection=premium_ios_call_screening_detection was requested and an Apple Call Screening tone was detected - call.deepfake_detection.result if deepfake_detection was enabled - call.deepfake_detection.error if deepfake_detection was enabled and an error occurred - streaming.started, streaming.stopped or streaming.failed if stream_url was set When the record parameter is set to record-from-answer, the response will include a recording_id field.\",\"dateModified\":\"2026-10-29T19:30:07.876Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/dial#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/dial#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\":\"Dial\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/dial\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/dial#apireference\",\"headline\":\"Dial\",\"name\":\"Dial\",\"description\":\"Dial a number or SIP URI from a given connection. A successful response will include a call_leg_id which can be used to correlate the command with subsequent webhooks. To place the call with an AI assistant from the start, include assistant.id and any per-call overrides in the assistant object; Telnyx attempts to warm up the assistant before placing the call and starts it automatically when the called party answers. Expected Webhooks: - call.initiated - call.answered or call.hangup - call.conversation.created when the requested assistant conversation is created, or call.conversation.start_failed when it could not be started after the called party answered - call.hold and call.unhold if the call is held/unheld - call.machine.detection.ended if answering_machine_detection was requested - call.machine.greeting.ended if answering_machine_detection was requested to detect the end of machine greeting - call.machine.premium.detection.ended if answering_machine_detection=premium was requested - call.machine.premium.greeting.ended if answering_machine_detection=premium was requested and a beep was detected - call.machine.premium.call_screening.detected if answering_machine_detection=premium_ios_call_screening_detection was requested and an Apple Call Screening tone was detected - call.deepfake_detection.result if deepfake_detection was enabled - call.deepfake_detection.error if deepfake_detection was enabled and an error occurred - streaming.started, streaming.stopped or streaming.failed if stream_url was set When the record parameter is set to record-from-answer, the response will include a recording_id field.\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/dial\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/dial#webpage\"},\"dateModified\":\"2026-10-29T19:30:07.876Z\",\"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","description":"Returns dials-per-second (DPS) metrics for your account's outbound dials made with the Call Control `Dial` command and TeXML, as time buckets with dial counts, accepted and rejected dials, average and peak DPS, and the DPS limit in force.\n\nThe result has one record per region per bucket, ordered by `start_time` and then `region`, newest first unless `sort=start_time`. Regions are never summed: the DPS limit is enforced per region, so a cross-region total cannot be compared with it.\n\nOnly buckets that saw dials are returned. Treat a missing bucket as zero dials.\n\nOnly complete 5-second windows are counted, and a window is counted about 15 seconds after it closes. The newest `granularity=second` record is therefore your live DPS, about 20 seconds old. Request the last minute or two with `sort=-start_time`; the first record of each `region` is that region's live rate (`page[limit]=1` would hide every region but one). If no recent record exists, the live rate is zero.\n\nResults are cursor paginated. Follow `meta.next`, or pass `meta.cursors.after` as `page[after]`, until `meta.next` is absent. No total count is returned.\n\nThis endpoint is in development and can change before general availability.\n","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","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 callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call cost","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callCost","href":"/api-reference/callbacks/call-cost"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call hold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callHold","href":"/api-reference/callbacks/call-hold"},{"title":"Call initiated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callInitiated","href":"/api-reference/callbacks/call-initiated"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"},{"title":"Call unhold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callUnhold","href":"/api-reference/callbacks/call-unhold"}]}]},{"group":"Answer","pages":[{"group":"Call Commands API","pages":[{"title":"Answer call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/answer","href":"/api-reference/call-commands/answer-call"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"}]}]},{"group":"Bridge","pages":[{"group":"Call Commands API","pages":[{"title":"Bridge calls","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/bridge","href":"/api-reference/call-commands/bridge-calls"}]},{"group":"Callbacks API","pages":[{"title":"Call bridged","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callBridged","href":"/api-reference/callbacks/call-bridged"}]}]},{"group":"Start AI assistant","pages":[{"group":"Call Commands API","pages":[{"title":"Start AI Assistant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_start","href":"/api-reference/call-commands/start-ai-assistant"}]},{"group":"Callbacks API","pages":[{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationEnded","href":"/api-reference/callbacks/call-conversation-ended"},{"title":"Call conversation insights generated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationInsightsGenerated","href":"/api-reference/callbacks/call-conversation-insights-generated"},{"title":"Call analyzed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnalyzed","href":"/api-reference/callbacks/call-analyzed"}]}]},{"group":"Join AI assistant","pages":[{"group":"Call Commands API","pages":[{"title":"Join AI Assistant Conversation","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_join","href":"/api-reference/call-commands/join-ai-assistant-conversation"}]},{"group":"Callbacks API","pages":[{"title":"Call conversation ended","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationEnded","href":"/api-reference/callbacks/call-conversation-ended"},{"title":"Call conversation insights generated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationInsightsGenerated","href":"/api-reference/callbacks/call-conversation-insights-generated"},{"title":"Call analyzed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnalyzed","href":"/api-reference/callbacks/call-analyzed"}]}]},{"group":"Stop AI assistant","pages":[{"title":"Stop AI Assistant","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/ai_assistant_stop","href":"/api-reference/call-commands/stop-ai-assistant"}]},{"group":"Add messages to AI Assistant","pages":[{"title":"Add messages to AI Assistant","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":"Dial - Telnyx","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-CX_qQQOL.js","dist-BTZUMDnx.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-xpJZXxdP.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-m07pfKpT.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","AssistantPageLink-DqdKa2R4.js"]}