BroadNet
The JournalEngineering
Engineering

An enterprise decision matrix for SMS integration, and the case for running both protocols.

REST API is easy, stateless, webhook-driven. SMPP is throughput-dense, low-latency, binary-efficient. A decision matrix and the case for running both.

BroadNet Engineering
11 min read
Engineering · Issue 43
11 min read

ost enterprise messaging integrations start with a single technical question: REST API or SMPP? The wrong answer is not catastrophic — both can be made to work — but the right answer saves months of integration time, sometimes orders of magnitude of operating cost, and the kind of subtle latency problem that only shows up under load. This is the long version of the decision conversation: what each protocol is actually optimised for, the four dimensions that should drive the choice, and the case for running both in the same enterprise stack.

Two protocols, two different design centres

A REST SMS API is a stateless HTTPS interface. You POST a JSON payload to a URL, the server returns a status code, the connection can close. Authentication is a bearer token or signed request; payloads are JSON; receipts come back via webhooks the customer hosts. It is the design language modern application developers already speak — request, response, retry on 5xx, look at the headers.

SMPP 3.4 is a stateful binary protocol over a persistent TCP socket. The client binds once with system-ID, password, system-type, address-range, and bind-type (transmitter, receiver, transceiver). Messages flow as PDUs (submit_sm to send, deliver_sm for incoming and DLR) in both directions over the same socket, identified by sequence numbers. Keepalives (enquire_link) maintain the session; windowing governs concurrency. The session can stay up for days.

That architectural difference — short-lived stateless HTTP versus long-lived stateful TCP — drives every practical trade-off below.

The four dimensions that decide it

1. Throughput and latency

HTTPS pays TCP handshake plus TLS handshake on every connection unless the client pools and reuses aggressively. Even with aggressive pooling, the per-message overhead is meaningful at high TPS, even though BroadNet sets no fixed per-account rate limit on REST (see API rate limits). SMPP pays the handshake exactly once per bind and then streams PDUs without per-message connection cost; sustaining hundreds to low thousands of TPS on a single bind is routine, limited by the negotiated window size and the destination SMSC rather than by connection setup. For latency-critical traffic, SMPP also removes the TLS handshake from the critical path: an OTP submitted over a warm SMPP bind can be on the destination operator's SMSC in under 50ms; the same OTP submitted over HTTPS pays the handshake every time unless the connection is reused, which application code often does not do correctly.

2. Delivery receipts

On SMPP, delivery receipts arrive as deliver_sm PDUs on the same bind, in-band, in real time. The application reads them off the socket; no public infrastructure required. On HTTPS, DLRs are webhook callbacks that the customer must receive on a publicly reachable, highly available HTTPS endpoint, then reconcile against submitted messages. That endpoint is a real operational commitment: certificate management, retry handling for transient unavailability, replay-attack protection (verify each callback: a shared-secret HMAC signature with a timestamp if your provider signs callbacks, or IP allow-listing if it does not — see HMAC-SHA256 DLR signing), and idempotent processing because providers will deliver a webhook more than once on retry.

3. Operational surface

A REST integration is something a backend developer ships in an afternoon and largely forgets. The HTTP client library handles retries, the framework handles the webhook endpoint, observability is whatever the application already has. An SMPP integration is infrastructure: the client must handle bind lifecycle (bind, rebind on disconnect, exponential backoff, never thundering-herd a downed SMSC), enquire_link keepalives at a regular cadence with timeout detection, sequence-number tracking for PDU correlation, window management for outbound submit_sm, graceful unbind on shutdown, and ideally multi-bind failover for high availability. That is ongoing engineering ownership, not a one-time integration. Many teams that qualify for SMPP on technical criteria are better served by HTTPS purely because they do not want a persistent telco-protocol stack in their service inventory.

4. Developer ergonomics and idempotency

Many modern REST APIs ship Idempotency-Key headers, standardised pagination, OpenAPI-typed clients in every major language, signed-webhook documentation, sandbox environments, and developer dashboards. SMPP has none of that as a protocol — it is a binary specification from the 1990s with a richer telco semantic but a sparser developer experience. Idempotency on SMPP exists only as a customer-defined convention (typically a unique message reference in user-data); replay protection is the application's job; sandbox environments must be built by the provider rather than coming with the protocol. Not every REST provider ships all of the above either: BroadNet's REST API takes no idempotency key — safe retries rely on the message ID it returns and a status check before any resend (see idempotency & safe retries) — and test access runs on the production API with test credentials rather than in a separate sandbox.

A simple decision matrix

If your situation is…Use this
Traffic below several hundred messages per second, app-shaped workload, small teamREST API
Several hundred messages per second sustained, or persistent binds needed; mixed transactional and bulkSMPP 3.4 (or both)
Latency-critical OTP at any volumeSMPP for OTP; REST for everything else
You are an aggregator routing for downstream clientsSMPP, period
You have existing SMS infrastructure built on SMPPKeep SMPP; do not migrate without reason
You want fast time-to-first-message and have no ops teamREST API
You need strong webhook security with signed callbacksREST API; verify callbacks on receipt (HMAC if your provider signs them, or IP allow-listing)
You need to keep persistent two-way conversations openSMPP, transceiver bind

When to run both

The decision is not always either/or. A common enterprise pattern: SMPP for the volume-and-latency-critical workloads (OTP, bulk campaigns, marketing surges), REST for everything else (low-volume internal tools, ad-hoc operational alerts, integrations with SaaS products that already speak HTTP). The cost per message is identical on a properly designed provider network, so running both does not penalise you on unit economics — and giving developers the option to use REST for the small jobs they own while operations runs SMPP for the large jobs they own respects the team-shaped reality of most enterprises.

The trap teams fall into: REST at SMPP-scale

The most common mistake is choosing REST because it is easier and then scaling the workload past what REST can comfortably carry. The symptoms appear gradually: latency p95 creeping up, occasional timeouts during traffic spikes, the application's outbound connection pool exhausted, retries cascading into duplicate sends. The fix is not 'tune the HTTP client harder' — once you sustain several hundred messages per second, the right answer is to migrate the high-volume path to SMPP and keep REST for everything else. Migrate before the workload makes it urgent, not during the outage.

The trap on the other side: SMPP without operating it

The mirror-image mistake is choosing SMPP for the throughput case and then operating it casually — single bind, no rebind logic, no keepalive monitoring, no multi-region failover. The first SMSC restart, the first network blip, the first provider maintenance window produces a silent outage because the bind died and nobody is watching. SMPP repays operational discipline; without it, REST is materially safer.

Security and modern auth

REST integrations should be bearer-token or OAuth2 client-credentials with token rotation, transport over TLS 1.3, and verified webhook callbacks for inbound DLRs (a shared-secret HMAC signature if your provider signs callbacks, or IP allow-listing). SMPP should be over TLS 1.3 — plain-text SMPP on the public internet is not acceptable for any modern A2P deployment regardless of what the spec allows — with system-ID and password rotated regularly, and source-IP allow-listing at the provider. Neither protocol exempts the customer from baseline security hygiene; both can be operated to enterprise standard.

BroadNet exposes the same routing, deliverability engine, and sender-ID compliance on both SMS API and SMPP 3.4 — protocol choice changes the integration shape, not the message quality. Test credentials on the production endpoint, an official TypeScript SDK and an OpenAPI 3.1 spec are available for the REST path; SMPP credentials with TLS 1.3 endpoints and dual-region failover for the binary path.

How to actually decide, in three questions

  1. What is the realistic peak TPS for the workload over the next 24 months, not the comfortable average? REST carries app-shaped traffic comfortably (BroadNet sets no fixed per-account rate limit); plan for SMPP when you sustain several hundred messages per second or need persistent binds; near that line, decide on the latency criticality and the team's appetite for persistent-protocol operations.
  2. Does your team want to own a persistent TCP stateful client with bind lifecycle, keepalives, and reconnect logic? An honest 'no' is a perfectly valid answer and points to REST.
  3. Is there one latency-critical workload (OTP, real-time alerts) and many casual ones? The two-protocol pattern fits — SMPP for the critical, REST for the rest.

Concrete example — a typical fintech profile

Consider a regional fintech with three messaging workloads: OTP for login and transaction confirmation (high-volume, latency-critical, transactional), customer-service inbound and outbound (low-volume, conversational, two-way), and marketing campaigns (occasional bursts, batch-shaped). The pragmatic architecture: SMPP transceiver bind for OTP (one bind primary, one bind backup in a different region, automatic failover); REST API for customer-service (a webhook-driven service makes the inbound side trivial); SMPP transmitter for marketing campaigns when they happen (bursts are exactly the case where the per-message handshake cost on REST hurts). Three integration patterns, two protocols, all on the same provider — and unit pricing identical across them on a sensible provider network. The team owns one persistent stack (the SMPP client) and reuses standard HTTP for everything else.

Migration path between the two

Teams that start on REST and outgrow it do not need to migrate everything in one project. The well-trodden path: introduce SMPP for the one workload that needs it most (typically OTP), prove out the bind lifecycle and reconnect logic in a low-stakes environment, run SMPP and REST in parallel for one to two months while monitoring delivery quality and latency on both, then migrate additional workloads onto SMPP as the team's confidence with the protocol grows. Going the other direction (SMPP to REST) is rarer and almost always a sign of a team that wants to retire telco-protocol operational ownership in favour of HTTP simplicity — also a valid choice, also doable workload-by-workload.

For the full side-by-side comparison, see SMPP vs HTTP (REST) API for SMS.

Was this useful?

How we write and review content

Written by

BroadNet Engineering

Engineering operates the wire: SMPP binds, SS7 stacks, routing engines, the boring infrastructure that makes one-billion-message months possible. They write here when something is worth writing down.

The Journal, by email

One essay a month. Nothing else.

Subscribe and we'll send the next piece — engineering, regulation, or industry — the day it ships. No drip campaigns, no product pitches, no third-party sharing. Unsubscribe in one click.

We send one email a month. Unsubscribe anytime. See our privacy policy.

What you'll get
  • Long-form, not link bait
    Six to eleven minutes of focused writing on a single topic.
  • Written by operators
    Engineers, regulatory leads, and product writing in-house.
  • Region-aware
    MENA-grounded view on regulators, operators, and channel mix.
  • Once a month
    No drip campaign. One essay when there is one to share.
Stop reading. Start shipping.

Most of what we write we learned in production.

If this piece made you nod, we should probably talk. Bring the use case, the volumes, the markets — we'll come back with routing, pricing, and a reference customer you can call.

$ curl -X POST https://api.broadnet.me/sms/sendSms