Base URL
These endpoints are served under the public
/v1 prefix.Authentication
Every request requires a workspace API key in theX-API-Key header.
Endpoints
List campaigns
GET /v1/calls/campaigns — page through your campaigns.Create campaign
POST /v1/calls/campaigns — create a campaign.Get campaign
GET /v1/calls/campaigns/{id} — retrieve a campaign and its contact groups.Update campaign
PATCH /v1/calls/campaigns/{id} — change a campaign’s configuration.Delete campaign
DELETE /v1/calls/campaigns/{id} — delete a campaign.List campaign contacts
GET /v1/calls/campaigns/{id}/contacts — see per-contact call status.List campaign conversations
GET /v1/calls/campaigns/{id}/events — page through conversations produced by the campaign.Start campaign
POST /v1/calls/campaigns/{id}/start — begin placing calls.Pause campaign
POST /v1/calls/campaigns/{id}/pause — pause a running campaign.Resume campaign
POST /v1/calls/campaigns/{id}/resume — resume a paused campaign.Cancel campaign
POST /v1/calls/campaigns/{id}/cancel — cancel a campaign.Before you start
A campaign references resources created through the other APIs. Gather these first.Agent
agentId — the agent that speaks on the call.Phone number
fromNumber — the number the call comes from, or use a number pool.Contact lists
contactListIds and dndListIds — who to call and who to skip.Create a campaign
POST /v1/calls/campaigns requires name, agentId, contactListIds, maxConcurrency, and exactly one of fromNumber or numberPoolId.
Pass
contactListIds for the audience and dndListIds for numbers to exclude. Both accept IDs from the Campaign audience API; create do-not-disturb lists with type set to dnd.
422 indicates the campaign could not be created with the values supplied.
Set
scheduleStart and scheduleEnd together. Do not send scheduling fields when sendNow is true.Control a running campaign
Four operations move a campaign through its lifecycle. Each takes only the campaign ID and returns the updated campaign.pausedAt, resumedAt, stoppedAt, and cancelledAt as these operations are applied, so you can read the current state from the campaign itself.
Campaign fields
When a campaign fails,
meta.failure.reason describes why.
GET /v1/calls/campaigns/{id} returns these fields plus agentName and a contactGroups array, where each group has an id, name, and type.
Campaign contacts
GET /v1/calls/campaigns/{id}/contacts lists the individual contacts in a campaign.
The endpoint accepts
page, perPage, and a status filter.
Pagination and filtering
GET /v1/calls/campaigns accepts these query parameters.
Both list endpoints return a paged object containing
items, page, perPage, totalCount, column, order, and searchText.
Errors
Errors return acode and an error message.