---
title: "Create campaign"
method: POST
path: "/campaigns"
tags: ["Campaigns"]
---

# Create campaign

`POST /campaigns`

Creates a draft campaign and linked email. Requires a configured sender profile.

## Request body

- object
  - `name` string, required
  - `subject` string, required
  - `html` string — Raw HTML body. Mutually exclusive with blocks.
  - `blocks` object[] — Sequenzy email blocks. Mutually exclusive with html.
  - `campaignData` object, nullable
  - `computedLists` object[]
  - `labels` string[] — Label names to assign. Missing labels are created automatically.
  - `label` string[] — Compatibility alias for labels.
  - `templateId` string — Reserved for client compatibility.
  - `segmentId` string — Reserved for client compatibility.

## Response `200`

Campaign created

- object
  - `success` boolean
  - `campaign` object
    - `id` string
    - `name` string
    - `subject` string
    - `status` string
    - `labels` string[]
    - `url` string, uri
    - `previewUrl` string, uri

## Other responses

- `400` — Validation error or missing sender profile
- `401` — Unauthorized
- `500` — Campaign could not be created

## Changes

- **2026-05-15** `b040bb8c6608` — 2 info
  - added the optional property `campaign/previewUrl` to the response with the `200` status
  - added the optional property `campaign/url` to the response with the `200` status
- **2026-05-13** `9a89cb9ec599` — 3 info
  - added the new optional request property `label`
  - added the new optional request property `labels`
  - added the optional property `campaign/labels` to the response with the `200` status
- **2026-05-11** `ee7b7111c55b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/campaigns/post.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/revisions/b040bb8c6608/schema)
