- Appointment confirmations
- Survey callbacks
- “Second-try” follow-ups after a missed call
- Dispatch-style notifications
Calling a whole list? The dashboard’s
Campaigns feature
(
/dashboard/campaigns) takes a CSV of contacts and handles
timezone-aware calling windows, concurrency, and retry policy for
you. This guide covers single programmatic calls.Prerequisites
1
Bring a VoIP number
Outbound calling requires you to own the
from_number through a
VoIP connection. Demo numbers
are inbound-only. See
Bring your own numbers.2
Create an agent
An outbound-flavoured prompt tends to start with the agent
identifying itself and its purpose — “Hi, this is Acme calling to
confirm your appointment for tomorrow at 3pm…” Set
outbound_speak_order to agent_first (the default).3
Keep a positive balance
Outbound calls return
402 Payment Required if balance is ≤
$0.00. Top up via
POST /v1/billing/top-up
or enable auto-reload.Place a call with a saved agent
The simplest path — reference an agent by id:Place a call with inline config
If you want a one-off prompt that isn’t worth saving as an agent, passconfig instead. The shape matches the response schema of the
call.incoming webhook:
Follow the call
In parallel, subscribe to thetelephony.complete webhook —
the fastest way to know a call finished. If you can’t accept inbound
webhooks, poll GET /v1/calls/{call_id} every couple of seconds; the
record includes end_reason, duration_seconds, and the recording
URL once the call ends.
Failure modes worth handling
Controlling hold time
Outbound calls that run long because the callee is slow to respond (IVR trees, queues) can be capped withmax_hold_seconds:
Next steps
Outbound calls reference
Every request field and error code.
Receive call.complete
Stream finished outbound calls to your system.
Billing
Auto-reload so outbound never fails on balance.
Test outbound agents
Dry-run your outbound agent before production.