> ## Documentation Index
> Fetch the complete documentation index at: https://docs.impulsodigital.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Errores

> Formato y códigos de error.

Todo error tiene la misma forma. `code` es estable (úsalo en tu código); `message` está en español y es para personas.

```json theme={null}
{ "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` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.