API Hop

Dokumentation

API Hop-Dokumentation

Fehlercodes und Fehlerbehebung

Alle Plattformfehlercodes nachschlagen, protokollspezifische Fehler erkennen, sicher wiederholen und Diagnosedaten für Nutzer und KI-Assistenten sammeln.

Fehlerursache eingrenzen

  1. Notieren Sie tatsächlichen HTTP-Status, Anfragemethode und Pfad. HTTP-Status und Anwendungsfehlercode beschreiben unterschiedliche Ebenen; ersetzen Sie keinen durch den anderen.
  2. Lesen Sie Fehlerfelder entsprechend dem aufgerufenen Protokoll. Native, OpenAI-, Claude- und Gemini-Antworten haben nicht alle dieselbe Struktur.
  3. Prüfen Sie bei Streaming auch Fehlerereignisse und Abschlusszustand, bei asynchronen Aufträgen den status. HTTP 200 garantiert keine erfolgreiche Generierung.
  4. Verwenden Sie die folgende Tabelle, um die Anfrage zu korrigieren oder eine Wiederholung zu beurteilen. message ist erklärender Text, kein stabiler Enum-Wert; verzweigen Sie nicht anhand seiner Formulierung.

Aufzählung der Plattformfehlercodes

Dies ist die vollständige Aufzählung der Anwendungsfehlercodes der Plattform. Namen sind Referenzbezeichnungen; code-Werte in Antworten sind Zahlen. „Häufiger HTTP-Status“ dient der Fehlerbehebung und ist keine feste Zuordnung für jeden Endpunkt. Verwenden Sie den tatsächlichen HTTP-Status und Antwortkörper. Ein vom Anbieter durchgereichter code gehört möglicherweise nicht zu dieser Aufzählung.

Numerischer codeNameHäufiger HTTP-StatusBedeutung und Maßnahme
10000BAD_REQUEST400Ungültiges Anfrageformat, Pfad oder grundlegende Parameter. Prüfen Sie Methode, Pfad, JSON-Syntax und Parameternamen.
10001VALIDATION_ERROR400 / 422Parametervalidierung fehlgeschlagen. Prüfen Sie Pflichtfelder, Typen, Wertebereiche und Parameterkombinationen.
20000AUTH_ERROR401Authentifizierung fehlgeschlagen. Prüfen Sie Gültigkeit und Ablauf des API-Schlüssels sowie das Format des Authentifizierungsheaders.
20001FORBIDDEN403Zugriff verweigert oder Konto eingeschränkt. Prüfen Sie Kontoberechtigungen und Ressourceneigentum.
30000NOT_FOUND404Pfad, Modell oder Ressource existiert nicht. Prüfen Sie Endpunktpfad, model und Auftrags-ID anhand der für den aktuellen API-Schlüssel sichtbaren Ressourcen.
30001CONFLICT409Die Operation kollidiert mit dem aktuellen Ressourcenzustand. Lesen Sie diesen vor einer Anpassung; vermeiden Sie doppelte Übermittlungen.
40000INSUFFICIENT_CREDIT402Unzureichendes Guthaben. Prüfen und ergänzen Sie Ihr Guthaben vor einem weiteren Aufruf.
40001RATE_LIMIT429Anfragen treffen zu häufig ein. Senken Sie die Anfragerate und verzögern Sie Wiederholungen.
40002CONCURRENCY_LIMIT429Zu viele gleichzeitige Anfragen. Senken Sie die Parallelität und warten Sie auf den Abschluss laufender Anfragen.
50000PROVIDER_ERROR502Ein Anbieteraufruf schlug fehl oder lieferte kein gültiges Ergebnis. Prüfen Sie, ob ein Ergebnis entstanden ist, bevor Sie begrenzte Wiederholungen erwägen.
50001SERVICE_UNAVAILABLE503Der Dienst ist vorübergehend nicht verfügbar. Wiederholen Sie später mit Grenzen; sammeln Sie Diagnosedaten bei anhaltendem Fehler.
50002GATEWAY_TIMEOUT504Zeitüberschreitung der Verarbeitung. Das Ergebnis kann unklar sein; prüfen Sie vor Wiederholung, ob die Ausführung stattgefunden hat.
50003INTERNAL_ERROR500Ein nicht klassifizierter Serverfehler ist aufgetreten. Wiederholen Sie begrenzt und sammeln Sie Diagnosedaten bei anhaltendem Fehler.

HTTP 429 allein unterscheidet Raten- und Parallelitätslimits nicht zuverlässig. Unterscheiden Sie diese nur anhand eines ausdrücklich vorhandenen numerischen Fehlercodes. Prüfen Sie Modellkennungen in der Modellliste; schreiben Sie model-Werte nicht eigenständig um.

Fehler nach Protokoll lesen

Die folgenden Beispiele zeigen häufige von der Plattform erzeugte Strukturen, kein für jeden Fehler garantiertes Einheitsformat. Authentifizierungsfehler können aus unterschiedlichen Verarbeitungsschichten stammen; durchgereichte Anbieterantworten können eigene Strukturen, Zeichenfolgencodes oder Typen behalten. Erkennen Sie vor dem Parsen die tatsächliche Struktur. Ist sie unbekannt, erhalten Sie Originalfelder und HTTP-Status, statt eine Umwandlung zu erzwingen.

Native Plattform-APIs

Lesen Sie gewöhnlich error.code und error.message. requestId kann fehlen.

json
{
  "success": false,
  "error": {
    "code": 10000,
    "message": "Bad request"
  },
  "requestId": "req_example"
}

Manche Fehler verwenden oberste Felder code und message. Clients sollten dies tolerieren und das Fehlen eines error-Objekts nicht als Erfolgsbeleg werten. Parametervalidierungsantworten können ebenfalls ohne numerischen Fehlercode sein. Behandeln Sie einen fehlenden Code als unbekannt, statt einen zu erfinden.

OpenAI-kompatible APIs

Häufige Plattformfehler verwenden die obersten Felder code, message und type; sie sind nicht unbedingt in error eingeschlossen.

json
{
  "code": 40000,
  "message": "Insufficient credit",
  "type": "api_error"
}

type ist eine Protokollkategorie; code ist in dieser Struktur der numerische Plattformfehlercode. api_error allein entscheidet nicht über die Eignung einer Wiederholung. Durchgereichte Anbieter- und Streamingfehler können ein verschachteltes error enthalten; verarbeiten Sie die tatsächliche Protokollantwort. Siehe Chat Completions und Responses.

Claude-kompatible APIs

In der üblichen Struktur ist der oberste type gleich error, die genaue Kategorie steht in error.type, die Beschreibung in error.message. Diese Struktur enthält keinen numerischen Plattform-code. Erfinden Sie keinen.

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens must be a positive safe integer"
  }
}

Die Plattform erzeugt lokal die folgenden Claude-Fehlertypen. Dies ist keine vollständige Aufzählung der Anbieterfehlertypen.

error.typeLokale HTTP-ZuordnungPrüfpunkte
invalid_request_error400Anfrageformat und Parameter prüfen.
authentication_error401Authentifizierungsdaten prüfen.
api_errorAndere HTTP-StatuswerteAllgemeiner API-Fehler; tatsächlichen HTTP-Status und Beschreibung prüfen. Eine Wiederholung ist nicht zwingend geeignet.

Siehe Claude-Nachrichten.

Fehler im Gemini-Stil

Bei einer Antwort im Gemini-Stil lesen Sie error.code, error.message und error.status. status ist hier eine Zeichenfolgenkategorie, kein HTTP-Status oder Zustand eines asynchronen Auftrags.

json
{
  "error": {
    "code": 10000,
    "message": "Bad request",
    "status": "INVALID_ARGUMENT"
  }
}

Von der Plattform erzeugte Fehler dieser Struktur verwenden numerische Plattformwerte für code. Die lokale Zuordnung des Zeichenfolgenfelds status steht unten; sie zählt nicht alle Anbieterstatuswerte auf.

error.statusLokale HTTP-ZuordnungPrüfpunkte
UNAUTHENTICATED401Authentifizierungsdaten prüfen.
RESOURCE_EXHAUSTED402 / 429Guthaben oder Nutzungslimits prüfen; die Zeichenfolge allein unterscheidet sie nicht.
PERMISSION_DENIED403Berechtigungen und Ressourceneigentum prüfen.
NOT_FOUND404Pfad, Modell oder Ressource prüfen.
UNAVAILABLE503Der Dienst ist vorübergehend nicht verfügbar.
INTERNAL>= 500, außer 503Serverfehler; 504 verwendet ebenfalls diesen Wert.
INVALID_ARGUMENTAndere HTTP-StatuswerteTatsächlichen HTTP-Status und Anfrage prüfen; 409 verwendet ebenfalls diesen Wert.

503 hat Vorrang und verwendet UNAVAILABLE, nicht INTERNAL. Anbieterantworten können andere Bedeutungen für code und status verwenden. Wenden Sie die Plattformfehlercodetabelle nicht auf jeden numerischen Gemini-Code an.

Sicher wiederholen

SituationEmpfohlene Maßnahme
400 / 401 / 402 / 403 / 404 / 409 / 422Korrigieren Sie zuerst Anfrage, Zugangsdaten, Guthaben, Berechtigungen oder Ressourcenzustand. Senden Sie eine unveränderte Anfrage nicht wiederholt. API-Schlüssel gehören nur in Header, niemals in URL-Abfrageparameter.
429Senken Sie Rate und Parallelität und warten Sie vor der Wiederholung. Nur die Anzahl der Versuche zu erhöhen verschärft die Drosselung meist.
500 / 502 / 503 / 504Beurteilen Sie zuerst das Risiko doppelter Ausführung. Verwenden Sie dann begrenztes exponentielles Backoff mit Zufallsstreuung, beispielsweise höchstens 3 Wiederholungen mit Gesamtwartezeitlimit.
Netzwerkabbruch oder Client-ZeitüberschreitungKein empfangenes Ergebnis bedeutet nicht, dass der Server die Anfrage nicht ausgeführt hat. Markieren Sie den Ausgang als unbekannt, statt einen Fehlschlag zu behaupten oder sofort eine neue Anfrage zu erstellen.

Beachten Sie einen gültigen Retry-After-Header, falls vorhanden. Gehen Sie nicht davon aus, dass jeder Fehler ihn enthält. Eine automatische Wiederholung einer nicht idempotenten Generierungsanfrage kann sie erneut ausführen und weitere Kosten verursachen. Diese Seite verspricht keine allgemeine Unterstützung von Idempotenzschlüsseln; selbst hinzugefügtes Idempotency-Key garantiert keine Deduplizierung.

Haben Sie bereits eine jobId, fragen Sie diesen Auftrag ab, bevor Sie einen weiteren erstellen. Ohne jobId und bei ungewissem Ergebnis bewahren Sie Anfragekennung und Zeitstempel für die Untersuchung auf.

Streams und asynchrone Aufträge

SSE-Anfragen

Nach Beginn von SSE kann der HTTP-Status 200 bleiben, während ein späterer Fehler als Ereignis oder Nutzlast im Stream gemeldet wird. Parsen Sie Ereignisse und Daten des gewählten Protokolls und prüfen Sie den normalen Abschluss. Bei Fehler oder unerwartetem Abbruch gelten Teiltexte oder Teilbilder nicht als vollständig erfolgreiches Ergebnis. Ereignisnamen und Nutzlasten unterscheiden sich je Endpunkt. Prüfen Sie nicht nur ein festes error-Feld und werten Sie nicht „irgendein Text empfangen“ als Erfolg.

Asynchrone Aufträge

Eine Erstellungsantwort mit data.jobId bedeutet Annahme, nicht abgeschlossene Generierung. Eine erfolgreiche HTTP-Antwort beim Abfragen eines Auftrags bedeutet eine erfolgreiche Abfrage. Sie müssen weiterhin data.status des Auftrags prüfen:

  • PENDING, CONNECT, PROCESSING: gemäß Jobs-Dokumentation weiter abfragen.
  • COMPLETED: outputResult lesen.
  • FAILED, CANCELLED: Abfragen beenden und Auftrags-ID sowie bereinigte Antwortdaten für die Untersuchung aufbewahren.

Fehlerdetails können in data.outputResult.error stehen. Das Feld ist optional und nicht für jeden fehlgeschlagenen Auftrag garantiert. Verwenden Sie Jobs nur, wenn die Erstellungsantwort ausdrücklich eine jobId liefert. Wenden Sie Auftragspolling nicht auf Endpunkte an, die Ergebnisse direkt per JSON oder SSE zurückgeben.

Diagnose für Nutzer und KI-Assistenten

Geben Sie dem Support oder einem KI-Assistenten die folgenden bereinigten Informationen. Verwenden Sie unknown für fehlende Felder und unknown für den HTTP-Status, wenn keine HTTP-Antwort eintraf. Erhalten Sie Feldpfade und Originaltypen, etwa error.code: 10000 (number) oder error.code: "invalid_api_key" (string). Wandeln Sie einen Zeichenfolgen-code nicht automatisch in einen numerischen Plattformcode um und erfinden Sie fehlende Felder nicht aus message, HTTP-Status oder Modellnamen.

text
time_with_timezone: unknown
method: unknown
path_without_query: unknown
model: unknown
stream: unknown
http_status: unknown
error_code_path_value_and_type: unknown
error_type_path_and_value: unknown
protocol_status_path_and_value: unknown
sanitized_message: unknown
request_id_from_body_or_X-Request-ID: unknown
job_id: unknown
job_status: unknown
retry_after: unknown
retry_count_and_delays: unknown
received_partial_output: unknown

Lesen Sie requestId aus dem Antwortkörper oder dem Antwortheader X-Request-ID, falls vorhanden. Behalten Sie jobId als Zeichenfolge, um bei langen Zahlen keine Genauigkeit zu verlieren. Übermitteln Sie nur minimale bereinigte Anfrageparameter. Entfernen Sie API-Schlüssel, Tokens, Cookies, vollständige Authentifizierungsheader, persönliche Daten, private Prompts und Eingabedateiinhalte. Entfernen Sie URL-Abfrageparameter sowie Ein- oder Ausgabe-URLs mit Signaturen oder Zugangsdaten. Fügen Sie keine vollständigen Anfrageprotokolle ohne Prüfung ein.

KI-Assistenten sollten beobachtete Felder von möglichen Ursachen unterscheiden und fehlende Informationen benennen. Unzureichende Belege dürfen nicht als Nachweis für Erfolg, Nichtausführung oder Kostenfreiheit einer Anfrage gelten.