Make a call

A single outbound call is the building block everything else is made of: a campaign is many of them with pacing; a schedule is one of them on a timer; your own system triggering a callback is one of them with contactId set. Understand this one and the rest are configuration.

What a call needs

InputMeaning
FlowA published flow. Optionally a specific version; otherwise latest
From numberA number your account owns with the voice capability — the caller ID the person sees. Its provider routes the call
To numberE.164. Emergency numbers are refused
Contact (optional)Links the call to a contact record: their timeline shows it, and {{contact.*}} variables in the prompts are filled from it. If you omit it, the to-number is still matched against your contacts for prompt variables; and after analysis, Talkif creates or enriches a contact from the call — filling empty fields only, never overwriting yours
Metadata (optional)Any JSON you want stored with the call — your order ID, your ticket number — returned on the call record

Placing it

Start a call on the home screen, or Call Center → Calls. Pick a contact or type a number, choose the from-number and the flow, and call. The call appears in the active list immediately with its live status and transcript.

What’s checked before dialing

In order, and each one is a distinct refusal you can act on:

Do Not Call

The to-number is checked against your Do Not Call list. On the list → refused with contact_on_dnc_list. This applies to every outbound path — direct, campaign, schedule.

At least $1.00 available and the account active → otherwise insufficient_balance. See Credits and pricing.

Requests over your per-minute rate limit → rate_limit_exceeded. All concurrent slots busy → the call is queued (202), unless the queue is full → queue_full. Limits and queue priority are in Limits.

The flow must have a published version (flow_not_published); the from-number must be active and voice-capable (phone_number_not_active, phone_number_cannot_initiate_calls).

Following the call

While it runs, the call’s status moves queued → initiated → ringing → inprogress, and the transcript grows turn by turn. The dashboard shows both live; from your own systems, use real-time events rather than polling. When it ends you get a terminal status, an endReason, and everything in Transcripts and recordings.

The full state machine, with every status, end reason and failure code explained: How a call works.

Next