Scan a QR, get an API. Messages in via webhook, replies out in one call. We keep it online 24/7. No Meta approval, no templates.
{ "from": "15550123456",
"body": "is my order shipped?" }{ "chat": "15550123456",
"body": "Yes! Arrives Thu 📦" }The official API was built for templated marketing blasts: weeks of approval, pre-approved templates, a 24-hour reply window, per-conversation fees. We run the WhatsApp side instead: a hosted session with a webhook and a REST API in front of it.
Any language, any framework, any model. If it can receive a POST and make one, it works.
Not a developer? Set this up without code →
A message arrives as JSON at your URL. Your code decides the answer. You POST it back. That's the whole integration, in any language.
// 1. WhatsApp message → your webhook app.post("/hook", async (req, res) => { const { from, body } = req.body; // 2. your logic: a lookup, a model, anything const reply = await handle(body, { user: from }); // 3. reply on WhatsApp await fetch(`${BASE}/send/text`, { method: "POST", headers: { Authorization: `Bearer ${KEY}` }, body: JSON.stringify({ chat: from, body: reply }), }); res.sendStatus(200); });
Each number you connect gets a bridge: a hosted WhatsApp session we keep online for you. Your app talks to it over REST. WhatsApp just sees a linked device.
Running and ready to pair immediately. Point the webhook at your app and every message will land there.
{ "customer_ref": "user-123",
"webhook_url":
"https://you.app/hook" }
The session persists across restarts. If WhatsApp drops it, your webhook hears about it and a re-scan brings the same bridge back.
0:58 to liveEvery inbound message hits your webhook. Your code decides the answer and sends it back in one call. Full technical walkthrough →
{ "chat": "15559876543",
"body": "Arrives Thu 📦" }
← { "status": "sent" }
Each guide is a working loop you can paste into your stack. All of them are the same three calls underneath.
Building an agent? Start with the Claude guide above. All guides →
Chatty apps and bots send a lot, and per-conversation pricing punishes exactly that. Here every number is a flat fee with unlimited messages in and out. Your first bridge is free for 7 days: a card goes on file, nothing is charged until the trial ends. Cancel anytime and unused days are refunded.
If WhatsApp drops the session: your webhook gets a disconnected event, you re-scan the QR, and the same bridge is back in about a minute. Same API key, same webhooks. What if the number gets banned?