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.

Archiving & history

Import existing history

Back up the inbox and sent messages already on the phone — including business texts sent from the phone's native app, which no live capture can ever see after the fact.

Unified two-way timeline

Live inbound, SMSKit-sent, and imported messages merge per contact, each tagged with its origin — so you always know what SMSKit sent versus what the phone sent.

Bulk export (NDJSON / CSV)

Export your whole timeline for compliance, backup, or migration — newline-delimited JSON by default, CSV on request, filtered by date range.

Pull API

GET /api/messages and /api/archive/export expose the same data programmatically behind your API key — paginated and filterable by peer, direction, origin, and date.

Names, not just numbers

A contacts store resolves peer numbers to names across the inbox, archive, and API — uploaded in bulk from the dashboard or API, or imported from the phone.

Retention & deletion

Archived data follows your plan's retention window and is deletable per-record or in bulk — your data, in your isolated account, under your control.

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.

Start sending in five minutes.

Pair a phone, grab an API key, send your first SMS — free.