Ship communication infrastructure
in minutes,
not quarters.

One REST API for SMS, WhatsApp, and Email. Idempotent endpoints, signed webhooks, sub‑second delivery, and the observability your on‑call team actually wants. Built for engineers who'd rather ship than integrate.

No credit card First message in 60s 10k msgs/mo free
delivered · +1 (415) 555‑0142 · 218ms
webhook · message.delivered · 2xx
~/projects/checkout · main
1# Send a transactional WhatsApp message
2curl -X POST https://api.wasika.dev/v1/messages \
3 -H "Authorization: Bearer wsk_live_••••" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "channel": "whatsapp",
7 "to": "+14155550142",
8 "template": "order_shipped",
9 "variables": { "order": "#A‑8821", "eta": "Thu" },
10 "fallback": ["sms", "email"]
11 }'
12 
13› HTTP/2 202 · accepted · 184ms
14{ "id": "msg_01HF9X…", "status": "queued" }
15
Live delivery realtime
p50 latency
182ms
delivered
99.97%
throughput
2.4k/s
Messages routed 14.2B+ past 12 months
API uptime SLA 99.99% multi-region, active/active
Median latency 182ms edge → carrier handoff
Countries 196 tier‑1 carrier coverage
Channels 3 SMS · WhatsApp · Email
Quietly powering messaging at fintechs, marketplaces, and logistics teams worldwide
Unified channels

Three protocols. One contract.
One source of truth.

SMS, WhatsApp, and Email share the same request shape, the same error taxonomy, and the same webhook schema. Send once — route, fall back, and observe everything in one place.

SMSPOST /v1/messages · channel:sms
Edge gateway api.wasika.dev 12 regions · anycast
+1 (415) 555‑0142 ● 198ms
+44 7700 900812 ● 240ms
p.adeyemi@helio.io ● 412ms
+234 901 234 5678 ● 311ms
ops@northwind.com ● 188ms
API experience

A REST API you'll actually enjoy reading.

Predictable resources. Idempotency keys by default. Cursor pagination. Error shapes that tell you what to do, not just what broke. The kind of API that makes onboarding a junior engineer feel like a non-event.

SDKs in 7 languages

Node, Python, Go, Ruby, PHP, Java, .NET — all generated from the same OpenAPI spec, all versioned together.

Idempotent by default

Pass an Idempotency-Key and never worry about double‑sends on retry. 24h replay window.

Signed webhooks

HMAC‑SHA256 signatures, exactly‑once delivery with replay protection, and a built‑in retry curve up to 24h.

Sandbox mode

Toggle a single header to route every request through the sandbox. No carriers, no inboxes — just deterministic responses for CI.

messages.send.ts
1import { Wasika } from "@wasika/sdk";
2 
3const wasika = new Wasika({ apiKey: process.env.WSK_KEY });
4 
5const { id, status } = await wasika.messages.send({
6 channel: "whatsapp",
7 to: "+14155550142",
8 template: "order_shipped",
9 variables: { order: "#A‑8821", eta: "Thu" },
10 fallback: ["sms", "email"],
11});
12 
13// → { id: "msg_01HF9X…", status: "queued" }
1from wasika import Wasika
2 
3wasika = Wasika(api_key=os.environ["WSK_KEY"])
4 
5msg = wasika.messages.send(
6 channel="whatsapp",
7 to="+14155550142",
8 template="order_shipped",
9 variables={"order": "#A‑8821", "eta": "Thu"},
10 fallback=["sms", "email"],
11)
12 
13# msg.id, msg.status
1import "github.com/wasika/sdk-go"
2 
3client := wasika.New(os.Getenv("WSK_KEY"))
4 
5msg, err := client.Messages.Send(ctx, &wasika.SendParams{
6 Channel: "whatsapp",
7 To: "+14155550142",
8 Template: "order_shipped",
9 Vars: wasika.M{"order": "#A‑8821", "eta": "Thu"},
10 Fallback: []string{"sms", "email"},
11})
1require "wasika"
2 
3wasika = Wasika.new(api_key: ENV["WSK_KEY"])
4 
5msg = wasika.messages.send(
6 channel: "whatsapp",
7 to: "+14155550142",
8 template: "order_shipped",
9 variables: { order: "#A‑8821", eta: "Thu" },
10 fallback: %w[sms email]
11)
1curl -X POST https://api.wasika.dev/v1/messages \
2 -H "Authorization: Bearer $WSK_KEY" \
3 -H "Idempotency-Key: ord_A8821" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "channel": "whatsapp",
7 "to": "+14155550142",
8 "template": "order_shipped"
9 }'
202 Accepted msg_01HF9XK2A3J7Z · queued · whatsapp:order_shipped 184ms · iad → eu‑west
Infrastructure reliability

Boring infrastructure.
Exciting deliverability.

Multi‑region active‑active routing, automatic carrier failover, and a queueing layer that gracefully absorbs your traffic spikes. The boring parts are our job.

01 · Global routing

Edge‑terminated in 12 regions.

Requests land at the nearest POP, get authenticated and validated at the edge, then traverse a single hop to the optimal carrier route — typically under 80ms.

02 · Queueing

Backpressure that never blocks you.

Bursty traffic is shaped into per‑channel queues — you keep posting, we keep draining.

sms
whatsapp
email
03 · Webhooks

Exactly‑once event delivery.

// POST → /hooks/wasika
{
"event": "message.delivered",
"id": "msg_01HF9X…",
"channel": "whatsapp",
"latency_ms": 218
}
04 · Deliverability

99.97% delivered, measured at the carrier.

We pay 18 carrier partnerships so you don't have to. Routing decisions are made per‑destination, every time, with live signal from past 60s.

99.97%
Delivered · 99.97%
Retried · 0.02%
Failed · 0.01%
05 · Observability

Every message, every hop, logged.

Per‑request trace from API call to carrier ACK, with searchable history, cost breakdown, and 30‑day retention on the free tier.

Operator console

A dashboard your on‑call
actually opens at 3am.

Real‑time delivery, drill‑down on every failure, and search that goes back six months. Wired to PagerDuty, Slack, Datadog — or your own webhook.

acme‑prod  /  messaging  /  ● live
last 24h · refresh 1s
Messages · 24h
1.42M
▲ 12.4% vs prev
Delivered
99.96%
▲ 0.04 pp
p95 latency
412ms
▼ 38ms
Failed
418
▲ 32
Throughput · stacked by channel
WhatsApp · 612k SMS · 524k Email · 283k
Recent messages
14:02:18order_shipped → +14155550142delivered198ms
14:02:17smsotp_login → +44 7700 900812delivered240ms
14:02:16receipt_pdf → ops@northwind.comqueued
14:02:14shipment_update → +234 901 234…delivered311ms
14:02:11smsotp_login → +81 90 1234 5678retry · 11.2s
14:02:08welcome → p.adeyemi@helio.iodelivered412ms
Webhook deliveries
POST /hooks/wasika · message.delivered 2xx · 42ms
POST /hooks/wasika · message.delivered 2xx · 38ms
POST /hooks/wasika · message.read 2xx · 51ms
POST /hooks/wasika · message.failed 5xx · retry 1/8
POST /hooks/wasika · message.delivered 2xx · 44ms
POST /hooks/wasika · message.queued 2xx · 36ms
→ /v1/messages

Your first message goes out in 60 seconds.

Spin up an API key, paste the snippet, and watch the webhook fire. No demo call required, no SDK to compile — just an endpoint that already speaks the language you wrote your app in.

Create free account Talk to engineering 10,000 messages / month free · forever
$ npm i @wasika/sdk ↵ to copy