1MSG
ReferenceCampaigns API

Send or schedule a campaign

POST
/api/v1/campaigns/{campaignId}/send

Copies the segment into the send snapshot. scheduledAt is a future ISO-8601 instant with Z or a numeric offset. Omit it or send null to start now. Template sends pause when the channel tier for the rolling 24 hours is used up. There is no separate per-day field.

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
scheduledAt?|

Future ISO-8601 instant with a Z or a numeric offset, for example 2026-11-01T09:00:00Z. Omit or null to start now. There is no per-day field. Template sends use the channel tier.

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 POST 'https://api.1msg.io/api/v1/campaigns/string/send' \  -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"}