La API de WhatsApp
que no se cae.
Envía OTP, notificaciones y automatizaciones por HTTP. Redundancia entre números con failover, webhooks firmados, SDKs en varios lenguajes y playground. Empieza en minutos con el plan Free — sin tarjeta.
Sin tarjeta · plan Free para siempre · 2 números con redundancia
# envía un mensaje en 1 request
curl https://api.bzapper.com.br/messages/text \
-H "Authorization: Bearer bz_live_…" \
-d '{
"to": "+5551999998888",
"body": "Tu código es 318204"
}'
# respuesta
{
"message_id": "9d41…bbbd",
"status": "queued",
"number": "+5551999198087"
} Del primer número al webhook en tres pasos
Conecta un número, llama a la API, recibe los eventos. Integración en minutos.
Conecta un número
Conecta desde el panel. La redundancia entre números se activa sola.
Llama a la API
Un POST y el mensaje entra en la cola, respetando los límites de envío del número.
Recibe webhooks
Entregado, leído, respondido, número caído — todo firmado y en tiempo real.
Todo lo que un producto serio necesita
De la redundancia entre números al OTP seguro, de los webhooks a los SDKs — pensado para producción.
Redundancia multinúmero
Varios números por proyecto, con failover automático y monitoreo de salud. Uno se cae, el tráfico sigue.
OTP seguro
Código en un mensaje aparte, nunca persistido ni mostrado — ni en el historial, ni en la bandeja.
Webhooks firmados
Eventos en tiempo real con HMAC-SHA256, retry y dedup. Relay local estilo `stripe listen`.
SDKs multilenguaje
Node, Python, PHP, .NET (C#), Java, Go y Ruby — alineados con OpenAPI y probados por la misma suite de conformidad. Copia, pega y ejecuta.
Bandeja unificada
Conversaciones unificadas por contacto incluso cuando cambia el número de salida. Eco propio y contexto de grupo.
Medios privados
Archivos en bucket privado, descargados por URL prefirmada — el cliente descarga directo, sin pasar por tu API.
Proyectos y multiusuario
Aísla entornos por proyecto, invita al equipo, controla por clave y alcance.
Playground de API
Prueba cualquier endpoint e inspecciona webhooks en vivo, directo desde el panel.
La Cloud API oficial, sin la parte difícil
Cada proyecto elige cómo se conecta: por la Cloud API oficial de Meta o por WhatsApp vinculado en el panel. La API, los SDKs y los webhooks son los mismos — cambiar de carril no reescribe tu integración.
- 1
Conecta la cuenta en la pantalla de Meta
El registro integrado de Meta se abre dentro de bZapper: entras, eliges la cuenta de WhatsApp Business y el número, y vuelves listo. Es el único paso que se hace en Meta; el resto queda en el panel.
- 2
Crea plantillas que pasan la revisión
El formulario comprueba las reglas de Meta mientras escribes y no deja enviar lo que sería rechazado. La decisión de Meta aparece en pantalla en cuanto sale, con aviso.
- 3
Envía con el mismo POST
Dentro de la ventana de 24 horas sale texto libre; fuera de ella, la plantilla aprobada. Estado, precio de Meta y origen del anuncio llegan en el webhook.
El mismo envío en los dos carriles
# plantilla aprobada por Meta, llamada por su nombre
{
"to": "+5511999998888",
"template": "pedido_enviado",
"variables": ["Ana", "#4821"]
}
# → 202; estado y precio de Meta llegan en el webhook En el Playground del panel puedes conversar en vivo por el número oficial y ver la vista previa de móvil de cada tipo de mensaje antes de integrar.
Costo de Meta antes de enviar
La campaña muestra la estimación de lo que Meta va a cobrar antes del envío, y el panel sigue el costo por categoría y por número.
Pagas a Meta directamente
bZapper cobra solo la suscripción. El costo por mensaje lo cobra Meta en tu cuenta, sin margen nuestro de por medio.
Plantillas completas
Botones, medios o ubicación en el encabezado, carrusel, oferta por tiempo limitado, copiar código y plantillas listas de Meta — con envío de prueba y rendimiento por plantilla.
Código de verificación
La misma ruta de OTP usa la plantilla de autenticación con botón de copiar. Dentro de la ventana de 24 horas, el código sale como texto.
Calidad y límite a la vista
Calidad y límite diario de cada número, con historial y evento en el webhook siempre que cambian.
Consentimiento respetado
Quien detiene el marketing en el propio WhatsApp sale solo de las campañas de marketing; la baja y el registro de consentimiento valen en los dos carriles.
WhatsApp y Meta son marcas de Meta Platforms, Inc., citadas solo para describir la integración.
Lo que bZapper hace distinto
No es una lista de funciones: cada punto de abajo es un endpoint en producción, cubierto por los 7 SDKs. Compruébalo en la referencia de la API.
Failover sin cambiar de remitente
Varios números por proyecto con failover automático, monitoreo de salud y afinidad de conversación: cuando un número queda indisponible, el contacto sigue hablando con el mismo remitente.
Opt-out automático y rastro de consentimiento
Quien responde PARAR queda suprimido al instante, antes de que el mensaje entre en la cola. Cada opt-in y opt-out entra en un rastro append-only, fechado y auditable.
Un widget que incrustas en TU producto
Una línea de HTML y tus clientes conectan, desconectan y siguen sus propios números sin salir de tu producto. Tú no construyes ninguna pantalla.
Connect para software socio
Tu cliente crea la cuenta, contrata el Pro y conecta WhatsApp sin salir de tu pantalla — y tu backend recibe su API key. Tú no tocas el cobro.
Idempotency-Key de verdad
¿Repetiste el POST por un timeout o un retry? El mensaje sale una sola vez y recibes la misma respuesta. El mismo estándar que consagró Stripe.
Editar y revocar después de enviar
¿Error en el texto ya entregado? PATCH lo corrige. ¿Se lo enviaste a quien no debías? DELETE lo borra para todos — todo por API, sin abrir el celular.
Revisa la base antes de gastar envíos
Un POST te dice qué números de tu lista tienen WhatsApp de verdad. Limpias la base antes de la campaña en vez de descubrirlo contacto por contacto.
Presencia y llamadas por API
“Escribiendo…” y “grabando audio…” de verdad, también en grupos — tu bot deja de parecer un robot. ¿Y una llamada entrante al número? Rechazada automáticamente por API.
Error con código estable en 6 idiomas
Cada error trae un código neutro que nunca cambia (decides por él) y un mensaje ya traducido para mostrar al usuario final. Nunca más parsear cadenas de error.
La API avisa a tu integración
Cuando algo cambia, bZapper dispara un aviso segmentado por SDK, por versión y por los recursos que realmente usas — en el panel y en la propia API. No te enteras rompiéndote.
Programación nativa, sin cron
Cualquier envío acepta scheduled_at: bZapper lo guarda y lo dispara a la hora exacta. Sin proceso que mantener en pie ni cron en tu servidor.
Una identidad en todos los números
Define el recado y la identidad del proyecto una vez y aplícala a TODOS los números conectados en un único POST — la misma presentación en cada número, sin trabajo manual.
7 SDKs de bZapper, generados de la misma spec
Node, Python, PHP, .NET (C#), Java, Go y Ruby — todos alineados al mismo OpenAPI y aprobados por la misma suite de conformidad en cada release.
Una sola API REST. Todo WhatsApp.
Del OTP a los webhooks firmados, de los grupos a la bandeja unificada — cada capacidad de abajo es un endpoint real, cubierto por los 7 SDKs.
Mensajería
- 13 tipos en una sola API REST
- Reenviar, responder (citar) y mencionar
- Envío programado con scheduled_at
- OTP en mensaje aparte, nunca persistido
Consentimiento y cumplimiento
- Opt-out automático por palabra clave
- Registro de consentimiento por contacto
- Bloqueo y supresión vía API
- Medios privados con URL prefirmada
Contactos (CRM)
- Perfil completo: documento y dirección
- Etiquetas, grupos y correlación automática
- Filtros avanzados + historial y notas
- Opt-out, bloqueo y opt-in
Conversaciones e inbox
- Historial unificado por contacto
- Archivar, fijar, silenciar y marcar leído
- Etiquetas de conversación
- Contexto de grupo y eco propio
Grupos de WhatsApp
- Crear y administrar grupos
- Participantes: añadir, promover, quitar
- Enlace de invitación y unirse por código
- Aprobar solicitudes de ingreso
Números e instancias
- Conectar por QR o código
- Perfil white-label por número
- Privacidad por número
- Failover con monitoreo de salud
Webhooks y tiempo real
- Webhooks firmados con HMAC-SHA256
- Retry, dedup y entregas auditables
- Stream SSE en vivo (/stream)
- Relay local estilo stripe listen
Widget integrable
- Modo flotante o embebido
- Tus clientes conectan números
- Mini-panel de uso
- Clave pública bloqueada por origen
Plataforma y dev
- SDKs en 7 lenguajes + OpenAPI
- Playground de API en el panel
- Planes Free/Pro + add-ons
- Uso, métricas y 6 idiomas
Cada elemento de arriba corresponde a un endpoint real de la API — sin vaporware. Explóralos todos en el Playground.
Copia, pega, ejecuta.
SDKs de bZapper alineados con OpenAPI y probados por la misma suite de conformidad en Node, Python, PHP, .NET (C#), Java, Go y Ruby. Webhooks firmados con HMAC, retry y dedup. Relay local estilo stripe listen para probar en tu 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 Eventos de webhook
# enviar 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!") Pon la gestión de números dentro de tu producto
Un widget standalone que integras en tu propio sistema. Tus clientes conectan, desconectan y siguen los números del proyecto — sin que construyas ninguna pantalla. Una línea de código.
Números del proyecto
Carga automáticamente los números conectados del proyecto vinculado a la clave. Cada uno con estado en vivo.
Conectar por QR
El cliente escanea el QR y conecta un número nuevo allí mismo — agregar número (si el plan lo permite) o desconectar, todo en el widget.
Mini panel
Uso y consumo del proyecto a la vista: mensajes, números y storage del período. La parte financiera queda en el panel.
Seguro por origen
La clave wgt_ es pública, pero bloqueada por una allowlist de orígenes (CORS). Nunca expone tu API key real.
Flotante (plug-and-play)
Una burbuja en la esquina de la pantalla. Solo pega el <script> con tu clave — se abre con un clic.
Embedded (inline)
Renderiza <bzapper-widget> donde quieras en tu página, como un bloque nativo de tu panel.
Modo flotante — una línea en tu HTML:
<!-- pega antes de </body> -->
<script src="https://widget.bzapper.com.br/v1/widget.js"
data-key="wgt_sua_chave" async></script> La clave wgt_ es pública (va en el HTML) y queda bloqueada por una allowlist de orígenes que configuras en el panel. Tu API key real nunca aparece. La parte financiera (planes y facturas) queda en el panel — el widget solo gestiona conexiones.
Ofrece WhatsApp dentro de tu software
Tu cliente contrata bZapper Pro y conecta su número sin salir de tu producto. Recibes la API key que él autorizó y empiezas a enviar y recibir mensajes al instante.
- 1
Cuenta en un clic
El componente abre con los datos que tu producto ya tiene. Sin contraseña, sin captcha, sin confirmar correo.
- 2
Suscripción Pro
Tarjeta o Pix, ahí mismo. El cliente paga directo a bZapper — tú no tocas la facturación.
- 3
WhatsApp conectado
Código QR o código de vinculación, con estado en vivo. Al final, tu backend recibe la API key.
Una línea en el front
Modal o inline, en Shadow DOM: no choca con el CSS de tu producto.
Un webhook para todos
Mensajes y estado de todos tus clientes en un solo endpoint, con el id del cliente en tu sistema.
Suspensión automática
Si el Pro del cliente queda sin pagar, la key responde 402 y vuelve sola cuando paga.
En los 7 SDKs
Node, Python, PHP, .NET (C#), Java, Go y Ruby ya incluyen el cliente de socio.
Lo que tu producto necesita escribir:
// 1. tu backend abre la sesión con el secret de socio
const { session_token } = await api.post('/bzapper/session')
// 2. el cliente contrata y conecta sin salir de tu pantalla
BzapperConnect.open({
session: session_token,
onComplete: ({ code }) => api.post('/bzapper/exchange', { code }),
})
// 3. tu backend cambia el code por la API key del cliente
// → { api_key: "bz_live_…", status: "active" } El secret de socio y la API key quedan solo en tu backend. El navegador recibe un ticket de 30 minutos, válido únicamente en tus dominios. La key de socio opera WhatsApp, pero no toca el plan, los usuarios ni la facturación del cliente.
WhatsApp por API, sin interrupción
La entrega es ingeniería. Cada número del proyecto tiene sus propios límites de envío, monitoreo continuo de salud y alertas en tiempo real. Cuando un número queda indisponible, la conversación sigue por otro — sin que tengas que hacer nada.
- Failover automático cuando un número queda indisponible
- Salud de cada número monitoreada continuamente
- Conversaciones unificadas por contacto, aunque cambie el número
- Alertas en tiempo real cuando un número se cae
Una base de contactos que trabaja por ti
Cada número que tocas se convierte en un contacto completo — con documento, dirección, etiquetas e historial. Correlacionado solo por proyecto y número, filtrable en segundos y siempre bajo tu registro de consentimiento.
- Perfil completo
Nombre, teléfono, email, documento (ID fiscal) y dirección completa — ciudad, estado, código postal y país.
- Etiquetas y grupos
Organiza con etiquetas y grupos con sus propios diccionarios. Un contacto puede estar en varios — todo versionado.
- Correlación automática
Cada contacto se vincula solo al proyecto y al número por el que habló. Sin alta manual, sin duplicados.
- Filtros avanzados
Busca por estado, etiquetas (todas o cualquiera), ciudad, documento, actividad y fechas — desde la API o el panel.
- Historial y notas
Una línea de tiempo append-only de cada evento del contacto, más notas internas del equipo. Nada se pierde.
- Opt-out y bloqueo
Suprime o bloquea con un POST. El estado pasa a opted_out o blocked y detiene el envío antes de encolar.
- OTP entregado y leído · hace 2 min
- Vinculado al número +55 51 99919-8087
- Etiqueta “plan-pro” añadida por ti
- Opt-in registrado en el registro de consentimiento
Contactos, etiquetas, grupos y supresiones viven aislados por proyecto — una clave solo ve su propio proyecto.
Ver en la documentación →Programa el envío para el momento justo
Envía cualquier mensaje con fecha y hora futuras. bZapper lo guarda y lo dispara en el momento exacto — sin cron en tu servidor, sin mantener un proceso activo.
- Un solo campo
Agrega scheduled_at a cualquier envío — texto, multimedia, lo que sea. El resto es igual a un envío normal.
- Número elegido al enviar
El número sano se elige al enviar, no al programar — nunca cae en un número que quedó offline.
- Cancela cuando quieras
Lista y cancela programaciones pendientes en cualquier momento, vía API o panel.
// programa para dentro de 2 horas
POST /messages/text
{
"to": "+5511999990000",
"body": "Bom dia! ☀️",
"scheduled_at": "2026-07-01T09:00:00Z"
} Tus contactos son tu activo más valioso
Un número baneado y una lista quemada cuestan caro. Por eso proteger tu base no es un extra — es cómo está construido bZapper, del aislamiento por proyecto al registro de consentimiento.
Los tratamos como si fueran nuestros: protegidos, aislados y bajo tu control.
- Aislamiento por proyecto
Números, bandeja, claves y supresión viven en proyectos aislados. Una clave solo ve su propio proyecto — nada se filtra entre clientes o entornos.
- Media privada con presign
Los archivos de conversación están en un bucket privado y solo se abren con una URL prefirmada de corta duración (24h por defecto). Nada indexable, nada suelto.
- Opt-out y supresión nativos
Quien responde PARAR/SAIR/STOP se suprime automáticamente y nunca vuelve a recibir un envío. La block list detiene el envío antes de encolar.
- Registro de consentimiento
Cada opt-in y opt-out entra en un registro append-only, fechado y auditable — la prueba de base legal que exige la LGPD.
- Webhooks firmados
Cada evento va con firma HMAC-SHA256 y verificación timing-safe. El secreto del webhook queda cifrado en reposo.
- Secretos cifrados
Sesiones de WhatsApp cifradas en reposo y el código OTP nunca persistido ni mostrado. Teléfono y correo normalizados en la base de datos.
Contacto suprimido en el proyecto al instante y registrado en el registro de consentimiento. El opt-out por palabra clave además emite el webhook contact.opted_out.
bZapper es el encargado del tratamiento y hace el trabajo pesado de privacidad; la base legal del consentimiento es tu responsabilidad. Trabajamos juntos.
Leer la guía de Privacidad & LGPD →Pagas por los números. Mensajes, ilimitados.
Lo que importa es no dejar de entregar — y eso es redundancia entre números. Elige el plan, activa la recurrencia y olvídate de la factura.
Free
Prueba la redundancia, sin tarjeta.
- 2 números (redundancia activa)
- 150 interacciones/mes (envío + recepción)
- 1 proyecto
- 100 MB de medios
- 15 días de retención
- Failover · SDKs · webhooks
Cómo funciona la franquicia
- Cuenta 1 por mensaje enviado y 1 por mensaje recibido — los dos lados de la conversación.
- No cuentan: los mensajes que envías desde tu propio móvil (espejados por WhatsApp) ni los eventos internos del protocolo.
- Al agotarse, los envíos se pausan hasta el siguiente ciclo; recibir sigue funcionando y no se pierde nada.
- El conteo se reinicia el día 1. Avisamos por correo al 80% y al agotarse.
- En Pro no hay franquicia: mensajes ilimitados.
Pro
Todo ilimitado. Para producción.
- 2 números (redundancia)
- Mensajes ILIMITADOS
- 1 proyecto
- 1 GB de medios
- 30 días de retención
- Uptime + alertas · prioridad
¿Creciste? Añade al instante — cobro proporcional
Los add-ons son una fracción de la suscripción Pro. ¿Lo añadiste a mitad de mes? Pagas solo el proporcional hasta la próxima factura.
Arma tu plan
Ajusta los recursos y mira el total — igual que al contratar.
💳 Guarda la tarjeta y activa la renovación automática — acceso sin interrupciones, cero preocupaciones.
Precios en BRL (Brasil). América en USD · resto de regiones en EUR — definidos por tu región.
Para qué usa la gente bZapper
OTP / 2FA
Códigos de verificación con texto variado y entrega rastreada.
Notificaciones transaccionales
Pedidos, cobros, recordatorios — directo desde tu backend.
Atención centralizada
Varios números, una bandeja, N agentes.
Bots en grupos
Monitorea menciones y adjuntos, responde en el contexto correcto.
Automatización y no-code
Integra con n8n, Make, Zapier vía webhooks y HTTP.
Avisos y recordatorios
Confirmaciones, recordatorios de agenda y avisos operativos de tu sistema.
Todo lo que quieres saber
¿Es la API oficial de WhatsApp?
Puede serlo — eliges por proyecto. Con la <strong>Cloud API oficial de Meta</strong>, la cuenta se conecta en la pantalla de Meta, los mensajes fuera de la ventana de 24 horas usan plantillas aprobadas y el costo por mensaje lo cobra Meta directamente en tu cuenta. La otra opción es WhatsApp vinculado desde el panel con código QR. La API, los SDKs y los webhooks son los mismos en ambos.
¿Cómo garantizan la entrega?
Cada número tiene sus propios límites de envío y monitoreo continuo de salud. Cuando uno queda indisponible, los otros toman el relevo y recibes una alerta en tiempo real — y la conversación sigue unificada por contacto.
¿Cuánto cuesta?
Dos planes simples. <strong>Free</strong> (gratis): 2 números con redundancia, 150 interacciones/mes (cada mensaje enviado y recibido cuenta una), 1 proyecto, 100 MB y 15 días de retención — para que pruebes la redundancia sin tarjeta. Al agotar la franquicia, el envío queda pausado hasta el próximo ciclo y la recepción sigue funcionando — el Pro quita el límite. <strong>Pro</strong> (R$ 49,90/mes): 2 números, <strong>mensajes ilimitados</strong>, 1 proyecto, 1 GB y 30 días de retención. ¿Necesitas más? Los add-ons son una fracción de la mensualidad — número extra, proyecto extra, +GB de medios, +retención — y al añadirlos a mitad de mes pagas solo el proporcional hasta la próxima factura. En BRL en Brasil; América en USD, resto de regiones en EUR. Recomendamos guardar la tarjeta y activar la renovación automática: acceso sin interrupciones.
¿En cuánto tiempo integro?
Minutos. Crea la cuenta, genera una API key y usa uno de los SDKs (Node, Python, PHP, .NET, Java, Go, Ruby) o un POST puro. Hay playground y documentación completa.
¿Tienen SDK y webhooks?
Sí — SDKs en 7 lenguajes, alineados con OpenAPI y probados por la misma suite de conformidad, webhooks firmados con HMAC, retry/dedup y un relay local estilo `stripe listen` para probar en localhost.
¿Y la privacidad de los datos?
Los medios de conversación van a un bucket privado con URL prefirmada; el código del OTP nunca se persiste; los secretos se cifran. Retención configurable por cuenta.
Empieza a enviar por WhatsApp en minutos
Crea tu cuenta gratis, genera una API key y haz el primer envío hoy. Sin tarjeta, sin burocracia.