01/Seguridad
Cómo protegemos tus números y tus datos
Cada línea de esta página describe algo que hace el código, con el valor que lo respalda. Las filas marcadas como opcionales están desactivadas hasta que las actives. No contamos con certificaciones de seguridad ni afirmamos tenerlas.
Tus números de WhatsApp
- salida
Cada número se conecta por su propia IP residencial en su país. ¿El proxy no responde? El número queda desconectado; nunca usa una IP de datacenter.
egress: residential or refuse
- IP fija
La IP de salida se mantiene entre reinicios. Solo cambia tras 3 conexiones fallidas, como máximo 4 veces al día, u 8 si el número sigue caído.
sticky · rotate_after=3 · max 8/day
- opcional
Ritmo de envío, si lo activas: primero “escribiendo…” y luego como máximo 12 por minuto, y 5 por minuto a contactos nuevos. Desactivado por defecto.
messagesPerMinute 12 · firstContactPerMinute 5
- verificación
Antes del primer mensaje a un contacto, le consultamos a WhatsApp si ese número tiene cuenta. Si no la tiene, no se envía nada.
message.failed · not_on_whatsapp
- freno
Si WhatsApp cerró la sesión de un número o lo suspendió, no lo reconectamos en bucle, porque eso suele empeorar la situación.
disconnectReason temporary_ban · logged_out
- cortes
Si el proxy se corta, la conexión se restablece automáticamente. Los envíos en cola esperan al número y salen cuando vuelve.
queued → ready → sent
Tus datos y tu API
- firmado
Cada webhook va firmado con HMAC-SHA256 sobre un timestamp y el body, para que tu endpoint pueda rechazar un request falsificado o repetido.
Wuapi-Signature: t=…,v1=…
- reintentos
¿Tu endpoint no responde 2xx? Reintentamos: 6 intentos en total. Cada evento trae un id para deduplicar.
retries 30s · 2m · 10m · 1h · 6h
- idempotente
Todo POST acepta el header Idempotency-Key, así que un reintento después de un timeout nunca envía dos veces.
Idempotency-Key · replayed 24h
- aislado
Crea un proyecto para cada cliente con sus propias API keys. Una API key de proyecto no puede ver otros proyectos: esos ids responden 404.
project key → one project · 404 not_found
- en reposo
Las API keys se guardan como hashes. La sesión que necesita cada número se guarda cifrada.
sha256(key) · AES-GCM session snapshots
- tarjetas
Los pagos pasan por Stripe. Los datos de tarjeta nunca pasan por wuapi.
Stripe Checkout · Stripe Tax
Acceso y cuentas
- authz
Cada llamada se valida contra tu organización, rol y proyecto antes de leer o escribir nada, y un test falla si alguna función omite esa validación.
customer builders · publicSurface.test.ts
- rate limit
Cada API key tiene 600 requests por minuto. Si superas ese límite, recibes un 429 con Retry-After.
429 rate_limited · RateLimit-Remaining
- rotar
Revoca una API key o rota el secret de un webhook cuando quieras, desde la API o el dashboard.
POST webhook-endpoints/{id}/rotate-secret
- saliente
Los webhooks solo van a URLs HTTPS públicas, nunca siguen redirecciones y tienen un timeout de 10 segundos.
https only · redirect: manual · 10s
- acceso
Para iniciar sesión con Google o GitHub se necesita un correo verificado. No se permiten registros con correos desechables.
email_verified · one email, one user
- equipo
Cuando nuestro equipo accede a tu organización para ayudarte, debe indicar un motivo, y cada cambio que hace queda registrado en auditoría.
impersonation · reason required · audited
Qué guardamos
- Tu cuenta: el correo y un hash de tu contraseña, o tu identidad de Google o GitHub.
- De cada número: el número de teléfono, su nombre de perfil, el estado de conexión y sus logs, y la sesión que necesita para seguir vinculado.
- Los mensajes enviados y recibidos por la API, con sus archivos, para que la API, el dashboard y los reintentos de webhooks puedan devolverlos.
- Los endpoints de webhooks y un log de deliveries. Las API keys, como hashes.
- El tráfico de proxy por número, para facturar. Referencias de cobro de Stripe, nunca datos de tarjetas.
Eliminar una cuenta conectada la desvincula del teléfono. Para eliminar tu organización y sus datos, escribe a soporte.
Política de privacidadLo que ninguna configuración puede garantizar
wuapi vincula tu número como dispositivo, igual que WhatsApp Web, y es un servicio independiente, sin afiliación con WhatsApp. WhatsApp decide qué números restringe. Un proxy elimina una señal de red, pero no cambia lo que envías ni cómo reaccionan los destinatarios, así que obtener su consentimiento es tu responsabilidad.
Mantén tu número en buen estadoCompruébalo tú mismo
La status page verifica la API, el engine y los webhooks cada minuto. Los docs explican cómo verificar una firma, y el SLA detalla los compromisos de los planes de soporte de pago.