Fehlerbehandlung

HTTP-Statuscodes, Format der Fehlerantworten und Umgang damit in der TCG Price Lookup API.


Format der Fehlerantworten

Alle Fehler geben ein einheitliches JSON-Format zurück:

{
  "error": {
    "code": "error_code",
    "message": "Menschenlesbare Fehlerbeschreibung",
    "details": {}
  }
}

HTTP-Statuscodes

CodeBeschreibung
200Erfolg
400Ungültige Anfrage (ungültige Parameter)
401Nicht autorisiert (API-Schlüssel ungültig oder fehlend)
403Verboten (Plan-Zugriffsbeschränkung)
404Nicht gefunden (Karte oder Ressource existiert nicht)
429Zu viele Anfragen (Rate Limit überschritten)
500Server-Fehler

Häufige Fehler und Lösungen

401 Unauthorized

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

Lösung: Überprüfen Sie Ihren API-Schlüssel. Stellen Sie sicher, dass der X-API-Key-Header korrekt gesetzt ist.

429 Too Many Requests

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

Die Antwort enthält einen Retry-After-Header mit der Wartezeit in Sekunden bis zur nächsten Anfrage:

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

Lösung: Beachten Sie den Retry-After-Header. Tageslimits werden um Mitternacht UTC zurückgesetzt. Upgraden Sie Ihren Plan, wenn Sie höhere Limits benötigen.

403 Forbidden

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

Lösung: Funktionen wie Preisverlauf, gradierte Preise und Batch-Suche erfordern höhere Pläne.

Fehlerbehandlung mit SDKs

// JavaScript
try {
  const card = await tcg.cards.get('pokemon-base1-4');
} catch (error) {
  if (error.status === 429) {
    // Rate Limit: Wartezeit prüfen
    const retryAfter = error.headers['retry-after'];
    console.log(`Rate Limit erreicht. Bitte in ${retryAfter} Sekunden erneut versuchen.`);
  } else if (error.status === 401) {
    console.error('API-Schlüssel ist ungültig');
  }
}
# Python
from tcglookup import TCGLookup, RateLimitError, AuthError

try:
    results = tcg.cards.search(name="charizard", game="pokemon")
except RateLimitError as e:
    print(f"Rate Limit erreicht. Bitte in {e.retry_after} Sekunden erneut versuchen.")
except AuthError:
    print("API-Schlüssel ist ungültig")