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"
}
Create a new draft campaign and associated email message.
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.
emailMessageId with
Update an email message to set
subject, sender, preview text, and LMX content.
Draft).expectedRevisionId on your first email message update.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": 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"
}
Was this page helpful?