POST /v1/calls places a call and returns as soon as it is queued. It does
not wait for the call to be answered. Full schema and playground:
Create an outbound call.
string
required
The agent to place the call with. Find it in the dashboard under Agents:
open the agent and copy the ID shown under its name. Only active, outbound
agents can place calls; others are rejected with
agent_inactive or
agent_not_outbound.string
required
Number to dial. E.164 (
+1...) preferred.string
Caller ID. If sent, it must equal the agent’s configured number or the
request is rejected with
from_number_mismatch.object
Per-call values the agent’s script uses. Some are required per agent; a
missing one is a
422 listing the keys.object
Any JSON object. Stored untouched and echoed back on every webhook and on
GET /v1/calls/{call_id}.Retell-compatible aliases
A client written for Retell’s create-call endpoint works with only a URL change.override_agent_id maps to agent_id and
retell_llm_dynamic_variables maps to variables. override_agent_version
and any unknown fields are ignored.
Response
call_id is stable for the life of the call. It is the same id on every
webhook and on GET /v1/calls/{call_id}.
Errors
Errors come wrapped in adetail key. For validation and dispatch failures
detail is an object with error, error_code, and where applicable extra
fields. For auth and not-found errors it is a plain string.
Reading a call
GET /v1/calls/{call_id} returns the call object as of
now.
GET /v1/calls/{call_id}/recording returns { "url": "...", "expires_at": "..." },
a fresh link to the recording valid for about an hour. It is 404 until a
recording exists.
GET /v1/calls/{call_id}/transcript returns what was said, turn by turn. It
is 404 until the call has ended (the call.ended webhook), and is never
included on the call object or in webhook bodies. Only the agent’s and the
caller’s speech is included; tool calls and other internal events are not.
turns is the conversation in order; role is agent or user. started_at
and ended_at are present when timing was captured and absent otherwise.
text is the same conversation as plain text, one Agent: / Customer:
line per turn.