Skip to content
All routes operational · 99.97% uptime
Developer Docs · v2 API

Messaging infrastructure that delivers.

Three routing rails, one billing contract, eleven minutes from signup to your first 200 OK.

  • 99.95%platform uptime SLA
  • <800 msavg latency, 190 countries
  • 11 minmedian integration time
POST /v2/messages live sandbox · sgp-1
# 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
latency 742ms
uptime 99.97%
queue depth 1,204
region sgp-1
14.2Bmessages delivered since 2012
190countries with direct Tier-1 routes
240k/speak throughput, Black Friday 2024
18,400+paying customers globally
<1.2sDLR to webhook
9 daysavg enterprise onboarding
Three rails. One billing contract.

Pick the wire that fits your stack.

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.

01 · REST API

JSON over HTTPS

The default for product teams. Predictable resources, idempotency keys, and signed webhooks out of the box.

POST /v2/messages
"channel": "sms"
  • AuthBearer JWT
  • FormatsJSON · form-data
  • IdempotencyIdempotency-Key header
Read REST reference →
02 · SMPP

Short Message Peer-to-Peer

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: ""
  • Versionsv3.4 · v5.0
  • WindowUp to 2,000 TPS / conn
  • EncodingGSM 7 · UCS-2 · binary
Read SMPP guide →
03 · SDKs

Native client libraries

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."
});
  • LanguagesNode · Python · Go
  • MoreJava · PHP · Ruby · .NET
  • MobileSwift · Kotlin
Browse SDKs →
Integrations

12 pre-built CRM connectors — plus a generic webhook for the rest.

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.

  • Hs
    HubSpot
    Marketing · CRM
  • Sf
    Salesforce
    Sales Cloud
  • Zo
    Zoho
    CRM · Campaigns
  • Pd
    Pipedrive
    Sales pipeline
  • In
    Intercom
    Conversational support
  • Zd
    Zendesk
    Support · Ticketing
  • Fd
    Freshdesk
    Support helpdesk
  • Kl
    Klaviyo
    Lifecycle · Ecom
  • Ac
    ActiveCampaign
    Automation
  • Bv
    Brevo
    Marketing · Transactional
  • Tc
    Twilio Compat
    Drop-in adapter
  • Wh
    Generic Webhook
    Anything with HTTPS
11 min median install time per connector
32 pre-approved templates for GDPR, TCPA, TRAI DLT, Ofcom
2-way inbound replies mapped back to contact timelines
See the connector cookbook →
webhook · POST /dlr HTTP 200 · 38ms
event "message.delivered"
message_id "msg_8f3c2a91e7"
recipient "+1415•••0182"
carrier "Verizon US · Tier-1"
sent_at 2024-11-19T08:14:02.114Z
delivered_at 2024-11-19T08:14:02.938Z
latency_ms 824
signature "sha256=9f3c…2a91"
Receipt acknowledged in 38ms · p99 across 14.2B events
Delivery receipts

Receipts that arrive before the user puts the phone down.

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.

  • <1.2s

    Signed payloads, verifiable at the edge

    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.

  • Retry semantics you can reason about

    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.

  • 24h

    Idempotency keys, replay-safe by design

    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.

Inspect the full DLR schema →
Developer FAQ

Six answers to the questions our solutions engineers field daily.

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.

What are the API rate limits on a trial 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.

How do I provision a sandbox key without a sales call?

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.

How long does sender ID registration take in each region?

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.

Do you handle TCPA and GDPR scrubbing before send?

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.

What is the webhook retry policy if my endpoint is down?

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.

What does pricing actually look like per region?

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.

Sandbox access · no credit card

Ship your first message in the next 11 minutes.

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.

  • 100 SMS credits — enough for a full E2E OTP flow
  • Sandbox carriers in 9 regions, no quota surprises
  • Production upgrade path reviewed in under 4 hours

No credit card. ISO 27001 certified since 2017. SOC 2 Type II audited annually since 2020.