Skip to main content

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, so Foo and foo collide 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 variables object must serialize to under 4KB.
  • Invalid payloads return 400 with 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. prompt is not accepted, use instruction. welcome_msg is not accepted, use greeting. post_call_notes is not accepted, use summary_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

The same agent, called again an hour later with a completely different job, needs no new agent and no dashboard change:

Example Request

With the variables above, an agent prompt or greeting containing 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

The list leaves out the recording and transcript to keep pages small. Get them from Get Call. A campaign call that has not been dialled yet has to and from set to null.

Get Call

Retrieve details of a specific call.

Parameters

Response

Response fields

Get Call Recording

Stream the audio recording of a call.

Parameters

Response

The response is an audio stream of the call recording.

Delete Call

Delete a call record.

Parameters

Response