The campaign object, blockers and warnings
The campaign object
Returned byPOST /v1/campaigns, GET /v1/campaigns/{id}, POST …/launch, POST …/pause, POST …/resume, POST …/cancel.
How to read the creation response
status—running(dialing),scheduled(window is in the future) ordraft(did not start). Nothing else in the body means “it started”.- A non-empty
blockerson creation ⟹status: "draft". The campaign and its import report are kept. Fix what the blockers name and callPOST /v1/campaigns/{id}/launch. importisnullwhenplanned_callswas empty;blockersthen carriesno_pending_contacts(unless the campaign is open to call additions).warningsare non-blocking. Two of them are present on practically every campaign:starts_immediately(no futurestarts_at) andfrequency_policy_active(the per-number frequency caps in force) — the latter replaced byfrequency_limits_disabledwhen those caps are switched off.timezone_sourceisrequestwhen you named a zone andorganizationwhen 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:
Blocker codes
Warning codes