Everything you need to run SMS in production
One clean API, your own phones, and the operational depth of a real platform.
Messaging
Send SMS via REST API
One endpoint, JSON in, job id out. Long messages are split and reassembled automatically; send up to 1,600 characters per message. POST /api/sms/send → 202 Accepted + job_… id.
Two-way messaging
Receive replies, not just send. Incoming SMS are threaded into conversations, delivered to your inbox, and pushed to your webhook as sms:received. Auto-route replies back to the right device.
Delivery reports
Track what actually landed — Pending → Assigned → Sent → Delivered — per message, per SIM, per carrier. Real delivery state, not just "we accepted it."
Bulk & priority sending
Queue many messages and let the engine fan them out across your devices. Priority levels (0–10) push time-sensitive OTPs ahead of bulk traffic.
Idempotency keys
Pass an idempotencyKey and a retried request never double-sends. Critical for OTPs and webhook-driven sends.
Devices & routing
Multi-device support
Connect as many phones as you have slots for. The engine load-balances sends across all of them.
Multi-SIM routing
Dual- and multi-SIM phones report every SIM. Enable, disable, and target individual SIMs from the dashboard — the server stays authoritative.
Per-device throttling
Each device has an hourly send limit (default 200/hr) so you stay under carrier abuse thresholds and keep your numbers un-flagged.
Auto-failover
A phone goes offline mid-send? In-flight jobs are unrouted and reassigned to a healthy device. No single phone is a single point of failure.
Retry + dead-letter queue
Failed sends retry across available devices with backoff. Jobs that exhaust every option land in a dead-letter queue you can inspect — nothing silently disappears.
Device health monitoring
Battery, signal, network type, pending-job count, and last-heartbeat for every phone — live in the dashboard.
Integration
Webhooks
Subscribe to sms:sent, sms:delivered, sms:failed, and sms:received. Deliveries retry with exponential backoff and jitter; failing endpoints auto-suspend so a dead URL does not back up your queue.
REST API + SDK
A clean, predictable API with a .NET reference SDK and copy-paste samples in cURL, Node.js, Python, PHP, C#, and Go.
API client keys with zero-downtime rotation
Each API client carries two independent keys (Key 1 / Key 2). Rotate one while the other keeps serving — no downtime, no scramble.
Operations & trust
Per-tenant database isolation
Every account gets its own database. Your message content is never in a shared table with another customer's. (Unique in this category.)
Observability built in
Prometheus metrics, health checks, and structured logging with automatic PII masking — production telemetry out of the box.
Real-time dashboard
Devices, jobs, and inboxes update live over the wire (SignalR). Watch a send go out and a reply come back without refreshing.
Fully managed
No servers to run, nothing to deploy. We operate the backend, push, routing, dashboard, and your isolated database — you bring phones and SIMs and start sending.
Scheduled backups
Automated database backups keep your job history and audit trail safe.
Roadmap
We don't pretend parity we don't have. Clearly labelled — not yet shipped:
- RoadmapMMS — send and receive media.
- RoadmapDedicated OTP send/verify endpoint — managed code generation, rate-limiting, and verification.
- RoadmapMore SDKs & a CLI.
- RoadmapAI-agent / MCP integration — drive SMSKit from Claude Code, Cursor, and agents.
- RoadmapGoogle Play listing — alongside the direct APK.
Start sending in five minutes.
Pair a phone, grab an API key, send your first SMS — free.