✦ 3 days free · then $24/mo

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.

Pick the country of the WhatsApp number you'll scan — it sets your dedicated mobile route. WhatsApp only reveals the number after the scan, so we can't detect it for you.

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 Meta verification

No Business Manager review or 2–7 day waits. Connect a number by scanning a QR.

No template approvals

Send any message you want. No pre-approval queue, no ~1-in-5 rejections, no delays.

Start unlimited conversations

Message anyone, anytime. No paid re-engagement templates or 24-hour window traps.

No per-message fees

Flat $24 per number. Send unlimited messages — no metering, no BSP markup.

No quality tiers or send caps

None of Meta's 1K/10K/100K tiers or quality ratings that throttle or suspend you.

Numbers that don't get blocked

Our whole edge: anti-detect fingerprints, per-number mobile proxies, and human pacing.

Official API (Meta)Other unofficial APIsWhatsappHook
SetupDays — verification & approvalsMinutes — scan a QRMinutes — scan a QR
Meta verificationRequired (2–7 days)Not neededNot needed
Message templatesPre-approved by MetaSend anythingSend anything
New conversationsPaid templates onlyUnlimitedUnlimited
PricingPer message + BSP markupFlat per numberFlat $24/number, unlimited
Send volumeTiered caps, quality-gatedUnlimited (high ban risk)Unlimited
How it connectsMeta's official serversEmulated protocol — easily flaggedReal browser + human behavior
Getting blockedNumber can be suspendedFrequent bans & drop-offsAnti-detect + mobile proxies + human pacing

A real browser — not a protocol hack

The reason other unofficial APIs get numbers banned, and we don't.

Other unofficial APIs

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.

WhatsappHook

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.

Pro
$24/mo

One number, unlimited human-paced sending, inbound webhooks, and per-number mobile routing.

Start 3 days free