L’API WhatsApp
qui ne tombe pas.
Envoyez OTP, notifications et automatisations en HTTP. Redondance entre numéros avec bascule, webhooks signés, SDK en plusieurs langages et un playground. Démarrez en quelques minutes avec le plan Free — sans carte.
Sans carte · plan Free pour toujours · 2 numéros avec redondance
# envoyer un message en 1 requête
curl https://api.bzapper.com.br/messages/text \
-H "Authorization: Bearer bz_live_…" \
-d '{
"to": "+5551999998888",
"text": "Votre code est 318204"
}'
# réponse
{
"message_id": "9d41…bbbd",
"status": "queued",
"number": "+5551999198087"
} Du premier numéro au webhook en trois étapes
Connectez un numéro, appelez l’API, recevez les événements. Intégration en minutes.
Connectez un numéro
Connectez depuis le tableau de bord. La redondance entre numéros s’active toute seule.
Appelez l’API
Un POST et le message entre dans la file, avec un contrôle de rythme par numéro.
Recevez des webhooks
Livré, lu, répondu, numéro tombé — tout signé et en temps réel.
Tout ce qu’un produit sérieux exige
De la redondance entre numéros à l’OTP sécurisé, des webhooks aux SDK — pensé pour la production.
Redondance multi-numéros
Plusieurs numéros par projet, avec bascule automatique et surveillance de santé. L’un tombe, le trafic continue.
OTP sécurisé
Code dans un message séparé, jamais persisté ni affiché — ni dans l’historique, ni dans la boîte.
Webhooks signés
Événements en temps réel avec HMAC-SHA256, retry et dedup. Relais local façon `stripe listen`.
SDK multi-langages
Node, Python, PHP, .NET (C#), Java, Go et Ruby — alignés sur OpenAPI et testés par la même suite de conformité. Copiez, collez, exécutez.
Boîte unifiée
Conversations unifiées par contact même lorsque le numéro d’envoi change. Écho propre et contexte de groupe.
Médias privés
Fichiers dans un bucket privé, téléchargés par URL pré-signée — le client télécharge directement, sans passer par votre API.
Projets et multi-utilisateur
Isolez les environnements par projet, invitez l’équipe, contrôlez par clé et scope.
Playground d’API
Testez n’importe quel endpoint et inspectez les webhooks en direct, depuis le tableau de bord.
Ce que personne d’autre ne livre
Ce n’est pas une liste de fonctionnalités : c’est ce que vous ne trouverez dans aucune autre passerelle WhatsApp. Chaque point ci-dessous est un endpoint réel, en production, couvert par les 7 SDK.
Des numéros qui se relaient tout seuls
Plusieurs numéros par projet avec bascule automatique, surveillance de santé et affinité de conversation : votre client continue de parler au même expéditeur même quand le trafic change de numéro en dessous.
Pilote anti-ban dans les campagnes
Rythme à variation humaine, plafond par numéro, fenêtre horaire, rotation, montée en charge progressive et pause automatique au premier signe de blocage. Un spécialiste anti-ban intégré au produit.
Un widget à intégrer dans VOTRE produit
Une ligne de HTML et vos clients connectent, déconnectent et suivent leurs propres numéros dans votre système. Vous ne construisez aucun écran.
Connect pour les logiciels partenaires
Votre client crée le compte, souscrit au Pro et connecte WhatsApp sans quitter votre écran — et votre backend reçoit sa clé d’API. Vous ne touchez jamais à la facturation.
Une vraie Idempotency-Key
POST rejoué après un timeout ou un retry ? Le message part une seule fois et vous recevez la même réponse. Le standard popularisé par Stripe, absent de toutes les autres passerelles WhatsApp.
Modifier et révoquer après l’envoi
Faute dans un message déjà livré ? PATCH le corrige. Envoyé à la mauvaise personne ? DELETE l’efface pour tout le monde — le tout par API, sans toucher un téléphone.
Vérifier la base avant de dépenser des envois
Un POST vous dit quels numéros de votre liste ont réellement WhatsApp. Vous nettoyez la base avant la campagne au lieu de le découvrir en brûlant la réputation de votre numéro.
Présence et appels par API
De vrais « en train d’écrire… » et « enregistre un audio… », y compris en groupe — votre bot cesse de sonner robot. Et un appel entrant sur le numéro ? Rejeté automatiquement par API.
Des erreurs à code stable en 6 langues
Chaque erreur porte un code neutre qui ne change jamais (c’est dessus que vous branchez) et un message déjà traduit pour votre utilisateur final. Fini le parsing de chaînes d’erreur.
L’API prévient votre intégration
Quand quelque chose change, bZapper envoie un avis segmenté par SDK, par version et par les fonctionnalités que vous utilisez vraiment — dans le panneau et dans l’API elle-même. Vous ne l’apprenez pas en cassant.
Une IP dédiée par numéro
Chaque numéro peut sortir par son propre proxy. Une vraie isolation réseau entre vos clients ou vos environnements — pas une boîte partagée par tout le monde.
Une identité sur tous les numéros
Définissez l’« Infos » et l’identité du projet une fois, puis appliquez-les à TOUS les numéros connectés en un seul POST. La même marque sur chaque numéro, sans travail manuel.
7 SDK officiels, générés depuis la même spec
Node, Python, PHP, .NET (C#), Java, Go et Ruby — tous alignés sur le même OpenAPI et validés par la même suite de conformité à chaque release. Aucun concurrent n’en approche.
Une seule API REST. Tout WhatsApp.
De l’OTP aux webhooks signés, des groupes à la boîte unifiée — chaque capacité ci-dessous est un endpoint réel, couvert par les 7 SDK.
Messagerie
- 13 types dans une seule API REST
- Transférer, répondre (citer) et mentionner
- Envoi programmé avec scheduled_at
- OTP dans un message séparé, jamais persisté
Consentement et conformité
- Opt-out automatique par mot-clé
- Journal de consentement par contact
- Blocage et suppression via API
- Médias privés avec URL pré-signée
Contacts (CRM)
- Profil riche : document et adresse
- Tags, groupes et corrélation automatique
- Filtres avancés + historique et notes
- Opt-out, blocage et opt-in
Conversations et boîte
- Historique unifié par contact
- Archiver, épingler, couper le son et marquer lu
- Étiquettes de conversation
- Contexte de groupe et écho propre
Groupes WhatsApp
- Créer et administrer des groupes
- Participants : ajouter, promouvoir, retirer
- Lien d’invitation et rejoindre par code
- Approuver les demandes d’adhésion
Numéros et instances
- Connecter par QR ou code
- Profil white-label par numéro
- Confidentialité par numéro
- Bascule avec surveillance de santé
Webhooks et temps réel
- Webhooks signés avec HMAC-SHA256
- Retry, dedup et livraisons auditables
- Stream SSE en direct (/stream)
- Relais local façon stripe listen
Widget intégrable
- Mode flottant ou embedded
- Vos clients connectent des numéros
- Mini tableau de bord d’usage
- Clé publique verrouillée par origine
Plateforme et dev
- SDK en 7 langages + OpenAPI
- Playground d’API dans le panneau
- Plans Free/Pro + add-ons
- Usage, métriques et 6 langues
Chaque élément ci-dessus correspond à un endpoint réel de l’API — pas de vaporware. Explorez-les tous dans le Playground.
Copiez, collez, exécutez.
SDK officiels alignés sur OpenAPI et testés par la même suite de conformité en Node, Python, PHP, .NET (C#), Java, Go et Ruby. Webhooks signés avec HMAC, retry et dedup. Relais local façon stripe listen pour tester sur votre localhost.
$ npm install @bzapper/client $ pip install bzapper $ composer require bzapper/bzapper $ go get github.com/bernisoftware/bzapper-go $ br.com.bernisoftware:bzapper (Maven) $ dotnet add package Bzapper $ gem install bzapper Événements webhook
# envoyer un 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({ apiKey: 'bz_live_…' });
await bz.sendOTP({ to: '+5551999998888', code: '318204' }); # pip install bzapper
from bzapper import Client
bz = Client("bz_live_…")
bz.send_otp("+5551999998888", code="318204") // composer require bzapper/bzapper
$bz = new Client('bz_live_…');
$bz->sendOtp('+5551999998888', '318204'); // go get github.com/bernisoftware/bzapper-go
import bzapper "github.com/bernisoftware/bzapper-go"
bz := bzapper.NewClient("bz_live_…")
bz.SendOTP("+5551999998888", "318204") // br.com.bernisoftware:bzapper
var bz = new BzapperClient("bz_live_…");
bz.sendOtp("+5551999998888", "318204"); // dotnet add package Bzapper
using Bzapper;
using var bz = new BzapperClient("bz_live_…");
var msg = await bz.SendTextAsync(new SendText { To = "+5511999999999", Body = "Olá do bZapper!" }); # gem install bzapper
require "bzapper"
client = Bzapper::Client.new("bz_live_…")
client.messages.send_text(to: "+5511999999999", body: "Olá do bZapper!") Mettez la gestion des numéros au cœur de votre produit
Un widget standalone que vous intégrez dans votre propre système. Vos clients connectent, déconnectent et suivent les numéros du projet — sans que vous construisiez le moindre écran. Une ligne de code.
Numéros du projet
Charge automatiquement les numéros connectés du projet lié à la clé. Chacun avec un statut en direct.
Connexion par QR
Le client scanne le QR et connecte un nouveau numéro sur place — ajouter un numéro (si le plan le permet) ou déconnecter, tout dans le widget.
Mini tableau de bord
Usage et consommation du projet en un coup d’œil : messages, numéros et stockage sur la période. La facturation reste dans le panneau.
Sécurisé par origine
La clé wgt_ est publique, mais verrouillée par une allowlist d’origines (CORS). Elle n’expose jamais votre vraie clé API.
Flottant (plug-and-play)
Une bulle dans le coin de l’écran. Collez simplement le <script> avec votre clé — il s’ouvre en un clic.
Embedded (inline)
Affichez <bzapper-widget> où vous voulez dans votre page, comme un bloc natif de votre panneau.
Mode flottant — une ligne dans votre HTML :
<!-- collez avant </body> -->
<script src="https://widget.bzapper.com.br/v1/widget.js"
data-key="wgt_sua_chave" async></script> La clé wgt_ est publique (elle est dans le HTML) et verrouillée par une allowlist d’origines que vous configurez dans le panneau. Votre vraie clé API n’apparaît jamais. La facturation (plans et factures) reste dans le panneau — le widget ne gère que les connexions.
Proposez WhatsApp dans votre logiciel
Votre client souscrit à bZapper Pro et connecte son numéro sans quitter votre produit. Vous recevez la clé API qu'il a autorisée et envoyez et recevez des messages immédiatement.
- 1
Compte en un clic
Le composant s'ouvre avec les informations que votre produit possède déjà. Ni mot de passe, ni captcha, ni confirmation d'e-mail.
- 2
Abonnement Pro
Carte ou Pix, sur place. Le client paie directement bZapper — vous ne gérez pas la facturation.
- 3
WhatsApp connecté
QR code ou code d'association, avec statut en direct. À la fin, votre backend reçoit la clé API.
Une ligne côté front
Modale ou inline, en Shadow DOM : aucun conflit avec le CSS de votre produit.
Un webhook pour tous
Messages et statuts de tous vos clients sur un seul endpoint, avec l'identifiant client de votre système.
Suspension automatique
Si le Pro du client n'est pas payé, la clé répond 402 et reprend seule dès le paiement.
Dans les 7 SDK
Node, Python, PHP, .NET (C#), Java, Go et Ruby intègrent déjà le client partenaire.
Ce que votre produit doit écrire :
// 1. votre backend ouvre la session avec le secret partenaire
const { session_token } = await api.post('/bzapper/session')
// 2. le client souscrit et connecte sans quitter votre écran
BzapperConnect.open({
session: session_token,
onComplete: ({ code }) => api.post('/bzapper/exchange', { code }),
})
// 3. votre backend échange le code contre la clé API du client
// → { api_key: "bz_live_…", status: "active" } Le secret partenaire et la clé API restent sur votre backend. Le navigateur reçoit un ticket de 30 minutes, valable uniquement sur vos domaines. La clé partenaire pilote WhatsApp mais ne touche ni à l'offre, ni aux utilisateurs, ni à la facturation du client.
WhatsApp via API, sans interruption
La délivrabilité, c’est de l’ingénierie. Chaque numéro du projet a ses propres limites de volume, un contrôle de rythme à l’envoi, une surveillance continue de santé et des alertes en temps réel. Quand un numéro tombe, le trafic continue par les autres — sans intervention de votre part.
- Répartition de la charge entre les numéros du projet
- Montée en volume progressive sur les numéros récemment connectés
- Conversations unifiées par contact, même en changeant de numéro
- Alertes en temps réel quand un numéro tombe
Une base de contacts qui travaille pour vous
Chaque numéro que vous touchez devient un contact riche — avec document, adresse, tags et historique. Corrélé tout seul par projet et numéro, filtrable en quelques secondes et toujours sous votre registre de consentement.
- Profil riche
Nom, téléphone, e-mail, document (identifiant fiscal) et adresse complète — ville, région, code postal et pays.
- Tags et groupes
Organisez avec des tags et des groupes dotés de leurs propres dictionnaires. Un contact peut appartenir à plusieurs — tout est versionné.
- Corrélation automatique
Chaque contact se lie tout seul au projet et au numéro par lequel il a parlé. Pas de saisie manuelle, pas de doublons.
- Filtres avancés
Recherchez par statut, tags (tous ou n’importe lequel), ville, document, activité et dates — depuis l’API ou le panneau.
- Historique et notes
Une timeline append-only de chaque événement du contact, plus des notes internes de l’équipe. Rien ne se perd.
- Opt-out et blocage
Supprimez ou bloquez avec un POST. Le statut passe à opted_out ou blocked et stoppe l’envoi avant la file.
- OTP livré et lu · il y a 2 min
- Lié au numéro +55 51 99919-8087
- Tag « plan-pro » ajouté par vous
- Opt-in enregistré dans le registre de consentement
Contacts, tags, groupes et suppressions vivent isolés par projet — une clé ne voit que son propre projet.
Voir dans la documentation →Programmez l’envoi pour le bon moment
Envoyez n’importe quel message avec un horodatage futur. bZapper le garde et l’envoie à l’instant exact — pas de cron sur votre serveur, aucun processus à maintenir.
- Un seul champ
Ajoutez scheduled_at à n’importe quel envoi — texte, média, peu importe. Le reste est identique à un envoi normal.
- Numéro choisi à l’envoi
Le numéro sain est choisi à l’envoi, pas à la programmation — il ne tombe jamais sur un numéro passé hors ligne.
- Annulez quand vous voulez
Listez et annulez les programmations en attente à tout moment, via l’API ou le tableau de bord.
// programme dans 2 heures
POST /messages/text
{
"to": "+5511999990000",
"body": "Bom dia! ☀️",
"scheduled_at": "2026-07-01T09:00:00Z"
} Vos contacts sont votre atout le plus précieux
Un numéro banni et une liste brûlée coûtent cher. C’est pourquoi protéger votre base n’est pas une option — c’est ainsi que bZapper est construit, de l’isolation par projet au registre de consentement.
Nous les traitons comme s’ils étaient les nôtres : protégés, isolés et sous votre contrôle.
- Isolation par projet
Numéros, boîte de réception, clés et suppression vivent dans des projets isolés. Une clé ne voit que son propre projet — rien ne fuit entre clients ou environnements.
- Médias privés avec presign
Les fichiers de conversation sont dans un bucket privé et ne s’ouvrent que via une URL présignée à courte durée (24h par défaut). Rien d’indexable, rien qui traîne.
- Opt-out & suppression natifs
Quiconque répond STOP/SAIR/PARAR est supprimé automatiquement et ne reçoit plus aucun envoi. La block list arrête l’envoi avant la mise en file.
- Registre de consentement
Chaque opt-in et opt-out entre dans un registre append-only, horodaté et auditable — la preuve de la base légale exigée par la LGPD.
- Webhooks signés
Chaque événement part avec une signature HMAC-SHA256 et une vérification timing-safe. Le secret du webhook reste chiffré au repos.
- Secrets chiffrés
Sessions WhatsApp chiffrées au repos et le code OTP jamais persisté ni affiché. Téléphone et e-mail normalisés en base de données.
Contact supprimé dans le projet à l’instant et enregistré dans le registre de consentement. Le désabonnement par mot-clé émet en plus le webhook contact.opted_out.
bZapper est le sous-traitant des données et assure le gros du travail de confidentialité ; la base légale du consentement relève de votre responsabilité. Nous travaillons ensemble.
Lire le guide Confidentialité & LGPD →Vous payez pour les numéros. Messages, illimités.
Ce qui compte, c’est de ne jamais arrêter de délivrer — et c’est la redondance entre numéros. Choisissez le plan, activez la récurrence et oubliez la facture.
Free
Testez la redondance, sans carte.
- 2 numéros (redondance active)
- 250 messages/mois
- 1 projet
- 100 Mo de média
- 15 jours de rétention
- Bascule · SDK · webhooks
Pro
Tout illimité. Pour la production.
- 2 numéros (redondance)
- Messages ILLIMITÉS
- 1 projet
- 1 Go de média
- 30 jours de rétention
- Uptime + alertes · priorité
Vous avez grandi ? Ajoutez à la volée — facturation au prorata
Les add-ons sont une fraction de l’abonnement Pro. Ajouté en milieu de mois ? Vous ne payez que le prorata jusqu’à la prochaine facture.
Composez votre plan
Ajustez les ressources et voyez le total — exactement comme au moment de souscrire.
💳 Enregistrez votre carte et activez le renouvellement automatique — accès sans interruption, zéro souci.
Prix en BRL (Brésil). Amériques en USD · autres régions en EUR — définis par votre région.
Pourquoi les gens utilisent bZapper
OTP / 2FA
Codes de vérification au texte varié et à la livraison suivie.
Notifications transactionnelles
Commandes, factures, rappels — directement depuis votre backend.
Support centralisé
Plusieurs numéros, une boîte, N agents.
Bots en groupe
Surveillez mentions et pièces jointes, répondez dans le bon contexte.
Automatisation et no-code
Intégrez n8n, Make, Zapier via webhooks et HTTP.
Avis et rappels
Confirmations, rappels de rendez-vous et avis opérationnels de votre système.
Tout ce que vous voulez savoir
Est-ce l’API officielle de WhatsApp ?
Non. bZapper envoie via le <strong>protocole multi-appareils</strong>, le numéro étant connecté depuis le tableau de bord — c’est ainsi que part chaque message aujourd’hui, et c’est ce que vous intégrez. Une voie via la Cloud API officielle de Meta est en développement, sans date.
Comment garantissez-vous la délivrabilité ?
Chaque numéro a ses propres limites de volume, un contrôle de rythme à l’envoi et une surveillance continue de santé. Quand l’un tombe, les autres prennent le relais et vous recevez une alerte en temps réel — et la conversation reste unifiée par contact.
Combien ça coûte ?
Deux plans simples. <strong>Free</strong> (gratuit) : 2 numéros avec redondance, 250 messages/mois, 1 projet, 100 Mo et 15 jours de rétention — pour tester la redondance sans carte. <strong>Pro</strong> (R$ 79,90/mois) : 2 numéros, <strong>messages illimités</strong>, 1 projet, 1 Go et 30 jours de rétention. Besoin de plus ? Les add-ons sont une fraction de l’abonnement — numéro supplémentaire, projet supplémentaire, +Go de média, +rétention — et en les ajoutant en milieu de mois vous ne payez que le prorata jusqu’à la prochaine facture. En BRL au Brésil ; Amériques en USD, autres régions en EUR. Nous recommandons d’enregistrer votre carte et d’activer le renouvellement automatique : accès sans interruption.
En combien de temps j’intègre ?
Quelques minutes. Créez le compte, générez une clé API et utilisez l’un des SDK (Node, Python, PHP, .NET, Java, Go, Ruby) ou un POST brut. Il y a un playground et une documentation complète.
Avez-vous des SDK et des webhooks ?
Oui — des SDK en 7 langages, alignés sur OpenAPI et testés par la même suite de conformité, des webhooks signés avec HMAC, retry/dedup et un relais local façon `stripe listen` pour tester en localhost.
Et la confidentialité des données ?
Les médias de conversation vont dans un bucket privé avec URL pré-signée ; le code OTP n’est jamais persisté ; les secrets sont chiffrés. Rétention configurable par compte.
Commencez à envoyer sur WhatsApp en quelques minutes
Créez votre compte gratuit, générez une clé API et faites votre premier envoi aujourd’hui. Sans carte, sans paperasse.