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",
"body": "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, dans les limites d’envoi du 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.
La Cloud API officielle, sans la partie difficile
Chaque projet choisit comment il se connecte : via la Cloud API officielle de Meta ou via WhatsApp lié dans le tableau de bord. L’API, les SDKs et les webhooks sont les mêmes — changer de voie ne réécrit pas votre intégration.
- 1
Connectez le compte sur l’écran de Meta
L’inscription intégrée de Meta s’ouvre dans bZapper : vous vous connectez, choisissez le compte WhatsApp Business et le numéro, et revenez prêt. C’est la seule étape chez Meta ; tout le reste se fait dans le tableau de bord.
- 2
Créez des modèles qui passent la revue
Le formulaire vérifie les règles de Meta pendant la saisie et n’envoie pas ce qui serait refusé. La décision de Meta s’affiche à l’écran dès qu’elle tombe, avec une alerte.
- 3
Envoyez avec le même POST
Dans la fenêtre de 24 heures, le texte libre part ; en dehors, le modèle approuvé. Statut, prix de Meta et origine publicitaire arrivent dans le webhook.
Le même envoi sur les deux voies
# modèle approuvé par Meta, appelé par son nom
{
"to": "+5511999998888",
"template": "pedido_enviado",
"variables": ["Ana", "#4821"]
}
# → 202 ; statut et prix de Meta arrivent dans le webhook Dans le Playground du tableau de bord, vous pouvez discuter en direct via le numéro officiel et voir l’aperçu mobile de chaque type de message avant d’intégrer.
Le coût de Meta avant d’envoyer
La campagne affiche l’estimation de ce que Meta facturera avant l’envoi, et le tableau de bord suit le coût par catégorie et par numéro.
Vous payez Meta directement
bZapper ne facture que l’abonnement. Le coût par message est facturé par Meta sur votre compte, sans marge de notre part.
Modèles complets
Boutons, média ou localisation en en-tête, carrousel, offre à durée limitée, copier le code et modèles prêts de Meta — avec envoi de test et performance par modèle.
Code de vérification
La même route OTP utilise le modèle d’authentification avec bouton de copie. Dans la fenêtre de 24 heures, le code part en texte.
Qualité et limite en vue
Qualité et limite quotidienne de chaque numéro, avec historique et événement webhook à chaque changement.
Consentement respecté
Qui arrête le marketing dans WhatsApp lui-même sort seul des campagnes marketing ; désinscription et traçabilité du consentement valent sur les deux voies.
WhatsApp et Meta sont des marques de Meta Platforms, Inc., citées uniquement pour décrire l’intégration.
Ce que bZapper fait différemment
Pas une liste de fonctionnalités : chaque point ci-dessous est un endpoint en production, couvert par les 7 SDK. Vérifiez-le dans la référence de l’API.
Bascule sans changer d’expéditeur
Plusieurs numéros par projet avec bascule automatique, surveillance de santé et affinité de conversation : quand un numéro devient indisponible, le contact continue de parler au même expéditeur.
Opt-out automatique et piste de consentement
Qui répond STOP est supprimé aussitôt, avant que le message n’entre dans la file. Chaque opt-in et opt-out entre dans une piste append-only, datée et auditable.
Un widget à intégrer dans VOTRE produit
Une ligne de HTML et vos clients connectent, déconnectent et suivent leurs propres numéros sans quitter votre produit. 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.
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 contact par contact.
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.
Planification native, sans cron
Tout envoi accepte scheduled_at : bZapper le conserve et le déclenche à l’heure exacte. Aucun processus à maintenir ni cron sur votre serveur.
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 présentation sur chaque numéro, sans travail manuel.
7 SDK bZapper, 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.
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 bZapper alignés sur OpenAPI et validé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 par API, sans interruption
La délivrabilité, c’est de l’ingénierie. Chaque numéro du projet a ses propres limites d’envoi, une surveillance continue de santé et des alertes en temps réel. Quand un numéro devient indisponible, la conversation continue sur un autre — sans action de votre part.
- Bascule automatique quand un numéro devient indisponible
- Santé de chaque numéro surveillée en continu
- 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)
- 150 interactions/mois (envoi + réception)
- 1 projet
- 100 Mo de média
- 15 jours de rétention
- Bascule · SDK · webhooks
Comment fonctionne le forfait
- 1 par message envoyé et 1 par message reçu — les deux côtés de la conversation.
- Ne comptent pas : les messages envoyés depuis votre propre téléphone (répliqués par WhatsApp) ni les événements internes du protocole.
- Une fois épuisé, les envois sont suspendus jusqu'au cycle suivant ; la réception continue et rien n'est perdu.
- Le compteur repart le 1er du mois. Nous prévenons par e-mail à 80 % et à l'épuisement.
- Avec Pro, aucun forfait : messages illimités.
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 ?
Ça peut l’être — vous choisissez par projet. Avec la <strong>Cloud API officielle de Meta</strong>, le compte est connecté sur l’écran de Meta, les messages hors de la fenêtre de 24 heures utilisent des modèles approuvés et le coût par message est facturé par Meta directement sur votre compte. L’autre option est WhatsApp lié depuis le tableau de bord par QR code. L’API, les SDKs et les webhooks sont les mêmes dans les deux cas.
Comment garantissez-vous la délivrabilité ?
Chaque numéro a ses propres limites d’envoi et une surveillance continue de santé. Quand l’un devient indisponible, 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, 150 interactions/mois (chaque message envoyé et reçu en compte une), 1 projet, 100 Mo et 15 jours de rétention — pour tester la redondance sans carte. Une fois le forfait épuisé, l’envoi est suspendu jusqu’au cycle suivant et la réception continue de fonctionner — le Pro supprime la limite. <strong>Pro</strong> (R$ 49,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.