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.