bZapper — WhatsApp gateway
What is it? A multi-tenant WhatsApp gateway over REST: connect numbers, send and receive every message type, manage groups, rotate numbers with redundancy, receive signed webhooks, and track everything in real time — with official SDKs in 5 languages.
The admin panel ships with a Playground: pick the operation, tweak the payload, send for real, and copy a ready-to-use example in cURL/Node/Python/PHP/Go/Java.
Quickstart (3 steps)
# 1) Create a number and connect it (QR in the panel or via API)
curl -X POST https://api.bzapper.com.br/instances \
-H "Authorization: Bearer bz_live_..." -H "Content-Type: application/json" \
-d '{"phone":"+5511999999999"}'
# 2) Send your first message (`to` can be E.164 or a JID)
curl -X POST https://api.bzapper.com.br/messages/text \
-H "Authorization: Bearer bz_live_..." -H "Content-Type: application/json" \
-d '{"to":"+5511888888888","body":"Hello from bZapper 👋"}'
# 3) Receive replies: register a webhook (HMAC) or listen on the SSE /stream
Authentication: Authorization: Bearer <api_key> on every call. Generate keys in
the panel (or POST /keys). Errors carry a stable neutral code plus a
translated message — always rely on the code, never on the text.
Everything bZapper does
💬 Send messages (13 types)
Text, image, video, document, audio/voice (ptt), sticker, location,
contact (vCard), poll, reaction (emoji), buttons, list, and OTP
(verification code), plus forward, edit, and revoke. Per-message features:
reply (quoted_message_id), group mentions, client_reference (your
correlation id), a choice of number (instance_id) or pool (pool_id),
affinity (sticky), and the groups[]/tags[] fields (stamp the contact) and
force. See Message types and
Sending best practices.
📣 Sending to lists
One message to many contacts, consent first: opt-out suppression, pacing, spread across numbers, pause/resume, dry-run, and automatic suppression. See Campaigns.
⏰ Scheduled sending
Any send accepts scheduled_at (RFC3339): bZapper holds it and dispatches at the
exact time, no cron on your server. See Scheduled sending.
🗂️ Contact management (CRM)
A contact base with a rich profile (name, phone, email, document, address in separate fields), tags and contact groups (own dictionaries), automatic correlation with project and number on every message, advanced filters (search, tags any/all, groups, status, city/state…), timeline, notes, and opt-out/suppression. See Contact management.
📥 Receive & converse
Webhooks (message.received, message.status, instance.status…) with
HMAC-SHA256 signatures, retries, and dedup — plus SSE (/stream) for live
status/QR. Inbox: list conversations, paginated history, archive/pin/mute/
mark read. See Customer support and conversation affinity.
👥 WhatsApp groups
List, create, view info, join via invite, manage participants (add/remove/promote/demote), leave, fetch the invite link, and handle join-requests.
🟢 Presence & advanced actions
Send “typing…/recording…” (works in groups), check whether a number is on WhatsApp (and get the correct JID), block/unblock a number and view the blocklist, labels, chats (archive/pin/mute/mark read), and calls (reject/offer).
📱 Numbers (instances)
Create, connect (QR or pairing code), status, disconnect, log out, white-label profile (name/photo/about), privacy, per-number proxy, and inbound filters (broadcast/status/groups).
🔄 Redundancy across numbers
Pools with strategies (round_robin, least_used, health_weighted),
ramp-up of new numbers, live health score, and conversation affinity
(sticky). Learn more in Concepts.
🔒 Privacy & LGPD
Keyword opt-out (STOP), a two-level block list, a consent ledger, and private media over signed URLs (presign) with a TTL. See Privacy & LGPD.
🧩 Embeddable widget
A floating/embed widget so your customers can manage the project's numbers with a mini-dashboard. See Widget.
🧰 Platform
Account, isolated projects, and users (admin/agent roles), per-project API
keys, usage & metrics (sent, delivered, read, failed, delivery rate, by type and
by number), media served over signed URLs, plans & billing (Free/Pro, cart
add-ons, Stripe), brand/white-label, i18n (6 languages), and SDKs in 5
languages plus a Playground and OpenAPI.
Next steps
- Account, projects, and users — isolated projects, per-project keys, your team.
- Concepts — instance, redundancy, volume ramp-up, LID.
- Message types and payloads — sending and receiving (poll, vote, media, location…).
- Contact management — CRM: profile, tags, groups, filters, timeline, opt-out.
- Campaigns — sending to lists with opt-out and pacing.
- Scheduled sending — schedule any send for the right time.
- Customer support (sticky) — keep the conversation on the same number.
- Webhooks — events and signature verification.
- Privacy & LGPD — consent, opt-out, suppression, private media.
- Sending best practices — how to keep delivery healthy.
- Embeddable widget — a mini-dashboard of numbers for your customers.
- Plans & billing — Free/Pro, add-ons, and invoices.
- Official SDKs — Node, Python, PHP, Go, Java.
- API Reference — every endpoint, payload, response, and error.
Documentation in English and Brazilian Portuguese — switch using the language selector at the top.