Call Service
The Call Service allows you to manage outbound calls and retrieve call information. You can initiate calls, get call details, and manage call recordings.Send Call
Initiate an outbound call to a phone number.Request Body
variables constraints
- Max 50 keys.
- Keys must match
^[a-zA-Z][a-zA-Z0-9_]{0,62}$(start with a letter, then letters/digits/underscores). Keys are case-insensitive, soFooandfoocollide and are rejected. - Values must be a string, number, or boolean — no nested objects or arrays. Each value is capped at 1000 characters.
- The whole
variablesobject must serialize to under 4KB. - Invalid payloads return
400with a message describing the violation.
Per-call agent overrides
agent_overrides lets one call behave differently from the agent that places it. The
call still runs as the agent you named in agent_id, using that agent’s phone number,
voice, actions and knowledge. Only the fields you send are changed, only for this call,
and nothing is written back to the agent.
Anything you leave out keeps the agent’s own setting. That is what “default” means here:
your agent, not a generic fallback.
Any other field returns
400. That is deliberate: a few agent settings look like they
would work here but never reach the call, and silently ignoring them would leave you with
a call that ignored your instructions and an API response that said it worked. The error
tells you which case you hit, so you know whether to change the field or change the agent:
- Use a different field.
promptis not accepted, useinstruction.welcome_msgis not accepted, usegreeting.post_call_notesis not accepted, usesummary_instruction. - Change it on the agent instead. Recording, consent, retention and contact-access settings can only be changed in the dashboard, because they are compliance settings for the whole workspace rather than choices about one call.
- Not available yet. Voice, model, response length, tone and the call-timing settings are set on the agent for now.
Idempotency-Key is optional. If you send one and a request times out, retrying with
the same key and the same body returns the original response instead of placing a second
call. The replayed response carries "idempotent_replay": true so you can tell it from a
fresh call. Reusing a key with a different body returns 422; retrying while the first
request is still running returns 409.Use a new key for a genuinely new attempt. If someone did not answer and you want to
ring them again, that is a new call and needs a new key. Sending the old key returns the
first call’s response and dials nobody. Deriving the key from the request content (a hash
of the number and prompt, say) looks tidy and quietly breaks every redial for 24 hours.Example: one agent, two different calls
Example Request
Hi {{var.lead_name}}, calling about your {{var.product}} on {{var.appt_time}}. is rendered as Hi Sarah, calling about your Roof inspection on Tuesday 3pm. before the call connects.
Response
List Calls
Retrieve a list of calls with optional filtering and pagination.Query Parameters
Response
to and from set to null.
