Create Agent
curl --request POST \
--url https://api.truedy.ai/api/public/v1/agents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"voice_id": "<string>",
"system_prompt": "<string>",
"description": "<string>",
"model": "ultravox-v0.7",
"tools": [],
"knowledge_bases": [],
"knowledge": {
"id": "<string>"
},
"template_id": "<string>",
"clerk_org_id": "<string>",
"call_template_name": "<string>",
"greeting_settings": {
"first_speaker": "agent",
"text": "<string>",
"prompt": "<string>",
"delay": "<string>",
"uninterruptible": false,
"fallback_delay": "<string>",
"fallback_text": "<string>",
"fallback_prompt": "<string>"
},
"inactivity_messages": [],
"temperature": 0.3,
"language_hint": "en-US",
"time_exceeded_message": "<string>",
"recording_enabled": false,
"join_timeout": "30s",
"max_duration": "3600s",
"initial_output_medium": "MESSAGE_MEDIUM_VOICE",
"vad_settings": {
"turn_endpoint_delay": "<string>",
"minimum_turn_duration": "<string>",
"minimum_interruption_duration": "<string>",
"frame_activation_threshold": 0.5
},
"built_in_config": {
"transfer": {
"enabled": false,
"type": "coldTransfer",
"phone_number": "",
"display_name": "transfer_to_human",
"extraHeaders": {},
"sipVerb": "<string>",
"from": "<string>",
"username": "<string>",
"password": "<string>",
"holdMusicUrl": "<string>",
"inviteHeaders": {},
"referHeaders": {},
"transferSystemPromptTemplate": "<string>",
"transferType": "<string>",
"context": "<string>"
},
"hang_up": {
"enabled": false,
"reason": "<string>",
"strict": true
},
"leave_voicemail": {
"enabled": false,
"message": "<string>",
"strict": true,
"result": "<string>"
}
},
"success_criteria": "<string>",
"extraction_schema": {},
"crm_webhook_url": "<string>",
"crm_webhook_secret": "<string>"
}
'import requests
url = "https://api.truedy.ai/api/public/v1/agents"
payload = {
"name": "<string>",
"voice_id": "<string>",
"system_prompt": "<string>",
"description": "<string>",
"model": "ultravox-v0.7",
"tools": [],
"knowledge_bases": [],
"knowledge": { "id": "<string>" },
"template_id": "<string>",
"clerk_org_id": "<string>",
"call_template_name": "<string>",
"greeting_settings": {
"first_speaker": "agent",
"text": "<string>",
"prompt": "<string>",
"delay": "<string>",
"uninterruptible": False,
"fallback_delay": "<string>",
"fallback_text": "<string>",
"fallback_prompt": "<string>"
},
"inactivity_messages": [],
"temperature": 0.3,
"language_hint": "en-US",
"time_exceeded_message": "<string>",
"recording_enabled": False,
"join_timeout": "30s",
"max_duration": "3600s",
"initial_output_medium": "MESSAGE_MEDIUM_VOICE",
"vad_settings": {
"turn_endpoint_delay": "<string>",
"minimum_turn_duration": "<string>",
"minimum_interruption_duration": "<string>",
"frame_activation_threshold": 0.5
},
"built_in_config": {
"transfer": {
"enabled": False,
"type": "coldTransfer",
"phone_number": "",
"display_name": "transfer_to_human",
"extraHeaders": {},
"sipVerb": "<string>",
"from": "<string>",
"username": "<string>",
"password": "<string>",
"holdMusicUrl": "<string>",
"inviteHeaders": {},
"referHeaders": {},
"transferSystemPromptTemplate": "<string>",
"transferType": "<string>",
"context": "<string>"
},
"hang_up": {
"enabled": False,
"reason": "<string>",
"strict": True
},
"leave_voicemail": {
"enabled": False,
"message": "<string>",
"strict": True,
"result": "<string>"
}
},
"success_criteria": "<string>",
"extraction_schema": {},
"crm_webhook_url": "<string>",
"crm_webhook_secret": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: '<string>',
system_prompt: '<string>',
description: '<string>',
model: 'ultravox-v0.7',
tools: [],
knowledge_bases: [],
knowledge: {id: '<string>'},
template_id: '<string>',
clerk_org_id: '<string>',
call_template_name: '<string>',
greeting_settings: {
first_speaker: 'agent',
text: '<string>',
prompt: '<string>',
delay: '<string>',
uninterruptible: false,
fallback_delay: '<string>',
fallback_text: '<string>',
fallback_prompt: '<string>'
},
inactivity_messages: [],
temperature: 0.3,
language_hint: 'en-US',
time_exceeded_message: '<string>',
recording_enabled: false,
join_timeout: '30s',
max_duration: '3600s',
initial_output_medium: 'MESSAGE_MEDIUM_VOICE',
vad_settings: {
turn_endpoint_delay: '<string>',
minimum_turn_duration: '<string>',
minimum_interruption_duration: '<string>',
frame_activation_threshold: 0.5
},
built_in_config: {
transfer: {
enabled: false,
type: 'coldTransfer',
phone_number: '',
display_name: 'transfer_to_human',
extraHeaders: {},
sipVerb: '<string>',
from: '<string>',
username: '<string>',
password: '<string>',
holdMusicUrl: '<string>',
inviteHeaders: {},
referHeaders: {},
transferSystemPromptTemplate: '<string>',
transferType: '<string>',
context: '<string>'
},
hang_up: {enabled: false, reason: '<string>', strict: true},
leave_voicemail: {enabled: false, message: '<string>', strict: true, result: '<string>'}
},
success_criteria: '<string>',
extraction_schema: {},
crm_webhook_url: '<string>',
crm_webhook_secret: '<string>'
})
};
fetch('https://api.truedy.ai/api/public/v1/agents', 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.truedy.ai/api/public/v1/agents",
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>',
'voice_id' => '<string>',
'system_prompt' => '<string>',
'description' => '<string>',
'model' => 'ultravox-v0.7',
'tools' => [
],
'knowledge_bases' => [
],
'knowledge' => [
'id' => '<string>'
],
'template_id' => '<string>',
'clerk_org_id' => '<string>',
'call_template_name' => '<string>',
'greeting_settings' => [
'first_speaker' => 'agent',
'text' => '<string>',
'prompt' => '<string>',
'delay' => '<string>',
'uninterruptible' => false,
'fallback_delay' => '<string>',
'fallback_text' => '<string>',
'fallback_prompt' => '<string>'
],
'inactivity_messages' => [
],
'temperature' => 0.3,
'language_hint' => 'en-US',
'time_exceeded_message' => '<string>',
'recording_enabled' => false,
'join_timeout' => '30s',
'max_duration' => '3600s',
'initial_output_medium' => 'MESSAGE_MEDIUM_VOICE',
'vad_settings' => [
'turn_endpoint_delay' => '<string>',
'minimum_turn_duration' => '<string>',
'minimum_interruption_duration' => '<string>',
'frame_activation_threshold' => 0.5
],
'built_in_config' => [
'transfer' => [
'enabled' => false,
'type' => 'coldTransfer',
'phone_number' => '',
'display_name' => 'transfer_to_human',
'extraHeaders' => [
],
'sipVerb' => '<string>',
'from' => '<string>',
'username' => '<string>',
'password' => '<string>',
'holdMusicUrl' => '<string>',
'inviteHeaders' => [
],
'referHeaders' => [
],
'transferSystemPromptTemplate' => '<string>',
'transferType' => '<string>',
'context' => '<string>'
],
'hang_up' => [
'enabled' => false,
'reason' => '<string>',
'strict' => true
],
'leave_voicemail' => [
'enabled' => false,
'message' => '<string>',
'strict' => true,
'result' => '<string>'
]
],
'success_criteria' => '<string>',
'extraction_schema' => [
],
'crm_webhook_url' => '<string>',
'crm_webhook_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.truedy.ai/api/public/v1/agents"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.truedy.ai/api/public/v1/agents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truedy.ai/api/public/v1/agents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"name": "<string>",
"voice_id": "<string>",
"model": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"voice_name": "<string>",
"system_prompt": "<string>",
"tools": [
"<string>"
],
"knowledge_bases": [
"<string>"
],
"greeting_settings": {},
"inactivity_messages": [
{}
],
"temperature": 123,
"language_hint": "<string>",
"time_exceeded_message": "<string>",
"recording_enabled": true,
"join_timeout": "<string>",
"max_duration": "<string>",
"built_in_config": {},
"inbound_phone_numbers": [
{}
],
"outbound_phone_numbers": [
{}
]
},
"meta": {
"request_id": "<string>",
"ts": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}Agents
Create Agent
Create a new agent. Updates the voice provider in real time; no separate sync needed.
POST
/
agents
Create Agent
curl --request POST \
--url https://api.truedy.ai/api/public/v1/agents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"voice_id": "<string>",
"system_prompt": "<string>",
"description": "<string>",
"model": "ultravox-v0.7",
"tools": [],
"knowledge_bases": [],
"knowledge": {
"id": "<string>"
},
"template_id": "<string>",
"clerk_org_id": "<string>",
"call_template_name": "<string>",
"greeting_settings": {
"first_speaker": "agent",
"text": "<string>",
"prompt": "<string>",
"delay": "<string>",
"uninterruptible": false,
"fallback_delay": "<string>",
"fallback_text": "<string>",
"fallback_prompt": "<string>"
},
"inactivity_messages": [],
"temperature": 0.3,
"language_hint": "en-US",
"time_exceeded_message": "<string>",
"recording_enabled": false,
"join_timeout": "30s",
"max_duration": "3600s",
"initial_output_medium": "MESSAGE_MEDIUM_VOICE",
"vad_settings": {
"turn_endpoint_delay": "<string>",
"minimum_turn_duration": "<string>",
"minimum_interruption_duration": "<string>",
"frame_activation_threshold": 0.5
},
"built_in_config": {
"transfer": {
"enabled": false,
"type": "coldTransfer",
"phone_number": "",
"display_name": "transfer_to_human",
"extraHeaders": {},
"sipVerb": "<string>",
"from": "<string>",
"username": "<string>",
"password": "<string>",
"holdMusicUrl": "<string>",
"inviteHeaders": {},
"referHeaders": {},
"transferSystemPromptTemplate": "<string>",
"transferType": "<string>",
"context": "<string>"
},
"hang_up": {
"enabled": false,
"reason": "<string>",
"strict": true
},
"leave_voicemail": {
"enabled": false,
"message": "<string>",
"strict": true,
"result": "<string>"
}
},
"success_criteria": "<string>",
"extraction_schema": {},
"crm_webhook_url": "<string>",
"crm_webhook_secret": "<string>"
}
'import requests
url = "https://api.truedy.ai/api/public/v1/agents"
payload = {
"name": "<string>",
"voice_id": "<string>",
"system_prompt": "<string>",
"description": "<string>",
"model": "ultravox-v0.7",
"tools": [],
"knowledge_bases": [],
"knowledge": { "id": "<string>" },
"template_id": "<string>",
"clerk_org_id": "<string>",
"call_template_name": "<string>",
"greeting_settings": {
"first_speaker": "agent",
"text": "<string>",
"prompt": "<string>",
"delay": "<string>",
"uninterruptible": False,
"fallback_delay": "<string>",
"fallback_text": "<string>",
"fallback_prompt": "<string>"
},
"inactivity_messages": [],
"temperature": 0.3,
"language_hint": "en-US",
"time_exceeded_message": "<string>",
"recording_enabled": False,
"join_timeout": "30s",
"max_duration": "3600s",
"initial_output_medium": "MESSAGE_MEDIUM_VOICE",
"vad_settings": {
"turn_endpoint_delay": "<string>",
"minimum_turn_duration": "<string>",
"minimum_interruption_duration": "<string>",
"frame_activation_threshold": 0.5
},
"built_in_config": {
"transfer": {
"enabled": False,
"type": "coldTransfer",
"phone_number": "",
"display_name": "transfer_to_human",
"extraHeaders": {},
"sipVerb": "<string>",
"from": "<string>",
"username": "<string>",
"password": "<string>",
"holdMusicUrl": "<string>",
"inviteHeaders": {},
"referHeaders": {},
"transferSystemPromptTemplate": "<string>",
"transferType": "<string>",
"context": "<string>"
},
"hang_up": {
"enabled": False,
"reason": "<string>",
"strict": True
},
"leave_voicemail": {
"enabled": False,
"message": "<string>",
"strict": True,
"result": "<string>"
}
},
"success_criteria": "<string>",
"extraction_schema": {},
"crm_webhook_url": "<string>",
"crm_webhook_secret": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: '<string>',
system_prompt: '<string>',
description: '<string>',
model: 'ultravox-v0.7',
tools: [],
knowledge_bases: [],
knowledge: {id: '<string>'},
template_id: '<string>',
clerk_org_id: '<string>',
call_template_name: '<string>',
greeting_settings: {
first_speaker: 'agent',
text: '<string>',
prompt: '<string>',
delay: '<string>',
uninterruptible: false,
fallback_delay: '<string>',
fallback_text: '<string>',
fallback_prompt: '<string>'
},
inactivity_messages: [],
temperature: 0.3,
language_hint: 'en-US',
time_exceeded_message: '<string>',
recording_enabled: false,
join_timeout: '30s',
max_duration: '3600s',
initial_output_medium: 'MESSAGE_MEDIUM_VOICE',
vad_settings: {
turn_endpoint_delay: '<string>',
minimum_turn_duration: '<string>',
minimum_interruption_duration: '<string>',
frame_activation_threshold: 0.5
},
built_in_config: {
transfer: {
enabled: false,
type: 'coldTransfer',
phone_number: '',
display_name: 'transfer_to_human',
extraHeaders: {},
sipVerb: '<string>',
from: '<string>',
username: '<string>',
password: '<string>',
holdMusicUrl: '<string>',
inviteHeaders: {},
referHeaders: {},
transferSystemPromptTemplate: '<string>',
transferType: '<string>',
context: '<string>'
},
hang_up: {enabled: false, reason: '<string>', strict: true},
leave_voicemail: {enabled: false, message: '<string>', strict: true, result: '<string>'}
},
success_criteria: '<string>',
extraction_schema: {},
crm_webhook_url: '<string>',
crm_webhook_secret: '<string>'
})
};
fetch('https://api.truedy.ai/api/public/v1/agents', 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.truedy.ai/api/public/v1/agents",
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>',
'voice_id' => '<string>',
'system_prompt' => '<string>',
'description' => '<string>',
'model' => 'ultravox-v0.7',
'tools' => [
],
'knowledge_bases' => [
],
'knowledge' => [
'id' => '<string>'
],
'template_id' => '<string>',
'clerk_org_id' => '<string>',
'call_template_name' => '<string>',
'greeting_settings' => [
'first_speaker' => 'agent',
'text' => '<string>',
'prompt' => '<string>',
'delay' => '<string>',
'uninterruptible' => false,
'fallback_delay' => '<string>',
'fallback_text' => '<string>',
'fallback_prompt' => '<string>'
],
'inactivity_messages' => [
],
'temperature' => 0.3,
'language_hint' => 'en-US',
'time_exceeded_message' => '<string>',
'recording_enabled' => false,
'join_timeout' => '30s',
'max_duration' => '3600s',
'initial_output_medium' => 'MESSAGE_MEDIUM_VOICE',
'vad_settings' => [
'turn_endpoint_delay' => '<string>',
'minimum_turn_duration' => '<string>',
'minimum_interruption_duration' => '<string>',
'frame_activation_threshold' => 0.5
],
'built_in_config' => [
'transfer' => [
'enabled' => false,
'type' => 'coldTransfer',
'phone_number' => '',
'display_name' => 'transfer_to_human',
'extraHeaders' => [
],
'sipVerb' => '<string>',
'from' => '<string>',
'username' => '<string>',
'password' => '<string>',
'holdMusicUrl' => '<string>',
'inviteHeaders' => [
],
'referHeaders' => [
],
'transferSystemPromptTemplate' => '<string>',
'transferType' => '<string>',
'context' => '<string>'
],
'hang_up' => [
'enabled' => false,
'reason' => '<string>',
'strict' => true
],
'leave_voicemail' => [
'enabled' => false,
'message' => '<string>',
'strict' => true,
'result' => '<string>'
]
],
'success_criteria' => '<string>',
'extraction_schema' => [
],
'crm_webhook_url' => '<string>',
'crm_webhook_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.truedy.ai/api/public/v1/agents"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.truedy.ai/api/public/v1/agents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.truedy.ai/api/public/v1/agents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"ultravox-v0.7\",\n \"tools\": [],\n \"knowledge_bases\": [],\n \"knowledge\": {\n \"id\": \"<string>\"\n },\n \"template_id\": \"<string>\",\n \"clerk_org_id\": \"<string>\",\n \"call_template_name\": \"<string>\",\n \"greeting_settings\": {\n \"first_speaker\": \"agent\",\n \"text\": \"<string>\",\n \"prompt\": \"<string>\",\n \"delay\": \"<string>\",\n \"uninterruptible\": false,\n \"fallback_delay\": \"<string>\",\n \"fallback_text\": \"<string>\",\n \"fallback_prompt\": \"<string>\"\n },\n \"inactivity_messages\": [],\n \"temperature\": 0.3,\n \"language_hint\": \"en-US\",\n \"time_exceeded_message\": \"<string>\",\n \"recording_enabled\": false,\n \"join_timeout\": \"30s\",\n \"max_duration\": \"3600s\",\n \"initial_output_medium\": \"MESSAGE_MEDIUM_VOICE\",\n \"vad_settings\": {\n \"turn_endpoint_delay\": \"<string>\",\n \"minimum_turn_duration\": \"<string>\",\n \"minimum_interruption_duration\": \"<string>\",\n \"frame_activation_threshold\": 0.5\n },\n \"built_in_config\": {\n \"transfer\": {\n \"enabled\": false,\n \"type\": \"coldTransfer\",\n \"phone_number\": \"\",\n \"display_name\": \"transfer_to_human\",\n \"extraHeaders\": {},\n \"sipVerb\": \"<string>\",\n \"from\": \"<string>\",\n \"username\": \"<string>\",\n \"password\": \"<string>\",\n \"holdMusicUrl\": \"<string>\",\n \"inviteHeaders\": {},\n \"referHeaders\": {},\n \"transferSystemPromptTemplate\": \"<string>\",\n \"transferType\": \"<string>\",\n \"context\": \"<string>\"\n },\n \"hang_up\": {\n \"enabled\": false,\n \"reason\": \"<string>\",\n \"strict\": true\n },\n \"leave_voicemail\": {\n \"enabled\": false,\n \"message\": \"<string>\",\n \"strict\": true,\n \"result\": \"<string>\"\n }\n },\n \"success_criteria\": \"<string>\",\n \"extraction_schema\": {},\n \"crm_webhook_url\": \"<string>\",\n \"crm_webhook_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"name": "<string>",
"voice_id": "<string>",
"model": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"voice_name": "<string>",
"system_prompt": "<string>",
"tools": [
"<string>"
],
"knowledge_bases": [
"<string>"
],
"greeting_settings": {},
"inactivity_messages": [
{}
],
"temperature": 123,
"language_hint": "<string>",
"time_exceeded_message": "<string>",
"recording_enabled": true,
"join_timeout": "<string>",
"max_duration": "<string>",
"built_in_config": {},
"inbound_phone_numbers": [
{}
],
"outbound_phone_numbers": [
{}
]
},
"meta": {
"request_id": "<string>",
"ts": "2023-11-07T05:31:56Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}{
"error": {
"code": "validation_error",
"message": "Missing required field: name",
"details": {
"errors": []
}
},
"meta": {
"request_id": "req_01JEXAMPLE",
"ts": "2026-08-21T00:00:00Z"
}
}Authorizations
Your API key. Send in the Authorization header as: Bearer
Headers
Body
application/json
Agent create payload for Public API; clerk_org_id is set from API key context.
Required string length:
1 - 100UUID of the voice to use
Minimum string length:
1List of tool IDs
List of knowledge base IDs
Explicit legacy or RAG Knowledge Base reference
Show child attributes
Show child attributes
Template ID used to create this agent
Ignored; set from API key context
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Required range:
0 <= x <= 1BCP47 language code
Available options:
MESSAGE_MEDIUM_VOICE, MESSAGE_MEDIUM_TEXT, MESSAGE_MEDIUM_UNSPECIFIED Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I

