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
| Code | Description |
|---|---|
200 | Succès |
400 | Requête incorrecte (paramètres invalides) |
401 | Non authentifié (clé API invalide ou manquante) |
403 | Interdit (restrictions d’accès du forfait) |
404 | Introuvable (carte ou ressource inexistante) |
429 | Trop de requêtes (limite de débit dépassée) |
500 | Erreur 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")