Skip to main content
Bulk outbound campaigns dialled from CSV with cap-aware concurrency and live SSE metrics. Wrapped by the Python SDK and Node SDK.

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