The WhatsApp API your account survives.
Scan a QR and send in a minute — no Meta verification, no template approvals, no per-message fees. Every message goes out at a human pace over a dedicated mobile route, so your number stays healthy and never gets blocked.
Built by automation veterans. We've spent years building sales & marketing automation platforms — staying a step ahead of automation detection is exactly what we do.
Connect your WhatsApp
3 days free, then $24/mo. No card to start.
Built to keep numbers alive
The hard parts of running WhatsApp at scale — pacing, fingerprints, delivery — handled for you.
Human-paced sending
Fire 100 messages at once; we drip them out with realistic spacing, hourly and daily caps, warm-up ramps, and active-hours — decoupled from your API cadence.
Inbound webhooks
Get every reply pushed to your endpoint, HMAC-signed and retried. Or stream them live over SSE. Verify authenticity, reject replays — Stripe-style.
Per-number mobile route
Each number gets its own hardened browser fingerprint and a country-matched mobile proxy, with WebRTC pinned to the exit — so nothing leaks and nothing looks automated.
Everything the official API makes you fight for
Meta's WhatsApp Business API means verification, template approvals, and a bill that grows with every message. Skip all of it.
No Business Manager review or 2–7 day waits. Connect a number by scanning a QR.
Send any message you want. No pre-approval queue, no ~1-in-5 rejections, no delays.
Message anyone, anytime. No paid re-engagement templates or 24-hour window traps.
Flat $24 per number. Send unlimited messages — no metering, no BSP markup.
None of Meta's 1K/10K/100K tiers or quality ratings that throttle or suspend you.
Our whole edge: anti-detect fingerprints, per-number mobile proxies, and human pacing.
| Official API (Meta) | Other unofficial APIs | WhatsappHook | |
|---|---|---|---|
| Setup | Days — verification & approvals | Minutes — scan a QR | Minutes — scan a QR |
| Meta verification | Required (2–7 days) | Not needed | Not needed |
| Message templates | Pre-approved by Meta | Send anything | Send anything |
| New conversations | Paid templates only | Unlimited | Unlimited |
| Pricing | Per message + BSP markup | Flat per number | Flat $24/number, unlimited |
| Send volume | Tiered caps, quality-gated | Unlimited (high ban risk) | Unlimited |
| How it connects | Meta's official servers | Emulated protocol — easily flagged | Real browser + human behavior |
| Getting blocked | Number can be suspended | Frequent bans & drop-offs | Anti-detect + mobile proxies + human pacing |
A real browser — not a protocol hack
The reason other unofficial APIs get numbers banned, and we don't.
They emulate the WhatsApp protocol
Libraries like Baileys and whatsapp-web.js reverse-engineer WhatsApp's protocol and connect as a fake client. That traffic looks nothing like a real phone, so WhatsApp spots the pattern and bans the number — often in waves that take out whole batches at once.
We drive a real, hardened browser
We run genuine WhatsApp Web in a real anti-detect browser, humanize every action, and route each number through its own mobile proxy. To WhatsApp it's indistinguishable from a person tapping on their phone — there's no fake protocol to detect.
Real browser, per-number fingerprint
Actual WhatsApp Web in a hardened Firefox, each number with its own device fingerprint. No emulated client for WhatsApp to flag.
Humanized behavior
Human cursor paths, per-keystroke typing jitter, and paced sending. Nothing fires at machine speed or in machine patterns.
Dedicated mobile proxy
Every number egresses through a country-matched mobile IP — the same kind of connection a real user is on, not a datacenter.
Two calls to production
Connect your number once in the dashboard (scan the QR). Then it's just send and receive — a plain REST API you can call from Node, cURL, Python, or anything that speaks HTTP.
// Grab your API key from the dashboard after connecting a number // Send a message await fetch("https://wahook.app/api/v1/messages", { method: "POST", headers: { Authorization: "Bearer sk_live_…", "Content-Type": "application/json", }, body: JSON.stringify({ to: "34600000000", text: "hello 👋" }), }); // Inbound replies → register a webhook in the dashboard (recommended), // or stream from GET /api/v1/stream
Simple pricing
Start with a 3-day free trial. Then one flat plan — no per-message surprises.
One number, unlimited human-paced sending, inbound webhooks, and per-number mobile routing.
Start 3 days free