API

Create draft

Creates a campaign draft in the workspace the API key is scoped to and returns it, including its id. Publishing and scheduling happen in the app.

POST/campaigns

Authorization

apiKey posts:read-write
x-api-key<token>

In: header

Scope: posts:read-write

Header Parameters

X-Api-Version?string

API version date. Requests without the header use 2026-07.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Campaigns are always created as drafts. Publishing and scheduling happen in the app.

recipients?
notification?
smsTeaser?boolean

For email campaigns: also notify recipients with an SMS teaser. Requires the workspace to have SMS enabled and the "SMS preview in posts" setting switched on in its SMS settings.

text?string

The SMS text. Required for SMS campaigns.

blocks?array<>

Email campaign content blocks.

title?string

Campaign title, shown as the campaign name in the app. For email campaigns it is also used as the email subject unless notification.emailTitle is given, so it is limited to 45 characters. Required for email campaigns unless blocks or an email title are given.

deliveryChannel*string

What the campaign sends: an email campaign or a standalone SMS campaign.

curl -X POST "https://example.com/campaigns" \  -H "X-Api-Version: 2026-07" \  -H "Content-Type: application/json" \  -d '{    "deliveryChannel": "email"  }'
{  "updated": "string",  "created": "string",  "publishDate": "string",  "smsTeaser": true,  "deliveryChannel": "email",  "status": "draft",  "title": "string",  "id": "string",  "editorUrl": "string",  "hash": "string",  "recipients": {    "segmentIds": [      "string"    ]  },  "notification": {    "smsText": "string",    "emailDescription": "string",    "emailTitle": "string"  },  "blocks": [    {      "description": "string",      "alt": "string",      "imageUrl": "string",      "isFullWidth": true,      "style": "button",      "url": "string",      "alignment": "left",      "text": "string",      "type": "h1"    }  ],  "text": "string"}
{  "traceId": "string",  "message": "string",  "path": "string",  "timestamp": "string",  "statusCode": 0.1}
{  "traceId": "string",  "message": "string",  "path": "string",  "timestamp": "string",  "statusCode": 0.1}