Campaigns
Create and manage SMS campaigns — send to multiple recipients now or schedule for later delivery.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /api/sms/campaigns | Create a new campaign |
GET | /api/sms/campaigns | List your campaigns |
GET | /api/sms/campaigns/:id | Get campaign details |
PATCH | /api/sms/campaigns/:id | Update a draft/scheduled campaign |
DELETE | /api/sms/campaigns/:id | Delete a campaign |
POST | /api/sms/campaigns/:id/send | Send a draft campaign immediately |
POST | /api/sms/campaigns/:id/cancel | Cancel a scheduled campaign |
Create Campaign
POST https://api.galatext.com/api/sms/campaignsHeaders
| Header | Value | Required |
|---|---|---|
Content-Type | application/json | Yes |
Authorization | Bearer YOUR_JWT_TOKEN | Yes |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Campaign name for your reference |
message | string | Yes | Message content to send to all recipients |
senderId | string | Yes | Your approved sender ID |
manualNumbers | string[] | No | Array of phone numbers in E.164 format |
contactGroupIds | number[] | No | Array of contact group IDs to send to |
scheduledAt | string (ISO 8601) | No | Schedule campaign for future delivery |
Note: At least one of
manualNumbersorcontactGroupIdsis 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
| Status | Description |
|---|---|
DRAFT | Created but not yet sent |
SCHEDULED | Scheduled for future delivery |
SENDING | Currently being sent |
COMPLETED | Successfully sent to all recipients |
FAILED | Failed during sending |
PAUSED | Temporarily paused |
CANCELLED | Cancelled before sending |
Send a Campaign
Trigger immediate sending of a draft or scheduled campaign:
POST https://api.galatext.com/api/sms/campaigns/:id/sendCancel a Campaign
Cancel a scheduled or draft campaign:
POST https://api.galatext.com/api/sms/campaigns/:id/cancelThe campaign status will change to CANCELLED.
List Campaigns
GET https://api.galatext.com/api/sms/campaigns?page=1&limit=10Response
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
costandsuccessfulDeliveriesafter sending