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ódigoDescripción
200Éxito
400Solicitud incorrecta (parámetros no válidos)
401No autorizado (clave de API no válida o ausente)
403Prohibido (restricción de acceso del plan)
404No encontrado (carta o recurso inexistente)
429Demasiadas solicitudes (límite de tasa superado)
500Error 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")