Skip to main content
POST
/
api
/
v1
/
agents
# Request 1: Create a basic inbound support agent
curl -X POST "https://app.talkover.ai/api/v1/agents" \
  -H "Authorization: Bearer talq_your_environment_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Customer Support Agent",
    "description": "Handles customer inquiries and support requests",
    "name": "SupportBot",
    "language": "en-US",
    "initial_message": "Hello, how can I help you today?",
    "interrupt_sensitivity": "medium",
    "endpointing_sensitivity": "auto",
    "ivr_navigation_mode": "off",
    "conversation_speed": 1.0,
    "initial_message_delay": 0,
    "ask_if_human_present_on_idle": false,
    "idle_time_seconds": 5,
    "llm_temperature": 0.7,
    "enable_recording": true,
    "direction": "inbound",
    "who_speaks_first": "agent"
  }'
{
  "success": true,
  "message": "Agent created successfully",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "SupportBot",
    "label": "Customer Support Agent",
    "description": "Handles customer inquiries and support requests",
    "language": "en-US",
    "voice": null,
    "initial_message": "Hello, how can I help you today?",
    "interrupt_sensitivity": "medium",
    "conversation_speed": 1.0,
    "initial_message_delay": 0,
    "ask_if_human_present_on_idle": false,
    "direction": "inbound",
    "who_speaks_first": "agent",
    "current_status": "draft",
    "is_sandbox": false,
    "is_ready_to_publish": false,
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z",
    "trainings": [],
    "actions": [],
    "phone_numbers": []
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.talkover.ai/llms.txt

Use this file to discover all available pages before exploring further.

Create Agent

Create a new voice agent with specified configuration, voice settings, and behavior parameters. The agent will be created in draft status and can be published later.

Endpoint

POST /api/v1/agents

Path Parameters

None

Request Headers

Authorization
string
required
Bearer token for authentication. Format: Bearer talq_your_environment_token_here
Content-Type
string
required
Must be set to application/json

Request Body

label
string
required
Agent label (max 255 characters)
description
string
Agent description
name
string
required
Agent name (max 255 characters)
language
string
required
Agent language code. Supported values: pt-BR, pt-PT, en-US, en-CA, es-ES, fr-FR, de-DE, it-IT, nl-NL, ja-JP, ko-KR, zh-TW.
initial_message
string
Initial message the agent will say. Optional.
interrupt_sensitivity
string
required
How easily the agent allows the caller to interrupt. Options: low, medium, high.
endpointing_sensitivity
string
required
How aggressively the agent detects end-of-utterance. Max 255 characters.
ivr_navigation_mode
string
required
IVR navigation behavior for outbound calls that hit interactive menus. Max 255 characters.
conversation_speed
number
required
Conversation playback speed multiplier. Range: 0.13.0.
initial_message_delay
integer
required
Delay in seconds before the agent says the initial message. Range: 060.
ask_if_human_present_on_idle
boolean
required
When true, the agent asks “Are you still there?” after the idle timeout instead of ending the call.
idle_time_seconds
integer
required
Seconds of caller silence before triggering the idle behavior. Range: 160.
max_idle_check_count
integer
Maximum number of idle re-prompts before ending the call. Range: 110. Optional.
max_call_duration_seconds
integer
Hard limit on call duration in seconds. Range: 13600. Optional.
say_goodbye_on_max_duration
boolean
When true, the agent says a closing message before terminating a call that hits max_call_duration_seconds. Optional.
user_inactivity_timeout_seconds
integer
Seconds of total inactivity before the agent gives up entirely. Range: 5120. Optional.
initial_idle_time_seconds
integer
Idle threshold to use before the agent has said its initial message (handles cases where the line opens but the caller doesn’t speak). Range: 160. Optional.
initial_max_idle_check_count
integer
Maximum number of initial idle prompts before terminating. Range: 010. Optional.
llm_temperature
number
required
Sampling temperature for the language model. Range: 02. Lower values make responses more deterministic.
enable_recording
boolean
required
Whether to record calls handled by this agent.
direction
string
required
Call direction. Options: inbound, outbound.
who_speaks_first
string
required
Who speaks first. Options: agent, user.
phone_number_ids
array
Array of phone number UUIDs to assign to this agent at creation. Use List Phone Numbers to retrieve available IDs. Can also be set later via Update Agent Calling.

Example Requests

# Request 1: Create a basic inbound support agent
curl -X POST "https://app.talkover.ai/api/v1/agents" \
  -H "Authorization: Bearer talq_your_environment_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Customer Support Agent",
    "description": "Handles customer inquiries and support requests",
    "name": "SupportBot",
    "language": "en-US",
    "initial_message": "Hello, how can I help you today?",
    "interrupt_sensitivity": "medium",
    "endpointing_sensitivity": "auto",
    "ivr_navigation_mode": "off",
    "conversation_speed": 1.0,
    "initial_message_delay": 0,
    "ask_if_human_present_on_idle": false,
    "idle_time_seconds": 5,
    "llm_temperature": 0.7,
    "enable_recording": true,
    "direction": "inbound",
    "who_speaks_first": "agent"
  }'
# Request 2: Create an outbound sales agent
curl -X POST "https://app.talkover.ai/api/v1/agents" \
  -H "Authorization: Bearer talq_your_environment_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Sales Agent",
    "description": "Outbound sales calls for product demos",
    "name": "SalesBot",
    "language": "en-US",
    "initial_message": "Hi, this is SalesBot calling about our new product. Do you have a moment?",
    "interrupt_sensitivity": "high",
    "endpointing_sensitivity": "auto",
    "ivr_navigation_mode": "off",
    "conversation_speed": 1.2,
    "initial_message_delay": 2,
    "ask_if_human_present_on_idle": true,
    "idle_time_seconds": 10,
    "llm_temperature": 0.8,
    "enable_recording": true,
    "direction": "outbound",
    "who_speaks_first": "agent"
  }'

Response

Success Response (201 Created)

{
  "success": true,
  "message": "Agent created successfully",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "SupportBot",
    "label": "Customer Support Agent",
    "description": "Handles customer inquiries and support requests",
    "language": "en-US",
    "voice": null,
    "initial_message": "Hello, how can I help you today?",
    "interrupt_sensitivity": "medium",
    "conversation_speed": 1.0,
    "initial_message_delay": 0,
    "ask_if_human_present_on_idle": false,
    "direction": "inbound",
    "who_speaks_first": "agent",
    "current_status": "draft",
    "is_sandbox": false,
    "is_ready_to_publish": false,
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z",
    "trainings": [],
    "actions": [],
    "phone_numbers": []
  }
}

Error Responses

Validation Error (422)

{
  "success": false,
  "message": "The given data was invalid.",
  "errors": {
    "name": [
      "The name field is required."
    ],
    "label": [
      "The label field is required."
    ],
    "language": [
      "The selected language is invalid."
    ],
    "interrupt_sensitivity": [
      "The selected interrupt sensitivity is invalid."
    ],
    "direction": [
      "The selected direction is invalid."
    ],
    "conversation_speed": [
      "The conversation speed must be between 0.1 and 3.0."
    ],
    "initial_message_delay": [
      "The initial message delay must be between 0 and 60."
    ],
    "llm_temperature": [
      "The llm temperature must be between 0 and 2."
    ],
    "idle_time_seconds": [
      "The idle time seconds must be between 1 and 300."
    ]
  }
}

Unauthorized Error (401)

{
  "success": false,
  "message": "Unauthenticated."
}

Too Many Requests (429)

{
  "success": false,
  "message": "Too many requests. Please try again later."
}