Launch a campaign
Send a bulk SMS campaign now, or schedule it for later.
POST
https://nextgenpanel.cloudshope.com/api/v1/sms/campaignsLaunches a bulk SMS campaign against a DLT-approved template. The template must already be Approved — a Pending template is rejected.
Recipients are resolved from one of three sources, chosen with send_to: a direct list in to (comma or newline separated), a saved group named in group_name, or an uploaded CSV.
Credit is checked and deducted synchronously against the resolved recipient count. If schedule_time is in the future the campaign is created as Submitted and sent when it comes due; otherwise it starts sending immediately.
Authentication
Send Authorization: Bearer <token>. The account needs the campaign.create permission for SMS.
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
campaign_name | string | Yes | Label for the campaign, up to 255 characters. |
template_id | integer | Yes | Id of an Approved SMS template on the account. |
send_to | enum | Yes | Contacts, Groups or Upload from CSV — how recipients are resolved. |
to | string | No | Comma or newline separated numbers. Required when send_to is Contacts. |
group_name | string | No | Name of a saved number group. Required when send_to is Groups. |
sms_type | enum | No | text (default), smart or rcs. |
schedule_time | string · ISO 8601 | No | When to send. Omit or use a past time to send now. |
is_flash | integer (0 or 1) | No | 1 sends as a flash SMS. Defaults to 0. |
Request
- Send as
application/jsonwhensend_toisContactsorGroups. - Send as
multipart/form-datawhen uploading a CSV (send_to=Upload from CSV), with the file in afilefield. - Campaigns are limited to a fixed maximum number of recipients; oversized lists are rejected with 400.
curl -X POST https://nextgenpanel.cloudshope.com/api/v1/sms/campaigns \
-H "Authorization: Bearer cs_live_9f2c…" \
-H "Content-Type: application/json" \
-d '{
"campaign_name": "Diwali offer",
"template_id": 88,
"send_to": "Contacts",
"to": "9876543210, 9812345678",
"sms_type": "text"
}'Response
{
"id": 1207,
"campaign_name": "Diwali offer",
"sms_type": "text",
"status": "Processing",
"template_id": 88,
"sender_id": "CLDSHP",
"count": 2,
"message_credits": 1,
"total_credits": 2,
"schedule_time": null,
"created_at": "2026-09-08T09:20:41.000Z",
"updated_at": "2026-09-08T09:20:41.000Z"
}Errors
| Status | Type | When |
|---|---|---|
| 400 | bad-request | The template is not Approved, no recipients resolved, or every recipient is blacklisted or a duplicate. |
| 404 | not-found | No template on the account matches template_id. |
| 409 | insufficient-credit | The account does not have enough credit for the resolved recipient count. |
| 422 | validation-failed | A field failed validation. The errors array names each field and why. |
| 401 | unauthorized | The Authorization header is missing, malformed or the token is invalid or expired. |
| 403 | forbidden | The token is valid but the account is not allowed to perform this action. |
