Endpoints at a glance
Reference
GET /api/v1/campaigns
List campaigns
Responses
Example
POST /api/v1/campaigns
Create a campaign
Multipart form upload — contacts is a CSV file, every other field is a form value. The CSV must contain at least a phone_number column. The campaign is created in draft state and dispatch starts only after start.
Request body (application/json)
Responses
Example
GET /api/v1/campaigns/{id}
Get a campaign
Parameters
Responses
Example
DELETE /api/v1/campaigns/{id}
Delete a campaign
Refuses if the campaign is running. Pause or stop it first.
Parameters
Responses
Example
GET /api/v1/campaigns/{id}/contacts
List contacts in a campaign
Parameters
Responses
Example
GET /api/v1/campaigns/{id}/events
Stream campaign events
Server-Sent Events stream of contact-level state transitions (originated, connected, failed, …). Stays open until the client disconnects.
Parameters
Responses
Example
POST /api/v1/campaigns/{id}/pause
Pause a running campaign
Stops the dispatcher from originating new calls; in-flight calls finish naturally.
Parameters
Responses
Example
POST /api/v1/campaigns/{id}/resume
Resume a paused campaign
Parameters
Responses
Example
POST /api/v1/campaigns/{id}/start
Start a campaign
Flips the campaign from draft/paused to running. The dispatcher goroutine begins originating calls subject to per-tenant rate caps.
Parameters
Responses
Example
POST /api/v1/campaigns/{id}/stop
Stop a campaign permanently
Terminal state — no further dispatches, contacts in pending move to cancelled. Cannot be reversed; create a new campaign to redo the work.
Parameters
Responses
Example

