1MSG
ReferenceCampaigns API

Update a draft campaign

PATCH
/api/v1/campaigns/{campaignId}

Only a draft can be changed. Send at least one of name, channelId, segmentId, or content. content follows the same template and text rules as create.

Authorization

bearer
headerAuthorizationBearer <token>

Key issued in Settings → Developer → API key. Inbox methods need the Inbox scope. Campaigns methods need the Campaigns scope.

Path Parameters

campaignId*string

Campaign id returned by create or list.

Request Body

application/json
  1. body
name?string

New title. Send at least one of name, channelId, segmentId, or content. Only a draft can be changed.

channelId?string

Another channel this account owns.

segmentId?string

Another segment id. The new members are copied when you send.

content?

Replaces the whole content object. Same template and text rules as create.

Response Body

application/json
  1. response
id*string

Campaign id.

name*string

Campaign title.

channelId*string

Channel that sends the campaign.

segmentId*string

Segment used as the audience.

status*string

Campaign status.

Value in"draft""sending""pause""completed""failed""scheduled"
content*||

Template or session text stored on the campaign.

sentAt*|

When sending started, or null if it has not started.

Formatdate-time
scheduledAt*|

UTC instant for a scheduled send, or null.

Formatdate-time
queuedRemaining*number

Recipients still waiting to be sent.

sentThisPortion*number

Template sends already started in the current tier window.

dailyLimit*|

How many template sends this channel may start in a rolling 24 hours. Taken from the channel tier (waba_info.current_limit), not from a campaign setting. Null when the tier is unknown or unlimited. Session text is not counted.

nextPortionAt*|

When the next template portion can start after the tier window is full. Null when a portion is not waiting.

Formatdate-time
createdAt*string

When the campaign was created.

Formatdate-time
updatedAt*string

When the campaign was last updated.

Formatdate-time
curl -X PATCH 'https://api.1msg.io/api/v1/campaigns/string' \  -H 'Content-Type: application/json' \  -d '{}'
{  "id": "cm3campaign01",  "name": "April restock",  "channelId": "cm3channel01",  "segmentId": "cm3segment01",  "status": "draft",  "content": {    "mode": "text",    "text": "Hello"  },  "sentAt": "2026-11-01T09:00:00.000Z",  "scheduledAt": "2026-11-01T09:00:00.000Z",  "queuedRemaining": 0,  "sentThisPortion": 0,  "dailyLimit": 1000,  "nextPortionAt": null,  "createdAt": "2026-11-01T09:00:00.000Z",  "updatedAt": "2026-11-01T09:00:00.000Z"}