Skip to main content

The campaign object, blockers and warnings

The campaign object

Returned by POST /v1/campaigns, GET /v1/campaigns/{id}, POST …/launch, POST …/pause, POST …/resume, POST …/cancel. How to read the creation response
  1. statusrunning (dialing), scheduled (window is in the future) or draft (did not start). Nothing else in the body means “it started”.
  2. A non-empty blockers on creationstatus: "draft". The campaign and its import report are kept. Fix what the blockers name and call POST /v1/campaigns/{id}/launch.
  3. import is null when planned_calls was empty; blockers then carries no_pending_contacts (unless the campaign is open to call additions).
  4. warnings are non-blocking. Two of them are present on practically every campaign: starts_immediately (no future starts_at) and frequency_policy_active (the per-number frequency caps in force) — the latter replaced by frequency_limits_disabled when those caps are switched off.
  5. timezone_source is request when you named a zone and organization when it was inherited. It reads the same on every path — the create response, GET /v1/campaigns/{id} and the list all agree.

Blockers and warnings

blockers and warnings are computed by the same launch check the dashboard runs. Each item is an object with a machine-readable code; most blockers also carry field — the request field the finding is about. Shape depends on the path — read only what is guaranteed:
Reading blockers on GET /v1/campaigns/{id} and launch-check. On the read paths the list answers “what would a launch check report right now”, computed without an attestation and regardless of the current status. Consequences: a running campaign always shows attestation_required (the signature is given per launch request, not stored as a standing state), and a running campaign whose queue has drained shows no_pending_contacts. So on read paths a non-empty blockers does not imply status: "draft" — use status for that, and read blockers as the checklist a future launch / resume would have to pass.
Blocker codes Warning codes