Create SMS campaign
SMS
Create SMS campaign
POST /v1/sms/campaigns
POST
Create SMS campaign
Creates an SMS campaign. Optionally launches it immediately.
When
Campaigns are one-time broadcasts. Replies are handled by the agent using its
system_prompt — include any campaign context in the agent’s prompt before launching.Request
Body parameters
| Field | Type | Required | Notes |
|---|---|---|---|
agent_id | string | Yes | Agent associated with the campaign |
from_number | string | Yes | Your imported Twilio number |
name | string | Yes | Display name in dashboard |
message_template | string | Yes | Message text. Supports {{variable}} placeholders |
recipients | array | Yes | Up to 10,000. Each item: { phone, variables } |
schedule_type | enum | Yes | now or schedule |
scheduled_at | ISO date | If schedule | When to launch |
Recipient object
| Field | Type | Required | Notes |
|---|---|---|---|
phone | string | Yes | E.164 format, e.g. +447111000001 |
variables | object | No | Key-value pairs to fill {{placeholders}} in the template |
Placeholders
Use{{variable_name}} in message_template. Each recipient’s variables object fills them.
Template: Hi {{first_name}}, see you on {{day}}.
Recipient: { "phone": "+44...", "variables": { "first_name": "Sarah", "day": "Tuesday" } }
Sent SMS: Hi Sarah, see you on Tuesday.
Missing variables render as empty strings (no crash).
Response
201 Created:
schedule_type is now, returns status: running and sends immediately. With schedule, returns status: scheduled — launch later with Launch SMS campaign.
Errors
See Errors. Common:agent_not_owned, from_number_not_owned, too_many_recipients, invalid_schedule.