Fehler
Jeder Endpunkt schlägt auf dieselbe Weise fehl: mit einem HTTP-Status und einem JSON-Umschlag.
{
"error": {
"type": "invalid_request",
"code": "invalid_input",
"message": "duration must be one of 5, 10.",
"param": "duration",
"details": [ { "param": "duration", "message": "duration must be one of 5, 10." } ],
"request_id": null,
"doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
}
}
| Feld | Bedeutung |
|---|---|
type |
Übergeordnete Fehlerklasse. Entscheide anhand dieser Angabe, was zu tun ist. |
code |
Genauer, stabiler und maschinenlesbarer Grund. Jeder Code hat unten einen eigenen Abschnitt; doc_url verweist darauf. |
message |
Für Menschen lesbare Erklärung, die sicher protokolliert oder einem Entwickler angezeigt werden kann. |
param |
Der fehlerhafte Eingabeparameter oder Header, sofern vorhanden. |
details |
Bei Eingabefehlern jedes gefundene Problem: [{ "param", "message" }]. |
request_id |
Die betreffende Anfrage, sofern vorhanden. |
Für einen Aufruf, der einen Fehler zurückgibt, werden keine Kosten berechnet. Eine Anfrage, die nach ihrer Annahme fehlschlägt, behält den Status
failed, enthält error: { "type", "code", "message" } im Anfrageobjekt und wird automatisch erstattet.
Typen
| Typ | HTTP-Status | Was zu tun ist |
|---|---|---|
invalid_request |
400, 413 oder 422 | Korrigiere die Anfrage. Ein erneuter Versuch mit demselben Aufruf schlägt wieder fehl. |
authentication_error |
401 | Sende einen gültigen Schlüssel in Authorization: Bearer <key>. |
permission_error |
403 | Verwende einen Schlüssel mit dem erforderlichen Scope. |
not_found |
404 | Prüfe die Modell-ID oder Anfrage-ID. |
insufficient_credits |
402 | Lade das API-Guthaben auf (top_up_url im Fehler). |
budget_exceeded |
402 | Das eigene Budget des Schlüssels ist aufgebraucht. Abschließend: Bitte den Besitzer des Schlüssels, es zu erhöhen. |
conflict |
409 | Die Ressource befindet sich nicht in einem Zustand, der diesen Aufruf erlaubt. |
rate_limited |
429 | Warte Retry-After Sekunden und versuche es dann erneut. |
upstream_error |
502 | Das Modell-Backend ist fehlgeschlagen. Ein erneuter Versuch mit demselben Idempotency-Key ist sicher: Er wird erneut ausgeführt; es wurden keine Kosten berechnet. |
service_unavailable |
503 | Die API ist pausiert oder eine Abhängigkeit ist nicht verfügbar. Versuche es später erneut. |
internal_error |
500 | Unser Fehler. Versuche es erneut; wenn er bestehen bleibt, kontaktiere den Support mit der Uhrzeit und request_id. |
Codes
invalid_request
Allgemeine fehlerhaft formatierte Anfrage (400).
invalid_json
Der Body ist kein gültiges JSON (400).
invalid_body
Der Body ist gültiges JSON, aber kein Objekt; die Modelleingabe muss ein JSON-Objekt sein (400).
body_too_large
Der Body ist größer als 16 MB (413). Lade große Dateien hoch und übergib stattdessen ihre URL (siehe Dateien).
invalid_parameter
Ein Abfrageparameter hat einen falschen Wert, zum Beispiel limit außerhalb von 1 bis 100, wait ist keine Zahl, ein unbekannter
status oder eine unbekannte category oder storage ist nicht permanent / temporary (400). param nennt ihn.
invalid_category
GET /openapi.json?category= nennt eine Kategorie, die nicht existiert (400). GET https://api.doitong.ru/v1/categories listet sie auf.
invalid_cursor
Der cursor eines Listenaufrufs gehört nicht zu dieser Liste (400). Beginne ohne Cursor von vorn.
invalid_idempotency_key
Der Header Idempotency-Key ist leer oder länger als 255 Zeichen (400).
invalid_arguments
Ein MCP-Toolaufruf enthält ein fehlendes oder fehlerhaft formatiertes Argument (nur MCP). param nennt das Argument.
invalid_input
Die Modelleingabe besteht die Validierung nicht (422): ein unbekannter Parameter (die Meldung schlägt den ähnlichsten gültigen Namen vor),
ein fehlender erforderlicher Parameter, ein falscher Typ, ein Wert außerhalb der zulässigen Liste oder des zulässigen Bereichs oder sowohl der kanonische als auch der
native Name mit unterschiedlichen Werten. param ist der erste fehlerhafte Parameter und details listet alle auf.
Es werden keine Kosten berechnet.
unsupported_file
Eine Datei hat einen nicht unterstützten Typ (422), zum Beispiel ein Upload mit einer nicht unterstützten Erweiterung oder ein content_type,
der nicht mit der Erweiterung übereinstimmt.
invalid_webhook_url
webhook_url ist keine öffentliche https://-URL (422). Private, lokale und einfache http://-Adressen werden abgelehnt.
missing_api_key
Der Endpunkt benötigt einen API-Schlüssel, aber es wurde keiner gesendet (401).
invalid_api_key
Der Schlüssel ist unbekannt, widerrufen oder abgelaufen (401).
insufficient_scope
Dem Schlüssel fehlt der für diesen Aufruf erforderliche Scope (403), zum Beispiel models:run für eine Ausführung oder models:read, um
Anfragen und das Guthaben zu lesen. Siehe Authentifizierung.
account_disabled
Das Konto ist geschlossen oder gesperrt (403). Seine Schlüssel funktionieren nicht mehr.
not_found
Der Pfad existiert nicht (404).
model_not_found
Kein öffentliches Modell hat diese ID (404). Liste Modelle mit GET https://api.doitong.ru/v1/models auf.
request_not_found
In deinem Konto existiert keine Anfrage mit dieser ID (404). Anfragen anderer Konten sind niemals sichtbar.
insufficient_credits
Das API-Guthaben des Kontos (API-Credits, 1.000 API-Credits = 1 $ — nicht die Credits der Doitong-Apps) deckt den
Preis dieses Aufrufs nicht ab (402). Die Antwort wird gesendet, bevor Kosten entstehen. Der Fehler enthält top_up_url; zahle unter
https://doitong.ru/developers/dashboard#balance Geld ein und versuche es erneut.
{ "error": { "type": "insufficient_credits", "code": "insufficient_credits",
"message": "This request costs 560 API credits ($0.56); the API balance is 120 API credits ($0.12). Top up at https://doitong.ru/developers/dashboard#balance",
"top_up_url": "https://doitong.ru/developers/dashboard#balance", "doc_url": "https://doitong.com/developers/docs/errors#insufficient_credits" } }
budget_exceeded
Der Aufruf würde das eigene Budget des API-Schlüssels in API-Credits überschreiten (402). Das Budget wird vom Besitzer des Schlüssels festgelegt; ein erneuter Versuch hilft nicht, bis es erhöht wird.
conflict
Der Aufruf steht im Konflikt mit dem aktuellen Zustand der Ressource (409).
idempotency_mismatch
Der Idempotency-Key wurde bereits mit einem anderen Body verwendet (409). Verwende für eine neue Operation einen neuen Schlüssel.
idempotency_in_progress
Eine Anfrage mit demselben Idempotency-Key wird gerade erstellt (409). Versuche es nach einem kurzen Moment erneut, um sie abzurufen.
request_active
Die Anfrage befindet sich noch im Status queued oder running, daher gibt es noch keine Dateien zum Löschen (409). Lösche sie, sobald die Anfrage abgeschlossen ist.
not_cancelable
Die Anfrage ist bereits succeeded oder failed und kann nicht abgebrochen werden (409).
rate_limited
Der Schlüssel hat im aktuellen Zeitfenster zu viele Anfragen gestellt (429). Siehe die Header X-RateLimit-* und Retry-After.
too_many_inflight
Das Konto hat bereits 10 Anfragen im Status queued oder running (429). Starte die nächste, sobald eine davon abgeschlossen ist.
upstream_error
Das Modell-Backend hat die Anfrage abgelehnt oder ist fehlgeschlagen (502 bei der Ausführung oder failed mit diesem Code bei der Anfrage). Die API-Credits werden
erstattet. Wenn das Backend die Eingabe selbst abgelehnt hat, gibt der Aufruf stattdessen 422 invalid_input mit seiner Meldung zurück.
upstream_lost
Das Modell-Backend kennt die Anfrage nicht mehr, daher wird niemals ein Ergebnis eintreffen. Sie endet mit diesem Code im Status failed
(Typ upstream_error) und wird erstattet. Führe sie erneut aus.
timeout
Die Anfrage lief länger als ihr Limit (15 Minuten für Bilder, 60 für Video, 30 für alles andere) und wurde beendet. Sie endet mit diesem Code im Status
failed und wird erstattet.
service_unavailable
Die API ist vorübergehend pausiert oder eine Abhängigkeit wie Datei-Uploads ist nicht verfügbar (503). Versuche es später erneut.
internal_error
Auf unserer Seite ist etwas schiefgelaufen (500). Versuche es erneut; wenn der Fehler bestehen bleibt, kontaktiere den Support.
charge_failed
Das Konto konnte aufgrund eines internen Problems nicht belastet werden (500). Die Anfrage wird als failed markiert; es wurde nichts abgebucht. Versuche es erneut.
pricing_unavailable
Der Preis des Modells ist nicht konfiguriert, daher kann es derzeit weder bepreist noch ausgeführt werden (500).