Documentation / Create and run campaigns
BUILD

Create and run campaigns

Reach a consented audience with deliberate launch controls and resumable delivery.

Prepare the audience and content

Create a list of contacts with explicit consent. Use campaigns:write to create a campaign with name, list_id, from, inline content or template_id, optional variables, and optional scheduled_at.

curl -X POST "$BASE_URL/api/v1/campaigns" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"November update", "list_id":"YOUR_LIST_UUID",
    "from":"hello@yourdomain.com", "subject":"A little news",
    "html":"<p>Here is what is new.</p>"}'

Review, then launch

Creating a campaign does not launch it. POST /v1/campaigns/:id/launch to snapshot the eligible, consented audience. Delivery fans out in resumable batches, subject to allowance and suppression checks. Launch is an intentional send action.

Pause, resume, or cancel

POST /v1/campaigns/:id/pause stops further dispatch. Resume with launch. POST /v1/campaigns/:id/cancel cancels remaining work where possible; messages already submitted cannot be recalled. Quota exhaustion pauses a campaign with pause_reason=quota_exceeded.

Inspect outcomes

GET /v1/campaigns/:id returns campaign counts and events. Inspect individual messages for detailed timelines. The campaign can include failures and suppressions; completion does not imply every recipient received an email.

Building something interesting?We’d love to help