Linkit

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

MethodPathPurpose
POST/api/v1/sms-providers/{slug}/sendSend one SMS (JSON body)
POST/api/v1/sms-providers/{slug}/bulk-sendBulk send from CSV (multipart/form-data, field file)
GET/api/v1/sms-providers/{slug}/balanceBalance / credits when supported
GET/api/v1/sms-providers/{slug}/sender-namesRegistered senders when supported
GET/api/v1/sms-providers/{slug}/template/csvDownload shared CSV template
GET/api/v1/sms-providers/{slug}/progressLive 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)

  1. Download the template: GET /api/v1/sms-providers/{slug}/template/csv
  2. Fill columns: mobile, message, optional sender, optional datetime
  3. 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

  • BalanceGET .../balance. Some providers return { "supported": false } when not applicable.
  • Sender namesGET .../sender-names. Returns sender_names, count, and supported.

Supported slugs

Slugs match App Store integration slugs, including at least:

  • mora-sms
  • taqnyat-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.