Agents
Manage AI voice agents. Agents define how your AI sounds, behaves, and responds on calls. They are the core entity in Truedy — assigned phone numbers, equipped with tools and knowledge bases, and deployed on outbound or inbound calls. For UUID / phone / datetime formats used below, see Data formats.List Agents
List all agents for your organization.Parameters
Query parameters:| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: active, draft, creating, failed |
name | string | Filter by name (substring match) |
limit | integer | 1–100. Default 50 |
offset | integer | Pagination offset. Default 0 |
inbound_phone_numbers and outbound_phone_numbers (arrays of { id, phone_number }) matching the dashboard view.
Response
cURL
Get Agent
Get details for a specific agent including assigned phone numbers.Create Agent
Create a new voice agent. The agent is automatically synced to Ultravox on creation. Onlyname, voice_id, and system_prompt are required; all other fields are optional.
Request Body
Core fields:| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Agent display name (1–100 characters) |
voice_id | UUID | Yes | — | Voice to use for this agent |
system_prompt | string | Yes | — | Instructions that define the agent’s behavior and persona |
description | string | No | — | Internal description (not used during calls) |
model | string | No | ultravox-v0.7 | AI model. Use ultravox-v0.7 for best performance. |
tools | UUID[] | No | [] | List of tool IDs to enable for this agent |
knowledge_bases | UUID[] | No | [] | List of knowledge base IDs (maximum 1) |
temperature | float | No | 0.3 | Response creativity, 0–1. Lower = more consistent. |
recording_enabled | boolean | No | false | Enable call recording by default |
language_hint | string | No | — | BCP-47 language code hint, e.g. en-US, es-MX |
| Field | Type | Default | Description |
|---|---|---|---|
join_timeout | string | — | Time to wait for callee to answer, e.g. "30s" |
max_duration | string | — | Maximum call length, e.g. "3600s" (1 hour) |
time_exceeded_message | string | — | Text the agent speaks when max_duration is reached |
| Field | Type | Description |
|---|---|---|
greeting_settings | object | Configure the first speaker and greeting behavior. Fields: first_speaker (FIRST_SPEAKER_AGENT or FIRST_SPEAKER_USER), text (greeting text), delay (seconds), uninterruptible (boolean) |
inactivity_messages | object[] | Messages spoken after user silence. Each item: { duration: "10s", message: "Are you still there?", endBehavior: "END_BEHAVIOR_HANG_UP" } |
| Field | Type | Description |
|---|---|---|
vad_settings | object | Voice activity detection tuning. Fields: turn_endpoint_delay, minimum_turn_duration, minimum_interruption_duration, frame_activation_threshold |
| Field | Type | Description |
|---|---|---|
built_in_config | object | Enable built-in tools like call transfer, hang up, and voicemail detection. Structure: { transfer: { cold: bool, warm: bool }, hang_up: bool, leave_voicemail: bool } |
| Field | Type | Description |
|---|---|---|
success_criteria | string | Prompt describing what makes a call successful. Used for outcome analysis. |
extraction_schema | object | JSON Schema for structured data extraction from the call transcript (e.g. extract appointment date, customer name). |
crm_webhook_url | string | URL to receive a POST with call results and extracted data after each call ends. |
crm_webhook_secret | string | HMAC secret used to sign crm_webhook_url requests. |
Example Request
data (agent object: id, name, status, voice_id, etc.) and meta. Send X-Idempotency-Key for safe retries.
Agent status after creation: The agent starts as draft and becomes active once synced to Ultravox. Sync happens automatically on creation. If Ultravox sync fails, the agent status remains draft and can be retried.
Update Agent (Full)
Replace an existing agent with the provided fields. All fields from Create Agent are accepted. The agent is re-synced to Ultravox immediately after update. Returns 422 ifvoice_id is invalid or missing.
Partial Update Agent
Update only the fields you send. All other fields remain unchanged.Patchable Fields
Any field from the Create Agent table can be partially updated. Common examples:| Field | Type | Description |
|---|---|---|
name | string | Rename the agent |
system_prompt | string | Update behavior instructions |
voice_id | UUID | Change the voice |
model | string | Change the AI model |
tools | UUID[] | Replace tool list |
knowledge_bases | UUID[] | Replace knowledge base list |
temperature | float | Adjust response creativity |
recording_enabled | boolean | Enable or disable recording |
language_hint | string | Change language hint |
join_timeout | string | Change answer timeout |
max_duration | string | Change max call length |
time_exceeded_message | string | Change timeout message |
greeting_settings | object | Update greeting config |
inactivity_messages | object[] | Update silence handling |
vad_settings | object | Tune voice activity detection |
built_in_config | object | Enable/disable built-in tools |
success_criteria | string | Update success evaluation prompt |
extraction_schema | object | Update post-call extraction schema |
crm_webhook_url | string | Change CRM webhook destination |
crm_webhook_secret | string | Rotate CRM webhook secret |
Delete Agent
Deletes the agent from Truedy and removes it from Ultravox. Phone numbers assigned to this agent will be unassigned.Test Call
Initiate a test call with an agent using WebRTC (browser-based, no phone number needed). Returns ajoin_url to connect to the call. Intended for testing agent behavior during development.

