bZapper
WhatsApp API · built in Brazil

The WhatsApp API
that doesn't drop.

Send OTPs, notifications and automations over HTTP. Anti-ban multi-number rotation, signed webhooks, SDKs in several languages and a playground. Get started in minutes, pay only for what you use.

No credit card · free forever plan · 2 numbers on the Starter

POST /messages/text 202 Accepted
# send a message in 1 request
curl https://api.bzapper.com.br/messages/text \
  -H "Authorization: Bearer bz_live_…" \
  -d '{
    "to": "+5551999998888",
    "text": "Your code is 318204"
  }'

# response
{
  "message_id": "9d41…bbbd",
  "status": "queued",
  "number": "+5551999198087"
}
published npm i @bzapper/client pip install bzapper composer require bzapper/bzapper
99.9%
uptime target
5
official SDKs
< 10 min
to integrate
anti-ban
rotation + warm-up
How it works

From QR to webhook in three steps

No approval queue, no BSP, no red tape. Connect and start sending.

01

Connect a number

Scan the QR in the dashboard. Rotation and warm-up turn on by themselves.

02

Call the API

One POST and the message joins the queue with human presence and jitter.

03

Receive webhooks

Delivered, read, replied, number dropped — all signed and in real time.

Features

Everything a serious product needs

From anti-ban rotation to secure OTP, from webhooks to SDKs — built for production.

Multi-number rotation

Pools with rotation, warm-up and per-number proxy. One drops, traffic keeps flowing — real anti-ban.

Secure OTP

Code in a separate message, never persisted or displayed. Text generated with anti-ban variation.

Signed webhooks

Real-time events with HMAC-SHA256, retry and dedup. Local relay, `stripe listen` style.

Multi-language SDKs

Node, Python, PHP, Java and Go — generated from OpenAPI. Copy, paste and run.

Unified inbox

Conversations unified per contact even with number rotation. Own echo and group context.

Private media

Files in a private bucket, fetched via pre-signed URL — the client downloads directly, never through your API.

Projects & multi-user

Isolate environments per project, invite the team, control by key and scope.

API playground

Test any endpoint and inspect webhooks live, straight from the dashboard.

Built for developers

Copy, paste, run.

Official SDKs generated from OpenAPI in Node, Python, PHP, Java and Go. Signed webhooks with HMAC, retry and dedup. Local relay, stripe listen style, to test on your localhost.

Already on npm, PyPI, Packagist and Go
$ npm install @bzapper/client $ pip install bzapper $ composer require bzapper/bzapper $ go get github.com/bernisoftware/bzapper-go $ br.com.bernisoftware:bzapper (Maven)

Webhook events

message.sentmessage.deliveredmessage.readmessage.receivedinstance.connectedinstance.disconnectedinstance.bannedgroup.participant_addedgroup.mentioned_me
# send an OTP
curl https://api.bzapper.com.br/messages/otp \
  -H "Authorization: Bearer bz_live_…" \
  -d '{"to":"+5551999998888","code":"318204"}'
// npm install @bzapper/client
import { Bzapper } from '@bzapper/client';

const bz = new Bzapper({ baseUrl: 'https://api.bzapper.com.br', apiKey: 'bz_live_…' });
await bz.sendOTP({ to: '+5551999998888', code: '318204' });
# pip install bzapper
from bzapper import Client

bz = Client("https://api.bzapper.com.br", "bz_live_…")
bz.send_otp("+5551999998888", code="318204")
// composer require bzapper/bzapper
$bz = new Bzapper\Client('https://api.bzapper.com.br', 'bz_live_…');
$bz->sendOtp('+5551999998888', '318204');
// go get github.com/bernisoftware/bzapper-go
import bzapper "github.com/bernisoftware/bzapper-go"

bz := bzapper.New("https://api.bzapper.com.br", "bz_live_…")
bz.SendOTP("+5551999998888", "318204")
// br.com.bernisoftware:bzapper
var bz = new Bzapper("https://api.bzapper.com.br", "bz_live_…");
bz.sendOtp("+5551999998888", "318204");
Embeddable widget · our edge

Put number management right inside your product

A standalone widget you embed in your own system. Your customers connect, disconnect and track the project numbers — with zero UI to build on your side. One line of code.

Project numbers

Automatically loads the connected numbers of the project tied to the key. Each one with live status.

Connect via QR

The customer scans the QR and connects a new number right there — add a number (if the plan allows) or disconnect, all inside the widget.

Mini dashboard

Project usage at a glance: messages, numbers and storage for the period. Billing stays in the panel.

Origin-locked

The wgt_ key is public, but locked to an origin allowlist (CORS). It never exposes your real API key.

Floating (plug-and-play)

A bubble in the corner of the screen. Just paste the <script> with your key — it opens with one click.

Embedded (inline)

Render <bzapper-widget> anywhere on your page, like a native block of your own dashboard.

Floating mode — one line in your HTML:

index.html
<!-- paste before </body> -->
<script src="https://widget.bzapper.com/v1/widget.js"
        data-key="wgt_sua_chave" async></script>

The wgt_ key is public (it ships in the HTML) and locked to an origin allowlist you configure in the panel. Your real API key never shows up. Billing (top-ups, plans) stays in the panel — the widget only operates within what is available.

Stability · our edge

WhatsApp over an API, with no fear of bans

The risk of going unofficial is the ban. We treat it as real engineering: every number gets gradual warm-up, human presence (typing + jittered pauses), a dedicated proxy and a health score. Rotation spreads the load across the pool and pulls at-risk numbers out of circulation — automatically.

  • Pools with round-robin, least-used and health-weighted rotation
  • Automatic warm-up with a growing daily cap
  • Conversations unified per contact, even when switching numbers
  • Real-time alerts when a number drops or gets banned
Rotation pool 3 numbers · avg. health 68
+55 51 99919-8087
Connected
+55 11 98888-2210
Warming up
+55 21 99745-3308
Resting
Pricing

Prepaid, pay-as-you-go. No monthly fee.

Top up a wallet and pay only for what goes beyond the free tier. No fixed plan, no hidden charges.

✨ 200 messages · 2 numbers · 100 MB · 1 project — free forever.

Messages

R$ 0,01
per message
200/mo free · sends + monitored receives

Connected number

R$ 9,90
per number / month
2 free · billed per day in use

Media storage

R$ 9,90
per GB / month
100 MB free · only what stays stored

Projects

R$ 9,90
per project / month
the 1st is free
  • Message history retention: 30 days free; longer windows (90 days, 1 or 2 years) for a flat monthly fee — for compliance and audit.
  • A baseline plan that is FREE FOREVER: 200 messages, 2 numbers, 100 MB and 1 project.
  • It ships with 2 numbers in the free tier — so you feel multi-number rotation (anti-ban) in practice.
  • Messages = sends + receives. A receive is only billed if you monitor it via webhook.
  • Prepaid: top up and spend — no monthly fee. Card auto-recharge (recommended).
  • Welcome bonus to start testing without paying. Users, API keys and webhooks are free.
Create an account and get the bonus

Prices shown in BRL (Brazil). Americas in USD · other regions in EUR — set by your region at signup.

Transparency

See exactly what it costs

The first 200 messages each month are free. Beyond that you pay per message: each send, and each receive you monitor via webhook (with no webhook listening, the receive is free). The simulation below shows the cost of the overage — play with the webhook toggle.

B
Customer · WhatsApp
via bZapper
This month’s bill
R$ 0,00
0 billed messages · R$ 0.01 each
The OTP goes in 2 bubbles (text + code), but counts as 1 message.

Example price (BRL). Americas in USD, other regions in EUR — set by region at signup.

Use cases

What people use bZapper for

OTP / 2FA

Verification codes with varied text and tracked delivery.

Transactional notifications

Orders, invoices, reminders — straight from your backend.

Centralized support

Many numbers, one inbox, N agents.

Group bots

Watch mentions and attachments, reply in the right context.

Automation & no-code

Integrate with n8n, Make, Zapier via webhooks and HTTP.

Targeted broadcasts

Rotation spreads the load and protects your numbers’ reputation.

FAQ

Everything you want to know

Is this the official WhatsApp API?

No. bZapper is an unofficial gateway that automates WhatsApp Web over the multi-device protocol. That is why we invest heavily in number rotation and warm-up to reduce the risk of bans.

How does anti-ban work?

Each number gets gradual warm-up, human presence (typing + jitter), a dedicated proxy and a health score. Rotation spreads sending across the pool and pulls at-risk numbers out of circulation.

How much does it cost?

There is a FREE FOREVER plan: 200 messages/month, 2 numbers, 100 MB and 1 project. Beyond that it is prepaid and pay-as-you-go, with no monthly fee: you top up a wallet and pay only the overage — R$0.01 per message (each send, and each receive you monitor via webhook), R$9.90 per connected number/month, R$9.90 per GB of media/month and R$9.90 per project/month (the 1st project is free) — in BRL; Americas in USD, other regions in EUR. There is a welcome bonus, card auto-recharge and a simulator on the home page so you can see the bill upfront. The free plan runs with no balance; above it, sending only happens with a positive balance.

How long does it take to integrate?

Minutes. Create the account, generate an API key and use one of the SDKs (Node, Python, PHP, Java, Go) or a raw POST. There is a playground and full documentation.

Do you have SDKs and webhooks?

Yes — SDKs generated from OpenAPI in 5 languages, webhooks signed with HMAC, retry/dedup and a local relay, `stripe listen` style, to test on localhost.

What about data privacy?

Conversation media goes to a private bucket with a pre-signed URL; the OTP code is never persisted; secrets are encrypted. Retention is configurable per account.

Start sending over WhatsApp in minutes

Create your free account, generate an API key and make your first send today. No card, no red tape.