JSON over HTTPS
The default for product teams. Predictable resources, idempotency keys, and signed webhooks out of the box.
POST /v2/messages
"channel": "sms"
Read REST reference →
Three routing rails, one billing contract, eleven minutes from signup to your first 200 OK.
# Send your first SMS in 3 lines — copy, paste, ship.
curl -X POST https://api.bulksmsservices.net/v2/messages \
-H "Authorization: Bearer $BSMS_LIVE_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "sms",
"to": "+14155550182",
"from": "BulkSMS",
"text": "Your verification code is 481-209.",
"callback_url": "https://hook.example.com/dlr"
}'
# > 202 Accepted · request_id=req_8K2Q7M4N0P
# > DLR delivered to webhook in 0.9s
REST for product teams, SMPP for telco-grade traffic, native SDKs for the languages your team already ships in. Same auth, same pricing, same deliverability SLA — no fragmented contracts.
The default for product teams. Predictable resources, idempotency keys, and signed webhooks out of the box.
POST /v2/messages
"channel": "sms"
Read REST reference →
For telcos, aggregators, and high-volume alert engines that bind a long-lived TCP session with bind_transceiver.
bind_transceiver
system_id: bsms_xyz
password: ********
system_type: ""
Read SMPP guide →
Thin, typed wrappers that handle retries, pagination, and webhook signature verification for you. Twelve languages today.
// Node · 4 lines, 1 import
const b = require("@bulksms/node");
await b.messages.send({
to: "+14155550182",
text: "Hi from BSMS."
});
Browse SDKs →
Drop our app into the CRM your sales, support, and lifecycle teams already live in. Workflow triggers, contact-property mapping, and DLR callbacks are pre-wired — no middleware server to babysit.
Every message you send pushes a signed DLR to your webhook in under 1.2 seconds — faster than a human can reach for their pocket.
Each receipt carries an HMAC-SHA256 signature in the X-BulkSMS-Signature header. Verify it once in your ingress controller and reject forged events without touching application code.
Six exponential-backoff retries over 24 hours with jitter, then a final dead-letter POST to your backup endpoint. We never drop a receipt — we surface the queue depth on the dashboard if you stop acknowledging.
Every payload includes a stable event_id. Store it once and our replay endpoint can re-deliver the last 24 hours of receipts on demand — no race conditions, no duplicate webhook handlers.
Search-engine-shaped, not marketing-shaped. If your stack is already sketched on a whiteboard, the answers below are the ones you need before opening a sandbox account.
Trial keys are throttled to 1 message per second with a burst of 10, capped at the 100-credit balance. Production accounts ship with a default ceiling of 250 MPS per project — bumpable to 5,000 MPS through the dashboard, or higher via a written SLA with your account team. The 240,000 MPS Black Friday record proves the headroom on the back end; the front-door gate is what your billing tier unlocks.
Hit the trial CTA at the bottom of this page. You get a sandbox key, 100 SMS credits, and access to our mocked carriers in 11 seconds. The sandbox simulates delivery latency, DLR callbacks, and the six retry states — but no real messages leave our network. Upgrade to live keys with one click once compliance is signed.
Sender ID timelines are not ours to negotiate — they're regulated. The US 10DLC path is 5–10 business days after TCR brand registration; India DLT is 24–72 hours once your entity template is approved; the EU and UK alphanumeric IDs are same-day. We ship pre-approved templates in 32 regions and your account manager pushes the registration from their side.
Yes — our in-house compliance team maintains scrubbing against the FCC Reassigned Numbers Database (US), the UK TPS / CTPS registers, and the EU consent registry. Set consent: "explicit" in your payload and we block, log, and report suppressed numbers before they reach the carrier. The 41,000+ marketers using our ROI calculator got here without a single TCPA class action — we'd like to keep it that way.
Six attempts over 24 hours — at t+0, +1m, +5m, +30m, +3h, +12h, +24h — using exponential backoff with ±20% jitter. A non-2xx response counts as a failure; a timeout past 10 seconds counts as a failure. After the sixth retry we POST the payload to the dead-letter endpoint you configured, then surface the missed batch on your dashboard with a one-click replay button.
The US route is $0.0042/SMS, typically 18–30% below mid-market averages. India DLT sits at ₹0.14, UK at £0.022, and the WhatsApp Business templates start at $0.012 per conversation. There are no platform fees, no monthly minimums, and no per-seat charges on the operations console — you pay for delivered messages, that's it.
A trial key, 100 SMS credits, and the full REST + SMPP reference. The median onboarding time across our last 8 quarters is 9 days for enterprise and 11 minutes for developers who self-serve.
No credit card. ISO 27001 certified since 2017. SOC 2 Type II audited annually since 2020.