Introducing Tamtam: one API for SMS, WhatsApp and USSD
The messaging layer we kept rebuilding for clients, now a product.
1 min read
The talking drum carried messages between villages long before telephones did. It is also a good description of a problem we kept solving for clients: getting the right message to the right person, on whatever channel they actually use.
A savings group member might have WhatsApp. Their treasurer might only have a basic phone. A field agent might be out of data for the week but still able to dial a USSD code. Each channel has its own providers, formats, delivery reports and failure modes.
After building that layer five times, we built it once, properly. It is called Tamtam.
One request, the right channel
Tamtam gives you a single API for SMS, WhatsApp and USSD sessions across operators in Cameroon, with more markets coming. You describe the message and the recipient; Tamtam picks the channel based on your rules and what it knows about delivery.
curl https://api.tamtam.cmbytes.com/v1/messages \
-H "Authorization: Bearer $TAMTAM_KEY" \
-d to="+237670000000" \
-d template="payment_received" \
-d channels="whatsapp,sms" \
-d vars[amount]="25 000 XAF"
If WhatsApp delivery fails or the number is not registered, the message falls back to SMS automatically, and you receive one delivery report that tells you what actually happened.
What we cared about
- Honest delivery reports. A single status per message, normalised across operators, with the raw provider detail available when you need it.
- Templates in French and English, versioned, with variables validated before anything is sent.
- Idempotency keys on every request, so retries never double-send.
- USSD sessions as code: menus defined in a small, testable format instead of vendor dashboards.
Availability
Tamtam is live with a small group of teams today, including every CMBYTES product that sends messages. If you are building something that needs to reach people across Cameroon, get in touch and we will set you up.