— Developers
Simple, versioned, well-documented APIs to connect your website, your app or your system to Wassa360. We're starting with SMS: send to Orange, Free and Expresso with your own carrier credentials, and get notified of every delivery.
— The APIs
Send transactional SMS and notifications to your customers in Senegal.
See the reference →
Payments, orders and delivery will follow, built on the same principles: one key, one version, webhooks.
Get notified →— Getting started
Create your account
Sign up your business on Wassa360, then turn on SMS in Settings › SMS and create a key in Settings › API.
Connect your carrier
Enter your Orange SMS Pro credentials: your messages go out on your own contract, with your own sender name.
Create a key and send
A wm_test_ key to try things out without sending anything, a wm_live_ key for production.
curl https://wassa360.com/messaging/v1/messages \
-H "Authorization: Bearer wm_test_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: commande-1042" \
-d '{
"to": "+221771234567",
"body": "Votre commande #1042 est prête."
}'
{
"object": "message",
"id": "8f0c2b5e-…",
"status": "sent",
"to": "+221771234567",
"carrier": "orange-sn",
"segments": 1
}
— Webhooks
Every status change calls your server, signed with HMAC-SHA256. If a call fails, Wassa360 makes up to 8 attempts over about 42 hours, and every event remains available through the API.
header = request.headers["WassaMessaging-Signature"]
t, v1 = header.split(",").map { _1.split("=", 2).last }
expected = OpenSSL::HMAC.hexdigest(
"SHA256", ENV["WASSA_WEBHOOK_SECRET"], "#{t}.#{request.raw_post}"
)
head :unauthorized unless
ActiveSupport::SecurityUtils.secure_compare(expected, v1)
— Resources
API reference
Every route, parameter and error.
Changelog
What changes, version by version.
OpenAPI specification
To generate your clients and your tests.
Support
An integration question? Write to us.
Base URL: https://wassa360.com/messaging/v1