Phone number format
All phone numbers must be in E.164 international format - a+ followed by
digits only. Send the exact format; numbers are not reformatted for you.
Identifying your agent
You identify an agent by its phone number (a leading+ is optional) - not by an internal database ID.
Personalizing the prompt
Inject dynamic values into your agent’s prompt at call time so each recipient hears a tailored message.1
Add placeholders to the agent's prompt
Use
{{name}} syntax in the prompt:2
Provide the values when placing the call
Rules
- Every
{{placeholder}}in the prompt must be provided, or the request is rejected with400. - Extra keys not used by the prompt are accepted and ignored.
- Key names should be lower
snake_case(letters, digits, underscores), e.g.customer_name. Thesystem__andsecret__prefixes are reserved. - Values must be strings - send numbers and booleans as strings (
"3","true"). - Up to 25 keys; each value up to 500 characters.
- In bulk, use either per-destination or a shared top-level
prompt_variables, not both.
Correlating calls with your own records
Send your own identifier inmetadata.external_call_id and it is echoed back at
the top level of the placement response, and carried through to the post-call
callback:
call_id is the primary public identifier for a call. It is also
available in post-call actions as {{post_call.call_id}}.
Checking results
Every call - single or bulk - belongs to a batch. Use List batches and Get a batch to see whether each call connected. Outcomes also appear in your dashboard, in your outbound call history or in Conversations, together with the full transcript. Filter by the agent you placed the calls with to find them.Errors
Outbound errors use this shape:error_type, and rate limits add a detail pointing you to where you can request
more capacity.
Quickstart
One call:Removed endpoints
POST /api/v1/outbound/calls/place is no longer available and responds 410 Gone. It existed for the retired SMS-consent flow. Use Place a call or
Place calls in bulk instead.