← blog

API de WhatsApp multi-tenant sin la API oficial: arquitectura y anti-ban

La API oficial de WhatsApp Business es la vía “bendecida” por Meta, pero exige número verificado de empresa, aprobación de plantillas y costo por conversación. Para bots internos, notificaciones de tu SaaS o atención al cliente de negocios chicos, hay otra vía: el protocolo de WhatsApp Web, implementado en librerías como Baileys.

Los cuatro problemas reales (y sus soluciones)

1. Sesiones que sobreviven al servidor

WhatsApp Web guarda credenciales tras escanear el QR. La mayoría de los tutoriales las escriben al filesystem — se pierden en cada redeploy. La solución es persistir las credenciales en PostgreSQL (cifradas at-rest): cualquier instancia puede levantar la sesión, y escalás horizontalmente sin volúmenes.

2. El QR en tiempo real

El QR expira en ~60 segundos y va rotando. Un endpoint REST no alcanza; hace falta WebSocket: el frontend se suscribe a la sesión y recibe cada QR nuevo hasta que el usuario escanea:

socket.on('session:qr', ({ qr }) => renderQr(qr));
socket.on('session:status', ({ status, phone }) => ...);

3. No parecer un bot (anti-ban)

Los baneos llegan por patrones: ráfagas de mensajes a intervalos exactos. Mitigación:

4. Multi-tenant de verdad

Si vendés esto como servicio, cada cliente necesita: su API key, sus límites por plan, sus sesiones aisladas y sus webhooks de mensajes entrantes. Eso implica guards de autenticación + contadores de consumo mensuales + firma de webhooks — el grueso del trabajo no es WhatsApp, es el SaaS alrededor.

La versión ya armada

CloudWapp implementa esta arquitectura completa (NestJS + Baileys + BullMQ + PostgreSQL) lista para self-hostear: sesiones en DB, QR por Socket.IO, cola anti-ban, webhooks firmados, planes con límites y hasta tools MCP para que un agente de IA envíe mensajes. La guía de WhatsApp muestra el flujo completo en tres llamadas.

⚠️ Usá números que puedas permitirte perder y respetá las políticas de WhatsApp: nada de spam masivo a desconocidos — esta vía es para notificaciones y atención de usuarios que te escribieron primero.