Skip to main content
POST
/
calls
/
{call_control_id}
/
actions
/
gather_using_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.gatherUsingSpeak('call_control_id', {
  payload: 'say this on call',
  voice: 'male',
});

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.gather_using_speak(
call_control_id="call_control_id",
payload="say this on call",
voice="male",
)
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.GatherUsingSpeak(
context.TODO(),
"call_control_id",
telnyx.CallActionGatherUsingSpeakParams{
Payload: "say this on call",
Voice: "male",
},
)
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.ActionGatherUsingSpeakParams;
import com.telnyx.sdk.models.calls.actions.ActionGatherUsingSpeakResponse;

public final class Main {
private Main() {}

public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();

ActionGatherUsingSpeakParams params = ActionGatherUsingSpeakParams.builder()
.callControlId("call_control_id")
.payload("say this on call")
.voice("male")
.build();
ActionGatherUsingSpeakResponse response = client.calls().actions().gatherUsingSpeak(params);
}
}
require "telnyx"

telnyx = Telnyx::Client.new(api_key: "My API Key")

response = telnyx.calls.actions.gather_using_speak("call_control_id", payload: "say this on call", voice: "male")

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->gatherUsingSpeak(
'call_control_id',
payload: 'say this on call',
voice: 'male',
clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',
commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',
interDigitTimeoutMillis: 10000,
invalidPayload: 'say this on call',
language: 'arb',
maximumDigits: 10,
maximumTries: 3,
minimumDigits: 1,
payloadType: 'text',
serviceLevel: 'premium',
terminatingDigit: '#',
timeoutMillis: 60000,
validDigits: '123',
voiceSettings: [
'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'
],
);

var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}
telnyx calls:actions gather-using-speak \
--api-key 'My API Key' \
--call-control-id call_control_id \
--payload 'say this on call' \
--voice male
curl --request POST \
--url https://api.telnyx.com/v2/calls/{call_control_id}/actions/gather_using_speak \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"payload": "say this on call",
"invalid_payload": "say this on call",
"payload_type": "text",
"service_level": "premium",
"voice": "male",
"language": "arb",
"minimum_digits": 1,
"maximum_digits": 10,
"terminating_digit": "#",
"valid_digits": "123",
"inter_digit_timeout_millis": 10000,
"client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",
"command_id": "891510ac-f3e4-11e8-af5b-de00688a4901"
}
'
{
  "data": {
    "result": "ok"
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

call_control_id
string
required

Unique identifier and token for controlling the call

Body

application/json

Gather using speak request

payload
string
required

The text or SSML to be converted into speech. There is a 3,000 character limit.

Example:

"Say this on the call"

voice
string
required

Specifies the voice used in speech synthesis.

  • 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.
  • Rime: Use Rime.<model_id>.<voice_id> (e.g., Rime.Arcana.cove). Supported model_ids: Arcana, Mist, ArcanaV3, Coda. Use voice_settings to configure voice_speed.
  • Resemble: Use Resemble.Turbo.<voice_id> (e.g., Resemble.Turbo.my_voice). Only Turbo model is supported. 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.
  • xAI: Use xAI.<VoiceId> (e.g., xAI.eve). Available voices: eve, ara, rex, sal, leo.

For service_level basic, you may define the gender of the speaker (male or female).

Example:

"Telnyx.KokoroTTS.af"

invalid_payload
string

The text or SSML to be converted into speech when digits don't match the valid_digits parameter or the number of digits is not between min and max. There is a 3,000 character limit.

Example:

"Say this on the call"

payload_type
enum<string>
default:text

The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML).

Available options:
text,
ssml
Example:

"ssml"

service_level
enum<string>
default:premium

This parameter impacts speech quality, language options and payload types. When using basic, only the en-US language and payload type text are allowed.

Available options:
basic,
premium
Example:

"premium"

voice_settings
ElevenLabs Voice Settings · object

The settings associated with the voice selected

language
enum<string>

The language you want spoken. This parameter is ignored when a Polly.* voice is specified.

Available options:
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"

minimum_digits
integer<int32>
default:1

The minimum number of digits to fetch. This parameter has a minimum value of 1.

Example:

1

maximum_digits
integer<int32>
default:128

The maximum number of digits to fetch. This parameter has a maximum value of 128.

Example:

10

maximum_tries
integer<int32>
default:3

The maximum number of times that a file should be played back if there is no input from the user on the call.

Example:

3

timeout_millis
integer<int32>
default:60000

The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound file.

Example:

60000

terminating_digit
string
default:#

The digit used to terminate input if fewer than maximum_digits digits have been gathered.

Example:

"#"

valid_digits
string
default:0123456789#*

A list of all digits accepted as valid.

Example:

"123"

inter_digit_timeout_millis
integer<int32>
default:5000

The number of milliseconds to wait for input between digits.

Example:

10000

client_state
string

Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.

Example:

"aGF2ZSBhIG5pY2UgZGF5ID1d"

command_id
string

Use this field to avoid duplicate commands. Telnyx will ignore any command with the same command_id for the same call_control_id.

Example:

"891510ac-f3e4-11e8-af5b-de00688a4901"

Response

Successful response upon making a call control command.

data
Call Control Command Result · object
Example:
{ "result": "ok" }