[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Create campaign draft

> Save a campaign flow draft with its segments and first Send Message block. Sends nothing. Inputs, cURL, Python and Node.js examples and an example response.

Source: https://cotlet.dev/docs/api/postscript/create_campaign

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Save a campaign flow draft with its segments and first Send Message block. Sends nothing.

Postscript API: https://cotlet.dev/docs/api/postscript.md

`POST https://cotlet.dev/api/v1/postscript/campaigns`

Access: write.

Creates the flow under Messaging > Create Campaign > Create Campaign Flow and saves it with Save Flow, so status is draft. You choose the Include and Exclude segments (up to 10 in total), whether to exclude customers messaged in the last 16 hours, and an optional cancellation trigger such as Order Created. The draft holds one Send Message block. Splits, delays and branch messages you add in Flow Builder. It reaches nobody, so it does not wait for your OK; schedule_campaign does.

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `name` | string | yes | Campaign name. |
| `include_segments` | array | yes | Segment names to send to. |
| `exclude_segments` | array | no | Segment names to leave out. |
| `exclude_recently_messaged` | boolean | no | Exclude customers messaged in the last 16 hours. Default: false. |
| `cancel_on` | string | no | Cancellation trigger that removes a subscriber from the flow, for example Order Created. |
| `message` | string | yes | Text of the first Send Message block. |

## Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/postscript/campaigns \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"VIP drop","include_segments":["VIPACCESS opt-ins"],"exclude_recently_messaged":true,"cancel_on":"Order Created","message":"The VIP drop is open. Shop the new roast before anyone else: northwind.example/vip"}'
```

**Python**

```python
result = client.call("postscript", "create_campaign", {"name":"VIP drop","include_segments":["VIPACCESS opt-ins"],"exclude_recently_messaged":True,"cancel_on":"Order Created","message":"The VIP drop is open. Shop the new roast before anyone else: northwind.example/vip"})
```

**Node.js**

```js
const result = await cotlet.call('postscript', 'create_campaign', {"name":"VIP drop","include_segments":["VIPACCESS opt-ins"],"exclude_recently_messaged":true,"cancel_on":"Order Created","message":"The VIP drop is open. Shop the new roast before anyone else: northwind.example/vip"});
```

**CLI**

```bash
cotlet call postscript create_campaign --data '{"name":"VIP drop","include_segments":["VIPACCESS opt-ins"],"exclude_recently_messaged":true,"cancel_on":"Order Created","message":"The VIP drop is open. Shop the new roast before anyone else: northwind.example/vip"}'
```

## Example response

```json
{
  "campaign_id": "f_51877",
  "name": "VIP drop",
  "status": "draft",
  "include_segments": [
    "VIPACCESS opt-ins"
  ],
  "exclude_recently_messaged": true,
  "cancel_on": "Order Created"
}
```

Previous: [Create segment](https://cotlet.dev/docs/api/postscript/create_segment.md)
Next: [Send preview](https://cotlet.dev/docs/api/postscript/send_preview.md)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
