Create an agent
Authentication
Query parameters
Send true to queue the creation and receive a job id (202) instead of the agent. Only the
literal string true is recognised; any other value (1, yes) is ignored and the creation
runs synchronously.
Request
Display name of the agent, also used in the generated greeting. 1-100 characters.
Voice id (see the voices endpoints). A custom cloned voice requires the Enterprise
plan (403 BILLING_ERROR otherwise).
Main language of the agent: es (Spanish), es-CO (Colombia), es-MX (Mexico), es-AR
(Argentina), es-neutral (neutral Latin American Spanish), en, en-US, pt, pt-BR. Common
labels are also accepted case-insensitively and normalised (for example Español (LATAM) →
es-neutral, Portuguese → pt, México → es-MX); anything else is rejected with 400.
Channels the agent may answer on. Omitted = every channel. At least one. The list is stored as sent and later edits replace it — it is never a delta.
Objective template (per-objective playbook layered under the workspace prompt). Must be a system
template or one owned by the workspace; otherwise 400.
The agent’s objective. It selects the base agent, default tuning and default analysis, and wins
over the template’s category. Omit to inherit the template’s category. Values: sales,
support, scheduling, surveys, collections, retention, notifications, interview
(candidate screening), language_assessment (scored spoken evaluation), personal (personal
assistant), general.
The workspace’s own prompt layer, placed on top of the platform and objective layers. Trimmed. Must be empty (the agent introduces itself generically and never invents a product) or 10-8000 characters. Screened for fraud. Catalogues and price lists belong in the knowledge base.
Opening line. Trimmed. When empty a greeting is generated from the agent name and the workspace’s
business name (for example Hola, le habla Sofía de Cafés del Huila. ¿Cómo está?). Screened for fraud.
Key/value strings stored with the agent (at most 50 entries; keys up to 100 characters, values up to 500). Stored and versioned; not currently applied to conversations.
Objection → suggested answer (at most 50 entries; keys up to 100 characters, values up to 2000).
Each value is screened for fraud. Stored and versioned; not currently applied to conversations —
put objection guidance in systemPrompt.
Escalation rules. Stored and versioned; not currently applied to conversations — escalation to a human is handled by the platform’s own escalation tool.
Hard cap on a voice call, in seconds (30-3600). Omitted = the objective’s cap. The objective’s cap also acts as a ceiling when the provider configuration is derived.
E.164 number the voice agent may transfer live calls to. The destination must be allowed by the
workspace dial policy (403 COMPLIANCE_BLOCKED otherwise).
Whether the agent opens by saying it is an AI. true/false is this agent’s decision and
overrides the country policy; omitted or null lets the country policy decide.
In-call hand-offs to other agents of the workspace (up to 10). Targets that do not exist or are not provisioned yet are skipped silently when the provider configuration is built.
Department used by inbound skill-based routing. Trimmed; blank is treated as absent.
Skills matched by inbound skill-based routing (up to 50, each trimmed, 1-100 characters).
Guardrails — topics the agent refuses to discuss. Pushed to the voice provider’s guardrails.
PII redaction and data retention. On create the defaults below are stored even when the block is omitted; on update nothing is defaulted.
Post-call analysis run by the voice provider on the transcript. successEvaluation criteria decide
whether a conversation succeeded (they drive outcomes and conversion metrics); dataCollection
fields are extracted from the transcript. Criterion ids starting with qa_ are reserved for
platform quality evaluation and a NEW one is rejected with 400 (ids already stored keep saving).
Lets the voice model use expressive delivery (audio tags such as laughter or emphasis).
How numbers, dates and symbols are turned into speakable text: elevenlabs (the provider
normalises before speech) or system_prompt (the model is instructed to write them out).
Voice only — seconds of silence before the agent takes the turn (1-10). Omitted = the objective’s value.
How eagerly the voice agent takes the turn: patient, normal, eager. The legacy spellings
low, medium and high are still accepted. Omitted = the objective’s value.
Speech rate, 0.5-2 (1 = the voice’s natural speed). Omitted = the objective’s value.
Voice stability, 0-1. Lower is more expressive, higher more consistent. Omitted = the objective’s value.
How closely synthesis adheres to the original voice, 0-1.
Response
An agent as returned by GET /api/agents, GET /api/agents/{agentId} and POST /api/agents.
Stored columns are snake_case (see AgentRowBase); the fields the API adds on top of them
(channels, objective, analysis, safety, privacy, mcpEnabled, toolkitAccessEnforced,
total_calls, conversion_rate, calls_today, avg_sentiment) are listed below, and the raw
JSON columns they come from (supported_channels, analysis_config, safety_config,
privacy_config) are not returned. analysis, safety and privacy are omitted when nothing is
stored. GET /api/agents returns a projection (see that operation). The provider’s internal voice
agent id is never returned.
A newly created agent is provisioned with the voice provider in the background for about 30-45
seconds; operations that need it answer 409 AGENT_PROVISIONING meanwhile.

