— Developers

Build with Wassa360.

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.

— Getting started

Your first SMS.

  1. 1

    Create your account

    Sign up your business on Wassa360, then turn on SMS in Settings › SMS and create a key in Settings › API.

  2. 2

    Connect your carrier

    Enter your Orange SMS Pro credentials: your messages go out on your own contract, with your own sender name.

  3. 3

    Create a key and send

    A wm_test_ key to try things out without sending anything, a wm_live_ key for production.

RequestPOST /v1/messages
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."
  }'
Response 201
{
  "object": "message",
  "id": "8f0c2b5e-…",
  "status": "sent",
  "to": "+221771234567",
  "carrier": "orange-sn",
  "segments": 1
}

— Webhooks

Know when it's delivered.

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.

message.sent message.delivered message.undelivered message.expired message.failed
Verify the signature (Ruby)
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)
Service client