API reference

Launch a campaign

Send a bulk SMS campaign now, or schedule it for later.

POSThttps://nextgenpanel.cloudshope.com/api/v1/sms/campaigns

Launches 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

NameTypeRequiredDescription
campaign_namestringYesLabel for the campaign, up to 255 characters.
template_idintegerYesId of an Approved SMS template on the account.
send_toenumYesContacts, Groups or Upload from CSV — how recipients are resolved.
tostringNoComma or newline separated numbers. Required when send_to is Contacts.
group_namestringNoName of a saved number group. Required when send_to is Groups.
sms_typeenumNotext (default), smart or rcs.
schedule_timestring · ISO 8601NoWhen to send. Omit or use a past time to send now.
is_flashinteger (0 or 1)No1 sends as a flash SMS. Defaults to 0.

Request

  • Send as application/json when send_to is Contacts or Groups.
  • Send as multipart/form-data when uploading a CSV (send_to = Upload from CSV), with the file in a file field.
  • 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"
}
201 — example response

Errors

StatusTypeWhen
400bad-requestThe template is not Approved, no recipients resolved, or every recipient is blacklisted or a duplicate.
404not-foundNo template on the account matches template_id.
409insufficient-creditThe account does not have enough credit for the resolved recipient count.
422validation-failedA field failed validation. The errors array names each field and why.
401unauthorizedThe Authorization header is missing, malformed or the token is invalid or expired.
403forbiddenThe token is valid but the account is not allowed to perform this action.