Skip to content

How SMSKit works

Your code calls our API. We wake your phone. Your SIM sends the SMS. You get it all back.

1

Your app

POST /api/v1/sms/send

A clean REST API and your API key

2

SMSKit gateway

Queue, route, retry

Picks the best device and SIM

3

Your Android phone

Native SmsManager

Woken by a high-priority push

4

Delivered

Over your own SIM

From the number your customers know

Delivery reports flow back along the same path, from your Android phone to the SMSKit gateway to your webhook.

  1. 1

    Pair a phone

    Public app downloads are currently unavailable. Existing installations can pair to an account through Devices in the dashboard.

  2. 2

    Call the API

    From your backend, POST /api/v1/sms/send with a recipient and a message, authenticated by your API key. We queue the message and pick the best device and SIM.

  3. 3

    We wake your phone

    A high-priority push (FCM) wakes the app even if it's idle. It pulls the job and sends the SMS through Android's native SmsManager over your real SIM.

  4. 4

    Track everything

    The phone reports back: sent, delivered, or failed. See it in the dashboard, poll the job-status endpoint, and receive webhooks. Replies come back as sms:received.

Why send from a real phone?

Because the message comes from a number you own. An SMS from a physical SIM arrives as a normal text from a real local number. It goes out from your own SIM under your carrier's normal terms. SMSKit adds no per-message fee, and carrier rules and limits still apply.

This is exactly why SMSKit started: aggregator OTP deliverability was unacceptable, and a local SIM fixed it. More on the origin in About.

Ready to try it? Follow the guide to send SMS from your own number, from pairing to the delivery webhook.

What makes it reliable

Retry and dead-letter

A failed send retries across your other phones; truly stuck jobs go to a dead-letter queue you can see, never silently dropped.

Auto-failover

A phone drops offline mid-send and its jobs move to a healthy device automatically.

Per-device throttling

An hourly limit per device controls its sending rate. Carrier restrictions can still apply.

Idempotency

Retried API calls with the same key return the original job while it is retained. Delivery retries can still produce duplicate SMS.

Observability

Prometheus metrics, health checks, and PII-masked logs, so you (and we) can see what is happening.

What you'll need

  • One or more Android phones (8.0 / API 26+). An older or spare phone you already own works, if it runs Android 8.0 or newer.
  • A working SIM in each, on a normal carrier plan.
  • The phones kept on and online (Wi-Fi or mobile data). For a dedicated gateway, keep each phone connected to a suitable charger, follow the manufacturer's charging guidance, keep it cool and ventilated, and enable a battery charge limit if available. Stop using a phone with a swollen or damaged battery.

Battery tip. Android aggressively sleeps background apps. The app guides you to exempt it from battery optimization; see the device guidance for existing installations.

Who runs what

You bring the phones and SIMs. We run everything else. That covers the API, the routing engine, push wakeups and the dashboard. There are no servers to set up and nothing to deploy. Sign up, pair a phone, send.

Access to your data

Access to your data is checked on every request. Logs mask phone numbers and message content.

Explore SMSKit

Read the documentation or use your existing account. Public app downloads are currently unavailable.