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

Path parameters

campaignId
string
required
The ID of the campaign.

Body

name
string
required
The updated campaign name.

Response

Success

Campaigns can only be updated while they are in Draft status.
success
boolean
required
campaignId
string
required
The campaign ID.
name
string
required
The updated campaign name.
status
string
required
The campaign status.
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
nullable string
required
The associated email message ID.

Error

If the request body is invalid, a 400 Bad Request is returned. A 404 Not Found is returned if the campaign does not exist. A 409 Conflict is returned if the campaign is not in draft status. 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 v2",
  "status": "Draft",
  "createdAt": "2026-03-28T15:00:00.000Z",
  "updatedAt": "2026-03-28T15:15:00.000Z",
  "emailMessageId": "em_01hxyz"
}
Last modified on May 20, 2026