Home/Offers/Telecom & Communications/SMS Delivery Optimisation API

Telecom & Communications

SMS Delivery Optimisation API

A one-time code that arrives four minutes late has failed, even though the delivery receipt says it succeeded.

  • CPaaS providers
  • Messaging platforms
  • Fintech and banking apps
  • Marketplaces
  • Notification infrastructure teams

What your customers would see

example interface
Mockup of the Messaging Ops interfacemessaging.yourplatform.com/routesPlatformOverviewExploreAlertsAPI keysUsageSettingsMessaging OpsAccountSENT 24H3.8M▲ +4%DELIVERED IN WINDOW96.1%▲ +1.4ptsSILENT FAILURES0.9%▼ −0.4ptsP95 LATENCY16.8s▼ −4.2sDelivery within 20s window by route — Nigeriacurrent periodagg_a direct967‰agg_c direct941‰agg_d direct902‰agg_b wholesale883‰agg_e wholesale811‰agg_f grey604‰

MockupIllustrative mockup of the interface we would build. Figures shown are examples, not results from a live deployment.

The problem this solves

High-volume SMS is a routing business pretending to be an API call. Behind a single send sits a chain of aggregators and carriers whose quality varies by destination, time of day, sender type and content. The same route that performs well to one country collapses on another, and the receipts that come back are inconsistent enough that measuring it properly is real work.

The failure modes are specific and expensive. Codes that arrive after the verification window has expired. Messages silently filtered by a carrier for looking like spam. Routes that return a delivered receipt having never delivered anything. Sender identifiers blocked in a market without notice. Each shows up as a user who could not sign in, and the support ticket rarely names the route.

Measuring route quality is tractable because you already generate the data: every send produces a receipt, a latency and sometimes a downstream user action that proves the message actually arrived. Turning that exhaust into per-route, per-destination quality estimates is the whole product, and it is the thing most messaging stacks never get around to building.

Who buys this

CPaaS providers, Messaging platforms, Fintech and banking apps, Marketplaces, Notification infrastructure teams

What the API returns

What comes back

  • Route quality scores by destination, carrier, sender type and hour
  • Delivery probability and expected latency prediction before a send
  • Route recommendations with the expected cost and latency trade-off stated
  • Fallback sequencing: when to retry, when to switch route, when to move channel
  • Silent-failure detection where receipts claim delivery but behaviour says otherwise
  • Sender identifier health by market, including blocked and throttled registrations
  • Content-pattern flags for messages likely to be filtered
  • Per-provider reconciliation so receipts from different aggregators are comparable

Endpoints

MethodPathReturns
POST/v1/route/recommendRecommend a route for a pending send
POST/v1/predictPredicted delivery probability and latency for a send
POST/v1/receiptsIngest delivery receipts and latencies
GET/v1/routes/qualityRoute quality by destination and segment
GET/v1/senders/{id}/healthSender identifier health by market
POST/v1/fallback/planFallback sequence for a critical message

Request and response

illustrative

Request

{
  "destination": "+2348031234567",
  "message_class": "otp",
  "sender_id": "YOURAPP",
  "max_latency_s": 20,
  "candidate_routes": ["agg_a_direct", "agg_b_wholesale", "agg_c_direct"],
  "optimise_for": "delivery_within_window"
}

Response

{
  "destination_country": "NG",
  "message_class": "otp",
  "evaluated_at": "2026-10-22T13:22:40Z",
  "recommendation": {
    "route": "agg_a_direct",
    "predicted_delivery_probability": 0.967,
    "predicted_latency_p50_s": 4.1,
    "predicted_latency_p95_s": 16.8,
    "relative_cost_index": 1.42
  },
  "alternatives": [
    { "route": "agg_b_wholesale", "predicted_delivery_probability": 0.883,
      "predicted_latency_p95_s": 61.0, "relative_cost_index": 1.00,
      "note": "Cheaper, but p95 exceeds your 20s window" }
  ],
  "sender_health": {
    "sender_id": "YOURAPP", "status": "registered", "market": "NG",
    "throttle_observed": false
  },
  "fallback_plan": [
    { "step": 1, "action": "send", "route": "agg_a_direct", "wait_s": 18 },
    { "step": 2, "action": "resend", "route": "agg_c_direct", "wait_s": 20 },
    { "step": 3, "action": "switch_channel", "channel": "voice_otp" }
  ],
  "warnings": [
    "Silent-failure rate on agg_b_wholesale to NG is 3.4% — receipts report delivery without corresponding user action"
  ]
}

Where the data comes from

Your delivery receiptsStatus, timestamps and error codes from every aggregator you use — the primary input, and already flowing through your stack
Your downstream conversion eventsWhether a one-time code was actually entered, which is the only reliable proof a message arrived
Aggregator route metadataRoute type, declared carrier connections and pricing, from your provider agreements
Sender registration recordsRegistered sender identifiers per market, since unregistered senders are filtered in a growing number of countries
Numbering and carrier reference dataTo attribute a destination to the right carrier before a route is chosen
Regulatory requirements per marketContent, sender and consent rules that differ by country and constrain what may be sent at all
On data licensing. Being allowed to read a dataset does not automatically mean you may redistribute it, resell it through an API, or train a model on it. Before any build starts we check the licence, terms and derived-data rules of every source, and we design around the ones that do not permit your intended use. Where a commercial licence is required, that cost is identified during discovery rather than discovered later.

The intelligence layer

The difference between a demo and a service is mostly in this section. These are the parts that keep the answer trustworthy once real traffic is hitting it.

  • Quality estimation segmented by destination, carrier, route, sender type, message class and hour — aggregate route quality hides exactly the failures that matter
  • Receipt normalisation across providers, because error taxonomies differ and raw codes are not comparable
  • Silent-failure detection by comparing claimed delivery against downstream user action, which is the only way to catch routes that lie
  • Latency modelled as a distribution rather than a mean, since a one-time code is governed by the tail not the average
  • Delivery prediction with cost and latency both exposed, so route selection remains your commercial decision
  • Sender health tracking per market, with throttling inferred from latency and failure pattern changes
  • Continuous recalibration, because route quality changes week to week as aggregators reshuffle carrier connections
  • Monitoring for route degradation with alerting, since a quietly failing route is the most expensive thing in a messaging stack

What it changes for the business

Verification completion

One-time codes that arrive inside the window convert; ones that do not become support tickets.

Routing spend

Quality data lets cheaper routes be used where they genuinely perform and avoided where they do not.

Earlier degradation detection

Route problems surface as alerts rather than as a rise in failed logins nobody can explain.

Provider negotiation

Measured per-destination quality gives you something concrete to take into an aggregator conversation.

How it fits into your product

How it embeds

  • Called synchronously before a send, or consulted periodically if you prefer static routing with scheduled review
  • Receipt ingestion by batch or stream from your existing delivery webhook
  • Fallback plans returned as an explicit sequence your sending service can execute
  • Deployment inside your own infrastructure, which is normal since message content and destinations rarely leave it
  • Route and provider configuration kept in your control — the API recommends, your service decides
  • Alerting into your existing monitoring for route degradation and sender blocking

Included in every build

  • Authentication, scoped API keys and per-customer rate limiting
  • Input validation with predictable, documented error responses
  • Versioned endpoints so your integration never breaks without notice
  • Request and response logging for audit and dispute resolution
  • Latency, error-rate and usage monitoring with alerting
  • OpenAPI specification, sandbox environment and client examples
  • Backups, failover design and a documented recovery procedure
  • An agreed support arrangement once the service is live

How we would build it

about 12 weeks
1

Discovery and data review

Weeks 1–2

We agree the exact question the API answers, review the sources you already hold, check what has to be licensed, and write down the response contract your developers will code against.

2

Architecture and prototype

Weeks 3–4

You get a written architecture plus a working endpoint on real data — narrow, but genuinely callable — so integration can be tested against something concrete rather than a document.

3

Production build

Weeks 5–10

Pipelines, models, storage, authentication, rate limiting, logging, tests and documentation. Security and observability are part of this phase, not a later one.

4

Integration and handover

Weeks 11–12

We support your engineers through their integration, run load tests at your expected volume, and agree how the service is monitored and supported once it is live.

Commercial models

There is no fixed price list, because the cost is driven by data complexity, integration count, model requirements, request volume and the support level you need. Scope is agreed in writing before development starts.

Fixed-scope prototype

A defined slice of the service, built and priced as one piece of work. The usual first step when the business case needs proving internally.

Fixed-price build

An agreed scope against a written architecture, delivered for an agreed price. Best when the requirements are already clear.

Build then retainer

We build the service, then operate and improve it under a monthly agreement covering monitoring, updates and model maintenance.

White-label product

The service runs under your brand, your domain and your pricing, with MLPivot invisible to your customers.

Questions buyers ask

Do you resell routes or messaging capacity?

No. This is an analytics and decision layer over the providers you already have. We have no commercial interest in which route is chosen, which is precisely why the recommendation is worth something. If you want a messaging provider, this is not that.

How much traffic is needed before predictions are useful?

Enough volume per destination and route to estimate quality with confidence — which for a long-tail country might mean weeks. The API returns wide intervals and says the sample is thin rather than producing a confident number from forty messages. For low-volume destinations, honest reporting of uncertainty is more useful than a prediction.

Can you guarantee delivery rates?

No, and nobody honestly can. Delivery depends on carriers, regulatory filtering, handset state and whether the recipient's phone is switched on. What this does is estimate probability and latency from your observed history and route around measurable degradation. A guaranteed delivery rate is a commercial promise, not a technical one.

Why not just trust delivery receipts?

Because some routes report delivery for messages that never arrived. It is a known problem in wholesale SMS and it is invisible if receipts are your only measure. Comparing claimed delivery against downstream user action is how you find it, which is why the conversion event is part of the data model rather than an optional extra.

What about consent and content rules?

They are real constraints and they differ sharply by market — sender registration requirements, content restrictions, time-of-day limits and consent obligations. We build the market rules you must comply with into the routing layer, but whether a given campaign has a lawful basis to send is your decision and your legal team's, not something an optimiser should decide.

Want this built for your platform?

Tell us what your product does today and what you want another system to be able to ask it. We will come back with an approach, a scope and a price.