Skip to main content

Campaigns API

Bulk campaign creation, scheduling, and analytics Base path: /api/v1/campaigns Endpoint count: 4

List campaigns

GET /api/v1/campaigns/
Retrieve campaigns with cursor-based pagination. Filter by status; supported values are draft, pending_approval, scheduled, running, sending, aborting, completed, partially_failed, paused, cancelled, and failed.

Create a campaign

POST /api/v1/campaigns/
Create a marketing campaign (blast, drip, or journey) targeting a list/segment/CSV/all-contacts audience. The campaign is created as a draft until POST /campaigns//send. message_template is optional at creation but mandatory at send-time. For drip campaigns, the steps array defines the sequence; smart_send spreads delivery across 24h using best-time-to-send predictions.
string
required
string
string (enum: blast|drip|journey)
string (enum: sms|mms|whatsapp|email|rcs|viber|…)
required
string (enum: all|list|segment|csv)
string
string
object
string
integer
object
Recurrence config. Accepts either canonical keys (type, end_type, end_date, end_count, days, date, cron) or UI-prefixed keys (recurrence_type, recurrence_end_type, recurrence_end_date, etc.). When end_type === ‘on_date’ the end_date MUST be in the future; past dates are rejected with HTTP 400.
boolean
object[]
boolean

Preview send-time experiment cohort plan

POST /api/v1/campaigns/{id}/send-time-experiment/preview
Returns the deterministic cohort assignment for each send window in a send-time A/B test, including control arm size, recipient distribution, and next fire times. Reads the opt-in variables.send_time_experiment config already persisted on the campaign and resolves the declared audience. Read-only — it never enqueues a job, touches the wallet, or calls a provider. Returns 400 when no send-time experiment (at least two windows) is configured on the campaign.
string
required

Score draft campaign content for deliverability (pre-flight)

POST /api/v1/campaigns/deliverability-lab
Score a draft campaign before you send it. Pass the draft message content and channel in the request body (no saved campaign needed) and get back the content issues that could hurt deliverability — spam-trigger words and risky links — plus a predicted delivery rate for each destination carrier, based on your own historical delivery results. This check is read-only: it never sends your campaign, charges your wallet, or changes anything in your account.
string (enum: sms|mms|whatsapp|email|rcs|viber|…)
required
Campaign channel the draft content targets.
string
Draft message body to score. Defaults to empty string.
string
Email-only subject line.
string (enum: 7d|30d|90d)
Historical lookback window for the carrier delivery baseline. Defaults to 30d.