Fehlerbehandlung
Die Trade Hub API HTTP-Fehlercodes – Fehlerantwortformat, Statuscodes und Lösungen.
Die Trade Hub API verwendet standardmäßige HTTP-Statuscodes, um den Erfolg oder das Scheitern einer Anfrage anzuzeigen. Codes im Bereich 2xx zeigen Erfolg an, 4xx-Codes weisen auf einen Clientfehler hin und 5xx-Codes auf einen Serverfehler.
Fehlerantwortformat
Alle Fehler geben einen JSON-Body mit einem detail-Feld zurück, das das Problem beschreibt:
{
"detail": "Fehlerbeschreibung"
}Bei Validierungsfehlern (422) enthält das Format zusätzliche Details:
{
"detail": [
{
"loc": ["body", "content"],
"msg": "Feld erforderlich",
"type": "missing"
}
]
}Fehlercodes
401 Unauthorized
Ungültiger oder fehlender API-Schlüssel. Überprüfen Sie, ob der Header X-API-Key vorhanden ist und einen gültigen Schlüssel enthält.
{
"detail": "Ungültiger oder fehlender API-Schlüssel"
}Häufige Ursachen:
- Header
X-API-Keyfehlt in der Anfrage - API-Schlüssel abgelaufen oder widerrufen
- Schlüssel mit zusätzlichen Leerzeichen oder Zeichen kopiert
- API-Schlüssel von einem Organisationsadministrator deaktiviert
Lösung:
- Überprüfen Sie die korrekte Schreibweise des Headers (
X-API-Key, nichtX-Api-Key) - Prüfen Sie, ob der Schlüssel im Developer Dashboard aktiv ist
- Schlüssel bei Bedarf neu generieren
402 Payment Required
Unzureichendes Guthaben oder Ausgabenlimit erreicht. Ihre Organisation hat keine Guthaben mehr oder das monatliche Ausgabenlimit wurde erreicht.
{
"detail": "unzureichendes Guthaben"
}Häufige Ursachen:
- Aufgeladenes Guthaben erschöpft (Guthabenmodus)
- Monatliches Ausgabenlimit erreicht (Rechnungsmodus)
Zusätzliche Header:
X-Balance-Cents: aktuelles Guthaben in Cent (Guthabenmodus)X-Spending-Limit/X-Spending-Current: Limit und aktuelle Ausgaben (Rechnungsmodus)
Lösung:
- Laden Sie Ihr Guthaben im Billing Dashboard auf
- Passen Sie Ihr Ausgabenlimit bei Bedarf an
- Aktivieren Sie die automatische Aufladung, um Unterbrechungen zu vermeiden
403 Forbidden
Unzureichende Berechtigungen. Ihr API-Schlüssel verfügt nicht über die erforderlichen Rechte für diese Operation.
{
"detail": "Unzureichende Berechtigungen für diese Operation"
}Häufige Ursachen:
- Versuch, auf eine Ressource einer anderen Organisation zuzugreifen
- API-Schlüssel mit eingeschränkten Berechtigungen
- API-Schlüsselumfang nicht ausreichend für diese Ressource
Lösung:
- Überprüfen Sie, ob die Ressource zu Ihrer Organisation gehört
- Kontaktieren Sie Ihren Organisationsadministrator, um die Berechtigungen anzupassen
404 Not Found
Ressource nicht gefunden. Die angegebene Kennung entspricht keiner vorhandenen Ressource.
{
"detail": "Job nicht gefunden"
}Häufige Ursachen:
- Falsche Job- oder Batch-Kennung
- Ressource gelöscht
- Kennung einer anderen Organisation
Lösung:
- Prüfen Sie die Kennung in Ihrer Anfrage
- Verwenden Sie den History-Endpunkt, um die korrekte Ressource zu finden
422 Unprocessable Entity
Validierungsfehler. Der Anfrage-Body entspricht nicht dem erwarteten Format.
{
"detail": [
{
"loc": ["body", "content"],
"msg": "Feld erforderlich",
"type": "missing"
}
]
}Häufige Ursachen:
- Erforderliches Feld fehlt (
content) - Falscher Datentyp (String statt Array)
- Wert außerhalb der akzeptierten Grenzen
- Ungültiges JSON-Format im Anfrage-Body
Lösung:
- Prüfen Sie die Endpunktdokumentation auf erforderliche Parameter
- Validieren Sie Ihr JSON vor dem Senden
- Überprüfen Sie die Datentypen für jedes Feld
429 Too Many Requests
Rate Limit überschritten. Sie haben zu viele Anfragen innerhalb des Zeitfensters gesendet.
{
"detail": "Rate limit überschritten. Wiederholen Sie die Anfrage in 12 Sekunden."
}Lösung:
- Warten Sie die im
Retry-After-Header angegebene Zeit ab - Implementieren Sie exponentielles Backoff
- Verwenden Sie Batch-Klassifizierung, um die Anzahl der Anfragen zu reduzieren
500 Internal Server Error
Interner Serverfehler. Auf der Serverseite ist ein unerwarteter Fehler aufgetreten.
{
"detail": "Interner Serverfehler"
}Lösung:
- Wiederholen Sie die Anfrage nach einigen Sekunden
- Falls der Fehler weiterhin besteht, kontaktieren Sie den Support mit der Anfragenkennung
- Prüfen Sie die Statusseite auf laufende Vorfälle
503 Service Unavailable
Dienst vorübergehend nicht verfügbar. Der Dienst befindet sich in Wartung oder ist überlastet.
{
"detail": "Dienst vorübergehend nicht verfügbar. Bitte versuchen Sie es später erneut."
}Lösung:
- Versuchen Sie es nach einigen Minuten erneut
- Prüfen Sie die Statusseite auf geplante Wartungen
- Implementieren Sie eine Warteschlangenmechanik für fehlgeschlagene Anfragen
Zusammenfassungstabelle
| Code | Bedeutung | Wiederholen? |
|---|---|---|
401 | Ungültiger oder fehlender API-Schlüssel | Nein – Schlüssel korrigieren |
402 | Unzureichendes Guthaben oder Ausgabenlimit | Nein – Guthaben aufladen oder Limit anpassen |
403 | Unzureichende Berechtigungen | Nein – Rechte prüfen |
404 | Ressource nicht gefunden | Nein – Kennung prüfen |
422 | Validierungsfehler | Nein – Anfrage korrigieren |
429 | Rate Limit überschritten | Ja – nach Retry-After-Verzögerung |
500 | Serverfehler | Ja – mit exponentiellem Backoff |
503 | Dienst nicht verfügbar | Ja – nach einigen Minuten |
Empfohlene Handhabung
import httpx
client = httpx.Client(
base_url="https://api.thetradehub.eu",
headers={"X-API-Key": "th_live_your_api_key"},
)
response = client.post("/v1/classify/jobs", json={
"content": "Wireless Bluetooth headphones"
})
match response.status_code:
case 201:
job = response.json()
print(f"Job erstellt: {job['id']}")
case 401:
print("Authentifizierungsfehler. Überprüfen Sie Ihren API-Schlüssel.")
case 402:
print("Unzureichendes Guthaben. Laden Sie Ihre Credits auf.")
case 422:
errors = response.json()["detail"]
for error in errors:
print(f"Validierung: {error['loc']} - {error['msg']}")
case 429:
retry_after = int(response.headers.get("Retry-After", 10))
print(f"Rate Limit erreicht. Wiederholen in {retry_after}s.")
case code if code >= 500:
print(f"Serverfehler ({code}). Später erneut versuchen.")
case _:
print(f"Unerwarteter Fehler: {response.status_code}")const response = await fetch("https://api.thetradehub.eu/v1/classify/jobs", {
method: "POST",
headers: {
"X-API-Key": "th_live_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({ content: "Wireless Bluetooth headphones" }),
});
switch (response.status) {
case 201: {
const job = await response.json();
console.log(`Job erstellt: ${job.id}`);
break;
}
case 401:
console.error("Authentifizierungsfehler. Überprüfen Sie Ihren API-Schlüssel.");
break;
case 402:
console.error("Unzureichendes Guthaben. Laden Sie Ihre Credits auf.");
break;
case 422: {
const { detail } = await response.json();
for (const error of detail) {
console.error(`Validierung: ${error.loc.join(".")} - ${error.msg}`);
}
break;
}
case 429: {
const retryAfter = response.headers.get("Retry-After") || "10";
console.warn(`Rate Limit erreicht. Wiederholen in ${retryAfter}s.`);
break;
}
default:
if (response.status >= 500) {
console.error(`Serverfehler (${response.status}). Später erneut versuchen.`);
} else {
console.error(`Unerwarteter Fehler: ${response.status}`);
}
}Last updated on