Developers
One API, every corridor.
A JSON API over HTTPS, SMPP v3.4 binds for high-volume platforms, and signed webhooks for delivery receipts. Sandbox credentials are issued as soon as your business details are verified.
Authentication
Bearer tokens over TLS
Every request carries an API key in the Authorization header. Keys are scoped per environment; the sandbox key never touches a live operator route.
https://api.3044tech.com/v1
Authorization: Bearer $TH_API_KEY
Content-Type: application/json
Idempotency-Key: 4f1c9b2e-…Send
POST /v1/messages
Declare a traffic class so the routing engine can pick the right corridor and apply the correct regulatory treatment.
{
"to": ["+971501234567"],
"from": "THCLOUD",
"text": "Your code is 481920",
"class": "authentication",
"callback_url": "https://example.com/dlr"
}Receipts
Signed delivery webhooks
Each receipt is signed with your webhook secret. Verify the signature, respond 2xx, and TH stops retrying. Anything unacknowledged is replayed with backoff for 24 hours.
{
"id": "msg_01J9K2…",
"status": "delivered",
"mcc": "424",
"segments": 1,
"delivered_at": "2026-08-15T09:41:12Z"
}Verify
Signature verification
Compare the hex digest in the TH-Signature header against an HMAC of the raw body using a constant-time comparison.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const digest = createHmac("sha256", secret)
.update(rawBody)
.digest();
const sent = Buffer.from(header, "hex");
return digest.length === sent.length &&
timingSafeEqual(digest, sent);
}Endpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/messages | Send one or many messages |
| GET | /v1/messages/{id} | Retrieve a message and its final state |
| GET | /v1/routes | List destinations available to your account |
| POST | /v1/senders | Submit a sender ID for registration |
| GET | /v1/reports/delivery | Aggregated delivery reporting |
Message states
| Status | Meaning |
|---|---|
| queued | Accepted by TH and waiting for a route slot |
| sent | Handed to the operator, awaiting a delivery receipt |
| delivered | Operator confirmed handset delivery |
| undelivered | Operator rejected or could not deliver; see failure_code |
| expired | Validity period elapsed before the handset was reachable |
SMPP v3.4 transceiver binds are available on the Scale and Carrier tiers. Ask the routing desk for host, port and throughput allocation.