4xx/5xx) y un cuerpo JSON en el
formato estándar que se muestra a continuación.
Formato del error
| Campo | Siempre presente | Descripción |
|---|---|---|
code | Sí | Código estable legible por máquina (ej.: NOT_FOUND, VALIDATION_ERROR). |
message | Sí | Mensaje legible por humanos (fallback en pt-BR). |
key | No | Clave de i18n, cuando el mensaje es traducible. |
params | No | Parámetros de interpolación del mensaje (ej.: { "email": "..." }). |
details | No | Detalles adicionales (ej.: errores por campo en la validación). |
Códigos HTTP
| Status | Código típico | Significado | Qué hacer |
|---|---|---|---|
400 | VALIDATION_ERROR | Cuerpo/parámetros inválidos. | Corregir el payload. Ver details. |
401 | UNAUTHORIZED | API key ausente o inválida. | Verificar el header x-api-key. |
403 | FORBIDDEN | Sin permiso para la operación. | Verificar el tipo/scope de la clave. |
404 | NOT_FOUND | El recurso no existe (o pertenece a otra cuenta). | Verificar el ID. |
409 | CONFLICT | Conflicto de estado (duplicado, transición inválida). | Manejar el caso específico. |
422 | UNPROCESSABLE_ENTITY | Solicitud comprendida, pero no procesable. | Revisar la regla de negocio. |
429 | RATE_LIMIT_EXCEEDED | Límite de solicitudes excedido. | Esperar y reintentar con backoff. |
500 / 502 / 503 | INTERNAL_ERROR | Error en el servidor. | Reintentar con backoff; si persiste, contactar soporte. |
Errores de validación (400)
Cuando uno o más campos son inválidos, details contiene el mensaje por campo:
Manejo recomendado
Retry con backoff
En
429 y 5xx, reintente con backoff exponencial. Combine con Idempotency-Key para no
duplicar la operación.No haga retry en 4xx
400/409/422 no se resuelven reintentando — corrija la solicitud.Registre el code y el request id
Guarde
code, status y el cuerpo para diagnóstico. No registre la API key.Idempotencia siempre
En escrituras, use
Idempotency-Key para que los retries sean seguros. Ver
Convenciones.
