Skip to content

Campaigns

Create and manage SMS campaigns — send to multiple recipients now or schedule for later delivery.

Endpoints

MethodEndpointDescription
POST/api/sms/campaignsCreate a new campaign
GET/api/sms/campaignsList your campaigns
GET/api/sms/campaigns/:idGet campaign details
PATCH/api/sms/campaigns/:idUpdate a draft/scheduled campaign
DELETE/api/sms/campaigns/:idDelete a campaign
POST/api/sms/campaigns/:id/sendSend a draft campaign immediately
POST/api/sms/campaigns/:id/cancelCancel a scheduled campaign

Create Campaign

POST https://api.galatext.com/api/sms/campaigns

Headers

HeaderValueRequired
Content-Typeapplication/jsonYes
AuthorizationBearer YOUR_JWT_TOKENYes

Request Body

ParameterTypeRequiredDescription
namestringYesCampaign name for your reference
messagestringYesMessage content to send to all recipients
senderIdstringYesYour approved sender ID
manualNumbersstring[]NoArray of phone numbers in E.164 format
contactGroupIdsnumber[]NoArray of contact group IDs to send to
scheduledAtstring (ISO 8601)NoSchedule campaign for future delivery

Note: At least one of manualNumbers or contactGroupIds is required. Phone numbers are auto-formatted to 254 prefix and deduplicated.

Example Request

bash
curl -X POST https://api.galatext.com/api/sms/campaigns \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "name": "Weekend Promo",
    "message": "Flash sale this weekend! 20% off all items.",
    "senderId": "YOURBRAND",
    "manualNumbers": ["+254712345678", "+254798765432"],
    "scheduledAt": "2026-07-27T14:00:00Z"
  }'

Response

json
{
  "id": 42,
  "name": "Weekend Promo",
  "status": "SCHEDULED",
  "totalRecipients": 2,
  "scheduledAt": "2026-07-27T14:00:00.000Z",
  "createdAt": "2026-07-26T10:00:00.000Z"
}

Campaign Statuses

StatusDescription
DRAFTCreated but not yet sent
SCHEDULEDScheduled for future delivery
SENDINGCurrently being sent
COMPLETEDSuccessfully sent to all recipients
FAILEDFailed during sending
PAUSEDTemporarily paused
CANCELLEDCancelled before sending

Send a Campaign

Trigger immediate sending of a draft or scheduled campaign:

POST https://api.galatext.com/api/sms/campaigns/:id/send

Cancel a Campaign

Cancel a scheduled or draft campaign:

POST https://api.galatext.com/api/sms/campaigns/:id/cancel

The campaign status will change to CANCELLED.

List Campaigns

GET https://api.galatext.com/api/sms/campaigns?page=1&limit=10

Response

json
{
  "data": [
    {
      "id": 42,
      "name": "Weekend Promo",
      "status": "COMPLETED",
      "totalRecipients": 500,
      "successfulDeliveries": 498,
      "failedDeliveries": 2,
      "cost": 348.60,
      "sentAt": "2026-07-25T14:00:00.000Z",
      "createdAt": "2026-07-24T10:00:00.000Z"
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 10,
  "totalPages": 1
}

Best Practices

  • Schedule during business hours — Promotional SMS perform best between 8 AM - 8 PM
  • Validate numbers beforehand — Pre-clean your contact lists to reduce failed deliveries
  • Use contact groups — Organize contacts into groups for targeted campaigns
  • Monitor costs — Check cost and successfulDeliveries after sending

Powered by Galatext Software