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.