code es estable (úsalo en tu código); message está en español y es para personas.
{ "error": { "code": "WINDOW_CLOSED", "message": "El contacto no ha escrito en las últimas 24 h: solo se le puede enviar una plantilla aprobada (type: \"template\")." } }
| HTTP | code | Qué pasó |
|---|---|---|
| 400 | VALIDATION_ERROR | Datos inválidos; details dice cuáles |
| 400 | INVALID_JSON | El cuerpo no es un JSON válido |
| 400 | MISSING_RECIPIENT | Falta conversation_id o to |
| 400 | INVALID_PHONE | El teléfono no tiene un formato válido |
| 400 | INVALID_STAGE | La etapa no existe; details.valid_stages lista las válidas |
| 400 | INVALID_SEND_AT | La fecha de envío no está entre 1 minuto y 30 días |
| 401 | MISSING_API_KEY / INVALID_API_KEY | Falta la llave, no existe o fue revocada |
| 403 | ACCOUNT_SUSPENDED | La cuenta está suspendida |
| 403 | INSUFFICIENT_SCOPE | La llave no tiene ese permiso |
| 403 | KEY_RESTRICTED_TO_NUMBERS | Acción de toda la cuenta con una llave limitada a algunos números |
| 403 | WINDOW_CLOSED | Pasaron más de 24 h desde el último mensaje del cliente: envía una plantilla |
| 404 | NOT_FOUND | No existe, o no es de los números de la llave |
| 409 | IDEMPOTENCY_IN_PROGRESS | Una petición con esa Idempotency-Key aún se procesa |
| 409 | TOO_MANY_WEBHOOKS | La cuenta ya tiene 10 avisos |
| 423 | ACCOUNT_PAUSED | La cuenta está pausada: recibe mensajes pero no envía |
| 422 | IDEMPOTENCY_KEY_REUSED | Esa Idempotency-Key ya se usó con otra petición |
| 422 | TEMPLATE_NOT_APPROVED / TEMPLATE_NOT_ON_NUMBER | La plantilla no está aprobada en ese número |
| 422 | NUMBER_NOT_CONNECTED | El número de la conversación no está conectado |
| 429 | RATE_LIMITED | Pasaste el cupo por minuto; espera lo que diga Retry-After |
| 500 | INTERNAL_ERROR | Algo falló de nuestro lado; reintenta con la misma Idempotency-Key |

