curl --request PUT \
--url https://api.eqho.ai/v1/agents/{agent_id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'x-org-id: <api-key>' \
--data '
{
"name": "Liz",
"type": "primary",
"description": "An agent that the sales team is testing.",
"language": "EN",
"voice_audio_id": "<string>",
"role_ids": [
"<string>"
],
"action_ids": [
"<string>"
],
"action_flows": [
[
"<string>"
]
],
"script_ids": [
"<string>"
],
"knowledge_base_ids": [
"<string>"
],
"kb_strict_mode": true,
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"disable_greeting": true,
"system_prompt": null,
"end_conversation_on_goodbye": true,
"enable_user_idle_timeout": false,
"enable_parallel_tool_calls": false,
"ai_settings": {
"ai_model": "<string>",
"frequency_penalty": 123,
"max_tokens": 123,
"presence_penalty": 123,
"temperature": 123
},
"greeting_type_inbound": "static",
"greeting_type_outbound": "static",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
}
],
"tts_settings": {
"utterance_end_ms": "1000",
"smart_format": false,
"profanity_filter": false,
"punctuate": true,
"numerals": false,
"keywords": [
"<string>"
],
"diarize": false,
"dictation": false,
"endpointing": "10",
"filler_words": false
},
"stt_settings": {
"model": "<string>",
"prompt": "<string>",
"keyterms": [
"<string>"
],
"low_confidence_threshold": 0.5
},
"smart_turn_detection": false,
"voice_settings": null,
"noise_cancellation": {
"enabled": true,
"enhancement_level": 0.8,
"model": "QUAIL_VF_L",
"provider": "ai_coustics",
"vad_minimum_speech_duration": 0.1,
"vad_sensitivity": 0.5,
"vad_speech_hold_duration": 0.2
},
"background_audio": {
"clip": "OFFICE_AMBIENCE",
"enabled": true,
"volume": 0.8
},
"amd": {
"actions": {
"machine-ivr": "continue",
"machine-vm": "leave_message"
},
"detection_options": {
"human_speech_threshold": 2.5,
"timeout": 20
},
"enabled": true,
"interrupt_on_machine": true,
"ivr_detection": true,
"llm": "openai/gpt-4.1-mini",
"stt": "cartesia/ink-whisper",
"voicemail_message": "Hi {{ first_name }}, please call us back when you can."
},
"user_idle": {
"enabled": true,
"max_consecutive_events": 3,
"nudge_instructions": "Ask whether the user is still there in a brief, natural way.",
"user_away_timeout": 10
},
"endpointing": {
"max_delay": 2.5,
"min_delay": 0.3
},
"feature_flags": null,
"script_id": "<string>"
}
'import requests
url = "https://api.eqho.ai/v1/agents/{agent_id}"
payload = {
"name": "Liz",
"type": "primary",
"description": "An agent that the sales team is testing.",
"language": "EN",
"voice_audio_id": "<string>",
"role_ids": ["<string>"],
"action_ids": ["<string>"],
"action_flows": [["<string>"]],
"script_ids": ["<string>"],
"knowledge_base_ids": ["<string>"],
"kb_strict_mode": True,
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"disable_greeting": True,
"system_prompt": None,
"end_conversation_on_goodbye": True,
"enable_user_idle_timeout": False,
"enable_parallel_tool_calls": False,
"ai_settings": {
"ai_model": "<string>",
"frequency_penalty": 123,
"max_tokens": 123,
"presence_penalty": 123,
"temperature": 123
},
"greeting_type_inbound": "static",
"greeting_type_outbound": "static",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
}
],
"tts_settings": {
"utterance_end_ms": "1000",
"smart_format": False,
"profanity_filter": False,
"punctuate": True,
"numerals": False,
"keywords": ["<string>"],
"diarize": False,
"dictation": False,
"endpointing": "10",
"filler_words": False
},
"stt_settings": {
"model": "<string>",
"prompt": "<string>",
"keyterms": ["<string>"],
"low_confidence_threshold": 0.5
},
"smart_turn_detection": False,
"voice_settings": None,
"noise_cancellation": {
"enabled": True,
"enhancement_level": 0.8,
"model": "QUAIL_VF_L",
"provider": "ai_coustics",
"vad_minimum_speech_duration": 0.1,
"vad_sensitivity": 0.5,
"vad_speech_hold_duration": 0.2
},
"background_audio": {
"clip": "OFFICE_AMBIENCE",
"enabled": True,
"volume": 0.8
},
"amd": {
"actions": {
"machine-ivr": "continue",
"machine-vm": "leave_message"
},
"detection_options": {
"human_speech_threshold": 2.5,
"timeout": 20
},
"enabled": True,
"interrupt_on_machine": True,
"ivr_detection": True,
"llm": "openai/gpt-4.1-mini",
"stt": "cartesia/ink-whisper",
"voicemail_message": "Hi {{ first_name }}, please call us back when you can."
},
"user_idle": {
"enabled": True,
"max_consecutive_events": 3,
"nudge_instructions": "Ask whether the user is still there in a brief, natural way.",
"user_away_timeout": 10
},
"endpointing": {
"max_delay": 2.5,
"min_delay": 0.3
},
"feature_flags": None,
"script_id": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"x-org-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-API-KEY': '<api-key>',
'x-org-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Liz',
type: 'primary',
description: 'An agent that the sales team is testing.',
language: 'EN',
voice_audio_id: '<string>',
role_ids: ['<string>'],
action_ids: ['<string>'],
action_flows: [['<string>']],
script_ids: ['<string>'],
knowledge_base_ids: ['<string>'],
kb_strict_mode: true,
personality: {adherence: 0.75, empathy: 0.5, humor: 0.25},
disable_greeting: true,
system_prompt: null,
end_conversation_on_goodbye: true,
enable_user_idle_timeout: false,
enable_parallel_tool_calls: false,
ai_settings: {
ai_model: '<string>',
frequency_penalty: 123,
max_tokens: 123,
presence_penalty: 123,
temperature: 123
},
greeting_type_inbound: 'static',
greeting_type_outbound: 'static',
structured_greetings: [
{
call_type: 'inbound',
greeting_type: 'static',
text: 'Hello! Welcome to our service. How can I assist you today?'
}
],
tts_settings: {
utterance_end_ms: '1000',
smart_format: false,
profanity_filter: false,
punctuate: true,
numerals: false,
keywords: ['<string>'],
diarize: false,
dictation: false,
endpointing: '10',
filler_words: false
},
stt_settings: {
model: '<string>',
prompt: '<string>',
keyterms: ['<string>'],
low_confidence_threshold: 0.5
},
smart_turn_detection: false,
voice_settings: null,
noise_cancellation: {
enabled: true,
enhancement_level: 0.8,
model: 'QUAIL_VF_L',
provider: 'ai_coustics',
vad_minimum_speech_duration: 0.1,
vad_sensitivity: 0.5,
vad_speech_hold_duration: 0.2
},
background_audio: {clip: 'OFFICE_AMBIENCE', enabled: true, volume: 0.8},
amd: {
actions: {'machine-ivr': 'continue', 'machine-vm': 'leave_message'},
detection_options: {human_speech_threshold: 2.5, timeout: 20},
enabled: true,
interrupt_on_machine: true,
ivr_detection: true,
llm: 'openai/gpt-4.1-mini',
stt: 'cartesia/ink-whisper',
voicemail_message: 'Hi {{ first_name }}, please call us back when you can.'
},
user_idle: {
enabled: true,
max_consecutive_events: 3,
nudge_instructions: 'Ask whether the user is still there in a brief, natural way.',
user_away_timeout: 10
},
endpointing: {max_delay: 2.5, min_delay: 0.3},
feature_flags: null,
script_id: '<string>'
})
};
fetch('https://api.eqho.ai/v1/agents/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eqho.ai/v1/agents/{agent_id}"
payload := strings.NewReader("{\n \"name\": \"Liz\",\n \"type\": \"primary\",\n \"description\": \"An agent that the sales team is testing.\",\n \"language\": \"EN\",\n \"voice_audio_id\": \"<string>\",\n \"role_ids\": [\n \"<string>\"\n ],\n \"action_ids\": [\n \"<string>\"\n ],\n \"action_flows\": [\n [\n \"<string>\"\n ]\n ],\n \"script_ids\": [\n \"<string>\"\n ],\n \"knowledge_base_ids\": [\n \"<string>\"\n ],\n \"kb_strict_mode\": true,\n \"personality\": {\n \"adherence\": 0.75,\n \"empathy\": 0.5,\n \"humor\": 0.25\n },\n \"disable_greeting\": true,\n \"system_prompt\": null,\n \"end_conversation_on_goodbye\": true,\n \"enable_user_idle_timeout\": false,\n \"enable_parallel_tool_calls\": false,\n \"ai_settings\": {\n \"ai_model\": \"<string>\",\n \"frequency_penalty\": 123,\n \"max_tokens\": 123,\n \"presence_penalty\": 123,\n \"temperature\": 123\n },\n \"greeting_type_inbound\": \"static\",\n \"greeting_type_outbound\": \"static\",\n \"structured_greetings\": [\n {\n \"call_type\": \"inbound\",\n \"greeting_type\": \"static\",\n \"text\": \"Hello! Welcome to our service. How can I assist you today?\"\n }\n ],\n \"tts_settings\": {\n \"utterance_end_ms\": \"1000\",\n \"smart_format\": false,\n \"profanity_filter\": false,\n \"punctuate\": true,\n \"numerals\": false,\n \"keywords\": [\n \"<string>\"\n ],\n \"diarize\": false,\n \"dictation\": false,\n \"endpointing\": \"10\",\n \"filler_words\": false\n },\n \"stt_settings\": {\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"keyterms\": [\n \"<string>\"\n ],\n \"low_confidence_threshold\": 0.5\n },\n \"smart_turn_detection\": false,\n \"voice_settings\": null,\n \"noise_cancellation\": {\n \"enabled\": true,\n \"enhancement_level\": 0.8,\n \"model\": \"QUAIL_VF_L\",\n \"provider\": \"ai_coustics\",\n \"vad_minimum_speech_duration\": 0.1,\n \"vad_sensitivity\": 0.5,\n \"vad_speech_hold_duration\": 0.2\n },\n \"background_audio\": {\n \"clip\": \"OFFICE_AMBIENCE\",\n \"enabled\": true,\n \"volume\": 0.8\n },\n \"amd\": {\n \"actions\": {\n \"machine-ivr\": \"continue\",\n \"machine-vm\": \"leave_message\"\n },\n \"detection_options\": {\n \"human_speech_threshold\": 2.5,\n \"timeout\": 20\n },\n \"enabled\": true,\n \"interrupt_on_machine\": true,\n \"ivr_detection\": true,\n \"llm\": \"openai/gpt-4.1-mini\",\n \"stt\": \"cartesia/ink-whisper\",\n \"voicemail_message\": \"Hi {{ first_name }}, please call us back when you can.\"\n },\n \"user_idle\": {\n \"enabled\": true,\n \"max_consecutive_events\": 3,\n \"nudge_instructions\": \"Ask whether the user is still there in a brief, natural way.\",\n \"user_away_timeout\": 10\n },\n \"endpointing\": {\n \"max_delay\": 2.5,\n \"min_delay\": 0.3\n },\n \"feature_flags\": null,\n \"script_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("x-org-id", "<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))
}{
"avatar": "WOMAN",
"description": "An agent that the sales team is testing.",
"greeting_type_inbound": "static",
"greeting_type_outbound": "ai",
"knowledge_base_ids": [
"65a9758171f55af646a19890"
],
"name": "Liz",
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"role_ids": [
"65a9758171f55af646a19890"
],
"script_id": "65a9758171f55af646a19890",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
},
{
"call_type": "outbound",
"communication_tone": "friendly",
"greeting_length": "short",
"greeting_type": "ai",
"mention_ids": [
"673e488ce7d69488a458cf3e",
"973e488ce7d69488a458cf3e"
]
}
],
"voice_audio_id": "Y94lg6clSowTJ0jJOlyc"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update Agent
curl --request PUT \
--url https://api.eqho.ai/v1/agents/{agent_id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'x-org-id: <api-key>' \
--data '
{
"name": "Liz",
"type": "primary",
"description": "An agent that the sales team is testing.",
"language": "EN",
"voice_audio_id": "<string>",
"role_ids": [
"<string>"
],
"action_ids": [
"<string>"
],
"action_flows": [
[
"<string>"
]
],
"script_ids": [
"<string>"
],
"knowledge_base_ids": [
"<string>"
],
"kb_strict_mode": true,
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"disable_greeting": true,
"system_prompt": null,
"end_conversation_on_goodbye": true,
"enable_user_idle_timeout": false,
"enable_parallel_tool_calls": false,
"ai_settings": {
"ai_model": "<string>",
"frequency_penalty": 123,
"max_tokens": 123,
"presence_penalty": 123,
"temperature": 123
},
"greeting_type_inbound": "static",
"greeting_type_outbound": "static",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
}
],
"tts_settings": {
"utterance_end_ms": "1000",
"smart_format": false,
"profanity_filter": false,
"punctuate": true,
"numerals": false,
"keywords": [
"<string>"
],
"diarize": false,
"dictation": false,
"endpointing": "10",
"filler_words": false
},
"stt_settings": {
"model": "<string>",
"prompt": "<string>",
"keyterms": [
"<string>"
],
"low_confidence_threshold": 0.5
},
"smart_turn_detection": false,
"voice_settings": null,
"noise_cancellation": {
"enabled": true,
"enhancement_level": 0.8,
"model": "QUAIL_VF_L",
"provider": "ai_coustics",
"vad_minimum_speech_duration": 0.1,
"vad_sensitivity": 0.5,
"vad_speech_hold_duration": 0.2
},
"background_audio": {
"clip": "OFFICE_AMBIENCE",
"enabled": true,
"volume": 0.8
},
"amd": {
"actions": {
"machine-ivr": "continue",
"machine-vm": "leave_message"
},
"detection_options": {
"human_speech_threshold": 2.5,
"timeout": 20
},
"enabled": true,
"interrupt_on_machine": true,
"ivr_detection": true,
"llm": "openai/gpt-4.1-mini",
"stt": "cartesia/ink-whisper",
"voicemail_message": "Hi {{ first_name }}, please call us back when you can."
},
"user_idle": {
"enabled": true,
"max_consecutive_events": 3,
"nudge_instructions": "Ask whether the user is still there in a brief, natural way.",
"user_away_timeout": 10
},
"endpointing": {
"max_delay": 2.5,
"min_delay": 0.3
},
"feature_flags": null,
"script_id": "<string>"
}
'import requests
url = "https://api.eqho.ai/v1/agents/{agent_id}"
payload = {
"name": "Liz",
"type": "primary",
"description": "An agent that the sales team is testing.",
"language": "EN",
"voice_audio_id": "<string>",
"role_ids": ["<string>"],
"action_ids": ["<string>"],
"action_flows": [["<string>"]],
"script_ids": ["<string>"],
"knowledge_base_ids": ["<string>"],
"kb_strict_mode": True,
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"disable_greeting": True,
"system_prompt": None,
"end_conversation_on_goodbye": True,
"enable_user_idle_timeout": False,
"enable_parallel_tool_calls": False,
"ai_settings": {
"ai_model": "<string>",
"frequency_penalty": 123,
"max_tokens": 123,
"presence_penalty": 123,
"temperature": 123
},
"greeting_type_inbound": "static",
"greeting_type_outbound": "static",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
}
],
"tts_settings": {
"utterance_end_ms": "1000",
"smart_format": False,
"profanity_filter": False,
"punctuate": True,
"numerals": False,
"keywords": ["<string>"],
"diarize": False,
"dictation": False,
"endpointing": "10",
"filler_words": False
},
"stt_settings": {
"model": "<string>",
"prompt": "<string>",
"keyterms": ["<string>"],
"low_confidence_threshold": 0.5
},
"smart_turn_detection": False,
"voice_settings": None,
"noise_cancellation": {
"enabled": True,
"enhancement_level": 0.8,
"model": "QUAIL_VF_L",
"provider": "ai_coustics",
"vad_minimum_speech_duration": 0.1,
"vad_sensitivity": 0.5,
"vad_speech_hold_duration": 0.2
},
"background_audio": {
"clip": "OFFICE_AMBIENCE",
"enabled": True,
"volume": 0.8
},
"amd": {
"actions": {
"machine-ivr": "continue",
"machine-vm": "leave_message"
},
"detection_options": {
"human_speech_threshold": 2.5,
"timeout": 20
},
"enabled": True,
"interrupt_on_machine": True,
"ivr_detection": True,
"llm": "openai/gpt-4.1-mini",
"stt": "cartesia/ink-whisper",
"voicemail_message": "Hi {{ first_name }}, please call us back when you can."
},
"user_idle": {
"enabled": True,
"max_consecutive_events": 3,
"nudge_instructions": "Ask whether the user is still there in a brief, natural way.",
"user_away_timeout": 10
},
"endpointing": {
"max_delay": 2.5,
"min_delay": 0.3
},
"feature_flags": None,
"script_id": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"x-org-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-API-KEY': '<api-key>',
'x-org-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Liz',
type: 'primary',
description: 'An agent that the sales team is testing.',
language: 'EN',
voice_audio_id: '<string>',
role_ids: ['<string>'],
action_ids: ['<string>'],
action_flows: [['<string>']],
script_ids: ['<string>'],
knowledge_base_ids: ['<string>'],
kb_strict_mode: true,
personality: {adherence: 0.75, empathy: 0.5, humor: 0.25},
disable_greeting: true,
system_prompt: null,
end_conversation_on_goodbye: true,
enable_user_idle_timeout: false,
enable_parallel_tool_calls: false,
ai_settings: {
ai_model: '<string>',
frequency_penalty: 123,
max_tokens: 123,
presence_penalty: 123,
temperature: 123
},
greeting_type_inbound: 'static',
greeting_type_outbound: 'static',
structured_greetings: [
{
call_type: 'inbound',
greeting_type: 'static',
text: 'Hello! Welcome to our service. How can I assist you today?'
}
],
tts_settings: {
utterance_end_ms: '1000',
smart_format: false,
profanity_filter: false,
punctuate: true,
numerals: false,
keywords: ['<string>'],
diarize: false,
dictation: false,
endpointing: '10',
filler_words: false
},
stt_settings: {
model: '<string>',
prompt: '<string>',
keyterms: ['<string>'],
low_confidence_threshold: 0.5
},
smart_turn_detection: false,
voice_settings: null,
noise_cancellation: {
enabled: true,
enhancement_level: 0.8,
model: 'QUAIL_VF_L',
provider: 'ai_coustics',
vad_minimum_speech_duration: 0.1,
vad_sensitivity: 0.5,
vad_speech_hold_duration: 0.2
},
background_audio: {clip: 'OFFICE_AMBIENCE', enabled: true, volume: 0.8},
amd: {
actions: {'machine-ivr': 'continue', 'machine-vm': 'leave_message'},
detection_options: {human_speech_threshold: 2.5, timeout: 20},
enabled: true,
interrupt_on_machine: true,
ivr_detection: true,
llm: 'openai/gpt-4.1-mini',
stt: 'cartesia/ink-whisper',
voicemail_message: 'Hi {{ first_name }}, please call us back when you can.'
},
user_idle: {
enabled: true,
max_consecutive_events: 3,
nudge_instructions: 'Ask whether the user is still there in a brief, natural way.',
user_away_timeout: 10
},
endpointing: {max_delay: 2.5, min_delay: 0.3},
feature_flags: null,
script_id: '<string>'
})
};
fetch('https://api.eqho.ai/v1/agents/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eqho.ai/v1/agents/{agent_id}"
payload := strings.NewReader("{\n \"name\": \"Liz\",\n \"type\": \"primary\",\n \"description\": \"An agent that the sales team is testing.\",\n \"language\": \"EN\",\n \"voice_audio_id\": \"<string>\",\n \"role_ids\": [\n \"<string>\"\n ],\n \"action_ids\": [\n \"<string>\"\n ],\n \"action_flows\": [\n [\n \"<string>\"\n ]\n ],\n \"script_ids\": [\n \"<string>\"\n ],\n \"knowledge_base_ids\": [\n \"<string>\"\n ],\n \"kb_strict_mode\": true,\n \"personality\": {\n \"adherence\": 0.75,\n \"empathy\": 0.5,\n \"humor\": 0.25\n },\n \"disable_greeting\": true,\n \"system_prompt\": null,\n \"end_conversation_on_goodbye\": true,\n \"enable_user_idle_timeout\": false,\n \"enable_parallel_tool_calls\": false,\n \"ai_settings\": {\n \"ai_model\": \"<string>\",\n \"frequency_penalty\": 123,\n \"max_tokens\": 123,\n \"presence_penalty\": 123,\n \"temperature\": 123\n },\n \"greeting_type_inbound\": \"static\",\n \"greeting_type_outbound\": \"static\",\n \"structured_greetings\": [\n {\n \"call_type\": \"inbound\",\n \"greeting_type\": \"static\",\n \"text\": \"Hello! Welcome to our service. How can I assist you today?\"\n }\n ],\n \"tts_settings\": {\n \"utterance_end_ms\": \"1000\",\n \"smart_format\": false,\n \"profanity_filter\": false,\n \"punctuate\": true,\n \"numerals\": false,\n \"keywords\": [\n \"<string>\"\n ],\n \"diarize\": false,\n \"dictation\": false,\n \"endpointing\": \"10\",\n \"filler_words\": false\n },\n \"stt_settings\": {\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"keyterms\": [\n \"<string>\"\n ],\n \"low_confidence_threshold\": 0.5\n },\n \"smart_turn_detection\": false,\n \"voice_settings\": null,\n \"noise_cancellation\": {\n \"enabled\": true,\n \"enhancement_level\": 0.8,\n \"model\": \"QUAIL_VF_L\",\n \"provider\": \"ai_coustics\",\n \"vad_minimum_speech_duration\": 0.1,\n \"vad_sensitivity\": 0.5,\n \"vad_speech_hold_duration\": 0.2\n },\n \"background_audio\": {\n \"clip\": \"OFFICE_AMBIENCE\",\n \"enabled\": true,\n \"volume\": 0.8\n },\n \"amd\": {\n \"actions\": {\n \"machine-ivr\": \"continue\",\n \"machine-vm\": \"leave_message\"\n },\n \"detection_options\": {\n \"human_speech_threshold\": 2.5,\n \"timeout\": 20\n },\n \"enabled\": true,\n \"interrupt_on_machine\": true,\n \"ivr_detection\": true,\n \"llm\": \"openai/gpt-4.1-mini\",\n \"stt\": \"cartesia/ink-whisper\",\n \"voicemail_message\": \"Hi {{ first_name }}, please call us back when you can.\"\n },\n \"user_idle\": {\n \"enabled\": true,\n \"max_consecutive_events\": 3,\n \"nudge_instructions\": \"Ask whether the user is still there in a brief, natural way.\",\n \"user_away_timeout\": 10\n },\n \"endpointing\": {\n \"max_delay\": 2.5,\n \"min_delay\": 0.3\n },\n \"feature_flags\": null,\n \"script_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("x-org-id", "<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))
}{
"avatar": "WOMAN",
"description": "An agent that the sales team is testing.",
"greeting_type_inbound": "static",
"greeting_type_outbound": "ai",
"knowledge_base_ids": [
"65a9758171f55af646a19890"
],
"name": "Liz",
"personality": {
"adherence": 0.75,
"empathy": 0.5,
"humor": 0.25
},
"role_ids": [
"65a9758171f55af646a19890"
],
"script_id": "65a9758171f55af646a19890",
"structured_greetings": [
{
"call_type": "inbound",
"greeting_type": "static",
"text": "Hello! Welcome to our service. How can I assist you today?"
},
{
"call_type": "outbound",
"communication_tone": "friendly",
"greeting_length": "short",
"greeting_type": "ai",
"mention_ids": [
"673e488ce7d69488a458cf3e",
"973e488ce7d69488a458cf3e"
]
}
],
"voice_audio_id": "Y94lg6clSowTJ0jJOlyc"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your API key for authentication.
Org impersonation via x-org-id. Superadmins may impersonate any org; admins may impersonate their direct sub-organizations. Enter the target organization ID to act as that org.
Path Parameters
24Body
A set of optional updates to be made to a document in the database. The router applies only the
fields the client actually sent (exclude_unset), so omitted fields keep their stored value even
though they carry non-None defaults on the create-request schema (e.g. type, action_ids, language).
The name of the agent. Agent may use this name in the conversation.
"Liz"
primary (default agent that drives the conversation) or helper (listen-only assistant)
primary, helper The description of the agent. Only used for your own reference.
"An agent that the sales team is testing."
The langauge Agent speaks in.
multi, bg, ca, cs, da, da-DK, de, de-CH, el, en, en-US, en-AU, en-GB, en-NZ, en-IN, es, et, fi, fr, fr-CA, hi, hu, id, it, ja, lt, lv, no, nl, pl, pt, pt-BR, pt-PT, ro, ru, sk, th, th-TH, tr, uk, vi, zh, zh-CN, zh-TW, zh-HK "EN"
The avatar of the agent used in the UI and widget.
MAN, WOMAN Identifier of the voice that will be used by Agent, you can query them using GET /v1/voices
The roles your agent will have, you can query them using GET /v1/roles. When multiple roles are provided, each role will be added to the LLM prompt using Eqho's proprietary prompt structure.
The list of Action IDs Agent will have access to, you can query them using GET /v1/actions.
Action flows allow you to define sequences of actions that an agent must follow in a strict, ordered manner.
Each element in the action_flows array is a list of action ids. Within each list, the agent executes the actions in the order they are listed.
Each action on the list should be an action ID listed in action_ids.
If not provided, the agent can execute actions from action_ids in any order.
Use case: appointment booking, where the agent must first check availability, create a calendar entry, and finally confirm the booking with the user.
A list of script IDs that the agent will have access to; you can query them using GET /v1/scripts.
Assigning multiple scripts to an Agent is usually not recommended. When multiple scripts are provided, each script will be added to the LLM prompt using Eqho's proprietary prompt structure.
A list of Knowledge Base IDs that the agent will have access to, you can query them using GET /v1/knowledge-bases. Agent can use content from provided Knowledge Bases to enrich responses.
When true, the agent is instructed to only answer from knowledge base content and decline questions the attached knowledge bases cannot answer. Has no effect when the agent has no knowledge bases attached.
Describes the personality of an agent. These values will be injected into the agent's prompt. LLM might use them to adjust the agent's responses.
Show child attributes
Show child attributes
Deprecated. This field is no longer recommended for use and will be removed in future versions. Use greeting_type with value 'none' instead.
Advanced setting to override the Eqho default system prompt. In most cases, you should not need to use this.
Show child attributes
Show child attributes
null
If true, the agent will end the conversation if the user or agent says 'goodbye' or a similar phrase.
If true, the agent will end the conversation if the user is idle (not talking, not typing) for a certain period of time. The agent will ask the user if they are still there up to 3 times before ending the conversation.
Amount of time agent waits for user to respond is set by Eqho and can not be changed.
If true, the agent can execute multiple tools at the same time.
Settings for the Agent's LLM model.
Show child attributes
Show child attributes
static, ai, none static, ai, none Show child attributes
Show child attributes
Show child attributes
Show child attributes
Per-agent STT provider config. Absent -> Deepgram defaults (legacy tts_settings still apply). Consumed by the agent runtime config service.
Show child attributes
Show child attributes
If true, the agent will use ML to detect turns changes in the conversation.
Advanced setting to override the Eqho default voice settings. In most cases, you should not need to use this. If not provided, the agent will use the default Eqho voice settings.
Show child attributes
Show child attributes
null
Optional per-agent call noise cancellation settings. If omitted, noise cancellation is off. ai_coustics supports model, enhancement level, and VAD parameters. bvc, bvc_telephony, and nc ignore those parameters.
Show child attributes
Show child attributes
{ "enabled": true, "enhancement_level": 0.8, "model": "QUAIL_VF_L", "provider": "ai_coustics", "vad_minimum_speech_duration": 0.1, "vad_sensitivity": 0.5, "vad_speech_hold_duration": 0.2 }
Optional per-agent background ambience settings. If omitted, background audio is off. If clip or volume is omitted, the voice runtime uses its default clip or volume.
Show child attributes
Show child attributes
{ "clip": "OFFICE_AMBIENCE", "enabled": true, "volume": 0.8 }
Optional per-agent answering machine detection settings for outbound calls. If omitted, AMD is off. actions supports only machine-ivr, machine-vm, and machine-unavailable keys; absent keys default to continue. wait_until_finished is not configurable here; the voice runtime derives it from machine-vm leave_message.
Show child attributes
Show child attributes
{ "actions": { "machine-ivr": "continue", "machine-vm": "leave_message" }, "detection_options": { "human_speech_threshold": 2.5, "timeout": 20 }, "enabled": true, "interrupt_on_machine": true, "ivr_detection": true, "llm": "openai/gpt-4.1-mini", "stt": "cartesia/ink-whisper", "voicemail_message": "Hi {{ first_name }}, please call us back when you can." }
Optional per-agent inactivity handling settings for voice calls. If omitted, user idle handling is off. If user_away_timeout or max_consecutive_events is omitted, the voice runtime uses its default value.
Show child attributes
Show child attributes
{ "enabled": true, "max_consecutive_events": 3, "nudge_instructions": "Ask whether the user is still there in a brief, natural way.", "user_away_timeout": 10 }
Optional per-agent turn-taking (endpointing) delays for voice calls. If omitted, the voice runtime uses its default delays. min_delay must be between 0.1 and 2.0, max_delay between 0.5 and 6.0, and max_delay must be greater than or equal to min_delay when both are set.
Show child attributes
Show child attributes
{ "max_delay": 2.5, "min_delay": 0.3 }
null
Deprecated. Use script_ids instead.
Response
Successful Response
primary (default) or listen-only helper
primary, helper Language codes that are supported by Eqho Agents.
multi, bg, ca, cs, da, da-DK, de, de-CH, el, en, en-US, en-AU, en-GB, en-NZ, en-IN, es, et, fi, fr, fr-CA, hi, hu, id, it, ja, lt, lv, no, nl, pl, pt, pt-BR, pt-PT, ro, ru, sk, th, th-TH, tr, uk, vi, zh, zh-CN, zh-TW, zh-HK Deprecated. Use script_ids instead.
When set, the agent only answers from knowledge base content
Describes the personality of an agent. These values will be injected into the agent's prompt. LLM might use them to adjust the agent's responses.
Show child attributes
Show child attributes
Deprecated. This field is no longer recommended for use and will be removed in future versions. Use greeting_type with value 'none' instead.
Show child attributes
Show child attributes
Settings for the Agent's LLM model.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Per-agent STT provider config. Absent -> Deepgram defaults (legacy tts_settings still apply). Consumed by the agent runtime config service.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
static, ai, none static, ai, none Show child attributes
Show child attributes
Deprecated. Use structured_greetings instead.
"CHAT_HISTORY"
Show child attributes
Show child attributes
Tracks the source agent this was imported from.
Show child attributes
Show child attributes
Was this page helpful?