api.textreach.online
A rack-mounted gateway with a phone docked into it and green data streams flowing between them, linked to floating integration chips

Build custom player engagement with our iGaming SMS API.

Powerful RESTful endpoints, native CRM plugins, and unparalleled developer support for custom workflows.

One request

From a key to a delivered message

No SDK required and no onboarding call before you can try it. Provision a sandbox key, post one body, and read the same response shape production returns.

  • Idempotency key honoured for twenty four hours
  • Route and estimated accept time on the response
  • Identical schema in sandbox and production
curl https://api.textreach.online/v2/messages \
  -H "Authorization: Bearer $TEXTREACH_KEY" \
  -H "Idempotency-Key: dep-4471-a" \
  -d sender_id="LUXPLAY" \
  -d to="+35679xxxxxx" \
  -d template="deposit_bonus_v3" \
  -d locale="en-MT"

202 accepted

{
  "id": "msg_01J9Q4TX",
  "state": "queued",
  "route": "MT-direct-01",
  "segments": 1,
  "eta_ms": 190
}

Sandbox keys accept the same payloads and return simulated carrier codes, including the failures you want to test against.

median latency

210ms

gateway accept to carrier ack

peak throughput

18kmsg/s

sustained on a single key

gateway uptime

99.98%

rolling twelve months

direct networks

214

binds across 61 markets

Live throughput - eu-west gateway

Capacity is provisioned per key, so one operator's peak never becomes another's queue.

Surface area

Nine resources, not ninety

The whole platform is a handful of predictable routes. Here are the five you will touch in the first week.

POST/v2/messages

Send a message

Accepts a template reference or raw body, resolves the route from the destination and returns a queued id in under a quarter second.

GET/v2/messages/{id}

Look up state

Full lifecycle for one message: queued, submitted, delivered or failed, with the carrier reason code attached.

POST/v2/senders

Register a sender

Submit an alphanumeric sender for a market and track the registration through to approval without leaving the API.

POST/v2/webhooks

Subscribe to events

Point an HTTPS endpoint at delivery, inbound and consent events. Payloads are signed and retried for twenty four hours.

GET/v2/consent/{msisdn}

Check consent

Current opt-in state, source and timestamp for a number, so a send can be blocked before it is ever routed.

Plugs in

Native connectors, no middleware

Segments, consent flags and delivery state move both ways with the systems your operations team already lives in. Anything in-house talks to the same generic outbound connector.

Fernstack CRMPlayer CRM
HeliodeskSupport desk
CorevaultWarehouse
PipetreeAutomation
NordwavePlayer CRM
Quanta CDPCustomer data
SignalboxAnalytics
OrbitpayPayments

Regulated by default

The rules live in the gateway

Compliance that depends on a campaign checklist eventually fails. These are enforced on the route, so a non-compliant send cannot physically leave the platform.

Licence-aware routing

Each key carries the markets you hold a licence in. A send to anything outside that set is rejected at the gateway with a 409 rather than filtered later.

Quiet hours per market

Local windows are applied from the destination number, not the account timezone. Messages that arrive inside a closed window are held, not dropped.

Consent as a first-class object

Opt-in state lives on the platform with its source and timestamp. Every send checks it, and every STOP writes back to it within one second.

Scoped keys and signed payloads

Keys are scoped per environment and per route class. Webhook bodies are HMAC signed so you can verify origin before you trust a state change.

In production

Notes from teams already shipping

Ilze Berzina, Backend lead, player platform
Ilze BerzinaBackend lead, player platform
We had a send working against the sandbox before the contract was signed. The thing that sold it internally was the error codes actually telling us what was wrong, rather than a generic 400.

Node, Postgres, Kubernetes

Emeka Adeyinka, Head of engineering
Emeka AdeyinkaHead of engineering
The consent object is the part I would keep. It moved a rule that used to live in three services into one place, and the gateway refusing the send is a much better failure mode than us discovering it in an audit.

Go, Kafka, GCP

Rafael Domingo, Platform engineer
Rafael DomingoPlatform engineer
Jackpot minutes used to mean a queue backing up somewhere. We set the ceiling to eighteen thousand a second for that window and watched the dashboard stay flat.

Python, Redis, AWS

Before you start

Questions engineering teams ask first

01

How long does a first integration take?

A sandbox send takes about ten minutes from key to receipt. A production launch is usually gated by sender registration on the destination networks rather than by code, which runs from three days to four weeks depending on the market.

02

Do you provide the routes or do we bring our own?

We provide them. Traffic runs over our direct binds, so there is no aggregator between you and the network and the reason codes you get back are the ones the carrier actually returned.

03

Can we send from our own sender identity?

Yes, and you should. We submit and maintain the registration per market on your behalf, and the API exposes the status so a stalled submission is visible rather than mysterious.

04

What happens when a market changes its rules?

Routing rules are versioned on the platform and updated as networks publish changes. Anything that would newly block your traffic surfaces as a warning event before it becomes a rejection.

05

Is there an SDK, or is it raw HTTP?

Both. There are maintained SDKs for Node, Python, PHP, Go and Java, and the OpenAPI description is published so you can generate your own. The HTTP surface is small enough to use directly.

06

How do you handle inbound replies and STOP?

Inbound arrives as an event on the same webhook subscription. STOP and its per-market equivalents are matched at the gateway and written to the consent object within a second, whether or not your consumer is up.

Something here not answered? Elias Fenech and the integration team answer tickets themselves.

Open a ticket

Start against the sandbox today

Create a key, send one message and read the receipt. When you are ready for production, TextReach handles the sender registrations and the binds.