Campaigns
Campaigns reach a list of recipients with one of your AI agents over voice,
SMS, or WhatsApp, at a carrier-safe rate, with automatic retries for
no-answer/busy voice calls. You create a campaign, upload recipients, then start
it — Voicebip paces the dispatch per carrier and records the outcome of every
recipient. This guide leads with voice; SMS and WhatsApp
use the same flow with a different config.
The lifecycle is: draft → running ⇄ paused → completed | cancelled.
1. Create a campaign
A new campaign starts in draft. config carries the per-call template
(caller-id, optional webhook, optional call window). retry_policy is optional —
omit it for no retries.
Response (201):
Retry policy
Only transient failures (no_answer, busy) are retried. completed and
hard failed outcomes are terminal. Omit retry_policy entirely to disable
retries — every recipient is dialed once.
2. Add recipients
Upload recipients in bulk (up to 10,000 per request). Invalid E.164 numbers and
in-campaign duplicates are skipped, not fatal — the response reports the counts.
params are optional per-recipient template variables.
Response (200):
3. Start, pause, resume, cancel
A campaign auto-completes (running → completed) once every recipient has a
terminal outcome and no retries remain.
4. Track progress
Poll the campaign for live counters, or list per-recipient outcomes.
total = queued + dispatched + succeeded + failed always holds:
- queued — waiting to be dialed (first attempt or a scheduled retry).
- dispatched — currently in flight, awaiting outcome.
- succeeded — call completed.
- failed — hard failure, or a transient failure that exhausted its retries.
Every campaign-dialed call also appears in GET /v1/calls with its campaign_id
set, so transcripts and recordings flow through the usual call APIs.
5. SMS and WhatsApp campaigns
Campaigns aren’t voice-only. Set channel to sms or whatsapp and Voicebip
paces the sends the same way it paces dials — per carrier for SMS, per sender +
template-category for WhatsApp. The lifecycle, target upload, tracking, and
pagination are identical to voice; only config changes per channel.
SMS campaign:
WhatsApp campaign (one approved template, one sender, one category):
Recipients who have opted out are suppressed automatically — per-category or
blanket for WhatsApp, blanket for SMS — and recorded with disposition
opted_out; they are never submitted to the carrier. A messaging recipient is marked sent once the
provider accepts the submit; WhatsApp then upgrades that to delivered / read
as Meta reports status, visible on the target’s disposition.
Notes
- Pacing and the per-carrier concurrency cap are managed by Voicebip — you don’t set a dial rate; the platform stays within carrier limits.
config,schedule, andretry_policyare free-form JSON objects. Thevoice,sms, andwhatsappchannels are supported for campaigns; automatic retries apply to thevoicechannel today.- List endpoints use opaque-cursor pagination (
next_page_token).