How it works
1
Trigger the call
POST /v1/agents/{agentId}/outbound-calls with the destination number. You can include per-call context for the agent, opaque metadata, and a webhook URL for the result. The API responds immediately with 202 Accepted and a call ID — the call is queued, not yet ringing.2
The platform places the call
The dispatcher picks up your queued call (typically within a couple of seconds), assigns an agent worker, and dials the number. The agent speaks its greeting as soon as the callee answers — never while the phone is still ringing.
3
The agent has the conversation
The agent uses its full configuration: system prompt (plus your per-call
call_context), voice, tools, integrations, and after-call webhooks — identical capabilities to inbound calls.4
You receive the result
When the call reaches a terminal state, the result webhook fires (if you provided
callback_url) and the call record is finalized with duration, AI summary, and a transcript reference. You can also poll the call at any time.Call lifecycle
Every outbound call moves through these statuses:completed, voicemail_left, no_answer, busy, and failed are terminal — the result webhook fires exactly when one of these is reached. If the call has a retry policy, a terminal voicemail_left, no_answer, busy or failed may be followed by a new scheduled call with the next attempt_number.
The result webhook
If you pass acallback_url when triggering the call, Telzino POSTs the result to it on every terminal status:
metadatais your own payload from the trigger request, echoed back verbatim — use it to correlate the result with records in your system. On a retry it also carries a reserved_telzino_retrykey withparent_call_idandattempt_number.transcript_idlinks to the full transcript, retrievable via the Call Logs API.- For unanswered or failed calls,
summary_textandtranscript_idarenullandsip_status_codecarries the SIP failure code (e.g.486busy,480no answer). answer_typeis who Answering Machine Detection found on the line —human,machine,ivrorsilence_unknown— andnullwhen detection is off for the call.voicemail_leftistruewhen the agent left its voicemail message.ivr_navigation_outcomereports how menu navigation ended, ornullwhen the call never navigated a menu.opt_out_detectedistruewhen the callee asked not to be contacted again; every scheduled retry to that number has already been cancelled.
Good to know
Redialling
Redialling
The platform never retries
no_answer, busy, voicemail_left or failed calls unless the agent or the call has a retry policy. With one, each retry is a new call record with attempt_number, parent_call_id and root_call_id, created as scheduled and dialled at next_attempt_at; each attempt fires your webhook on its own. Without one, your application decides whether and when to call again.Refusals at trigger time
Refusals at trigger time
A trigger can be refused for policy reasons rather than validation:
409 policy_violation (a retry policy’s per-number caps), 409 suppressed (the number is on the organization’s suppression list), 409 out_of_window (outside the agent’s calling hours), and 400 consent_required (the agent requires a consent_basis). See Trigger Outbound Call.How the opening line is chosen
How the opening line is chosen
When the callee answers, the agent speaks the first match in this order:
- The
greetingfield from the trigger request — spoken verbatim. - The agent’s Outbound Greeting setting (dashboard agent settings, or
outboundGreetingMessagevia the Agents API) — spoken verbatim. - If
call_contextwas provided — an AI-composed opener that introduces the agent and states the reason for the call (e.g. “Hi, this is Ava from Acme calling to confirm your appointment tomorrow at 2pm.”). - Otherwise, the agent’s inbound greeting message.
skip_greeting voice setting suppresses all of these.Per-call context vs. agent configuration
Per-call context vs. agent configuration
The agent’s stored configuration (prompt, voice, tools) always applies.
call_context is appended to the prompt for that one call only — ideal for “you’re calling John to confirm his 2pm appointment” without creating a dedicated agent per purpose.Endpoints
Authentication works exactly like the rest of the API — see Authentication.
