Skip to main content
POST
/
v1
/
campaigns
Create a campaign
curl --request POST \
  --url https://app.loops.so/api/v1/campaigns \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>"
}
'
{
  "success": true,
  "campaignId": "cmp_01hxyz",
  "name": "Spring announcement",
  "status": "Draft",
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:00:00.000Z",
  "emailMessageId": "em_01hxyz",
  "emailMessageContentRevisionId": "rev_01hxyz"
}

Documentation Index

Fetch the complete documentation index at: https://loops.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Content API endpoints are currently in an open alpha and are subject to change.

Request

Body

name
string
required
The campaign name.

Response

Success

This endpoint creates a draft campaign and an empty email message in one step. Use the returned emailMessageId with Update an email message to set subject, sender, preview text, and LMX content.
success
boolean
required
campaignId
string
required
The campaign ID.
name
string
required
The campaign name.
status
string
required
The initial campaign status (Draft).
createdAt
string
required
ISO 8601 timestamp for when the campaign was created.
updatedAt
string
required
ISO 8601 timestamp for when the campaign was last updated.
emailMessageId
string
required
The ID of the empty email message created for this campaign.
emailMessageContentRevisionId
nullable string
required
The initial content revision ID for the email message. Pass this as expectedRevisionId on your first email message update.

Error

If the request body is invalid, or if no sending domain is configured, a 400 Bad Request is returned. If the API key is invalid (or content API is not enabled for your team), a 401 Unauthorized is returned.
success
boolean
required
message
string
required
An error message describing what went wrong.
{
  "success": true,
  "campaignId": "cmp_01hxyz",
  "name": "Spring announcement",
  "status": "Draft",
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:00:00.000Z",
  "emailMessageId": "em_01hxyz",
  "emailMessageContentRevisionId": "rev_01hxyz"
}
Last modified on May 20, 2026