/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
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:POST /v1/recipient-listsPOST /v1/recipient-lists/{list_id}/members:bulk(or CSV on/members)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.
