Documentation

Igor SMS Gateway API

Everything you need to send SMS from your own app, and to set up the Android app for BYOD plans.

Getting started

Every request is authenticated with your API key. Find (or regenerate) yours from your dashboard → API Key. Keep it secret — anyone with your key can send messages as you.

The base URL for all endpoints below is:

https://api.sms.igortek.com

Authentication

Pass your API key as a Bearer token on every request:

Authorization: Bearer YOUR_API_KEY

Requests without a valid key, or using a revoked key (e.g. after regenerating it), get a 401 response.

Send an SMS

POST /api/v1/sms/send

curl -X POST https://api.sms.igortek.com/api/v1/sms/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+237670123456",
    "message": "Your verification code is 482913",
    "webhookUrl": "https://your-app.com/hooks/sms"
  }'

Response — 202 Accepted:

{
  "id": "b3f1...",
  "externalId": null,
  "to": "+237670123456",
  "from": "+237690000000",
  "status": "QUEUED",
  "deviceId": "d41a...",
  "createdAt": "2026-09-15T10:00:00"
}

Body fields:

  • to — recipient, E.164 format (e.g. +237670123456). Required.
  • message — up to 1600 characters. Required.
  • deviceId — send from a specific device (BYOD only). Optional.
  • operator — preferred operator (MTN, ORANGE, CAMTEL). Optional.
  • webhookUrl — get a callback on delivery status change. Optional.
  • scheduledAt — ISO-8601 timestamp to send later. Optional.

You can also send an X-Idempotency-Key header to safely retry a request without risking a duplicate send.

Send in batch

POST /api/v1/sms/batch — same shape, wrapped in a messages array.

curl -X POST https://api.sms.igortek.com/api/v1/sms/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      { "to": "+237670000001", "message": "Hello A" },
      { "to": "+237670000002", "message": "Hello B" }
    ]
  }'

Returns an array of the same per-message response as the single-send endpoint.

Check a message's status

GET /api/v1/sms/{id} — look up any message by the id returned when you sent it.

curl https://api.sms.igortek.com/api/v1/sms/b3f1... \
  -H "Authorization: Bearer YOUR_API_KEY"

History & inbox

GET /api/v1/sms/history — paginated list of everything you've sent (?page=0&size=20).

GET /api/v1/sms/inbox — messages received on your device(s) (BYOD), same pagination.

Webhooks

Pass a webhookUrl when sending a message to get a callback whenever its delivery status changes (e.g. queued → sent → delivered, or failed). Your endpoint should respond quickly with a 200 — treat the callback as a notification, not a required step in your own flow.

Errors & rate limits

Errors follow a consistent shape:

{
  "error": "INVALID_KEY",
  "message": "Clé API invalide",
  "status": 401,
  "timestamp": "2026-09-15T10:00:00"
}

Common statuses:

  • 401 — missing or invalid API key.
  • 403 — subscription not active, or quota exhausted (Cloud Pool).
  • 429 — rate limit exceeded, back off and retry.
  • 409 — a business rule conflict (e.g. device quota reached).

Rate limits are per API key. If you're consistently hitting 429, consider batching your sends or reaching out via support about a higher plan.

BYOD app setup

On a BYOD plan, your own Android phone(s) act as the SMS gateway. Once your subscription is active, you can download the app any time from your dashboard — we also email you the link when your plan activates.

  1. Download the .apk on the phone you want to use as a gateway.
  2. If Android blocks the install, allow "Install from unknown sources" for your browser or file manager, then try again.
  3. Open the app, enter the server URL, then the phone number registered on your account.
  4. Request a login code: it arrives by SMS. If the number is not linked to your account yet, you get an email link instead.
  5. Enter the 6-digit code. The app authenticates on its own and gets its own device token — there is no secret left to copy from the dashboard.
  6. Keep the app running — the phone shows up as a device on your Devices page once it's online.

Each plan has a device limit — check Devices to see yours. Need help? Contact support.