Manejo de errores
Códigos de estado HTTP de la API TCG Price Lookup, formato de respuestas de error y cómo gestionarlos.
Formato de respuesta de error
Todos los errores devuelven un formato JSON consistente:
{
"error": {
"code": "error_code",
"message": "Descripción legible del error",
"details": {}
}
}
Códigos de estado HTTP
| Código | Descripción |
|---|---|
200 | Éxito |
400 | Solicitud incorrecta (parámetros no válidos) |
401 | No autorizado (clave de API no válida o ausente) |
403 | Prohibido (restricción de acceso del plan) |
404 | No encontrado (carta o recurso inexistente) |
429 | Demasiadas solicitudes (límite de tasa superado) |
500 | Error del servidor |
Errores comunes y cómo gestionarlos
401 Unauthorized
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }
Solución: Verifique su clave de API. Compruebe que el encabezado X-API-Key esté configurado correctamente.
429 Too Many Requests
{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }
La respuesta incluye el encabezado Retry-After con los segundos hasta la próxima solicitud:
Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200
Solución: Respete el encabezado Retry-After. Los límites diarios se restablecen a medianoche UTC. Si necesita más solicitudes, actualice su plan.
403 Forbidden
{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }
Solución: Funciones como el historial de precios, los precios graduados y la búsqueda en lote requieren un plan superior.
Manejo de errores con los SDK
// JavaScript
try {
const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
if (error.status === 429) {
// Límite de tasa: verifique el tiempo hasta el reintento
const retryAfter = error.headers['retry-after'];
console.log(`Límite de tasa. Reintente en ${retryAfter} segundos`);
} else if (error.status === 401) {
console.error('Clave de API no válida');
}
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError
try:
results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
print(f"Límite de tasa. Reintente en {e.retry_after} segundos")
except AuthError:
print("Clave de API no válida")