curl --request POST \
--url https://api.cekura.ai/test_framework/v1/personalities/ \
--header 'Content-Type: application/json' \
--header 'X-CEKURA-API-KEY: <api-key>' \
--data '
{
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"project": 123,
"prompt": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": {
"volume": 1.25
},
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"end_call_enabled": true
}
'import requests
url = "https://api.cekura.ai/test_framework/v1/personalities/"
payload = {
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"project": 123,
"prompt": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": { "volume": 1.25 },
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"end_call_enabled": True
}
headers = {
"X-CEKURA-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-CEKURA-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
background_noise: '<string>',
voice_model: '<string>',
project: 123,
prompt: '<string>',
voice_id: '<string>',
interruption_level: '<string>',
speed: 1,
generation_config: {volume: 1.25},
network_simulation: {packet_loss: 50, jitter: 50, latency: 50},
message_plan: {idle_timeout_seconds: 2, idle_message_max_spoken_count: 2},
start_speaking_plan: 1,
stop_speaking_plan: {num_words: 1, voice_seconds: 1, backoff_seconds: 1},
background_sound_volume: {base: 0.5, reduced: 0.5},
voice_volume: '<string>',
end_call_enabled: true
})
};
fetch('https://api.cekura.ai/test_framework/v1/personalities/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cekura.ai/test_framework/v1/personalities/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'background_noise' => '<string>',
'voice_model' => '<string>',
'project' => 123,
'prompt' => '<string>',
'voice_id' => '<string>',
'interruption_level' => '<string>',
'speed' => 1,
'generation_config' => [
'volume' => 1.25
],
'network_simulation' => [
'packet_loss' => 50,
'jitter' => 50,
'latency' => 50
],
'message_plan' => [
'idle_timeout_seconds' => 2,
'idle_message_max_spoken_count' => 2
],
'start_speaking_plan' => 1,
'stop_speaking_plan' => [
'num_words' => 1,
'voice_seconds' => 1,
'backoff_seconds' => 1
],
'background_sound_volume' => [
'base' => 0.5,
'reduced' => 0.5
],
'voice_volume' => '<string>',
'end_call_enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-CEKURA-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cekura.ai/test_framework/v1/personalities/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-CEKURA-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cekura.ai/test_framework/v1/personalities/")
.header("X-CEKURA-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v1/personalities/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CEKURA-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"id": 123,
"project": 123,
"prompt": "<string>",
"language": "af",
"accent": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": {
"volume": 1.25,
"emotion": "neutral"
},
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"effective_voice_volume": "<string>",
"patronus_settings": null,
"provider_agent_id": "<string>",
"end_call_enabled": true,
"provider": "11labs"
}Create Personality
Create a new caller personality. Personalities define how the simulated caller speaks during runs (voice, accent, language, gender, instructions); they are then attached to evaluators.
curl --request POST \
--url https://api.cekura.ai/test_framework/v1/personalities/ \
--header 'Content-Type: application/json' \
--header 'X-CEKURA-API-KEY: <api-key>' \
--data '
{
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"project": 123,
"prompt": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": {
"volume": 1.25
},
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"end_call_enabled": true
}
'import requests
url = "https://api.cekura.ai/test_framework/v1/personalities/"
payload = {
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"project": 123,
"prompt": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": { "volume": 1.25 },
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"end_call_enabled": True
}
headers = {
"X-CEKURA-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-CEKURA-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
background_noise: '<string>',
voice_model: '<string>',
project: 123,
prompt: '<string>',
voice_id: '<string>',
interruption_level: '<string>',
speed: 1,
generation_config: {volume: 1.25},
network_simulation: {packet_loss: 50, jitter: 50, latency: 50},
message_plan: {idle_timeout_seconds: 2, idle_message_max_spoken_count: 2},
start_speaking_plan: 1,
stop_speaking_plan: {num_words: 1, voice_seconds: 1, backoff_seconds: 1},
background_sound_volume: {base: 0.5, reduced: 0.5},
voice_volume: '<string>',
end_call_enabled: true
})
};
fetch('https://api.cekura.ai/test_framework/v1/personalities/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cekura.ai/test_framework/v1/personalities/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'background_noise' => '<string>',
'voice_model' => '<string>',
'project' => 123,
'prompt' => '<string>',
'voice_id' => '<string>',
'interruption_level' => '<string>',
'speed' => 1,
'generation_config' => [
'volume' => 1.25
],
'network_simulation' => [
'packet_loss' => 50,
'jitter' => 50,
'latency' => 50
],
'message_plan' => [
'idle_timeout_seconds' => 2,
'idle_message_max_spoken_count' => 2
],
'start_speaking_plan' => 1,
'stop_speaking_plan' => [
'num_words' => 1,
'voice_seconds' => 1,
'backoff_seconds' => 1
],
'background_sound_volume' => [
'base' => 0.5,
'reduced' => 0.5
],
'voice_volume' => '<string>',
'end_call_enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-CEKURA-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cekura.ai/test_framework/v1/personalities/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-CEKURA-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cekura.ai/test_framework/v1/personalities/")
.header("X-CEKURA-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cekura.ai/test_framework/v1/personalities/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-CEKURA-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"background_noise\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"project\": 123,\n \"prompt\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"interruption_level\": \"<string>\",\n \"speed\": 1,\n \"generation_config\": {\n \"volume\": 1.25\n },\n \"network_simulation\": {\n \"packet_loss\": 50,\n \"jitter\": 50,\n \"latency\": 50\n },\n \"message_plan\": {\n \"idle_timeout_seconds\": 2,\n \"idle_message_max_spoken_count\": 2\n },\n \"start_speaking_plan\": 1,\n \"stop_speaking_plan\": {\n \"num_words\": 1,\n \"voice_seconds\": 1,\n \"backoff_seconds\": 1\n },\n \"background_sound_volume\": {\n \"base\": 0.5,\n \"reduced\": 0.5\n },\n \"voice_volume\": \"<string>\",\n \"end_call_enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"background_noise": "<string>",
"voice_model": "<string>",
"id": 123,
"project": 123,
"prompt": "<string>",
"language": "af",
"accent": "<string>",
"voice_id": "<string>",
"interruption_level": "<string>",
"speed": 1,
"generation_config": {
"volume": 1.25,
"emotion": "neutral"
},
"network_simulation": {
"packet_loss": 50,
"jitter": 50,
"latency": 50
},
"message_plan": {
"idle_timeout_seconds": 2,
"idle_message_max_spoken_count": 2
},
"start_speaking_plan": 1,
"stop_speaking_plan": {
"num_words": 1,
"voice_seconds": 1,
"backoff_seconds": 1
},
"background_sound_volume": {
"base": 0.5,
"reduced": 0.5
},
"voice_volume": "<string>",
"effective_voice_volume": "<string>",
"patronus_settings": null,
"provider_agent_id": "<string>",
"end_call_enabled": true,
"provider": "11labs"
}Authorizations
API Key Authentication. It should be included in the header of each request.
Body
Name of the personality
Example: "Customer Service"
255Background noise
Voice model name
Project that will own the personality. Optional when using a project-scoped API key
(it is inferred from the key); required otherwise.
Example: 1
Prompt of the personality
Example: "You are a friendly and helpful customer service agent who is always willing to help"
Language of the personality
af- Afrikaansar- Arabicbn- Bengalibg- Bulgarianzh- Chinese Simplifiedcs- Czechda- Danishnl- Dutchen- Englishet- Estonianfi- Finnishfr- Frenchde- Germanel- Greekgu- Gujaratihi- Hindihe- Hebrewhu- Hungarianid- Indonesianit- Italianja- Japanesekn- Kannadakk- Kazakhko- Koreanms- Malayml- Malayalammr- Marathimulti- Multilingualno- Norwegianpl- Polishpa- Punjabipt- Portuguesero- Romanianru- Russiansk- Slovakes- Spanishsv- Swedishth- Thaitr- Turkishtl- Tagalogta- Tamilte- Teluguuk- Ukrainianuz- Uzbekvi- Vietnamese
af, ar, bn, bg, zh, cs, da, nl, en, et, fi, fr, de, el, gu, hi, he, hu, id, it, ja, kn, kk, ko, ms, ml, mr, multi, no, pl, pa, pt, ro, ru, sk, es, sv, th, tr, tl, ta, te, uk, uz, vi Voice ID
Example: "TX3LPaxmHKxFdv7VOQHJ"
Interruption level
Speed of the voice
0.8 <= x <= 1.2Generation config for Cartesia Sonic-3 voice model. Only valid when provider is "cartesia" and voice_model is "sonic-3.5". Supports volume and emotion Example: {"volume": 1.5, "emotion": "happy"}
Show child attributes
Show child attributes
Network simulation configuration for testing network impairments.
Show child attributes
Show child attributes
Message plan configuration for idle timeout behavior. Supports idle_timeout_seconds (positive int) and idle_message_max_spoken_count (positive int). Example: {"idle_timeout_seconds": 15, "idle_message_max_spoken_count": 2}
Show child attributes
Show child attributes
Wait seconds before the bot starts speaking (float >= 0). Ignored if interruption_level is also set in the same request (preset takes precedence). Example: 0.7
x >= 0Stop speaking plan configuration. Controls when the bot stops speaking. Supports num_words (int >= 0), voice_seconds (float >= 0), backoff_seconds (float >= 0). Ignored if interruption_level is also set in the same request (preset takes precedence). Example: {"num_words": 3, "voice_seconds": 0.3, "backoff_seconds": 0}
Show child attributes
Show child attributes
Background sound volume levels (0.0 to 1.0). base sets both the base and normal volume; reduced sets the quieter level during bot speech. Example: {"base": 0.05, "reduced": 0.02}
Show child attributes
Show child attributes
Speech volume of the testing agent (0.01 to 2.0, default 1.0). Works on every voice provider — it is amplitude scaling applied after synthesis, so it reaches far quieter levels than generation_config.volume, which is a Cartesia-native parameter limited to Cartesia's own 0.5-2.0. Setting this clears any generation_config.volume so the ratio is never applied twice. Send null to remove it. Example: 0.05 for a barely-audible caller.
Whether the end call is enabled
Provider of the voice
11labs- Elevenlabscartesia- Cartesia
11labs, cartesia Response
Name of the personality
Example: "Customer Service"
255Background noise
Voice model name
Project that will own the personality. Optional when using a project-scoped API key
(it is inferred from the key); required otherwise.
Example: 1
Prompt of the personality
Example: "You are a friendly and helpful customer service agent who is always willing to help"
Language of the personality
af- Afrikaansar- Arabicbn- Bengalibg- Bulgarianzh- Chinese Simplifiedcs- Czechda- Danishnl- Dutchen- Englishet- Estonianfi- Finnishfr- Frenchde- Germanel- Greekgu- Gujaratihi- Hindihe- Hebrewhu- Hungarianid- Indonesianit- Italianja- Japanesekn- Kannadakk- Kazakhko- Koreanms- Malayml- Malayalammr- Marathimulti- Multilingualno- Norwegianpl- Polishpa- Punjabipt- Portuguesero- Romanianru- Russiansk- Slovakes- Spanishsv- Swedishth- Thaitr- Turkishtl- Tagalogta- Tamilte- Teluguuk- Ukrainianuz- Uzbekvi- Vietnamese
af, ar, bn, bg, zh, cs, da, nl, en, et, fi, fr, de, el, gu, hi, he, hu, id, it, ja, kn, kk, ko, ms, ml, mr, multi, no, pl, pa, pt, ro, ru, sk, es, sv, th, tr, tl, ta, te, uk, uz, vi Read-only label describing the accent of this personality's voice, as reported
by the voice provider. It is derived from voice_id and cannot be set directly:
speech is synthesised from voice_id alone, so changing the accent of a
personality means choosing a different voice. Empty when the provider publishes
no accent for the voice.
Voice ID
Example: "TX3LPaxmHKxFdv7VOQHJ"
Interruption level
Speed of the voice
0.8 <= x <= 1.2Generation config for Cartesia Sonic-3 voice model. Only valid when provider is "cartesia" and voice_model is "sonic-3.5". Supports volume and emotion Example: {"volume": 1.5, "emotion": "happy"}
Show child attributes
Show child attributes
Network simulation configuration for testing network impairments.
Show child attributes
Show child attributes
Message plan configuration for idle timeout behavior. Supports idle_timeout_seconds (positive int) and idle_message_max_spoken_count (positive int). Example: {"idle_timeout_seconds": 15, "idle_message_max_spoken_count": 2}
Show child attributes
Show child attributes
Wait seconds before the bot starts speaking (float >= 0). Ignored if interruption_level is also set in the same request (preset takes precedence). Example: 0.7
x >= 0Stop speaking plan configuration. Controls when the bot stops speaking. Supports num_words (int >= 0), voice_seconds (float >= 0), backoff_seconds (float >= 0). Ignored if interruption_level is also set in the same request (preset takes precedence). Example: {"num_words": 3, "voice_seconds": 0.3, "backoff_seconds": 0}
Show child attributes
Show child attributes
Background sound volume levels (0.0 to 1.0). base sets both the base and normal volume; reduced sets the quieter level during bot speech. Example: {"base": 0.05, "reduced": 0.02}
Show child attributes
Show child attributes
Speech volume of the testing agent (0.01 to 2.0, default 1.0). Works on every voice provider — it is amplitude scaling applied after synthesis, so it reaches far quieter levels than generation_config.volume, which is a Cartesia-native parameter limited to Cartesia's own 0.5-2.0. Setting this clears any generation_config.volume so the ratio is never applied twice. Send null to remove it. Example: 0.05 for a barely-audible caller.
Read-only. The volume the call will actually play at: voice_volume if set, else a legacy generation_config.volume, else 1.0. Use this to populate a volume control.
Provider agent ID
Example: "assistant_123"
Whether the end call is enabled
Provider of the voice
11labs- Elevenlabscartesia- Cartesia
11labs, cartesia