WesndAll
Wesendall
  • Product
  • Pricing
  • Docs
  • AI Integration
  • Sandbox
  • FAQs
Log inGet started
  1. Wesendall
  2. Solutions
  3. SMS API

SMS API

SMS API for Uganda — REST, JSON, sub-5-second OTPs.

HTTP Basic Auth, JSON bodies, atomic wallet writes, refunds on failed sends, Mobile Money top-ups. The same API our dashboard uses.

Get an API keyDashboard reference

Eight endpoints. Zero surprises.

The Wesendall API is intentionally small. Wallet, top-up, balance, send single, send bulk, send to group, list groups, history. That's it. Anything more is over-engineering.

  • POST /api/v1/sms/send — single or array of recipients.

  • POST /api/v1/sms/group — send to a saved contact group.

  • GET /api/v1/sms/history — paginated history, per wallet.

  • POST /api/v1/groups + /groups/{id}/contacts — manage groups.

  • POST /api/v1/account/topup — kick off a Mobile Money charge.

  • GET /api/v1/account/balance — current UGX balance.

Wallet writes you can trust at OTP scale

Charges happen inside a Postgres transaction with a balance-guard. Concurrent OTP storms can't double-debit. Failed provider sends refund inside the same request. Idempotent deposit status transitions prevent double-credits.

  • Atomic wallet.updateMany with `balance >= cost` guard.

  • $transaction-wrapped send + log writes.

  • Refund-on-failure inside the request lifecycle.

  • Deposit status idempotency (only credit pending deposits).

Why developers pick it

Built for Ugandan startups, fintechs and SaaS

Basic Auth, not OAuth

Generate keys in the dashboard. Use them in any HTTP client. No SDK.

Sub-5-second OTPs

Prioritized routing on MTN and Airtel for verification traffic.

Delivery webhooks

Per-recipient status callbacks for retry, escalation and reporting.

Mobile Money top-ups via API

Automate wallet recharges from your own backend. No human intervention.

Per-key audit

lastUsedAt on every key. Revoke compromised keys in one click.

Copy-paste cURL

The dashboard hands you cURL templates pre-filled with your live walletId.

FAQ

Frequently asked questions

What's the base URL of the Wesendall SMS API?

https://www.wesendall.com/api/v1 — every endpoint is under that prefix. Use HTTP Basic Auth with your API key as the username and your API secret as the password.

How do I send a single SMS via the API?

POST to /api/v1/sms/send with JSON body { walletId, message, recipient }. The recipient field accepts a single phone, an array, or a comma/space separated string of phones.

What's the latency for OTP messages?

Median end-to-end delivery is 3-5 seconds on MTN Uganda, 4-7 seconds on Airtel Uganda. Wesendall prioritizes verification traffic on dedicated routing.

Do you have rate limits?

We don't enforce explicit per-minute caps for normal traffic. Wallet balance is the gate: any send is rejected with 402 insufficient_balance if you don't have enough. Contact us for high-volume routing.

How do refunds work if a send fails?

If MARZ rejects a send (e.g. invalid number), Wesendall refunds the wallet automatically inside the same request lifecycle — you never pay for messages that didn't go out.

Send your first API SMS in three minutes

Create an account, mint a key, paste the cURL. The next message is yours.

Get an API keyRead the docs
Wesendall

Bulk SMS and email for Ugandan teams. One dashboard, one wallet, every channel.

Product

  • Features
  • How it works
  • Pricing
  • Changelog

Company

  • About
  • Contact
  • Showcases
  • Feedback

Developers

  • Documentation
  • API Sandbox
  • AI Integration
  • LLM Reference

Legal

  • Privacy
  • Terms

© 2026 Wesendall. All rights reserved.

Built in Kampala for Ugandan teams.