#Errores
La API usa códigos de estado HTTP convencionales y devuelve siempre el mismo envelope de error, con un code legible por máquina.
#Envelope de error
JSON
{
"error": {
"code": "invalid_parameter",
"message": "El parámetro `from` no es una fecha ISO 8601 válida.",
"param": "from"
}
}| Campo | Tipo | Descripción |
|---|---|---|
error.code | string | Identificador estable del error. Compara contra este, no contra message. |
error.message | string | Descripción legible, en español. Puede cambiar. |
error.param | string | Parámetro que causó el error, cuando aplica. |
#Códigos de estado HTTP
| Código | Significado |
|---|---|
200 | OK. |
400 | Petición mal formada o parámetro inválido. |
401 | Falta la API key o es inválida. |
403 | Sin scope suficiente o sin plan API. |
404 | El recurso no existe o no pertenece a tu organización. |
409 | Conflicto (por ejemplo, endpoint de webhook duplicado). |
429 | Se excedió el rate limit. Ver Rate limits. |
500 | Error interno. Reintenta con backoff. |
503 | El SAT no está disponible; el dato aún no se puede servir. |
#Catálogo de error.code
error.code | HTTP | Descripción |
|---|---|---|
missing_api_key | 401 | No se envió el header Authorization. |
invalid_api_key | 401 | La clave no existe o fue revocada. |
insufficient_scope | 403 | La clave no tiene el scope requerido. |
plan_required | 403 | La organización no tiene plan API activo. |
invalid_parameter | 400 | Un parámetro tiene formato o valor inválido. |
not_found | 404 | El recurso no existe o no es visible. |
rate_limited | 429 | Se superó el límite de peticiones. |
sat_unavailable | 503 | El SAT no respondió; reintenta más tarde. |