WhatsApp messages, without the ban risk
A REST API to send WhatsApp messages from your own number. Every send passes a trust and safety layer built to keep it alive: warmup ramps, health scoring, human pacing and automatic quarantine.
100 messages free for 14 days. No card required.
curl -X POST https://api.wa-gateway.dev/v1/messages \
-H "X-Api-Key: $WA_GATEWAY_KEY" \
-H "Content-Type: application/json" \
-d '{ "to": "+201234567890", "body": "Your appointment is tomorrow at 3pm." }'The hard part isn't sending. It's not getting banned.
Anyone can push a message through an unofficial client. Keeping a number alive under real volume is the actual engineering problem, and it is what this gateway is built around.
Warmup ramps
A newly linked number starts at a low daily allowance and compounds toward full volume over two weeks. No cold number ever fires at full rate.
Health scoring
Every failure and disconnect moves a per-number score. Cross the threshold and the number is pulled from the pool automatically, before WhatsApp pulls it for you.
Human pacing
Sends are spaced by a randomized interval with a typing indicator sized to the message. A metronome-steady cadence is the easiest automation tell there is.
Recipient guards
Registry checks before sending, a per-recipient cooldown and daily cap, and automatic blocking when somebody replies STOP.
Number pooling
Traffic is distributed across your connected numbers by health and remaining headroom, so a struggling number sheds load instead of breaking.
Ban detection
A forbidden disconnect is treated as terminal. The number stops sending immediately and you get a webhook rather than a silent hole in delivery.
Live in an afternoon
Link your number
Scan a QR code in the dashboard. Your session credentials are encrypted at rest with AES-256-GCM.
Create an API key
Scope it to sending, reading, or both. Lock it to your server IPs and set a per-key rate limit.
Send a message
One endpoint. Pass a body or a named template. Delivery receipts and replies come back on webhooks.
Durable by default
Sends go onto a persistent queue before they touch WhatsApp, so a deploy or a crash never drops a message. Retries use exponential backoff, and failures that can never succeed are failed fast instead of hammering your number.
- ✓Idempotency keys so a retry storm sends one message
- ✓Signed webhooks for delivery, replies and number health
- ✓Delivery receipts tracked through to read
- ✓Per-key scopes, IP allowlists and rate limits
POST /your/webhook
X-WA-Event: message.status
X-WA-Signature: t=1786406814,v1=8f3c...
{
"id": "d5f1...",
"event": "message.status",
"data": {
"messageId": "b71d...",
"status": "delivered",
"to": "201234567890"
}
}Ship WhatsApp sending this week
Link a number, grab a key, and make your first call in minutes.
Already have one? Sign in