Create Agent
curl --request POST \
--url https://api.threetone.in/v1/convai/agents/create \
--header 'Content-Type: application/json' \
--data '
{
"conversation_config": {
"schema_version": 2,
"asr": {
"model_id": "<string>",
"recognition": {
"mode": "fixed"
},
"task": "transcribe",
"keyterms": [
"<string>"
],
"options": {
"adapter_contract": "livekit_inference_cartesia_ink_2_v1",
"turn_start_threshold": 0.7,
"turn_eager_end_threshold": 0.44999999999999996,
"turn_end_threshold": 0.275,
"turn_end_timeout_ms": 5920
}
},
"turn": {
"interruption_ignore_term_languages": [],
"interruption_ignore_terms": [],
"merge_with_default_ignore_terms": false,
"mode": "turn",
"retranscribe_on_turn_timeout": false,
"silence_end_call_timeout": -1,
"soft_timeout_config": {
"message": "Hhmmmm...yeah.",
"timeout_seconds": -1
},
"speculative_turn": false,
"spelling_patience": "auto",
"transcribe_on_disabled_interruptions": false,
"turn_eagerness": "normal",
"turn_model": "turn_v3",
"turn_timeout": 7
},
"tts": {
"model_id": "<string>",
"voice_id": "ME9RtCnWp5vX2LhJdF3k",
"performance": "latency",
"pronunciation_dictionary_locators": [
{
"pronunciation_dictionary_id": "<string>",
"version_id": "<string>"
}
],
"enable_phoneme_tags": true,
"options": {
"adapter_contract": "livekit_inference_cartesia_sonic_3_6_2026_08_27_v1",
"volume": 1.25,
"duration_seconds": 1,
"max_buffer_delay_ms": 1,
"add_timestamps": true,
"add_phoneme_timestamps": true,
"use_normalized_timestamps": true
}
},
"conversation": {
"client_events": [
"audio",
"interruption"
],
"max_duration_seconds": 600
},
"language_presets": {},
"vad": {
"background_voice_detection": false
},
"agent": {
"disable_first_message_interruptions": false,
"first_message": "Hello, how can I help you today?",
"language": "en"
}
},
"name": "My agent"
}
'import requests
url = "https://api.threetone.in/v1/convai/agents/create"
payload = {
"conversation_config": {
"schema_version": 2,
"asr": {
"model_id": "<string>",
"recognition": { "mode": "fixed" },
"task": "transcribe",
"keyterms": ["<string>"],
"options": {
"adapter_contract": "livekit_inference_cartesia_ink_2_v1",
"turn_start_threshold": 0.7,
"turn_eager_end_threshold": 0.44999999999999996,
"turn_end_threshold": 0.275,
"turn_end_timeout_ms": 5920
}
},
"turn": {
"interruption_ignore_term_languages": [],
"interruption_ignore_terms": [],
"merge_with_default_ignore_terms": False,
"mode": "turn",
"retranscribe_on_turn_timeout": False,
"silence_end_call_timeout": -1,
"soft_timeout_config": {
"message": "Hhmmmm...yeah.",
"timeout_seconds": -1
},
"speculative_turn": False,
"spelling_patience": "auto",
"transcribe_on_disabled_interruptions": False,
"turn_eagerness": "normal",
"turn_model": "turn_v3",
"turn_timeout": 7
},
"tts": {
"model_id": "<string>",
"voice_id": "ME9RtCnWp5vX2LhJdF3k",
"performance": "latency",
"pronunciation_dictionary_locators": [
{
"pronunciation_dictionary_id": "<string>",
"version_id": "<string>"
}
],
"enable_phoneme_tags": True,
"options": {
"adapter_contract": "livekit_inference_cartesia_sonic_3_6_2026_08_27_v1",
"volume": 1.25,
"duration_seconds": 1,
"max_buffer_delay_ms": 1,
"add_timestamps": True,
"add_phoneme_timestamps": True,
"use_normalized_timestamps": True
}
},
"conversation": {
"client_events": ["audio", "interruption"],
"max_duration_seconds": 600
},
"language_presets": {},
"vad": { "background_voice_detection": False },
"agent": {
"disable_first_message_interruptions": False,
"first_message": "Hello, how can I help you today?",
"language": "en"
}
},
"name": "My agent"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
conversation_config: {
schema_version: 2,
asr: {
model_id: '<string>',
recognition: {mode: 'fixed'},
task: 'transcribe',
keyterms: ['<string>'],
options: {
adapter_contract: 'livekit_inference_cartesia_ink_2_v1',
turn_start_threshold: 0.7,
turn_eager_end_threshold: 0.44999999999999996,
turn_end_threshold: 0.275,
turn_end_timeout_ms: 5920
}
},
turn: {
interruption_ignore_term_languages: [],
interruption_ignore_terms: [],
merge_with_default_ignore_terms: false,
mode: 'turn',
retranscribe_on_turn_timeout: false,
silence_end_call_timeout: -1,
soft_timeout_config: {message: 'Hhmmmm...yeah.', timeout_seconds: -1},
speculative_turn: false,
spelling_patience: 'auto',
transcribe_on_disabled_interruptions: false,
turn_eagerness: 'normal',
turn_model: 'turn_v3',
turn_timeout: 7
},
tts: {
model_id: '<string>',
voice_id: 'ME9RtCnWp5vX2LhJdF3k',
performance: 'latency',
pronunciation_dictionary_locators: [{pronunciation_dictionary_id: '<string>', version_id: '<string>'}],
enable_phoneme_tags: true,
options: {
adapter_contract: 'livekit_inference_cartesia_sonic_3_6_2026_08_27_v1',
volume: 1.25,
duration_seconds: 1,
max_buffer_delay_ms: 1,
add_timestamps: true,
add_phoneme_timestamps: true,
use_normalized_timestamps: true
}
},
conversation: {client_events: ['audio', 'interruption'], max_duration_seconds: 600},
language_presets: {},
vad: {background_voice_detection: false},
agent: {
disable_first_message_interruptions: false,
first_message: 'Hello, how can I help you today?',
language: 'en'
}
},
name: 'My agent'
})
};
fetch('https://api.threetone.in/v1/convai/agents/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"agent_id": "agent_3701kwyb5spce24t3h8gpqpsy6zh",
"initial_version_id": "agtvrsn_1401kwyb5tpwe868p2dtmj62q48t",
"main_branch_id": "agtbrch_2201kwyb5tmbfb3a8a3jmtd5v28d"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Agents Platform
Create Agent
Create an agent from a config object
POST
/
v1
/
convai
/
agents
/
create
Create Agent
curl --request POST \
--url https://api.threetone.in/v1/convai/agents/create \
--header 'Content-Type: application/json' \
--data '
{
"conversation_config": {
"schema_version": 2,
"asr": {
"model_id": "<string>",
"recognition": {
"mode": "fixed"
},
"task": "transcribe",
"keyterms": [
"<string>"
],
"options": {
"adapter_contract": "livekit_inference_cartesia_ink_2_v1",
"turn_start_threshold": 0.7,
"turn_eager_end_threshold": 0.44999999999999996,
"turn_end_threshold": 0.275,
"turn_end_timeout_ms": 5920
}
},
"turn": {
"interruption_ignore_term_languages": [],
"interruption_ignore_terms": [],
"merge_with_default_ignore_terms": false,
"mode": "turn",
"retranscribe_on_turn_timeout": false,
"silence_end_call_timeout": -1,
"soft_timeout_config": {
"message": "Hhmmmm...yeah.",
"timeout_seconds": -1
},
"speculative_turn": false,
"spelling_patience": "auto",
"transcribe_on_disabled_interruptions": false,
"turn_eagerness": "normal",
"turn_model": "turn_v3",
"turn_timeout": 7
},
"tts": {
"model_id": "<string>",
"voice_id": "ME9RtCnWp5vX2LhJdF3k",
"performance": "latency",
"pronunciation_dictionary_locators": [
{
"pronunciation_dictionary_id": "<string>",
"version_id": "<string>"
}
],
"enable_phoneme_tags": true,
"options": {
"adapter_contract": "livekit_inference_cartesia_sonic_3_6_2026_08_27_v1",
"volume": 1.25,
"duration_seconds": 1,
"max_buffer_delay_ms": 1,
"add_timestamps": true,
"add_phoneme_timestamps": true,
"use_normalized_timestamps": true
}
},
"conversation": {
"client_events": [
"audio",
"interruption"
],
"max_duration_seconds": 600
},
"language_presets": {},
"vad": {
"background_voice_detection": false
},
"agent": {
"disable_first_message_interruptions": false,
"first_message": "Hello, how can I help you today?",
"language": "en"
}
},
"name": "My agent"
}
'import requests
url = "https://api.threetone.in/v1/convai/agents/create"
payload = {
"conversation_config": {
"schema_version": 2,
"asr": {
"model_id": "<string>",
"recognition": { "mode": "fixed" },
"task": "transcribe",
"keyterms": ["<string>"],
"options": {
"adapter_contract": "livekit_inference_cartesia_ink_2_v1",
"turn_start_threshold": 0.7,
"turn_eager_end_threshold": 0.44999999999999996,
"turn_end_threshold": 0.275,
"turn_end_timeout_ms": 5920
}
},
"turn": {
"interruption_ignore_term_languages": [],
"interruption_ignore_terms": [],
"merge_with_default_ignore_terms": False,
"mode": "turn",
"retranscribe_on_turn_timeout": False,
"silence_end_call_timeout": -1,
"soft_timeout_config": {
"message": "Hhmmmm...yeah.",
"timeout_seconds": -1
},
"speculative_turn": False,
"spelling_patience": "auto",
"transcribe_on_disabled_interruptions": False,
"turn_eagerness": "normal",
"turn_model": "turn_v3",
"turn_timeout": 7
},
"tts": {
"model_id": "<string>",
"voice_id": "ME9RtCnWp5vX2LhJdF3k",
"performance": "latency",
"pronunciation_dictionary_locators": [
{
"pronunciation_dictionary_id": "<string>",
"version_id": "<string>"
}
],
"enable_phoneme_tags": True,
"options": {
"adapter_contract": "livekit_inference_cartesia_sonic_3_6_2026_08_27_v1",
"volume": 1.25,
"duration_seconds": 1,
"max_buffer_delay_ms": 1,
"add_timestamps": True,
"add_phoneme_timestamps": True,
"use_normalized_timestamps": True
}
},
"conversation": {
"client_events": ["audio", "interruption"],
"max_duration_seconds": 600
},
"language_presets": {},
"vad": { "background_voice_detection": False },
"agent": {
"disable_first_message_interruptions": False,
"first_message": "Hello, how can I help you today?",
"language": "en"
}
},
"name": "My agent"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
conversation_config: {
schema_version: 2,
asr: {
model_id: '<string>',
recognition: {mode: 'fixed'},
task: 'transcribe',
keyterms: ['<string>'],
options: {
adapter_contract: 'livekit_inference_cartesia_ink_2_v1',
turn_start_threshold: 0.7,
turn_eager_end_threshold: 0.44999999999999996,
turn_end_threshold: 0.275,
turn_end_timeout_ms: 5920
}
},
turn: {
interruption_ignore_term_languages: [],
interruption_ignore_terms: [],
merge_with_default_ignore_terms: false,
mode: 'turn',
retranscribe_on_turn_timeout: false,
silence_end_call_timeout: -1,
soft_timeout_config: {message: 'Hhmmmm...yeah.', timeout_seconds: -1},
speculative_turn: false,
spelling_patience: 'auto',
transcribe_on_disabled_interruptions: false,
turn_eagerness: 'normal',
turn_model: 'turn_v3',
turn_timeout: 7
},
tts: {
model_id: '<string>',
voice_id: 'ME9RtCnWp5vX2LhJdF3k',
performance: 'latency',
pronunciation_dictionary_locators: [{pronunciation_dictionary_id: '<string>', version_id: '<string>'}],
enable_phoneme_tags: true,
options: {
adapter_contract: 'livekit_inference_cartesia_sonic_3_6_2026_08_27_v1',
volume: 1.25,
duration_seconds: 1,
max_buffer_delay_ms: 1,
add_timestamps: true,
add_phoneme_timestamps: true,
use_normalized_timestamps: true
}
},
conversation: {client_events: ['audio', 'interruption'], max_duration_seconds: 600},
language_presets: {},
vad: {background_voice_detection: false},
agent: {
disable_first_message_interruptions: false,
first_message: 'Hello, how can I help you today?',
language: 'en'
}
},
name: 'My agent'
})
};
fetch('https://api.threetone.in/v1/convai/agents/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"agent_id": "agent_3701kwyb5spce24t3h8gpqpsy6zh",
"initial_version_id": "agtvrsn_1401kwyb5tpwe868p2dtmj62q48t",
"main_branch_id": "agtbrch_2201kwyb5tmbfb3a8a3jmtd5v28d"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Headers
Your API key for programmatic access. Send it in the x-api-key header; you can create and manage keys from the Developers page.
Body
application/json
Conversation configuration for an agent
Show child attributes
Show child attributes
Platform settings for the agent are all settings that aren't related to the conversation orchestration and content.
Show child attributes
Show child attributes
Workflow for the agent. This is used to define the flow of the conversation and how the agent interacts with tools.
Show child attributes
Show child attributes
Example:
{
"edges": {
"start_to_support": {
"forward_condition": { "type": "unconditional" },
"source": "start_node",
"target": "support"
},
"support_to_end": {
"forward_condition": {
"condition": "The request is resolved",
"type": "llm"
},
"source": "support",
"target": "end"
}
},
"nodes": {
"end": { "type": "end" },
"start_node": {
"edge_order": ["start_to_support"],
"type": "start"
},
"support": {
"edge_order": ["support_to_end"],
"label": "Support",
"type": "override_agent"
}
}
}
A name to make the agent easier to find
Example:
"My agent"
Tags to help classify and filter the agent
Example:
[
"Customer Support",
"Technical Help",
"Three"
]