SMS providers API
Unified authenticated endpoints for manual send, bulk CSV, balance, and templates per installed SMS app
SMS providers API
All SMS gateway apps that support operator actions share one URL shape. Replace {slug} with the installed app slug (for example mora-sms, taqnyat-sms, twilio-sms). The organization is taken from the authenticated user; credentials come from that app’s installation.
Prefer not to pass a slug? Use the provider-agnostic SMS outbox (POST /api/v1/sms/outbox) — same auth model; whichever installed manual SMS app successfully sends first finalizes the job (optional preferred_provider_slug to pin a provider).
Requires authentication (Bearer session token or API key). Install the corresponding SMS app for your org before calling these endpoints.
Base path
/api/v1/sms-providers/{slug}Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /api/v1/sms-providers/{slug}/send | Send one SMS (JSON body) |
POST | /api/v1/sms-providers/{slug}/bulk-send | Bulk send from CSV (multipart/form-data, field file) |
GET | /api/v1/sms-providers/{slug}/balance | Balance / credits when supported |
GET | /api/v1/sms-providers/{slug}/sender-names | Registered senders when supported |
GET | /api/v1/sms-providers/{slug}/template/csv | Download shared CSV template |
GET | /api/v1/sms-providers/{slug}/progress | Live bulk counters (sent, failed, total) |
Send single message
POST /api/v1/sms-providers/mora-sms/send
Authorization: Bearer <token>
Content-Type: application/json
{
"mobile": "966501234567",
"message": "Your order is ready",
"sender": "MyBrand",
"datetime": ""
}mobile and message are required. sender and datetime are optional; providers apply their own defaults and validation.
Success responses are provider-specific JSON (for example Mora returns code and message fields).
Bulk send (CSV)
- Download the template:
GET /api/v1/sms-providers/{slug}/template/csv - Fill columns:
mobile,message, optionalsender, optionaldatetime - Post the file:
POST /api/v1/sms-providers/taqnyat-sms/bulk-send
Authorization: Bearer <token>
Content-Type: multipart/form-data
file=<your.csv>Response shape (common fields):
{
"total": 100,
"sent": 98,
"failed": 2,
"errors": [{ "mobile": "...", "message": "..." }],
"warnings": [],
"elapsed_ms": 1234
}Balance and sender names
- Balance —
GET .../balance. Some providers return{ "supported": false }when not applicable. - Sender names —
GET .../sender-names. Returnssender_names,count, andsupported.
Supported slugs
Slugs match App Store integration slugs, including at least:
mora-smstaqnyat-sms,msegat-sms,fourjawaly-sms,unifonic-sms,cequens-sms,twilio-sms,infobip-sms,vonage-sms
If {slug} is unknown or the app is not installed for the org, the API returns 400 with an explanatory error.
OpenAPI
Full schemas and the SMS providers tag live in the bundled spec: Swagger JSON or Swagger UI on your Linkit host.