Errores
Referencia de códigos de error HTTP, formato de respuestas de error y tips de debugging.
#¿Cómo interpreto un error?
Comprueba primero el código HTTP y después el cuerpo JSON. Los errores no tienen todos el mismo esquema ni un campo code obligatorio. Un timeout tampoco demuestra que una escritura no se haya guardado.
| HTTP | Qué revisar |
|---|---|
400 | Cuerpo, parámetros, filtros o selección de tienda inválidos. |
401 | Llave ausente, inválida, revocada o expirada. |
403 | Acceso a tienda, scope, plan o límite de la operación. |
404 | Recurso no encontrado dentro del alcance consultado. |
409 | Conflicto específico de la operación; lee el cuerpo. |
429 | Frecuencia excesiva; respeta Retry-After cuando se incluya. |
500 | Fallo del servidor; conserva la información de diagnóstico sin exponer credenciales. |
#Ejemplo de manejo de una consulta
async function readResource(url, apiKey) {
const response = await fetch(url, {
headers: { Authorization: `Bearer ${apiKey}` }
});
const body = await response.json().catch(() => null);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${body?.error ?? body?.message ?? 'Error de respuesta'}`);
}
return body;
}#¿Debo reintentar?
Un error de formato o permisos no se resuelve enviando lo mismo repetidamente. Para límites de frecuencia consulta Rate limiting. Antes de reintentar una escritura, comprueba su resultado y las reglas de duplicados de ese endpoint.
La falta de un recurso en un filtro de activos no prueba que esté eliminado. Una respuesta de plan no sustituye la oferta ni acredita que cambiar de plan resolverá cualquier fallo de permisos.
Consulta Autenticación y el artículo del recurso correspondiente.