Key Takeaways
- express sms gateway with android device notifications: enqueue the send, persist the message id, page last-seen — do not await radio in the HTTP handler.
- Do not rewrite /blog/android-sms-gateway-api. This spoke is Express worker shape.
- OTP and promo/order copy must not share one device pool.
- Priced by devices and SMS send volume. You use your own phone and operator SMS credit.
- Free 300 SMS lifetime is a canary, not a notification platform.
- Injectable gateway client so tests never hit a live SIM.
Express notifications through an android sms gateway fail when the route waits on the SIM. API hub · Developer Center · JSON example.
Priced by devices and SMS send volume. You use your own phone and operator SMS credit.
If your login handler
awaits the send, you are not integrating a gateway. You are renting radio latency to every signup.
Do not send inside the request
Bull/Bee/your queue. Timeouts on fetch. Conceptual shape only — live path is POST /api/v1/messages:
await fetch(`${process.env.SMS_GATEWAY_URL}/api/v1/messages`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SMS_GATEWAY_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': job.id,
},
body: JSON.stringify({ to: [msisdn], text }),
signal: AbortSignal.timeout(10_000),
});Host and fields: docs. No invented /send-sms.
What Express owns vs the phone
| Layer | Express | Android |
|---|---|---|
| Accept job | Worker + idempotency | — |
| Radio | Queue depth alert | Paired, charged, funded SIM |
| OTP body | Hash in auth DB | Sends the SMS |
| Order alert | Order id as idempotency | Same SIM if you allow it — usually don't mix with OTP |
OTP vs order alerts
Isolate auth. OTP · transactional SMS.
Accept is not delivered
Fast 2xx, HMAC, async job. Webhooks.
Keys stay in env
Keys in env. Never the frontend.
API hub, not a second OpenAPI
Nest sibling if you use that stack: Nest notifications. Trust docs over this sample.
Checklist
- Worker path, not the login route.
- Idempotency-Key per attempt.
- Message id on the order/OTP row.
- Last-seen alert with an owner.
- OTP devices not shared with promo.
- Staff canary before production.
Next steps
Pair via setup, then devices + volume.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances
- Android SMS gateway product guideDefinition, product, and how to buy
- download the Android gateway appGet the APK





