Skip to content
SMS WhatsApp USSD Built in Buea, Cameroon

One API. Your phone sends it.

Send one-time codes, customer updates and WhatsApp messages, and run USSD requests, from your own software. UGO | Gateway turns an Android phone and its SIM into your sender: you call an API, the phone does the sending and reports back.

Early access. We are working with a first group of businesses and are not publishing prices yet. Tell us what you send and we will reply.

HOW IT WORKS

From your software to your customer's phone

No SMS provider contract and no WhatsApp setup on your server. The phone you already own does the sending.

  1. 1

    Your software calls the API

    One JSON request says what to send: the channel, the number and the text, or the USSD code and the answers to type.

  2. 2

    The job waits in a queue

    It is stored safely and can be scheduled for later. If you repeat the same call by accident, you still send once.

  3. 3

    Your gateway phone sends it

    The UGO | Gateway app on your Android phone picks the job up and sends it with its own SIM or its linked WhatsApp account.

  4. 4

    You get the result

    Sent or failed, with the reason. For USSD you also get the operator's answer. Ask by message id or by your own reference.

CHANNELS

Three ways to reach a customer

Use one, or all three from the same API. Each one runs on the phone itself.

SMS and one-time codes

Texts go out from a real SIM, so they reach any number the SIM can text, with no sender registration.

  • Choose the SIM on a dual-SIM phone
  • Long messages are split automatically
  • Sent one by one, paced to keep the phone healthy

WhatsApp messages

Messages go out from a WhatsApp account linked to the gateway phone, in the places where your customers already read.

  • Each number is checked against WhatsApp first
  • Link it once by scanning a QR code
  • Not the official Business API: keep to messages people expect

USSD requests

Dial a code and read the answer, or walk through a menu: each answer you list is typed into the next prompt.

  • Balance checks and other one-shot codes
  • Multi-step menus such as mobile-money prompts
  • Answers (even a PIN) are erased from the queue when the job ends
API

One request to send

Plain JSON over HTTPS with one key in a header. You receive your endpoint address and key when your access is approved.

curl -X POST "$GATEWAY_URL?action=enqueue" \
  -H "X-API-Key: $GATEWAY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"sms","to":"+237600000000",
       "body":"Your code is 481 922","idem_key":"otp-1042"}'
# {"status":"ok","id":123,"duplicate":false}

# later: what happened to it?
curl "$GATEWAY_URL?action=message&id=123" \
  -H "X-API-Key: $GATEWAY_KEY"
# {"status":"ok","message":{"id":123,"status":"sent", ...}}
FieldWhat it does
channelsms, whatsapp or ussd
toThe phone number, with country code
bodyThe text, or the USSD code to dial
ussd_stepsAnswers to type into a USSD menu, in order (up to 12)
simSIM slot on a dual-SIM phone (0 or 1)
send_atSend later, up to 30 days ahead
device_idOnly this phone may send it
refYour own reference, to look the message up later
idem_keyRepeat the call safely: you still send once

A message is pending, processing, sent or failed. A failed one carries the reason.

RELIABILITY

Built so a message is never lost or sent twice

A phone is not a data centre, so the gateway is designed around the things that go wrong with phones.

No double sends

Repeat a call with the same idem_key and you get the original message back. The phone also remembers what it already sent.

Retries with back-off

If WhatsApp is not connected, the message goes back in the queue and is tried again a little later, up to five attempts.

A result for every message

Sent or failed, with the error, and the operator's answer for USSD. Nothing is "probably delivered".

Scheduled sending

Queue a reminder today for next week. It waits on the server until its time.

One phone or several

Add phones for more volume, pin a message to one of them, or switch a lost phone off from the server.

Private by design

Phone keys are stored only in scrambled form and USSD answers are wiped when the job ends. The SIM and the number stay yours.

IS IT FOR YOU

What it is good for, and what it is not

Good for

  • One-time codes and sign-in checks
  • Order, repair and delivery updates
  • Appointment and payment reminders
  • Balance checks and mobile-money prompts, once tested on your SIM
  • Small and medium businesses that already own the phone and the SIM

Not for

  • Bulk marketing or messages people did not ask for
  • Millions of messages a day: a phone is not a carrier
  • Unattended high-value payments before you have tested the flow
  • A WhatsApp number you cannot afford to lose
EARLY ACCESS

Tell us what you send

Write to us with the kind of messages you send and roughly how many a day. We reply on WhatsApp or by phone, and if it is a fit we set you up with the app, an API key and an endpoint.

Before you start, read the Gateway terms (draft).

FAQ

Common questions

Is UGO | Gateway available now?
It is in early access. We are working with a first group of businesses and are not publishing prices yet. Tell us what you send and we will reply on WhatsApp or by phone.
What do I need to run it?
An Android phone (Android 8 or newer) with a working SIM, the UGO | Gateway app, a charger and a Wi-Fi or mobile data connection. A cheap phone kept for this job is ideal: leave it plugged in and switch off battery saving for the app.
Does WhatsApp go through the official WhatsApp Business API?
No. The gateway links to a normal WhatsApp account on the phone, the way WhatsApp Web does, and checks that each number is on WhatsApp before sending. WhatsApp does not officially allow this, so the number can be restricted. Use a number you can afford to lose, and send only messages people expect (codes, order updates, reminders), never bulk marketing.
Can it run a mobile-money USSD flow?
It can dial a code, type each answer into the menu in order, and return the final message. Menus differ between operators and phone brands, so test every flow on your own SIM with a small amount before you rely on it. The answers you send, including a PIN, are erased from our queue as soon as the job ends.
How many messages can one phone send?
SMS leave about one every second, and Android itself asks for confirmation after roughly 30 texts in 30 minutes unless that limit is raised on a dedicated phone. Think of one phone as a few thousand messages a day at most. For more, add phones: you can pin a message to a phone or let any of them take it.
How do I know a message went out?
Every message has a status (pending, processing, sent or failed), the error if it failed, and for USSD the operator's answer. Ask for it with the message id or with your own reference.
What if the phone loses its connection?
Messages wait in the queue and are picked up when the phone is back. If the phone took a message and never reported on it, the message is offered again after about ten minutes, up to five attempts, and is then marked failed, so nothing disappears silently. The phone also remembers what it already sent, so a repeated job is answered, not sent twice.
Can I schedule messages or choose which SIM sends?
Yes. send_at schedules a message up to 30 days ahead, sim picks the SIM slot on a dual-SIM phone, and idem_key makes a call safe to repeat.
Who can see my messages?
Your messages pass through the UGO queue on their way to the phone. Phone keys are stored only in scrambled form, USSD answers are wiped when the job ends, and you should always call the API over HTTPS. Do not put anything in a message that you would not want a customer to read.

Something else? Contact us.