How it works
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.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.
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.Call lifecycle
Every outbound call moves through these statuses:| Status | Meaning |
|---|---|
queued | Accepted by the API, waiting for the dispatcher |
dispatching / dispatched | The platform is assigning the call to an agent worker |
dialing | The phone is ringing |
in_progress | The callee answered; the conversation is live |
completed | The call ended normally — summary and transcript available |
no_answer | Rang for ~45 seconds with no answer |
busy | The line was busy or the call was rejected |
failed | The call could not be placed (details in the error and sip_status_code fields) |
completed, no_answer, busy, and failed are terminal — the result webhook fires exactly when one of these is reached.
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.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).
Good to know
Voicemail counts as an answered call
Voicemail counts as an answered call
If voicemail or an auto-attendant picks up, the call is treated as answered (
in_progress → completed) — the agent will speak to the recording. Answering-machine detection is on the roadmap; until then, factor this into your redial logic.No automatic redial
No automatic redial
The platform never retries
no_answer, busy, or failed calls on its own. Your application decides whether and when to call again, using the webhook or polled status.Use an outbound-appropriate greeting
Use an outbound-appropriate greeting
The agent speaks its configured greeting the moment the callee answers. An inbound-style greeting (“Thanks for calling!”) sounds wrong on an outbound call — give agents used for outbound a greeting like “Hi, this is Ava calling from Acme Corp.”
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
| Endpoint | Purpose |
|---|---|
POST /v1/agents/{agentId}/outbound-calls | Trigger an outbound call |
GET /v1/agents/{agentId}/outbound-calls/{callId} | Get a call’s status and result |
GET /v1/agents/{agentId}/outbound-calls | List an agent’s outbound calls |
