Skip to main content

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.

Try it without writing code

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

Languages

Documentation in English and Brazilian Portuguese — switch using the language selector at the top.