Zum Inhalt springen

Fehler

Ein Fehlerformat, stabile Codes, klare Regeln für Wiederholungen.

Jede Antwort außerhalb von 2xx hat dieselbe Struktur. Werten Sie error.code aus, nie message.

JSON
{
  "error": {
    "code": "validation_failed",
    "message": "The request is invalid.",
    "request_id": "req_8fK2Lq9ZtX4mN7bV1cW3yH6p",
    "details": [
      {
        "path": "items[3].length",
        "code": "out_of_range",
        "message": "length must be greater than 0."
      }
    ]
  }
}
FeldInhalt
codeStabil, snake_case
messageEnglisch, für Logs
request_idAuch in X-Request-Id. Geben Sie sie beim Support an
details[]Bei 400/422: path, code, message pro Problem

Codes

StatusCodeBedeutungAbhilfeWiederholbar
400invalid_jsonDer Body ist kein gültiges JSON, oder ein Feld hat den falschen Typ.Korrigieren Sie den Anfrage-Body.Nein
401unauthorizedAPI-Schlüssel fehlt, ist fehlerhaft oder unbekannt.Senden Sie Authorization: Bearer cd_live_…; prüfen Sie, ob der Schlüssel vollständig kopiert wurde.Nein
401key_revokedDer Schlüssel wurde widerrufen.Erstellen Sie in der Entwicklerkonsole einen neuen Schlüssel.Nein
401key_expiredDer Schlüssel ist abgelaufen.Erstellen Sie in der Entwicklerkonsole einen neuen Schlüssel.Nein
402insufficient_creditsDie verfügbaren Credits decken nicht einmal den günstigsten möglichen Lauf dieses Jobs.Kaufen Sie ein Credit-Paket oder warten Sie auf die monatlichen Credits; es wurde nichts abgebucht.Nein
403ip_not_allowedDie aufrufende IP-Adresse steht nicht auf der Allowlist des Schlüssels.Rufen Sie die API von einer erlaubten IP-Adresse auf oder passen Sie die Allowlist an.Nein
403subscription_inactiveDie Organisation hat kein aktives Abonnement, das die API enthält.Verlängern Sie das Abonnement.Nein
403account_inactiveDie Organisation ist gesperrt oder hat keinen Inhaber mit aktivem Konto.Wenden Sie sich an den Support.Nein
403scope_missingDem Schlüssel fehlt eine Berechtigung, die dieser Endpoint benötigt.Verwenden Sie einen Schlüssel mit der nötigen Berechtigung (pack:write, jobs:read, account:read, resources:read, resources:write).Nein
403preset_read_onlyVordefinierte Fahrzeuge können weder geändert noch gelöscht werden.Legen Sie ein eigenes Fahrzeug an: POST /v1/vehicles.Nein
403plan_limit_reachedDer Tarif der Organisation erlaubt keine weiteren Projekte oder Artikel.Löschen Sie nicht mehr benötigte Projekte oder wechseln Sie zu einem größeren Tarif.Nein
404not_foundKein /v1-Endpoint hat diese Methode und diesen Pfad.Gleichen Sie Methode und Pfad mit der Endpoint-Liste ab.Nein
404job_not_foundKein Job mit dieser ID in Ihrer Organisation.Prüfen Sie die ID.Nein
404vehicle_not_foundKein Fahrzeug mit dieser ID unter den vordefinierten Fahrzeugen oder den Fahrzeugen Ihrer Organisation.Prüfen Sie die ID anhand von GET /v1/vehicles.Nein
404template_not_foundKeine Vorlage mit dieser ID in Ihrer Organisation.Prüfen Sie die ID anhand von GET /v1/templates.Nein
404project_not_foundKein Projekt mit dieser ID in Ihrer Organisation.Prüfen Sie die ID anhand von GET /v1/projects.Nein
409job_not_finishedDer Job wartet noch oder läuft.Fragen Sie GET /v1/jobs/{id} ab, bis status den Wert succeeded hat.Ja
409project_busyDas Projekt wird gerade berechnet (in der App oder von einem anderen Job).Warten Sie, bis dieser Lauf beendet ist, und versuchen Sie es dann erneut.Ja
409job_failedDer Job ist fehlgeschlagen; es gibt kein Ergebnis.Lesen Sie job.error; Fehler auf unserer Seite kosten nichts (time_limit_exceeded wird wie ein abgebrochener Job berechnet). Senden Sie den Job erneut, wenn die Ursache vorübergehend war.Nein
409job_canceledDer Job wurde abgebrochen; es gibt kein Ergebnis.Senden Sie ihn bei Bedarf erneut.Nein
409job_already_finishedDer Job ist bereits beendet und kann nicht abgebrochen werden.Nichts zu tun.Nein
400idempotency_key_invalidDer Header Idempotency-Key ist länger als 128 Zeichen.Verwenden Sie einen kürzeren Schlüssel (eine UUID genügt).Nein
410result_expiredDie Aufbewahrungsfrist des Ergebnisses ist abgelaufen; es wurde gelöscht.Senden Sie den Job erneut, wenn Sie den Plan noch einmal brauchen.Nein
413payload_too_largeDer Anfrage-Body ist größer als 10 MB.Senden Sie weniger oder einfachere Artikel.Nein
422validation_failedDie Anfrage ist wohlgeformtes JSON, beschreibt aber einen ungültigen Job. details[] listet alle Probleme auf.Korrigieren Sie jedes in details[].path genannte Feld; Validierungsfehler sind kostenlos.Nein
429rate_limitedZu viele Anfragen in der aktuellen Minute, Stunde oder am aktuellen Tag (pro Schlüssel oder pro Organisation) oder mehr als 60 fehlgeschlagene Authentifizierungen pro Minute von Ihrer IP-Adresse.Warten Sie die in Retry-After angegebenen Sekunden ab und versuchen Sie es dann mit Backoff erneut.Ja
429too_many_jobsDie Organisation hat bereits die maximale Zahl wartender und laufender Jobs.Warten Sie, bis laufende Jobs beendet sind, und versuchen Sie es dann erneut.Ja
500internal_errorAuf unserer Seite ist ein Fehler aufgetreten.Wiederholen Sie die Anfrage mit Backoff; nennen Sie dem Support die request_id, wenn der Fehler bestehen bleibt.Ja
503api_disabledDie API ist vorübergehend deaktiviert (Wartung) oder für die Organisation abgeschaltet.Versuchen Sie es später erneut.Ja

Validierungsdetails

details[].code bei 422 validation_failed:

CodeBedeutung
requiredEin Pflichtfeld fehlt
invalid_valueFalscher Typ oder kein zulässiger Wert
out_of_rangeZu klein, zu groß oder zu lang
duplicate_idEine ID wird doppelt verwendet
unknown_vehicleKein vordefiniertes oder eigenes Fahrzeug mit dieser vehicle_id
unknown_templateKeine eigene Vorlage mit dieser template_id
type_not_allowedFahrzeugtyp ist für Ihre Organisation nicht freigeschaltet
unknown_groupEin Artikel nennt eine Gruppe, die nicht aufgeführt ist
does_not_fitDer Artikel passt in keines der angegebenen Fahrzeuge
too_many_itemsMehr Artikeleinheiten als das Job-Limit erlaubt
too_many_vehiclesMehr Fahrzeuge als das Job-Limit erlaubt
unknown_fieldEin Feld, das die API nicht kennt

Job-Fehler

Ein Job mit failed oder canceled nennt den Grund in job.error.code:

CodeBedeutung
canceledAbgebrochen über DELETE /v1/jobs/{id}. Berechnet werden Jobgebühr + genutzte Rechenzeit.
time_limit_exceededDas Rechenzeitbudget war aufgebraucht, bevor ein Fahrzeug beladen wurde. Wird wie ein abgebrochener Job berechnet: Jobgebühr, Zuschlag für große Ladungen und genutzte Rechenzeit, nie die Fahrzeuggebühr.
engine_failedDer Ladealgorithmus ist fehlgeschlagen. Keine Kosten.
queue_timeoutDer Job hat zu lange auf freie Rechenkapazität gewartet. Keine Kosten.
server_restartedDer Dienst wurde neu gestartet, während der Job wartete oder lief. Keine Kosten.

Wiederholungen

Wiederholen Sie Anfragen nach 429, 500 und 503 mit exponentiellem Backoff und beachten Sie Retry-After. Senden Sie denselben Idempotency-Key mit (Idempotenz). Wiederholen Sie andere 4xx-Antworten nie unverändert.

Siehe auch