Idempotencia & rate limits

Idempotencia

POST /messages exige la cabecera Idempotency-Key (única por operación; hasta 255 caracteres). Reintentar con la misma clave y el mismo payload devuelve 200 con status: "duplicado_identico" y no vuelve a enviar. Reusar la misma clave con un payload distinto devuelve 409 idempotency_conflict.

Usa un identificador estable por intento (p. ej. un UUID por mensaje) y reintenta con la MISMA clave ante errores de red — nunca duplicarás el envío.

Rate limits

  • 2 mensajes/segundo por número de WhatsApp.
  • 1200 mensajes/minuto por workspace.
  • Ambos aplican; el más restrictivo gana. Al superarlos: 429 rate_limit_exceeded con cabecera Retry-After (segundos).
  • Cuota mensual del plan agotada: 429 monthly_message_limit_exceeded (los mensajes de WhatsApp los factura Meta a tu WABA; la cuota es un límite comercial del plan).

Cabeceras

  • X-Request-Id — en toda respuesta; úsalo para soporte/trazabilidad.
  • Retry-After — en 429 de rate limit; segundos hasta reintentar.