Every developer who's shipped a product with user notifications has been through it. You need to send an SMS. You integrate Twilio. Then you need WhatsApp. That's a different SDK, a different auth model, different webhook shapes, different error taxonomy. Then email — another provider entirely. Three vendors, three dashboards, three sets of API keys to rotate, three places where things can break at 2am.

We built Wasika because we've lived that pain ourselves. The premise is simple: SMS, WhatsApp, and Email should share one request shape, one error format, one webhook schema, and one dashboard. You call the same endpoint, pass a channel field, and we handle the rest.

One API surface

Every channel in Wasika uses the same POST /v1/messages endpoint. The body differs slightly by channel — WhatsApp needs a template, Email needs a subject — but the outer envelope, the auth header, the idempotency key, and the response shape are identical.

bash
curl -X POST https://api.wasika.dev/v1/messages \
  -H "Authorization: Bearer wsk_live_••••" \
  -H "Idempotency-Key: ${orderId}" \
  -d '{
    "channel": "whatsapp",
    "to": "+14155550142",
    "template": "order_shipped",
    "variables": { "order": "#A-8821", "eta": "Thu" },
    "fallback": ["sms", "email"]
  }'

Notice the fallback field. If the WhatsApp delivery fails — template not approved, user not on WhatsApp, carrier timeout — we automatically retry down the fallback chain. That single line replaces hundreds of lines of retry logic most teams end up writing themselves.

Observability by default

Every message gets a trace: from your API call, through our queue, to the carrier handoff, to the delivery ACK. Every hop is timestamped and searchable. Failed messages include a structured reason code — not a string like "undelivered", but a machine-readable code like carrier.rejected.number_invalid with a human-readable explanation alongside it.

Webhooks are signed (HMAC-SHA256), exactly-once, and include the full delivery trace in the payload. You can wire them directly into PagerDuty, Slack, or your own endpoint.

What's next

We're starting with REST and SDKs for Node, Python, Go, Ruby, PHP, Java, and .NET. Voice and Push are on the roadmap. The free tier includes 10,000 messages per month — enough to ship and validate before you spend a cent.

If you've been waiting for a communication API that doesn't require a three-day integration, this is it. Sign up, grab an API key, and send your first message in under 60 seconds.