Gestion des erreurs

Codes de statut HTTP, format des réponses d'erreur et comment les gérer dans l'API TCG Price Lookup.


Format des réponses d’erreur

Toutes les erreurs retournent un format JSON cohérent :

{
  "error": {
    "code": "error_code",
    "message": "Description lisible de l'erreur",
    "details": {}
  }
}

Codes de statut HTTP

CodeDescription
200Succès
400Requête incorrecte (paramètres invalides)
401Non authentifié (clé API invalide ou manquante)
403Interdit (restrictions d’accès du forfait)
404Introuvable (carte ou ressource inexistante)
429Trop de requêtes (limite de débit dépassée)
500Erreur serveur

Erreurs courantes et comment les gérer

401 Unauthorized

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key" } }

Solution : Vérifiez votre clé API. Assurez-vous que l’en-tête X-API-Key est correctement défini.

429 Too Many Requests

{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit reached" } }

La réponse inclut un en-tête Retry-After indiquant le nombre de secondes avant la prochaine requête :

Retry-After: 3600
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1704067200

Solution : Respectez l’en-tête Retry-After. Les limites quotidiennes se réinitialisent à minuit UTC. Mettez à niveau votre forfait si vous avez besoin de plus de requêtes.

403 Forbidden

{ "error": { "code": "feature_not_available", "message": "Price history requires Trader plan" } }

Solution : Les fonctionnalités comme l’historique des prix, les prix gradués et la recherche en lot nécessitent des forfaits supérieurs.

Gestion des erreurs avec les SDK

// JavaScript
try {
  const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
  if (error.status === 429) {
    // Limite de débit : vérifiez le délai avant retry
    const retryAfter = error.headers['retry-after'];
    console.log(`Limite atteinte. Réessayez dans ${retryAfter} secondes`);
  } else if (error.status === 401) {
    console.error('Clé API invalide');
  }
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError

try:
    results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
    print(f"Limite atteinte. Réessayez dans {e.retry_after} secondes")
except AuthError:
    print("Clé API invalide")