Empezar

Errores y límites

La forma de los errores, qué código revisar en cada caso, el límite de requests por minuto y cuándo reintentar.

Forma de los errores

Todos los errores de la WABA API y de la API de CRM responden JSON con dos campos:

{
  "error": "Too many requests",
  "code": "RATE_LIMITED"
}
  • code es estable: úsalo para decidir qué hacer.
  • error es un mensaje para personas. Puede cambiar; no lo compares en tu código.

Algunos errores agregan campos con más contexto, por ejemplo leadIds cuando un teléfono coincide con varios leads, o hasDefault cuando una plantilla necesita un archivo en el encabezado.

Códigos generales

HTTPcodeCausa
400INVALID_REQUESTParámetro o body inválido: campo desconocido, tipo incorrecto o valor no permitido. error explica cuál.
401AUTH_HEADER_MISSING, API_KEY_INVALID, API_KEY_REVOKED, API_KEY_EXPIREDProblema con la clave. Ver Autenticación.
403WABA_NOT_CONNECTEDWABA API sin ninguna línea de WhatsApp Business API activa.
404ERR_NO_LEAD_FOUND, ERR_NO_CONTACT_FOUND…No existe lo que buscas.
409CONFLICTLa búsqueda por teléfono coincide con varios leads o contactos.
429RATE_LIMITEDSuperaste el límite de requests por minuto.
500INTERNAL_ERRORError de Whapi. Reintenta más tarde.

Los errores propios de WhatsApp empiezan con waba_ (por ejemplo, waba_session_window_expired). La referencia lista los que puede devolver cada operación.

Límite de requests

Cada empresa tiene un cupo de 300 requests por minuto en cada API: 300 para la WABA API y otras 300 para la API de CRM. Todas tus claves comparten el mismo cupo.

Si lo superas, la respuesta es 429 con code: RATE_LIMITED y el header Retry-After con los segundos que debes esperar.

La WABA API también puede responder 429 con code: waba_rate_limited. Ese límite no es de Whapi sino de Meta, por la cantidad de mensajes que envía tu línea. Espera unos minutos antes de reintentar.

Cuándo reintentar

Respuesta¿Reintentar?
429Sí, después del tiempo que indica Retry-After.
500, 502, timeout o error de redSí, con esperas crecientes (por ejemplo, 2, 4 y 8 segundos).
Otros 4xxNo. El request tiene un problema y volverá a fallar igual.

Ten cuidado al reintentar POST /messages/send tras un timeout: si el primer intento llegó a Meta, el cliente recibirá el mensaje dos veces.

Compatibilidad

Las rutas no llevan número de versión. Whapi puede agregar campos nuevos a las respuestas y a los webhooks: tu integración debe ignorar los campos que no conozca, en lugar de fallar.

Los webhooks indican su formato en apiVersion (hoy 2026-06-15).