Skip to main content
A campaign is a batch (/v1/batches): an agent, a telephony account, contacts, and a dial window. Draft → start → pause / resume / cancel. Campaigns that have already run cannot be deleted — hide them instead.

Create and start

CSV upload uses POST /v1/batches/{batch_id}/contacts as multipart/form-data (column phone_number plus optional {{variable}} columns).

Recipient lists

Reusable people, copied into a draft campaign in one SQL-side attach:
  1. POST /v1/recipient-lists
  2. POST /v1/recipient-lists/{list_id}/members:bulk (or CSV on /members)
  3. POST /v1/batches/{batch_id}/contacts:from-list

Schedule

PATCH /v1/batches/{batch_id}/schedule sets recurrence (once / daily / weekly / monthly), local window_start / window_end, timezone, and optional limit_per_period. It does not start the batch — the scheduler picks it up on the next tick.

Control plane

Needs feature flags feature_batch_calls and feature_outbound. Buy a number first — see Phones.