Transmit
Sending…

Every code, every broadcast, every delivery accounted for.

Send one-time passcodes and SMS or email broadcasts through one API. Direct carrier routes across five African markets, SMS to 30 more countries, email to any inbox, and signed webhooks back to your stack.

OTP · smsPOST /v1/otp/send
AJ

+220 87 712 3456

Your verification code is 482913

Broadcast · smsScheduled 09:00

Tobaski sale starts today — 20% off everything until Sunday.

4,812 delivered61 failed5,000 recipients
Broadcast · email

Your September statement is ready

1,240 recipients0 suppressed
Completed

Direct carrier routes across

  • +220Gambia
  • +221Senegal
  • +234Nigeria
  • +233Ghana
  • +254Kenya

What it is

Transmit is one API for every message your product has to get right — passcodes, broadcasts, and the webhooks that report back. One key to send, one dashboard to see exactly what landed.

Core problems

The problem we solve

01 / 03

Codes that never arrive

An OTP stuck on a grey route is a signup you never see. Users tap resend twice, then leave — and nothing tells you which carrier dropped it.

02 / 03

Broadcasts nobody can account for

You send to five thousand numbers and get back a single “accepted”. Which ones landed, which failed and why stays a mystery until customers complain.

03 / 03

Webhooks you can’t trust

Events arrive twice, out of order or not at all, and anyone who finds the URL can post to it. Your backend is left guessing what actually happened.

What Transmit does

Four things. One API.

01

Direct routes across five African markets

Gambia, Senegal, Nigeria, Ghana and Kenya go straight to local carrier routes. SMS reaches 30 more countries, and where it can’t land yet the API says so up front instead of accepting a message that won’t arrive.

  • +220 · +221 · +233 · +234 · +254 direct
  • SMS to 30 more countries
  • 422 when SMS can’t land yet
+220+221+234+233+254

02

One-time passcodes, handled end to end

Send a code by SMS or email and verify it with one call. Wrong guesses are counted, the code locks after too many, and each number is rate-limited so nobody can farm your quota.

  • POST /v1/otp/send
  • POST /v1/otp/verify
  • 5 attempts · expires in 5 minutes
Send a codeSMS or email
Verify the codeChecked server-side
Lock on retriesToo many wrong codes
Rate-limitPer phone number
otp.verifiedSent to your stack

03

Broadcasts you can account for

Drop in a CSV, schedule it, and follow every recipient from queued to accepted to delivered, as carriers confirm it. Duplicates are merged, unsubscribed emails are skipped, and failures come back with the carrier’s reason attached.

  • POST /v1/broadcast
  • GET /v1/broadcast/:id
  • One status per recipient
Upload a CSV
Validate numbers
Merge duplicates
Send at 09:00
Track each recipient

Tobaski promo

SMS

Scheduled · Fri 09:00

5,000 recipients12 duplicates
Delivered4,812 / 5,000
Top failureAbsent subscriber · 38

04

Signed webhooks back to your stack

Every event is signed with HMAC-SHA256 so you can prove it came from us, carries an id you can dedupe on, and is retried with exponential backoff, up to five attempts, if your endpoint is down.

  • HMAC-SHA256 signature
  • Event id to dedupe on
  • 5 attempts, exponential backoff
Event
HMAC-SHA256
otp.sent200 · 84ms
otp.verified200 · 142ms
broadcast.queuedRetry 2 → 200

Coverage

Where your messages go today

Every number is routed by country. SMS goes out wherever it lands today. Where it can’t yet, the API says so up front instead of accepting a message that won’t arrive — send those on the email channel.

Europe +20
Gulf +2

Branded SMS32

SMS goes out under the Transmit sender name.

  • United Kingdom
  • France
  • Germany
  • Japan
  • Albania
  • Belgium
  • Cyprus
  • Denmark
  • Estonia
  • Finland
  • Greece
  • Greenland
  • Iceland
  • Italy
  • Latvia
  • Monaco
  • Netherlands
  • Norway
  • Poland
  • Portugal
  • Slovakia
  • Slovenia
  • Sweden
  • Switzerland
  • Ukraine
  • Algeria
  • Cape Verde
  • Gambia
  • Senegal
  • Ghana
  • Kenya
  • Nigeria

Email now, SMS on registration14

Sender registration is in progress. Use the email channel here until it clears, then SMS switches on.

  • UAE
  • Saudi Arabia
  • Qatar
  • Kuwait
  • Jordan
  • Egypt
  • India
  • Hong Kong
  • Australia
  • Austria
  • Czech Republic
  • Romania
  • Spain
  • Mexico

SMS from a number3

SMS delivers here, but recipients see it from a number rather than the Transmit name.

  • Malaysia
  • South Korea
  • Uruguay

Email only9

Reach these countries on the email channel.

  • United States
  • Canada
  • New Zealand
  • British Virgin Islands
  • US Minor Outlying Islands
  • China
  • Russia
  • Brunei
  • Georgia

Not listed? Reach it on the email channel — ask us about SMS.

A note from the teamReceipt

“Every broadcast recipient comes back with a receipt — accepted, delivered once the carrier confirms it, or failed and why. If we can’t tell you what happened to a message, we haven’t done our job.”

From
Sanna JammehOusainouTeam Datafin
Sent from
The Gambia
Status
Delivered

Your first receipt is one call away.

Create a workspace, copy a key, send a code. Every message after that comes back accounted for.

POST /v1/otp/send

{ "channel": "sms", "phone": "+220 87 777 8888" }

202 Accepted