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

En todas las cuentas. Las filas opcionales están desactivadas hasta que las actives.
  • 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

En todas las cuentas. Nada que configurar.
  • 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

Quién puede hacer qué y cómo inicia sesión cada persona.
  • 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

La misma lista que la política de privacidad.
  • 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 privacidad

Lo 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 estado

Comprué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.