Skip to main content
POST
/
agents
Create Agent
curl --request POST \
  --url https://api.example.com/agents \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "default_user_lang": "<string>",
  "thinking_lang": "<string>",
  "description": "<string>",
  "default_voice_id": "<string>",
  "interruptions_enabled": true,
  "escalation_policy": {},
  "model_provider": "openai",
  "model_name": "gpt-4o-mini",
  "temperature": 0.7,
  "max_tokens": 150,
  "system_prompt": "<string>",
  "persona": "<string>",
  "first_message_mode": "assistant-speaks-first",
  "first_message_script": "<string>",
  "voice_provider": "elevenlabs",
  "voice_id": "<string>",
  "background_sound_url": "<string>",
  "input_min_characters": 30,
  "transcriber_provider": "deepgram",
  "transcriber_model": "nova-3",
  "background_denoising": true,
  "confidence_threshold": 0.4,
  "multilingual_enabled": false,
  "supported_languages": [
    "<string>"
  ],
  "language_detection_provider": "auto",
  "respond_in_user_language": true,
  "wait_seconds": 0.4,
  "smart_endpointing": true,
  "interruption_words": 3,
  "punctuation_boundary_ms": 100,
  "no_punctuation_boundary_ms": 1500,
  "silence_timeout_seconds": 30,
  "max_duration_seconds": 600,
  "idle_messages_enabled": true,
  "max_idle_messages": 3,
  "idle_timeout_seconds": 7.5,
  "analysis_prompt": "<string>",
  "analysis_timeout_sec": 10,
  "min_messages_for_analysis": 2,
  "voicemail_detection_enabled": true,
  "voicemail_message": "<string>",
  "end_call_message": "<string>",
  "keypad_input_enabled": false,
  "keypad_timeout_seconds": 2,
  "keypad_delimiters": "#",
  "sip_enabled": false,
  "recording_enabled": true,
  "analytics_enabled": true,
  "knowledge": [
    {}
  ],
  "tools": [
    {}
  ],
  "channels": {}
}
'
import requests

url = "https://api.example.com/agents"

payload = {
    "name": "<string>",
    "default_user_lang": "<string>",
    "thinking_lang": "<string>",
    "description": "<string>",
    "default_voice_id": "<string>",
    "interruptions_enabled": True,
    "escalation_policy": {},
    "model_provider": "openai",
    "model_name": "gpt-4o-mini",
    "temperature": 0.7,
    "max_tokens": 150,
    "system_prompt": "<string>",
    "persona": "<string>",
    "first_message_mode": "assistant-speaks-first",
    "first_message_script": "<string>",
    "voice_provider": "elevenlabs",
    "voice_id": "<string>",
    "background_sound_url": "<string>",
    "input_min_characters": 30,
    "transcriber_provider": "deepgram",
    "transcriber_model": "nova-3",
    "background_denoising": True,
    "confidence_threshold": 0.4,
    "multilingual_enabled": False,
    "supported_languages": ["<string>"],
    "language_detection_provider": "auto",
    "respond_in_user_language": True,
    "wait_seconds": 0.4,
    "smart_endpointing": True,
    "interruption_words": 3,
    "punctuation_boundary_ms": 100,
    "no_punctuation_boundary_ms": 1500,
    "silence_timeout_seconds": 30,
    "max_duration_seconds": 600,
    "idle_messages_enabled": True,
    "max_idle_messages": 3,
    "idle_timeout_seconds": 7.5,
    "analysis_prompt": "<string>",
    "analysis_timeout_sec": 10,
    "min_messages_for_analysis": 2,
    "voicemail_detection_enabled": True,
    "voicemail_message": "<string>",
    "end_call_message": "<string>",
    "keypad_input_enabled": False,
    "keypad_timeout_seconds": 2,
    "keypad_delimiters": "#",
    "sip_enabled": False,
    "recording_enabled": True,
    "analytics_enabled": True,
    "knowledge": [{}],
    "tools": [{}],
    "channels": {}
}
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>',
    default_user_lang: '<string>',
    thinking_lang: '<string>',
    description: '<string>',
    default_voice_id: '<string>',
    interruptions_enabled: true,
    escalation_policy: {},
    model_provider: 'openai',
    model_name: 'gpt-4o-mini',
    temperature: 0.7,
    max_tokens: 150,
    system_prompt: '<string>',
    persona: '<string>',
    first_message_mode: 'assistant-speaks-first',
    first_message_script: '<string>',
    voice_provider: 'elevenlabs',
    voice_id: '<string>',
    background_sound_url: '<string>',
    input_min_characters: 30,
    transcriber_provider: 'deepgram',
    transcriber_model: 'nova-3',
    background_denoising: true,
    confidence_threshold: 0.4,
    multilingual_enabled: false,
    supported_languages: ['<string>'],
    language_detection_provider: 'auto',
    respond_in_user_language: true,
    wait_seconds: 0.4,
    smart_endpointing: true,
    interruption_words: 3,
    punctuation_boundary_ms: 100,
    no_punctuation_boundary_ms: 1500,
    silence_timeout_seconds: 30,
    max_duration_seconds: 600,
    idle_messages_enabled: true,
    max_idle_messages: 3,
    idle_timeout_seconds: 7.5,
    analysis_prompt: '<string>',
    analysis_timeout_sec: 10,
    min_messages_for_analysis: 2,
    voicemail_detection_enabled: true,
    voicemail_message: '<string>',
    end_call_message: '<string>',
    keypad_input_enabled: false,
    keypad_timeout_seconds: 2,
    keypad_delimiters: '#',
    sip_enabled: false,
    recording_enabled: true,
    analytics_enabled: true,
    knowledge: [{}],
    tools: [{}],
    channels: {}
  })
};

fetch('https://api.example.com/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.example.com/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>',
    'default_user_lang' => '<string>',
    'thinking_lang' => '<string>',
    'description' => '<string>',
    'default_voice_id' => '<string>',
    'interruptions_enabled' => true,
    'escalation_policy' => [
        
    ],
    'model_provider' => 'openai',
    'model_name' => 'gpt-4o-mini',
    'temperature' => 0.7,
    'max_tokens' => 150,
    'system_prompt' => '<string>',
    'persona' => '<string>',
    'first_message_mode' => 'assistant-speaks-first',
    'first_message_script' => '<string>',
    'voice_provider' => 'elevenlabs',
    'voice_id' => '<string>',
    'background_sound_url' => '<string>',
    'input_min_characters' => 30,
    'transcriber_provider' => 'deepgram',
    'transcriber_model' => 'nova-3',
    'background_denoising' => true,
    'confidence_threshold' => 0.4,
    'multilingual_enabled' => false,
    'supported_languages' => [
        '<string>'
    ],
    'language_detection_provider' => 'auto',
    'respond_in_user_language' => true,
    'wait_seconds' => 0.4,
    'smart_endpointing' => true,
    'interruption_words' => 3,
    'punctuation_boundary_ms' => 100,
    'no_punctuation_boundary_ms' => 1500,
    'silence_timeout_seconds' => 30,
    'max_duration_seconds' => 600,
    'idle_messages_enabled' => true,
    'max_idle_messages' => 3,
    'idle_timeout_seconds' => 7.5,
    'analysis_prompt' => '<string>',
    'analysis_timeout_sec' => 10,
    'min_messages_for_analysis' => 2,
    'voicemail_detection_enabled' => true,
    'voicemail_message' => '<string>',
    'end_call_message' => '<string>',
    'keypad_input_enabled' => false,
    'keypad_timeout_seconds' => 2,
    'keypad_delimiters' => '#',
    'sip_enabled' => false,
    'recording_enabled' => true,
    'analytics_enabled' => true,
    'knowledge' => [
        [
                
        ]
    ],
    'tools' => [
        [
                
        ]
    ],
    'channels' => [
        
    ]
  ]),
  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.example.com/agents"

	payload := strings.NewReader("{\n  \"name\": \"<string>\",\n  \"default_user_lang\": \"<string>\",\n  \"thinking_lang\": \"<string>\",\n  \"description\": \"<string>\",\n  \"default_voice_id\": \"<string>\",\n  \"interruptions_enabled\": true,\n  \"escalation_policy\": {},\n  \"model_provider\": \"openai\",\n  \"model_name\": \"gpt-4o-mini\",\n  \"temperature\": 0.7,\n  \"max_tokens\": 150,\n  \"system_prompt\": \"<string>\",\n  \"persona\": \"<string>\",\n  \"first_message_mode\": \"assistant-speaks-first\",\n  \"first_message_script\": \"<string>\",\n  \"voice_provider\": \"elevenlabs\",\n  \"voice_id\": \"<string>\",\n  \"background_sound_url\": \"<string>\",\n  \"input_min_characters\": 30,\n  \"transcriber_provider\": \"deepgram\",\n  \"transcriber_model\": \"nova-3\",\n  \"background_denoising\": true,\n  \"confidence_threshold\": 0.4,\n  \"multilingual_enabled\": false,\n  \"supported_languages\": [\n    \"<string>\"\n  ],\n  \"language_detection_provider\": \"auto\",\n  \"respond_in_user_language\": true,\n  \"wait_seconds\": 0.4,\n  \"smart_endpointing\": true,\n  \"interruption_words\": 3,\n  \"punctuation_boundary_ms\": 100,\n  \"no_punctuation_boundary_ms\": 1500,\n  \"silence_timeout_seconds\": 30,\n  \"max_duration_seconds\": 600,\n  \"idle_messages_enabled\": true,\n  \"max_idle_messages\": 3,\n  \"idle_timeout_seconds\": 7.5,\n  \"analysis_prompt\": \"<string>\",\n  \"analysis_timeout_sec\": 10,\n  \"min_messages_for_analysis\": 2,\n  \"voicemail_detection_enabled\": true,\n  \"voicemail_message\": \"<string>\",\n  \"end_call_message\": \"<string>\",\n  \"keypad_input_enabled\": false,\n  \"keypad_timeout_seconds\": 2,\n  \"keypad_delimiters\": \"#\",\n  \"sip_enabled\": false,\n  \"recording_enabled\": true,\n  \"analytics_enabled\": true,\n  \"knowledge\": [\n    {}\n  ],\n  \"tools\": [\n    {}\n  ],\n  \"channels\": {}\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.example.com/agents")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"<string>\",\n  \"default_user_lang\": \"<string>\",\n  \"thinking_lang\": \"<string>\",\n  \"description\": \"<string>\",\n  \"default_voice_id\": \"<string>\",\n  \"interruptions_enabled\": true,\n  \"escalation_policy\": {},\n  \"model_provider\": \"openai\",\n  \"model_name\": \"gpt-4o-mini\",\n  \"temperature\": 0.7,\n  \"max_tokens\": 150,\n  \"system_prompt\": \"<string>\",\n  \"persona\": \"<string>\",\n  \"first_message_mode\": \"assistant-speaks-first\",\n  \"first_message_script\": \"<string>\",\n  \"voice_provider\": \"elevenlabs\",\n  \"voice_id\": \"<string>\",\n  \"background_sound_url\": \"<string>\",\n  \"input_min_characters\": 30,\n  \"transcriber_provider\": \"deepgram\",\n  \"transcriber_model\": \"nova-3\",\n  \"background_denoising\": true,\n  \"confidence_threshold\": 0.4,\n  \"multilingual_enabled\": false,\n  \"supported_languages\": [\n    \"<string>\"\n  ],\n  \"language_detection_provider\": \"auto\",\n  \"respond_in_user_language\": true,\n  \"wait_seconds\": 0.4,\n  \"smart_endpointing\": true,\n  \"interruption_words\": 3,\n  \"punctuation_boundary_ms\": 100,\n  \"no_punctuation_boundary_ms\": 1500,\n  \"silence_timeout_seconds\": 30,\n  \"max_duration_seconds\": 600,\n  \"idle_messages_enabled\": true,\n  \"max_idle_messages\": 3,\n  \"idle_timeout_seconds\": 7.5,\n  \"analysis_prompt\": \"<string>\",\n  \"analysis_timeout_sec\": 10,\n  \"min_messages_for_analysis\": 2,\n  \"voicemail_detection_enabled\": true,\n  \"voicemail_message\": \"<string>\",\n  \"end_call_message\": \"<string>\",\n  \"keypad_input_enabled\": false,\n  \"keypad_timeout_seconds\": 2,\n  \"keypad_delimiters\": \"#\",\n  \"sip_enabled\": false,\n  \"recording_enabled\": true,\n  \"analytics_enabled\": true,\n  \"knowledge\": [\n    {}\n  ],\n  \"tools\": [\n    {}\n  ],\n  \"channels\": {}\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.example.com/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  \"default_user_lang\": \"<string>\",\n  \"thinking_lang\": \"<string>\",\n  \"description\": \"<string>\",\n  \"default_voice_id\": \"<string>\",\n  \"interruptions_enabled\": true,\n  \"escalation_policy\": {},\n  \"model_provider\": \"openai\",\n  \"model_name\": \"gpt-4o-mini\",\n  \"temperature\": 0.7,\n  \"max_tokens\": 150,\n  \"system_prompt\": \"<string>\",\n  \"persona\": \"<string>\",\n  \"first_message_mode\": \"assistant-speaks-first\",\n  \"first_message_script\": \"<string>\",\n  \"voice_provider\": \"elevenlabs\",\n  \"voice_id\": \"<string>\",\n  \"background_sound_url\": \"<string>\",\n  \"input_min_characters\": 30,\n  \"transcriber_provider\": \"deepgram\",\n  \"transcriber_model\": \"nova-3\",\n  \"background_denoising\": true,\n  \"confidence_threshold\": 0.4,\n  \"multilingual_enabled\": false,\n  \"supported_languages\": [\n    \"<string>\"\n  ],\n  \"language_detection_provider\": \"auto\",\n  \"respond_in_user_language\": true,\n  \"wait_seconds\": 0.4,\n  \"smart_endpointing\": true,\n  \"interruption_words\": 3,\n  \"punctuation_boundary_ms\": 100,\n  \"no_punctuation_boundary_ms\": 1500,\n  \"silence_timeout_seconds\": 30,\n  \"max_duration_seconds\": 600,\n  \"idle_messages_enabled\": true,\n  \"max_idle_messages\": 3,\n  \"idle_timeout_seconds\": 7.5,\n  \"analysis_prompt\": \"<string>\",\n  \"analysis_timeout_sec\": 10,\n  \"min_messages_for_analysis\": 2,\n  \"voicemail_detection_enabled\": true,\n  \"voicemail_message\": \"<string>\",\n  \"end_call_message\": \"<string>\",\n  \"keypad_input_enabled\": false,\n  \"keypad_timeout_seconds\": 2,\n  \"keypad_delimiters\": \"#\",\n  \"sip_enabled\": false,\n  \"recording_enabled\": true,\n  \"analytics_enabled\": true,\n  \"knowledge\": [\n    {}\n  ],\n  \"tools\": [\n    {}\n  ],\n  \"channels\": {}\n}"

response = http.request(request)
puts response.read_body
{
  "agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "version": 123,
  "livekit": {},
  "embed": {},
  "sip": {},
  "capabilities": {},
  "tools": [],
  "workflow": {},
  "client_messages": [
    "conversation-update",
    "tool-calls",
    "transcript.partial",
    "transcript.final"
  ]
}
{
  "detail": [
    {
      "loc": [
        "<string>"
      ],
      "msg": "<string>",
      "type": "<string>",
      "input": "<unknown>",
      "ctx": {}
    }
  ]
}

Authorizations

Authorization
string
header
required

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

Body

application/json

Agent creation model.

name
string
required
Required string length: 1 - 255
default_user_lang
string
required
Required string length: 2 - 10
thinking_lang
string
required
Required string length: 2 - 10
description
string | null
default_voice_id
string | null
interruptions_enabled
boolean
default:true
escalation_policy
Escalation Policy · object | null
model_provider
string
default:openai
Pattern: ^(openai|azure_openai|anthropic|google|groq|cerebras|deepseek|xai|perplexity|together|amazon_bedrock|anyscale|openrouter|deepinfra)$
model_name
string
default:gpt-4o-mini
Required string length: 1 - 100
temperature
number
default:0.7
Required range: 0 <= x <= 1
max_tokens
integer
default:150
Required range: 50 <= x <= 1000
system_prompt
string | null

Full system prompt defining the agent's role, behavior, and instructions. Falls back to description if not set.

Maximum string length: 8000
persona
string | null

Short character/personality descriptor (e.g. 'Friendly British accountant'). Renders as 'Personality: ...' in the system prompt.

Maximum string length: 2000
first_message_mode
string
default:assistant-speaks-first
Pattern: ^(assistant-speaks-first|wait-for-user|assistant-speaks-first-with-model-generated-message)$
first_message_script
string | null
Maximum string length: 500
voice_provider
string
default:elevenlabs
Pattern: ^(elevenlabs|cartesia|openai|deepgram|google|azure|rime|lmnt)$
voice_id
string | null
background_sound_url
string | null
Maximum string length: 500
input_min_characters
integer
default:30
Required range: 10 <= x <= 100
transcriber_provider
string
default:deepgram
Pattern: ^(deepgram|openai|assemblyai|google|azure)$
transcriber_model
string
default:nova-3
Required string length: 1 - 100
background_denoising
boolean
default:true
confidence_threshold
number
default:0.4
Required range: 0 <= x <= 1
multilingual_enabled
boolean
default:false

Enable automatic language detection for multilingual conversations

supported_languages
string[] | null

List of language codes the agent supports (e.g., ['en', 'es', 'fr']). If multilingual_enabled=true and this is empty, all languages are supported.

language_detection_provider
string
default:auto

Provider for language detection: 'auto' uses STT provider's built-in detection

Pattern: ^(auto|deepgram|whisper)$
respond_in_user_language
boolean
default:true

When true, agent responds in the detected user language. When false, always responds in default_user_lang.

wait_seconds
number
default:0.4
Required range: 0.1 <= x <= 1
smart_endpointing
boolean
default:true
interruption_words
integer
default:3
Required range: 0 <= x <= 10
punctuation_boundary_ms
integer
default:100
Required range: 50 <= x <= 500
no_punctuation_boundary_ms
integer
default:1500
Required range: 800 <= x <= 3000
silence_timeout_seconds
integer
default:30
Required range: 10 <= x <= 120
max_duration_seconds
integer
default:600
Required range: 180 <= x <= 1800
idle_messages_enabled
boolean
default:true
max_idle_messages
integer
default:3
Required range: 1 <= x <= 10
idle_timeout_seconds
number
default:7.5
Required range: 5 <= x <= 60
analysis_prompt
string | null
Maximum string length: 2000
analysis_timeout_sec
integer
default:10
Required range: 1 <= x <= 60
min_messages_for_analysis
integer
default:2
Required range: 0 <= x <= 10
voicemail_detection_enabled
boolean
default:true
voicemail_message
string | null
Maximum string length: 500
end_call_message
string | null
Maximum string length: 500
keypad_input_enabled
boolean
default:false
keypad_timeout_seconds
integer
default:2
Required range: 1 <= x <= 6
keypad_delimiters
string
default:#
Pattern: ^[#*]+$
sip_enabled
boolean
default:false

Enable SIP/phone calling for this agent

recording_enabled
boolean
default:true

Enable call recording for this agent

analytics_enabled
boolean
default:true

Enable analytics tracking for this agent

knowledge
Knowledge · object[] | null
tools
Tools · object[] | null
channels
Channels · object | null

Response

Successful Response

Agent creation response model.

agent_id
string<uuid>
required
version
integer
required
livekit
Livekit · object
required
embed
Embed · object
required
sip
Sip · object | null
capabilities
Capabilities · object | null
tools
Tools · object[]
workflow
Workflow · object | null
client_messages
string[]