Skip to content

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.