Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback.
Expected Webhooks:
call.speak.started
call.speak.ended
POST
/
calls
/
{call_control_id}
/
actions
/
speak
JavaScript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.calls.actions.speak('call_control_id', {
payload: 'Say this on the call',
voice: 'female',
});
console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.speak(
call_control_id="call_control_id",
payload="Say this on the call",
voice="female",
)
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.Actions.Speak(
context.TODO(),
"call_control_id",
telnyx.CallActionSpeakParams{
Payload: "Say this on the call",
Voice: "female",
},
)
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.actions.ActionSpeakParams;
import com.telnyx.sdk.models.calls.actions.ActionSpeakResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
ActionSpeakParams params = ActionSpeakParams.builder()
.callControlId("call_control_id")
.payload("Say this on the call")
.voice("female")
.build();
ActionSpeakResponse response = client.calls().actions().speak(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.actions.speak("call_control_id", payload: "Say this on the call", voice: "female")
puts(response)
<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->calls->actions->speak(
'call_control_id',
payload: 'Say this on the call',
voice: 'female',
clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',
commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',
language: 'arb',
loop: 'string',
payloadType: 'text',
serviceLevel: 'basic',
stop: 'current',
targetLegs: 'both',
voiceSettings: [
'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'
],
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}
telnyx calls:actions speak \
--api-key 'My API Key' \
--call-control-id call_control_id \
--payload 'Say this on the call' \
--voice female
Define voices using the format <Provider>.<Model>.<VoiceId>. Specifying only the provider will give default values for voice_id and model_id.
Supported Providers:
AWS: Use AWS.Polly.<VoiceId> (e.g., AWS.Polly.Joanna). For neural voices, which provide more realistic, human-like speech, append -Neural to the VoiceId (e.g., AWS.Polly.Joanna-Neural). Check the available voices for compatibility.
Azure: Use Azure.<VoiceId> (e.g., Azure.en-CA-ClaraNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural). For a complete list of voices, go to Azure Voice Gallery. Use voice_settings to configure custom deployments, regions, or API keys.
ElevenLabs: Use ElevenLabs.<ModelId>.<VoiceId> (e.g., ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM). The ModelId part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in "voice_settings": {"api_key_ref": "<secret_identifier>"}. See integration secrets documentation for details. Check available voices.
Telnyx: Use Telnyx.<model_id>.<voice_id> (e.g., Telnyx.KokoroTTS.af). Use voice_settings to configure voice_speed and other synthesis parameters. Bayan provides Arabic (multiple dialects) and English voices (e.g., Telnyx.Bayan.Ahmed, Telnyx.Bayan.Amanda). Sukhan provides Urdu voices (e.g., Telnyx.Sukhan.urdu-professor); voice_speed is not supported.
Minimax: Use Minimax.<ModelId>.<VoiceId> (e.g., Minimax.speech-02-hd.Wise_Woman). Supported models: speech-02-turbo, speech-02-hd, speech-2.6-turbo, speech-2.8-turbo. Use voice_settings to configure speed, volume, pitch, and language_boost.
Resemble: Use Resemble.<ModelId>.<VoiceId> (e.g., Resemble.Turbo.Aaron_en-US). Supported models: Pro, Turbo, Urdu. <VoiceId> is a stock voice name or the ID of a Resemble voice clone. Use voice_settings to configure precision, sample_rate, and format.
Inworld: Use Inworld.<ModelId>.<VoiceId> (e.g., Inworld.Mini.Loretta, Inworld.Max.Oliver, Inworld.TTS2.Loretta). Supported models: Mini, Max, TTS2. Use voice_settings to configure delivery_mode (STABLE, BALANCED, CREATIVE), supported by TTS2 only.
Fish Audio: Use FishAudio.<ModelId>.<VoiceId> (e.g., FishAudio.s2.1-pro.<reference_id>). Supported models: s2.1-pro, s2-pro, s1. VoiceId is a Fish Voice-Library reference ID.
Soniox: Use Soniox.<ModelId>.<VoiceId> (e.g., Soniox.tts-rt-v2.Emma). Supported model: tts-rt-v2. Browse the catalog via the Voices API. Every voice speaks all supported languages; set language to the two-letter ISO 639-1 code of the text, for example it. SSML is not supported. Use voice_settings to configure speed (0.7 to 1.3) and reduce_silence.
xAI: Use xAI.<VoiceId> (e.g., xAI.eve). Available voices: eve, ara, rex, sal, leo.
Humain: Use Humain.<VoiceId> (e.g., Humain.sara-ar). Available voices: sara-en, abdulaziz-en, sara-ar, abdulaziz-ar, nourah-ar, abdullah-ar. Native Arabic (Saudi dialect) and English voices only — no ModelId segment.
For service_level basic, you may define the gender of the speaker (male or female).
This parameter impacts speech quality, language options and payload types. When using basic, only the en-US language and payload type text are allowed.
When specified, it stops the current audio being played. Specify current to stop the current audio being played, and to play the next file in the queue. Specify all to stop the current audio file being played and to also clear all audio files from the queue.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.calls.actions.speak('call_control_id', {
payload: 'Say this on the call',
voice: 'female',
});
console.log(response.data);
import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.speak(
call_control_id="call_control_id",
payload="Say this on the call",
voice="female",
)
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.Actions.Speak(
context.TODO(),
"call_control_id",
telnyx.CallActionSpeakParams{
Payload: "Say this on the call",
Voice: "female",
},
)
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.actions.ActionSpeakParams;
import com.telnyx.sdk.models.calls.actions.ActionSpeakResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
ActionSpeakParams params = ActionSpeakParams.builder()
.callControlId("call_control_id")
.payload("Say this on the call")
.voice("female")
.build();
ActionSpeakResponse response = client.calls().actions().speak(params);
}
}
require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.actions.speak("call_control_id", payload: "Say this on the call", voice: "female")
puts(response)
<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->calls->actions->speak(
'call_control_id',
payload: 'Say this on the call',
voice: 'female',
clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',
commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',
language: 'arb',
loop: 'string',
payloadType: 'text',
serviceLevel: 'basic',
stop: 'current',
targetLegs: 'both',
voiceSettings: [
'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'
],
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}
telnyx calls:actions speak \
--api-key 'My API Key' \
--call-control-id call_control_id \
--payload 'Say this on the call' \
--voice female
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Telnyx","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","colors":{"primary":"#00B688","light":"#00B688","dark":"#00B688"},"logo":{"light":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=5ee3f61d11ba90a197dd9a1e3499fab6","dark":"https://mintcdn.com/telnyx/v2FpkbJg6PQ53qHU/assets/images/site/logo-dark.svg?fit=max\u0026auto=format\u0026n=v2FpkbJg6PQ53qHU\u0026q=85\u0026s=d65aaa12ec708c79e5833cbdea958055"},"favicon":"https://mintcdn.com/telnyx/t-qaBUa_gCxdRz_m/favicon.ico?fit=max\u0026auto=format\u0026n=t-qaBUa_gCxdRz_m\u0026q=85\u0026s=8291283238ab8c0e2a7a985e69f38c2f","background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"triangle-exclamation","href":"/docs/development/api-fundamentals/api-errors","label":"Error codes"},{"icon":"headset","href":"https://telnyx.com/contact-us","label":"Contact us"},{"icon":"user","href":"https://portal.telnyx.com/#/login/sign-in","label":"Login"}],"primary":{"type":"button","label":"Sign Up","href":"https://telnyx.com/sign-up"}},"footer":{"socials":{"github":"https://github.com/team-telnyx","linkedin":"https://www.linkedin.com/company/telnyx","slack":"https://joinslack.telnyx.com","x":"https://x.com/telnyx"},"links":[{"header":"Resources","items":[{"label":"Pricing","href":"https://developers.telnyx.com/internal/pages/pricing"},{"label":"Compare Telnyx","href":"https://developers.telnyx.com/internal/pages/compare"},{"label":"Support center","href":"https://support.telnyx.com/en"},{"label":"SETI","href":"https://seti.telnyx.com"},{"label":"Agent platform configs","href":"https://github.com/team-telnyx/ai"},{"label":"About Telnyx","href":"https://developers.telnyx.com/internal/pages/about"},{"label":"Service status","href":"https://status.telnyx.com"}]},{"header":"Updates","items":[{"label":"Release notes","href":"https://telnyx.com/release-notes"}]},{"header":"Community","items":[{"label":"Low Latency Club","href":"https://lowlatencyclub.ai/"}]},{"header":"Legal","items":[{"label":"Privacy policy","href":"https://telnyx.com/privacy-policy"},{"label":"Terms and conditions","href":"https://telnyx.com/terms-and-conditions"}]}]},"seo":{"metatags":{"og:description":"Infrastructure for real-time agents. Voice, AI, Edge Compute","description":"Infrastructure for real-time agents. Voice, AI, Edge Compute"},"organization":{"name":"Telnyx","url":"https://telnyx.com","logo":"https://telnyx.com/favicon.ico","sameAs":["https://x.com/telnyx","https://www.linkedin.com/company/telnyx/","https://github.com/team-telnyx"]}},"fonts":{"heading":{"family":"PP Formula","weight":800,"source":"assets/fonts/PPFormula-Extrabold.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"assets/fonts/Inter-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"gtm":{"tagId":"GTM-NRRX236"}},"banner":{"content":"Check out our upcoming events and meetups! [View events →](https://lowlatencyclub.ai/)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"telnyx","hasAudioNarration":false,"actualSubdomain":"telnyx","customDomains":["developers.telnyx.com"],"gitSource":{"type":"github","owner":"team-telnyx","repo":"developer-docs-mintlify","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aef10fbbe4829dd4e3b2ca6","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":601},{"language":"default","tag":"Calling","count":592},{"language":"default","tag":"Other APIs","count":406},{"language":"default","tag":"AI","count":395},{"language":"default","tag":"Messaging","count":353},{"language":"default","tag":"Numbers","count":287},{"language":"default","tag":"Agent Platform","count":282},{"language":"default","tag":"Assistants","count":202},{"language":"default","tag":"Voice API","count":178},{"language":"default","tag":"SMS \u0026 MMS","count":149}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"[class*=\"sidebar\"] [class*=\"tag\"],[class*=\"sidebar\"] [class*=\"badge\"],nav [class*=\"tag\"],nav [class*=\"badge\"]{font-size:0.8rem!important}#ot-sdk-btn-floating{left:auto!important;right:10px!important}body:has([aria-label=\"Preview Widget\"]) #ot-sdk-btn-floating{bottom:88px!important}#navbar .nav-tabs-item:has(>div>svg[style*=\"/book-open.svg\"]){display:none}.nav-tabs a.nav-tabs-item:not([aria-current=\"location\"]){display:none}#navbar div:has(>div>.nav-tabs>a.nav-tabs-item:first-child:last-child){display:none}@media (width >= 64rem){.txd-side{display:block}button[data-component-part=\"products-selector-trigger\"],button.tx-product-switcher{display:none!important}}#mobile-nav [data-component-part=\"products-selector-trigger\"],#mobile-nav #navigation-items>div:has(>div>button[aria-haspopup=\"menu\"]),#mobile-nav.tx-has-directory #navigation-items{display:none!important}#mobile-nav .tx-mobile-directory{padding:0;margin-bottom:1.5rem}#mobile-nav .tx-mobile-directory a,#mobile-nav .tx-mobile-directory .tx-dir-suite-head{min-height:2.75rem}#mobile-nav .tx-mobile-directory :is(a,.tx-dir-suite-head):focus-visible{outline:2px solid currentColor;outline-offset:-2px}.txd-shell{display:flex;gap:0;max-width:none;margin:0;padding:3rem 2rem 6rem 0}.txd-side{width:18rem;flex-shrink:0}.txd-main{flex:1;min-width:0;max-width:56rem;margin-left:11.75rem}@media (max-width: 80rem){.txd-main{margin-left:4rem}}@media (width \u003c 64rem){.txd-shell{display:block;padding:2rem 1.5rem 5rem}.txd-side{display:none}.txd-main{margin-left:0}}:is(#tx-directory,.tx-mobile-directory){margin:0 0 0.5rem;padding:0 0.5rem 0 1rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label{font-size:0.72rem;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;opacity:0.55;margin:0 0 0.4rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-label-gap{margin-top:1.5rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link,:is(#tx-directory,.tx-mobile-directory) summary{display:flex;align-items:center;cursor:pointer;font-size:0.875rem;line-height:1.25rem;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81);text-decoration:none}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link,html.dark :is(#tx-directory,.tx-mobile-directory) summary{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,:is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#00b688;background:transparent;box-shadow:none;font-weight:400;text-shadow:-0.2px 0 0 currentColor, 0.2px 0 0 currentColor}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link:hover,html.dark :is(#tx-directory,.tx-mobile-directory) summary:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-link[aria-current=\"page\"]{color:#5eead4;background:transparent;box-shadow:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon,html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-soon:hover{cursor:default;opacity:0.45;background:transparent;color:inherit}:is(#tx-directory,.tx-mobile-directory) .tx-dir-soon sup{font-size:0.6rem;line-height:1;letter-spacing:0.05em;text-transform:uppercase;margin-left:0.4rem;vertical-align:super}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite{margin-bottom:0.15rem}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{display:flex;align-items:center;cursor:pointer;user-select:none;font-size:0.875rem;line-height:1.25rem;font-weight:500;padding:0.35rem 0.5rem;border-radius:0.375rem;color:rgb(55 65 81)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite-head::after{content:'';width:0.42rem;height:0.42rem;margin-left:auto;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform 0.15s;flex-shrink:0;opacity:0.7}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head::after{transform:rotate(45deg)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04);font-weight:600}html.dark :is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>.tx-dir-suite-head{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite>ul{display:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-suite.open>ul{display:block}:is(#tx-directory,.tx-mobile-directory) ul{margin:0.15rem 0 0.5rem;padding:0}:is(#tx-directory,.tx-mobile-directory) li{list-style:none}:is(#tx-directory,.tx-mobile-directory) li a{display:flex;align-items:center;font-size:0.875rem;line-height:1.25rem;padding:0.3rem 0.5rem 0.3rem 1.6rem;border-radius:0.375rem;color:rgb(107 114 128);text-decoration:none}:is(#tx-directory,.tx-mobile-directory) .tx-dir-section-item{font-weight:500}html.dark :is(#tx-directory,.tx-mobile-directory) li a{color:rgb(156 163 175)}:is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(17 24 39);background:rgb(0 0 0 / 0.04)}html.dark :is(#tx-directory,.tx-mobile-directory) li a:hover{color:rgb(229 231 235);background:rgb(255 255 255 / 0.06)}:is(#tx-directory,.tx-mobile-directory) .tx-dir-icon{display:inline-block;width:1rem;height:1rem;flex-shrink:0;margin-right:0.5rem;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.txi-arrows-left-right-to-line{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/arrows-left-right-to-line.svg\")}.txi-bolt{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/bolt.svg\")}.txi-brain{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain.svg\")}.txi-brain-circuit{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/brain-circuit.svg\")}.txi-brands-whatsapp{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/brands/whatsapp.svg\")}.txi-broadcast-tower{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/broadcast-tower.svg\")}.txi-browser{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/browser.svg\")}.txi-circle-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/circle-nodes.svg\")}.txi-clone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/clone.svg\")}.txi-cloud{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cloud.svg\")}.txi-code{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/code.svg\")}.txi-comment-sms{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/comment-sms.svg\")}.txi-cubes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/cubes.svg\")}.txi-database{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/database.svg\")}.txi-door-open{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/door-open.svg\")}.txi-envelope{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/envelope.svg\")}.txi-eye{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/eye.svg\")}.txi-file-certificate{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/file-certificate.svg\")}.txi-fingerprint{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/fingerprint.svg\")}.txi-folder-tree{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/folder-tree.svg\")}.txi-globe{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/globe.svg\")}.txi-hard-drive{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hard-drive.svg\")}.txi-hashtag{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/hashtag.svg\")}.txi-headset{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/headset.svg\")}.txi-key{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/key.svg\")}.txi-layer-group{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/layer-group.svg\")}.txi-magnifying-glass{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/magnifying-glass.svg\")}.txi-message{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message.svg\")}.txi-message-dots{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/message-dots.svg\")}.txi-microchip-ai{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microchip-ai.svg\")}.txi-microphone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/microphone.svg\")}.txi-network-wired{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/network-wired.svg\")}.txi-phone{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone.svg\")}.txi-phone-volume{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/phone-volume.svg\")}.txi-plug{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/plug.svg\")}.txi-right-left{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/right-left.svg\")}.txi-robot{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/robot.svg\")}.txi-server{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/server.svg\")}.txi-share-nodes{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/share-nodes.svg\")}.txi-shield{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield.svg\")}.txi-shield-check{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/shield-check.svg\")}.txi-signal{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/signal.svg\")}.txi-sim-card{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/sim-card.svg\")}.txi-split{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/split.svg\")}.txi-table{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/table.svg\")}.txi-tower-control{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/tower-control.svg\")}.txi-train-tunnel{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/train-tunnel.svg\")}.txi-video{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/video.svg\")}.txi-wand-magic-sparkles{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/wand-magic-sparkles.svg\")}.txi-waveform{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform.svg\")}.txi-waveform-lines{-webkit-mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\");mask-image:url(\"https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/waveform-lines.svg\")}.txd-main .txd-h1{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:2.1rem;font-weight:500;letter-spacing:-0.01em;margin:1.2rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h1{color:rgb(229 231 235)}.txd-main .txd-lead{font-size:1.3rem;line-height:1.55;font-weight:500;margin:0.9rem 0 1.3rem;color:rgb(31 41 55)}html.dark .txd-main .txd-lead{color:rgb(209 213 219)}.txd-main .txd-h2{font-family:var(--font-family-headings-custom, \"PP Formula\"), -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;font-size:1.45rem;font-weight:500;margin:2.4rem 0 0.4rem;color:rgb(22 28 26)}html.dark .txd-main .txd-h2{color:rgb(229 231 235)}.txd-main .txd-section-h{font-size:1.05rem;font-weight:600;margin:1.8rem 0 0.2rem;opacity:0.85}.txd-main .txd-p{margin:0.7rem 0 1rem;line-height:1.65;color:rgb(75 85 99)}html.dark .txd-main .txd-p{color:rgb(156 163 175)}.txd-main .txd-p a{text-decoration:underline}.txd-main .txd-h1{max-width:46rem;line-height:1.12}.txd-main .txd-hero-copy{max-width:45rem}.txd-main .txd-follow-up{margin-top:1rem}.txd-main .txd-follow-up a{color:#00b688;font-weight:600;text-decoration:none}.txd-main .txd-follow-up a:hover{text-decoration:underline}.txd-main a:focus-visible{outline:2px solid #00b688;outline-offset:3px}@media (max-width: 48rem){.txd-main .txd-h1{font-size:1.9rem}}@media (min-width: 64.01rem) and (max-width: 90rem){.txd-main{margin-right:4rem}}.rm-explorer{--rm-border: rgb(15 23 42 / 14%);--rm-muted: #5f6b68;--rm-soft: #f6f8f7}.dark .rm-explorer{--rm-border: rgb(255 255 255 / 14%);--rm-muted: #a2aaa8;--rm-soft: #151a19}#resource-map-toolbar{position:sticky;top:5rem;z-index:20;margin:1.25rem 0 1.75rem;padding:.75rem 0;background:var(--rm-surface, #fff);border-bottom:1px solid var(--rm-border)}.dark #resource-map-toolbar{background:#0b0e0d}.rm-controls{display:grid;grid-template-columns:minmax(15rem, 1fr) minmax(10rem, auto) auto;gap:.625rem;align-items:center}.rm-search{position:relative;min-width:0}.rm-search svg{position:absolute;top:50%;left:.75rem;width:1rem;height:1rem;color:var(--rm-muted);fill:none;stroke:currentColor;stroke-width:1.8;transform:translateY(-50%);pointer-events:none}.rm-search input,.rm-area-select,.rm-collapse,.rm-clear,.rm-empty button{min-height:2.5rem;color:inherit;background:transparent;border:1px solid var(--rm-border);border-radius:.5rem;font:inherit;font-size:.875rem}.rm-search input{width:100%;padding:.58rem 2.6rem .58rem 2.35rem}.rm-search input::placeholder{color:var(--rm-muted);opacity:1}.rm-shortcut{position:absolute;top:50%;right:.65rem;display:grid;width:1.5rem;height:1.5rem;place-items:center;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.35rem;font:inherit;font-size:.72rem;transform:translateY(-50%);pointer-events:none}.rm-area-wrap{position:relative;max-width:13rem}.rm-area-select{width:100%;max-width:13rem;padding:.55rem 2.25rem .55rem .75rem;appearance:none;cursor:pointer}.rm-area-caret{position:absolute;top:50%;right:.85rem;width:.45rem;height:.45rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none}.rm-collapse,.rm-clear,.rm-empty button{padding:.5rem .75rem;font-weight:650;cursor:pointer}.rm-search input:focus-visible,.rm-area-select:focus-visible,.rm-collapse:focus-visible,.rm-clear:focus-visible,.rm-empty button:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-color:#00b688;box-shadow:none!important}.rm-collapse:hover,.rm-clear:hover,.rm-empty button:hover{color:#08785d;background:var(--rm-soft)}.dark .rm-collapse:hover,.dark .rm-clear:hover,.dark .rm-empty button:hover{color:#5eead4}.rm-meta{display:flex;min-height:1.65rem;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .15rem 0}.rm-status{color:var(--rm-muted);font-size:.78rem;line-height:1.35}.rm-clear{min-height:1.8rem;padding:.2rem .55rem;border-color:transparent;font-size:.78rem}.rm-empty{display:grid;justify-items:start;gap:.35rem;margin:-.5rem 0 1.75rem;padding:1.1rem 1.2rem;color:var(--rm-muted);background:var(--rm-soft);border:1px solid var(--rm-border);border-radius:.75rem;font-size:.875rem}.rm-empty strong{color:inherit;font-size:.95rem}.rm-empty button{min-height:2.2rem;margin-top:.35rem}.rm-resource-list{display:block!important;margin:0 0 .75rem!important;border-color:var(--rm-border)!important;border-top:0!important;border-radius:0 0 .75rem .75rem!important}.rm-resource-list>details.accordion{margin:0!important;border:0!important;border-radius:0!important}.rm-resource-list>details.accordion+details.accordion{border-top:1px solid var(--rm-border)!important}.rm-resource-list>details.accordion>summary{min-height:3rem;padding:.7rem .9rem!important;border-radius:0!important}.rm-resource-list>details.accordion:first-child>summary{border-radius:0!important}.rm-resource-list>details.accordion:last-child:not([open])>summary{border-radius:0 0 .75rem .75rem!important}.rm-resource-list [data-component-part=\"accordion-title\"]{display:flex;min-width:0;align-items:baseline;justify-content:space-between;gap:1rem}.rm-resource-name{min-width:0;overflow-wrap:anywhere;font-weight:650}.rm-method-count{flex:0 0 auto;color:var(--rm-muted);font-size:.75rem;font-weight:500;white-space:nowrap}.rm-resource-list details[open]>summary{background:var(--rm-soft)}.rm-resource-list details[open] [data-component-part=\"accordion-content\"]{margin-right:1rem;margin-left:1rem}.rm-resource-list tbody tr.rm-row-match{background:rgb(0 182 136 / 8%)}.rm-resource-list td:first-child code{white-space:nowrap}.rm-resource-list tbody tr[hidden],.rm-explorer h2[hidden],.rm-resource-list[hidden],.rm-empty[hidden],.rm-collapse[hidden],.rm-clear[hidden]{display:none!important}.rm-explorer h2{position:relative;min-height:3rem;margin:.45rem 0 0!important;scroll-margin-top:10rem;border:1px solid var(--rm-border);border-radius:.75rem}.rm-explorer h2.rm-section-open{border-radius:.75rem .75rem 0 0}.rm-section-toggle{display:grid;width:100%;min-height:3rem;grid-template-columns:minmax(0, 1fr) auto auto;align-items:center;gap:.75rem;padding:.6rem .9rem;color:inherit;text-align:left;background:transparent;border:0;cursor:pointer}.rm-section-toggle:hover,.rm-section-toggle:focus-visible{background:var(--rm-soft)}.rm-section-toggle:focus-visible{outline:2px solid #00b688;outline-offset:2px;border-radius:.7rem}.rm-section-name{font-size:1rem;font-weight:700}.rm-section-count{display:grid;min-width:1.65rem;min-height:1.4rem;place-items:center;padding:3px 6px;color:#08785d;background:rgb(0 182 136 / 10%);border-radius:.35rem;font-size:12px;font-weight:700;line-height:16px;white-space:nowrap}.dark .rm-section-count{color:#5eead4;background:#12302b}.rm-section-caret{width:.5rem;height:.5rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-.15rem)}.rm-section-toggle[aria-expanded=\"true\"] .rm-section-caret{transform:rotate(225deg) translate(-.1rem, -.05rem)}@media (max-width: 767px){#resource-map-toolbar{position:static;top:auto;z-index:auto;margin-top:1rem;padding-top:.6rem}.rm-controls{grid-template-columns:minmax(0, 1fr) auto}.rm-search{grid-column:1 / -1}.rm-search input{padding-right:.75rem}.rm-shortcut{display:none}.rm-area-wrap,.rm-area-select{width:100%;max-width:none}.rm-resource-list [data-component-part=\"accordion-title\"]{gap:.65rem}.rm-method-count{font-size:.7rem}.rm-resource-list table,.rm-resource-list tbody{display:block;width:100%;min-width:0!important}.rm-resource-list thead{display:none}.rm-resource-list tbody tr{display:grid;width:100%;grid-template-columns:minmax(0, 1fr);gap:.45rem;padding:.75rem 0}.rm-resource-list tbody tr+tr{border-top:1px solid var(--rm-border)}.rm-resource-list tbody td{display:grid;width:100%;min-width:0!important;grid-template-columns:4.5rem minmax(0, 1fr);align-items:start;gap:.5rem;padding:0!important;border:0!important}.rm-resource-list tbody td::before{color:var(--rm-muted);font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.rm-resource-list tbody td:first-child::before{content:\"Method\"}.rm-resource-list tbody td:last-child::before{content:\"Endpoint\"}.rm-resource-list tbody td code,.rm-resource-list tbody td a{min-width:0;white-space:normal!important;overflow-wrap:anywhere}}@media (prefers-reduced-motion: reduce){.rm-explorer *,.rm-explorer *::before,.rm-explorer *::after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.sdk-launchpad{--sdk-border: #d8e1de;--sdk-panel: #ffffff;margin:1rem 0 1.5rem;padding:1rem;overflow:hidden;color:inherit;background:var(--sdk-panel);border:1px solid var(--sdk-border);border-radius:12px}.dark .sdk-launchpad{--sdk-border: #293431;--sdk-panel: #101513}.sdk-launchpad-kicker{margin:0 0 .25rem!important;color:#08785d;font-size:.68rem;font-weight:800;letter-spacing:.1em}.dark .sdk-launchpad-kicker{color:#5eead4}.sdk-launchpad>h2{margin-top:.25rem}.sdk-launchpad [role=\"tablist\"]{display:flex;flex-wrap:wrap;gap:.25rem}.sdk-launchpad [role=\"tab\"]{min-width:56px;min-height:44px}.sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#08785d!important}.dark .sdk-launchpad [role=\"tab\"][aria-selected=\"true\"]{color:#5eead4!important}.sdk-launchpad [role=\"tab\"]:focus-visible,.sdk-launchpad a:focus-visible,.sdk-launchpad-code:focus-visible{outline:2px solid #08785d;outline-offset:2px}.dark .sdk-launchpad [role=\"tab\"]:focus-visible,.dark .sdk-launchpad a:focus-visible,.dark .sdk-launchpad-code:focus-visible{outline-color:#5eead4}.sdk-launchpad-code{max-width:100%;overflow-x:auto;border-radius:.5rem}.sdk-launchpad-code pre{max-width:none;overflow-x:visible!important}.sdk-launchpad-code button{min-width:44px;min-height:44px}#content-area:has(#sdk-launchpad) .chat-assistant-floating-input{display:none}@media (max-width: 640px){.sdk-launchpad{margin-top:.75rem;padding:.75rem}.sdk-launchpad-kicker{display:none}.sdk-launchpad [role=\"tablist\"]{display:grid;grid-template-columns:repeat(6, minmax(0, 1fr));gap:.2rem;overflow:visible}.sdk-launchpad [role=\"tab\"]{min-width:0;min-height:44px;padding-inline:.2rem;font-size:.75rem;line-height:1.15;white-space:nowrap}}.sdk-directory li{margin-block:.5rem}.mdx-content table td{min-width:0!important}.mdx-content table td :is(code,a){overflow-wrap:anywhere}.mdx-content table :is(th,td):first-child code{white-space:nowrap;word-break:normal;overflow-wrap:normal}@media (min-width: 768px){.tx-table-grid table{table-layout:fixed}.tx-table-grid table :is(th,td):first-child{width:40%}}@media (min-width: 768px){.tx-table-grid-3 table{table-layout:fixed}.tx-table-grid-3 table :is(th,td):first-child{width:22%}.tx-table-grid-3 table :is(th,td):last-child{width:18%}}.tx-retirement-banner{margin-bottom:1.5rem}.tx-retirement-banner>div{margin:0}@media (min-width: 1024px){.tx-retirement-banner{position:sticky;top:calc(6rem + var(--banner-height, 0px));z-index:20;padding-top:.5rem;background:rgb(var(--background-light, 255 255 255))}.dark .tx-retirement-banner{background:rgb(var(--background-dark, 9 12 14))}}#content>.callout:first-child{margin-top:0}#content strong{font-weight:600}"}],"page":{"pagePath":"api-reference/call-commands/speak-text","slug":"/api-reference/call-commands/speak-text","pageMetadata":{"title":"Speak text","description":"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback.\n\n**Expected Webhooks:**\n\n- `call.speak.started`\n- `call.speak.ended`\n","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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback.\"\n }), \"\\n\", _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.speak.started\"\n })\n }), \"\\n\", _jsx(_components.li, {\n children: _jsx(_components.code, {\n children: \"call.speak.ended\"\n })\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Speak text","description":"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback.\n\n**Expected Webhooks:**\n\n- `call.speak.started`\n- `call.speak.ended`\n","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/telnyx/a2dd5aaa2ff5831a/reading-progress.js","/_mintlify/custom/telnyx/7b77ce9cedb163fd/webmcp-init.js","/_mintlify/custom/telnyx/7fbfee588ac7ad38/structured-data.js","/_mintlify/custom/telnyx/41d9633b1a2dd405/scripts/tests/generate-llms-txt.test.js","/_mintlify/custom/telnyx/8851ad5fd6e9b5c7/scripts/tests/direct-source-workflows.test.js","/_mintlify/custom/telnyx/1cd11353bb65f5a7/scripts/tests/redirects.test.js","/_mintlify/custom/telnyx/f981035eb45fcbdb/scripts/tests/generate-error-catalog.test.js","/_mintlify/custom/telnyx/132bc205f55282a5/scripts/tests/sync-llms-automerge.test.js","/_mintlify/custom/telnyx/05e787f15f45952b/scripts/tests/webhook-catalog-lifecycle.test.js","/_mintlify/custom/telnyx/01b840b27496e6c8/scripts/tests/repository-structure.test.js","/_mintlify/custom/telnyx/5ebc7d6e18012563/scripts/tests/legacy-content-usage.test.js","/_mintlify/custom/telnyx/ac1f21e68bf4050a/scripts/docs/check-llms-links.js","/_mintlify/custom/telnyx/5f7d2f1ae375b9ad/scripts/docs/check-llms-native-routes.js","/_mintlify/custom/telnyx/b8d13287c2dcc5b9/scripts/docs/fetch-coverage.js","/_mintlify/custom/telnyx/e0a29f76f2645359/scripts/docs/generate-error-catalog.js","/_mintlify/custom/telnyx/9ffa8f6166445a46/scripts/docs/generate-llms-txt.js","/_mintlify/custom/telnyx/f1f111fe784c3ede/scripts/docs/update-tts-voices.js","/_mintlify/custom/telnyx/c48ad0189f7f1c57/scripts/docs/build-sdk-doc-pages.js","/_mintlify/custom/telnyx/f840117777d76f9e/scripts/tests/sdk-doc-pages.test.js","/_mintlify/custom/telnyx/414c53c50b0e1968/resource-map-filter.js","/_mintlify/custom/telnyx/80af622b3010a712/scripts/tests/sdk-language-switcher.test.js","/_mintlify/custom/telnyx/52fa0fbcb966f8b6/sdk-language-switcher.js","/_mintlify/custom/telnyx/660ec334a362cf1c/home-directory.js","/_mintlify/custom/telnyx/33d3f1dbdec08735/scripts/generate-home-directory.js","/_mintlify/custom/telnyx/137e3eb8e1d1d85a/scripts/tests/api-fundamentals.test.js","/_mintlify/custom/telnyx/24a8eed3a5010d4c/scripts/tests/agent-sdk-workflow.test.js","/_mintlify/custom/telnyx/abc2169efcd5115c/scripts/tests/homepage-overview.test.js","/_mintlify/custom/telnyx/8edf49ac62deef02/scripts/tests/batch-detail-records-navigation.test.js","/_mintlify/custom/telnyx/e005178572336f01/scripts/tests/api-discoverability.test.js","/_mintlify/custom/telnyx/78cb83896fbea5cf/scripts/tests/home-directory.test.js","/_mintlify/custom/telnyx/11ae45253e6b7be6/scripts/tests/agent-readiness.test.js","/_mintlify/custom/telnyx/82396d5a75077c2a/scripts/tests/sample-workflow-regressions.test.js","/_mintlify/custom/telnyx/5f6625c0420c9328/scripts/tests/openapi-mintlify-parsing.test.js","/_mintlify/custom/telnyx/c7dca602ca9641ec/scripts/tests/llms-markdown-assets.test.js","/_mintlify/custom/telnyx/02d6acd7c86b79f9/scripts/tests/agent-browser-quickstart.test.js"],"openApiReferenceData":{"operation":{"summary":"Speak text","description":"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback.\n\n**Expected Webhooks:**\n\n- `call.speak.started`\n- `call.speak.ended`\n","operationId":"SpeakCall","tags":["Call Commands"],"parameters":["2ea65d27-4fe9-4c5c-963f-b7cb3c69052f"],"requestBody":"f1dbcd35-678f-4765-ac9b-2669d4ba6beb","responses":{"200":"91f96459-a40d-40a7-bf4f-4e432554060a","422":"8eac9a5e-e6f5-4a25-b38a-74ef569687fb","default":"682f4fe6-0b27-4e1a-9b30-7644ffb679dd"},"x-codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.speak('call_control_id', {\n payload: 'Say this on the call',\n voice: 'female',\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.actions.speak(\n call_control_id=\"call_control_id\",\n payload=\"Say this on the call\",\n voice=\"female\",\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Calls.Actions.Speak(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionSpeakParams{\n\t\t\tPayload: \"Say this on the call\",\n\t\t\tVoice: \"female\",\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.actions.ActionSpeakParams;\nimport com.telnyx.sdk.models.calls.actions.ActionSpeakResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionSpeakParams params = ActionSpeakParams.builder()\n .callControlId(\"call_control_id\")\n .payload(\"Say this on the call\")\n .voice(\"female\")\n .build();\n ActionSpeakResponse response = client.calls().actions().speak(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.actions.speak(\"call_control_id\", payload: \"Say this on the call\", voice: \"female\")\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->actions->speak(\n 'call_control_id',\n payload: 'Say this on the call',\n voice: 'female',\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n language: 'arb',\n loop: 'string',\n payloadType: 'text',\n serviceLevel: 'basic',\n stop: 'current',\n targetLegs: 'both',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions speak \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id \\\n --payload 'Say this on the call' \\\n --voice female"}],"method":"post","type":"path","servers":["0635ec9f-42f5-401e-98f7-c9c2b6ed8b0b"],"security":["bcc523b0-9e21-469e-85b8-03e709ed2323"],"path":"/calls/{call_control_id}/actions/speak","baseUrlOptions":["https://api.telnyx.com/v2"],"title":"Speak text","codeSamples":[{"lang":"JavaScript","source":"import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.speak('call_control_id', {\n payload: 'Say this on the call',\n voice: 'female',\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.actions.speak(\n call_control_id=\"call_control_id\",\n payload=\"Say this on the call\",\n voice=\"female\",\n)\nprint(response.data)\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/team-telnyx/telnyx-go\"\n\t\"github.com/team-telnyx/telnyx-go/option\"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Calls.Actions.Speak(\n\t\tcontext.TODO(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionSpeakParams{\n\t\t\tPayload: \"Say this on the call\",\n\t\t\tVoice: \"female\",\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.actions.ActionSpeakParams;\nimport com.telnyx.sdk.models.calls.actions.ActionSpeakResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionSpeakParams params = ActionSpeakParams.builder()\n .callControlId(\"call_control_id\")\n .payload(\"Say this on the call\")\n .voice(\"female\")\n .build();\n ActionSpeakResponse response = client.calls().actions().speak(params);\n }\n}"},{"lang":"Ruby","source":"require \"telnyx\"\n\ntelnyx = Telnyx::Client.new(api_key: \"My API Key\")\n\nresponse = telnyx.calls.actions.speak(\"call_control_id\", payload: \"Say this on the call\", voice: \"female\")\n\nputs(response)"},{"lang":"PHP","source":"\u003c?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\nuse Telnyx\\Client;\nuse Telnyx\\Core\\Exceptions\\APIException;\n\n$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');\n\ntry {\n $response = $client->calls->actions->speak(\n 'call_control_id',\n payload: 'Say this on the call',\n voice: 'female',\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n language: 'arb',\n loop: 'string',\n payloadType: 'text',\n serviceLevel: 'basic',\n stop: 'current',\n targetLegs: 'both',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n );\n\n var_dump($response);\n} catch (APIException $e) {\n echo $e->getMessage();\n}"},{"lang":"CLI","source":"telnyx calls:actions speak \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id \\\n --payload 'Say this on the call' \\\n --voice female"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"2ea65d27-4fe9-4c5c-963f-b7cb3c69052f":{"name":"call_control_id","description":"Unique identifier and token for controlling the call","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Unique identifier and token for controlling the call","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"description":"Speak request","required":true,"content":{"application/json":{"schema":{"type":"object","title":"Speak Request","required":["payload","voice"],"properties":{"payload":{"description":"The text or SSML to be converted into speech. There is a 3,000 character limit.","type":"string","example":"Say this on the call","isRequired":true,"uniqueKey":"payload","typeLabel":"string"},"voice":{"description":"Specifies the voice used in speech synthesis.\n\n- Define voices using the format `\u003cProvider>.\u003cModel>.\u003cVoiceId>`. Specifying only the provider will give default values for voice_id and model_id.\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-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery). Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs.\u003cModelId>.\u003cVoiceId>` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\u003csecret_identifier>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use `Telnyx.\u003cmodel_id>.\u003cvoice_id>` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`, `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed` is not supported.\n- **Minimax:** Use `Minimax.\u003cModelId>.\u003cVoiceId>` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.\u003cModelId>.\u003cVoiceId>` (e.g., `Resemble.Turbo.Aaron_en-US`). Supported models: `Pro`, `Turbo`, `Urdu`. `\u003cVoiceId>` is a stock voice name or the ID of a Resemble voice clone. Use `voice_settings` to configure precision, sample_rate, and format.\n- **Inworld:** Use `Inworld.\u003cModelId>.\u003cVoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode` (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio.\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.\n\nFor service_level basic, you may define the gender of the speaker (male or female).","type":"string","example":"Telnyx.KokoroTTS.af","isRequired":true,"uniqueKey":"voice","typeLabel":"string"},"payload_type":{"description":"The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML).","default":"text","type":"string","enum":["text","ssml"],"example":"ssml","uniqueKey":"payload_type","typeLabel":"enum\u003cstring>"},"service_level":{"description":"This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed.","default":"premium","type":"string","enum":["basic","premium"],"example":"premium","uniqueKey":"service_level","typeLabel":"enum\u003cstring>"},"stop":{"description":"When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue.","type":"string","example":"current","uniqueKey":"stop","typeLabel":"string"},"voice_settings":{"oneOf":[{"type":"object","title":"ElevenLabs Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["elevenlabs"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.0.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.","type":"string","example":"my_elevenlabs_api_key","uniqueKey":"voice_settings.oneOf.0.api_key_ref","typeLabel":"string"}},"uniqueKey":"voice_settings.oneOf.0","typeLabel":"ElevenLabs Voice Settings · object"},{"type":"object","title":"Telnyx Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["telnyx"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.1.type","typeLabel":"enum\u003cstring>"},"voice_speed":{"description":"The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.","type":"number","default":1,"format":"float","example":1,"minimum":0.1,"maximum":2,"uniqueKey":"voice_settings.oneOf.1.voice_speed","typeLabel":"number\u003cfloat>"}},"uniqueKey":"voice_settings.oneOf.1","typeLabel":"Telnyx Voice Settings · object"},{"type":"object","title":"AWS Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["aws"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.2.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.2","typeLabel":"AWS Voice Settings · object"},{"type":"object","title":"Minimax Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["minimax"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.3.type","typeLabel":"enum\u003cstring>"},"speed":{"description":"Speech speed multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"voice_settings.oneOf.3.speed","typeLabel":"number\u003cfloat>"},"vol":{"description":"Speech volume multiplier. Default is 1.0.","type":"number","format":"float","example":1,"default":1,"uniqueKey":"voice_settings.oneOf.3.vol","typeLabel":"number\u003cfloat>"},"pitch":{"description":"Voice pitch adjustment. Default is 0.","type":"integer","example":0,"default":0,"uniqueKey":"voice_settings.oneOf.3.pitch","typeLabel":"integer"},"language_boost":{"oneOf":[{"type":"string","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"voice_settings.oneOf.3.language_boost.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.","enum":[null,"auto","Chinese","Chinese,Yue","English","Arabic","Russian","Spanish","French","Portuguese","German","Turkish","Dutch","Ukrainian","Vietnamese","Indonesian","Japanese","Italian","Korean","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","Bulgarian","Danish","Hebrew","Malay","Persian","Slovak","Swedish","Croatian","Filipino","Hungarian","Norwegian","Slovenian","Catalan","Nynorsk","Tamil","Afrikaans"],"default":null,"uniqueKey":"voice_settings.oneOf.3.language_boost.oneOf.1","typeLabel":"null"}],"uniqueKey":"voice_settings.oneOf.3.language_boost","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"voice_settings.oneOf.3","typeLabel":"Minimax Voice Settings · object"},{"type":"object","title":"Azure Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["azure"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.4.type","typeLabel":"enum\u003cstring>"},"api_key_ref":{"description":"The `identifier` for an integration secret that refers to your Azure Speech API key.","type":"string","example":"my_azure_api_key","uniqueKey":"voice_settings.oneOf.4.api_key_ref","typeLabel":"string"},"region":{"description":"The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.","type":"string","example":"eastus","uniqueKey":"voice_settings.oneOf.4.region","typeLabel":"string"},"deployment_id":{"description":"The deployment ID for a custom Azure neural voice.","type":"string","example":"my-custom-voice-deployment","uniqueKey":"voice_settings.oneOf.4.deployment_id","typeLabel":"string"},"effect":{"description":"Audio effect to apply.","type":"string","enum":["eq_car","eq_telecomhp8k"],"uniqueKey":"voice_settings.oneOf.4.effect","typeLabel":"enum\u003cstring>"},"gender":{"description":"Voice gender filter.","type":"string","enum":["Male","Female"],"uniqueKey":"voice_settings.oneOf.4.gender","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.4","typeLabel":"Azure Voice Settings · object"},{"type":"object","title":"Resemble Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["resemble"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.5.type","typeLabel":"enum\u003cstring>"},"precision":{"description":"Audio precision format.","type":"string","enum":["PCM_16","PCM_24","PCM_32","MULAW"],"default":"PCM_32","uniqueKey":"voice_settings.oneOf.5.precision","typeLabel":"enum\u003cstring>"},"sample_rate":{"type":"string","title":"Resemble Sample Rate","description":"Audio sample rate in Hz.","enum":["8000","16000","22050","32000","44100","48000"],"default":"48000","uniqueKey":"voice_settings.oneOf.5.sample_rate","typeLabel":"enum\u003cstring>"},"format":{"description":"Output audio format.","type":"string","enum":["wav","mp3"],"default":"mp3","uniqueKey":"voice_settings.oneOf.5.format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.5","typeLabel":"Resemble Voice Settings · object"},{"type":"object","title":"Inworld Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["inworld"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.6.type","typeLabel":"enum\u003cstring>"},"delivery_mode":{"type":"string","enum":["STABLE","BALANCED","CREATIVE"],"description":"Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.","uniqueKey":"voice_settings.oneOf.6.delivery_mode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"voice_settings.oneOf.6","typeLabel":"Inworld Voice Settings · object"},{"type":"object","title":"xAI Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["xai"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.7.type","typeLabel":"enum\u003cstring>"},"language":{"description":"Language code, or `auto` to detect automatically.","type":"string","default":"auto","uniqueKey":"voice_settings.oneOf.7.language","typeLabel":"string"}},"uniqueKey":"voice_settings.oneOf.7","typeLabel":"xAI Voice Settings · object"},{"type":"object","title":"Soniox Voice Settings","description":"The settings associated with the voice selected","required":["type"],"properties":{"type":{"type":"string","enum":["soniox"],"description":"Voice settings provider type","isRequired":true,"uniqueKey":"voice_settings.oneOf.8.type","typeLabel":"enum\u003cstring>"},"speed":{"type":"number","format":"float","minimum":0.7,"maximum":1.3,"default":1,"description":"Speaking rate. 1.0 is normal speed.","uniqueKey":"voice_settings.oneOf.8.speed","typeLabel":"number\u003cfloat>"},"reduce_silence":{"type":"boolean","default":false,"description":"Shortens the pauses between words.","uniqueKey":"voice_settings.oneOf.8.reduce_silence","typeLabel":"boolean"}},"uniqueKey":"voice_settings.oneOf.8","typeLabel":"Soniox Voice Settings · object"}],"uniqueKey":"voice_settings","typeLabel":"ElevenLabs Voice Settings · object | Telnyx Voice Settings · object | AWS Voice Settings · object | Minimax Voice Settings · object | Azure Voice Settings · object | Resemble Voice Settings · object | Inworld Voice Settings · object | xAI Voice Settings · object | Soniox Voice Settings · object"},"language":{"description":"The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.","type":"string","enum":["arb","cmn-CN","cy-GB","da-DK","de-DE","en-AU","en-GB","en-GB-WLS","en-IN","en-US","es-ES","es-MX","es-US","fr-CA","fr-FR","hi-IN","is-IS","it-IT","ja-JP","ko-KR","nb-NO","nl-NL","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sv-SE","tr-TR"],"example":"en-US","uniqueKey":"language","typeLabel":"enum\u003cstring>"},"client_state":{"description":"Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.","type":"string","example":"aGF2ZSBhIG5pY2UgZGF5ID1d","uniqueKey":"client_state","typeLabel":"string"},"command_id":{"description":"Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.","type":"string","example":"891510ac-f3e4-11e8-af5b-de00688a4901","uniqueKey":"command_id","typeLabel":"string"},"loop":{"oneOf":[{"type":"string","description":"The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1.","uniqueKey":"loop.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1.","uniqueKey":"loop.oneOf.1","typeLabel":"integer"}],"uniqueKey":"loop","typeLabel":"string | integer"},"target_legs":{"description":"Specifies which legs of the call should receive the spoken audio.","type":"string","enum":["self","opposite","both"],"default":"self","example":"both","uniqueKey":"target_legs","typeLabel":"enum\u003cstring>"}},"example":{"payload":"Say this on the call","payload_type":"text","service_level":"basic","stop":"current","voice":"female","language":"arb","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"},"uniqueKey":"","typeLabel":"Speak Request · object"},"examples":{"Example":{"title":"Example","value":{"payload":"Say this on the call","payload_type":"text","service_level":"basic","stop":"current","voice":"female","language":"arb","client_state":"aGF2ZSBhIG5pY2UgZGF5ID1d","command_id":"891510ac-f3e4-11e8-af5b-de00688a4901"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"91f96459-a40d-40a7-bf4f-4e432554060a":{"description":"Successful response upon making a call control command.","content":{"application/json":{"schema":{"type":"object","title":"Call Control Command Response","properties":{"data":{"type":"object","title":"Call Control Command Result","example":{"result":"ok"},"properties":{"result":{"type":"string","example":"ok","uniqueKey":"data.result","typeLabel":"string"}},"uniqueKey":"data","typeLabel":"Call Control Command Result · object"}},"uniqueKey":"","typeLabel":"Call Control Command Response · object"},"examples":{"Example":{"title":"Example","value":{"data":{"result":"ok"}}}},"exampleType":"generated"}},"exampleType":"generated"},"8eac9a5e-e6f5-4a25-b38a-74ef569687fb":{"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"},"682f4fe6-0b27-4e1a-9b30-7644ffb679dd":{"description":"Unexpected error","content":{"application/json":{"schema":{"properties":{"errors":{"type":"array","items":{"required":["code","title"],"properties":{"code":{"type":"string","format":"integer","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string\u003cinteger>"},"title":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"errors.items.[INDEX].detail","typeLabel":"string"},"source":{"type":"object","properties":{"pointer":{"description":"JSON pointer (RFC6901) to the offending entity.","type":"string","format":"json-pointer","uniqueKey":"errors.items.[INDEX].source.pointer","typeLabel":"string\u003cjson-pointer>"},"parameter":{"description":"Indicates which query parameter caused the error.","type":"string","uniqueKey":"errors.items.[INDEX].source.parameter","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX].source","typeLabel":"object"},"meta":{"type":"object","uniqueKey":"errors.items.[INDEX].meta","typeLabel":"object"}},"type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"type":"object","uniqueKey":"","typeLabel":"object"},"example":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"10007","title":"Unexpected error","detail":"An unexpected error occured."}]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"bcc523b0-9e21-469e-85b8-03e709ed2323":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0635ec9f-42f5-401e-98f7-c9c2b6ed8b0b":{"url":"https://api.telnyx.com/v2","description":"Version 2.0.0 of the Telnyx API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/source/external/call-control/call-control.json"},"subdomain":"telnyx","siteName":"Telnyx","title":"Speak text - Telnyx","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T06:52:23.857Z","originalFileLocation":"api-reference/call-commands/speak-text.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=\"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. Expected Webhooks: - call.speak.started - call.speak.ended\">\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=\"Speak text - 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/speak-text\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Call+Commands+API\u0026amp;title=Speak+text\u0026amp;description=Convert+text+to+speech+and+play+it+back+on+the+call.+If+multiple+speak+text+commands+are+issued+consecutively%2C+the+audio+files+will+be+placed+in+a+queue+awaitin\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=1b49aa06f7671f49162a7203bc70cd84c8a44647f073fb5f3ef5f423ff7d8bea\">\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=\"Speak text - Telnyx\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Infrastructure for real-time agents. Voice, AI, Edge Compute\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://telnyx.mintlify.site/_mintlify/api/og/v2?division=Call+Commands+API\u0026amp;title=Speak+text\u0026amp;description=Convert+text+to+speech+and+play+it+back+on+the+call.+If+multiple+speak+text+commands+are+issued+consecutively%2C+the+audio+files+will+be+placed+in+a+queue+awaitin\u0026amp;theme=0dd46d2166d1a00e34819206\u0026amp;signature=1b49aa06f7671f49162a7203bc70cd84c8a44647f073fb5f3ef5f423ff7d8bea\">\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/speak-text\">\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/speak-text.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/speak-text#webpage\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text\",\"name\":\"Speak text\",\"description\":\"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. Expected Webhooks: - call.speak.started - call.speak.ended\",\"dateModified\":\"2026-11-07T06:52:23.857Z\",\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"},\"breadcrumb\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://developers.telnyx.com/api-reference/call-control-applications/list-call-control-applications\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Voice API Commands\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/dial\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Speak text\",\"item\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text#apireference\",\"headline\":\"Speak text\",\"name\":\"Speak text\",\"description\":\"Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. Expected Webhooks: - call.speak.started - call.speak.ended\",\"url\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text\",\"mainEntityOfPage\":{\"@id\":\"https://developers.telnyx.com/api-reference/call-commands/speak-text#webpage\"},\"dateModified\":\"2026-11-07T06:52:23.857Z\",\"publisher\":{\"@id\":\"https://telnyx.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.telnyx.com#website\"}}]}\u003c/script>","siteName":"Telnyx","nav":{"global":{"anchors":[{"anchor":"Home","icon":"house","href":"/docs/overview"}]},"products":[{"product":"Home","icon":"house","pages":[{"title":"Home","href":"/docs/overview"}]},{"product":"Other APIs","icon":"ellipsis","pages":[{"title":"Other APIs","href":"/docs/other-apis"}]},{"product":"Agent Platform","icon":"circle-nodes","pages":[{"title":"Agent Platform","href":"/docs/agent-platform"}]},{"product":"AI","icon":"microchip-ai","pages":[{"title":"AI","href":"/docs/inference/models"}]},{"product":"Voice","icon":"waveform","pages":[{"title":"Voice","href":"/docs/voice/overview"}]},{"product":"Compute","icon":"server","pages":[{"title":"Compute","href":"/docs/edge-compute/platform-overview"}]},{"product":"Storage","icon":"hard-drive","pages":[{"title":"Storage","href":"/docs/cloud-storage/overview"}]},{"product":"Virtual Private Cloud","icon":"cloud","pages":[{"title":"Virtual Private Cloud","href":"/docs/virtual-private-cloud"}]},{"product":"Calling","icon":"phone","tabs":[{"tab":"Voice API","icon":"phone-volume","groups":[{"group":"Voice API Fundamentals","pages":[{"title":"Getting Started with Telnyx Voice API","sidebarTitle":"Getting Started","href":"/docs/voice/programmable-voice/voice-api-fundamentals"},{"title":"Commands and Resources","sidebarTitle":"Commands and Resources","href":"/docs/voice/programmable-voice/voice-api-commands-and-resources/index"},{"title":"Voice API Webhooks","sidebarTitle":"Webhooks","href":"/docs/voice/programmable-voice/voice-api-webhooks/index"},{"title":"Sending Commands for Programmable Voice","sidebarTitle":"Sending Commands","href":"/docs/voice/programmable-voice/sending-commands/index"},{"title":"Receiving Webhooks for Programmable Voice","sidebarTitle":"Receiving Webhooks","href":"/docs/voice/programmable-voice/receiving-webhooks/index"},{"title":"Command Retries","sidebarTitle":"Command Retries","href":"/docs/voice/programmable-voice/command-retries/index"},{"title":"Dials Per Second Limit","sidebarTitle":"Dials Per Second Limit","href":"/docs/voice/programmable-voice/dials-per-second-limit/index"},{"title":"Dial Metrics","sidebarTitle":"Dial Metrics","href":"/docs/voice/programmable-voice/dial-metrics/index"}]},{"group":"Voice Features","pages":[{"title":"Speech-to-Text with Voice API and TeXML","sidebarTitle":"Speech-to-Text","href":"/docs/voice/programmable-voice/speech-to-text/index"},{"title":"Text-to-Speech","sidebarTitle":"Text-to-Speech","href":"/docs/voice/programmable-voice/tts/index"},{"title":"Queueing Calls","sidebarTitle":"Call Queueing","href":"/docs/voice/programmable-voice/queueing-calls/index"},{"title":"Answering Machine Detection","sidebarTitle":"Answering Machine Detection","href":"/docs/voice/programmable-voice/answering-machine-detection/index"},{"title":"Custom voicemail greeting","sidebarTitle":"Custom Voicemail Greeting","href":"/docs/voice/programmable-voice/custom-voicemail-greeting/index"},{"title":"Storing call recordings","sidebarTitle":"Call Recordings Storage","href":"/docs/voice/programmable-voice/storing-call-recordings/index"},{"title":"Pay over Voice","sidebarTitle":"Pay","href":"/docs/voice/programmable-voice/pay/index"},{"group":"SIPREC Recording","pages":[{"title":"Telnyx SIPREC server (SRS) Configuration Guide","sidebarTitle":"SIPREC Server Configuration","href":"/docs/voice/programmable-voice/siprec-server/index"},{"title":"Using SIPREC client for Voice API and TeXML calls","sidebarTitle":"SIPREC Client","href":"/docs/voice/programmable-voice/siprec-client/index"}]}]},{"group":"AI Capabilities","pages":[{"title":"Gather using AI","sidebarTitle":"Gather Using AI","href":"/docs/voice/programmable-voice/gather-using-ai/index"},{"title":"Attach an AI Assistant to a Call","href":"/docs/voice/programmable-voice/ai-assistant-start/index"},{"title":"Dialogflow ES","sidebarTitle":"Dialogflow Integration","href":"/docs/voice/programmable-voice/dialogflow-es/index"},{"title":"Media Streaming over Websockets","sidebarTitle":"Real-Time Media Streaming","href":"/docs/voice/programmable-voice/media-streaming/index"},{"title":"Conversation Relay over WebSockets","sidebarTitle":"Conversation Relay","href":"/docs/voice/programmable-voice/conversation-relay/index"},{"title":"Noise Suppression","sidebarTitle":"Noise Suppression","href":"/docs/voice/programmable-voice/noise-suppression/index"},{"title":"Deepfake Detection","sidebarTitle":"Deepfake Detection","href":"/docs/voice/programmable-voice/deepfake-detection/index"}]},{"group":"Tutorials","pages":[{"title":"IVR Demo","sidebarTitle":"IVR","href":"/docs/voice/programmable-voice/ivr-demo/index"},{"title":"Call Center Demo","sidebarTitle":"Call Center","href":"/docs/voice/programmable-voice/call-center/index"},{"title":"Call Tracking Demo","sidebarTitle":"Call Tracking","href":"/docs/voice/programmable-voice/call-tracking/index"},{"title":"Conferencing Demo","sidebarTitle":"Conferencing","href":"/docs/voice/programmable-voice/conferencing-demo/index"}]},{"group":"Regional \u0026 Restrictions","pages":[{"title":"Voice API Services in Europe","sidebarTitle":"Voice API Services in Europe","href":"/docs/voice/programmable-voice/voice-api-services-in-europe/index"},{"title":"Programmable Voice restrictions for L1 verified accounts","sidebarTitle":"L1 Account Restrictions","href":"/docs/voice/programmable-voice/l1-accounts-restirctions/index"}]},{"group":"API Reference","pages":[{"group":"Voice API Applications","pages":[{"group":"Applications","pages":[{"title":"List call control applications","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_control_applications","href":"/api-reference/call-control-applications/list-call-control-applications"},{"title":"Create a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /call_control_applications","href":"/api-reference/call-control-applications/create-a-call-control-application"},{"title":"Delete a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json delete /call_control_applications/{id}","href":"/api-reference/call-control-applications/delete-a-call-control-application"},{"title":"Retrieve a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_control_applications/{id}","href":"/api-reference/call-control-applications/retrieve-a-call-control-application"},{"title":"Update a call control application","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json patch /call_control_applications/{id}","href":"/api-reference/call-control-applications/update-a-call-control-application"}]},{"group":"Active Calls","pages":[{"title":"List all active calls for given connection","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /connections/{connection_id}/active_calls","href":"/api-reference/call-information/list-all-active-calls-for-given-connection"}]},{"group":"Call Events","pages":[{"title":"List call events","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /call_events","href":"/api-reference/debugging/list-call-events"}]},{"group":"Call Information","pages":[{"title":"Retrieve a call status","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /calls/{call_control_id}","href":"/api-reference/call-information/retrieve-a-call-status"}]},{"group":"Dial Metrics","pages":[{"title":"List dial metrics","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json get /dial_metrics","href":"/api-reference/call-information/list-dial-metrics"}]}]},{"group":"Voice API Commands","pages":[{"group":"Dial","pages":[{"group":"Call Commands API","pages":[{"title":"Dial","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls","href":"/api-reference/call-commands/dial"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call cost","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callCost","href":"/api-reference/callbacks/call-cost"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call hold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callHold","href":"/api-reference/callbacks/call-hold"},{"title":"Call initiated","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callInitiated","href":"/api-reference/callbacks/call-initiated"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"},{"title":"Call unhold","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callUnhold","href":"/api-reference/callbacks/call-unhold"}]}]},{"group":"Answer","pages":[{"group":"Call Commands API","pages":[{"title":"Answer call","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/answer","href":"/api-reference/call-commands/answer-call"}]},{"group":"Callbacks API","pages":[{"title":"Call answered","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callAnswered","href":"/api-reference/callbacks/call-answered"},{"title":"Call conversation created","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationCreated","href":"/api-reference/callbacks/call-conversation-created"},{"title":"Call conversation start failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callConversationStartFailed","href":"/api-reference/callbacks/call-conversation-start-failed"},{"title":"Call deepfake detection error","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionError","href":"/api-reference/callbacks/call-deepfake-detection-error"},{"title":"Call deepfake detection result","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callDeepfakeDetectionResult","href":"/api-reference/callbacks/call-deepfake-detection-result"},{"title":"Call streaming failed","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingFailed","href":"/api-reference/callbacks/call-streaming-failed"},{"title":"Call streaming started","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStarted","href":"/api-reference/callbacks/call-streaming-started"},{"title":"Call streaming stopped","version":null,"deprecated":null,"openapi":"/openapi/source/external/call-control/call-control.json webhook callStreamingStopped","href":"/api-reference/callbacks/call-streaming-stopped"}]}]},{"group":"Bridge","pages":[{"group":"Call Commands API","pages":[{"title":"Bridge calls","deprecated":null,"version":null,"openapi":"/openapi/source/external/call-control/call-control.json post /calls/{call_control_id}/actions/bridge","href":"/api-reference/call-commands/bridge-calls"}]},{"group":"Callbacks API","pages":[{"title":"Call bridged","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","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 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","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 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":"Speak text - Telnyx","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BUDYNlhG.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","AssistantPageLink-9EK5IAXV.js"]}