Przejdź do treści
Przewodnik po API

Błędy

Wyświetl jako Markdown Zaktualizowano

Każdy endpoint kończy się tak samo: statusem HTTP i jednym obiektem JSON.

JSON
{
  "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"
  }
}
Pole Znaczenie
type Ogólna klasa błędu. Na tej podstawie zdecyduj, co zrobić.
code Dokładna przyczyna, stabilna i czytelna maszynowo. Każdy kod ma poniżej własną sekcję; doc_url prowadzi do niej.
message Zrozumiałe dla człowieka wyjaśnienie, bezpieczne do zapisania w logu lub wyświetlenia deweloperowi.
param Błędny parametr danych wejściowych lub nagłówek, jeśli taki istnieje.
details W przypadku błędów danych wejściowych każdy znaleziony problem: [{ "param", "message" }].
request_id Żądanie, którego dotyczy błąd, jeśli istnieje.

Za wywołanie zwracające błąd nie jest pobierana opłata. Żądanie, które kończy się niepowodzeniem po zaakceptowaniu, zachowuje status failed, zawiera error: { "type", "code", "message" } w obiekcie żądania i otrzymuje automatyczny zwrot.

Typy

Typ Status HTTP Co zrobić
invalid_request 400, 413 lub 422 Popraw żądanie. Ponowienie tego samego wywołania znów się nie powiedzie.
authentication_error 401 Wyślij prawidłowy klucz w Authorization: Bearer <key>.
permission_error 403 Użyj klucza z wymaganym zakresem uprawnień.
not_found 404 Sprawdź identyfikator modelu lub żądania.
insufficient_credits 402 Doładuj saldo API (top_up_url w błędzie).
budget_exceeded 402 Wykorzystano budżet tego klucza. Ostatecznie poproś właściciela klucza o jego zwiększenie.
conflict 409 Zasób nie jest w stanie pozwalającym na to wywołanie.
rate_limited 429 Odczekaj Retry-After sekund, a następnie ponów próbę.
upstream_error 502 Backend modelu nie zadziałał. Możesz bezpiecznie ponowić próbę z tym samym Idempotency-Key: operacja wykona się ponownie; opłata nie została pobrana.
service_unavailable 503 API jest wstrzymane lub niedostępna jest zależność. Spróbuj później.
internal_error 500 Błąd po naszej stronie. Ponów próbę; jeśli problem się utrzymuje, skontaktuj się z pomocą techniczną, podając czas i request_id.

Kody

invalid_request

Ogólnie nieprawidłowe żądanie (400).

invalid_json

Treść nie jest prawidłowym JSON-em (400).

invalid_body

Treść jest prawidłowym JSON-em, ale nie jest obiektem; dane wejściowe modelu muszą być obiektem JSON (400).

body_too_large

Treść jest większa niż 16 MB (413). Prześlij duże pliki i zamiast nich przekaż ich URL (zobacz Pliki).

invalid_parameter

Parametr zapytania ma nieprawidłową wartość, na przykład limit poza zakresem od 1 do 100, wait nie jest liczbą, nieznany status lub category, albo storage ma wartość inną niż permanent / temporary (400). param wskazuje ten parametr.

invalid_category

GET /openapi.json?category= wskazuje kategorię, która nie istnieje (400). GET https://api.doitong.com/v1/categories wyświetla ich listę.

invalid_cursor

cursor wywołania listy nie należy do tej listy (400). Zacznij ponownie bez kursora.

invalid_idempotency_key

Nagłówek Idempotency-Key jest pusty lub dłuższy niż 255 znaków (400).

invalid_arguments

Wywołanie narzędzia MCP zawiera brakujący lub nieprawidłowy argument (tylko MCP). param wskazuje argument.

invalid_input

Dane wejściowe modelu nie przechodzą walidacji (422): nieznany parametr (komunikat sugeruje najbardziej zbliżoną prawidłową nazwę), brak wymaganej wartości, nieprawidłowy typ, wartość spoza dozwolonej listy lub zakresu albo podano nazwę kanoniczną i natywną z różnymi wartościami. param wskazuje pierwszy błędny parametr, a details zawiera wszystkie. Opłata nie jest pobierana.

unsupported_file

Plik ma typ, którego nie akceptujemy (422), na przykład przesłano plik z nieobsługiwanym rozszerzeniem lub content_type niezgodny z rozszerzeniem.

invalid_webhook_url

webhook_url nie jest publicznym adresem URL https:// (422). Adresy prywatne, lokalne i zwykłe http:// są odrzucane.

missing_api_key

Endpoint wymaga klucza API, ale go nie wysłano (401).

invalid_api_key

Klucz jest nieznany, unieważniony lub wygasł (401).

insufficient_scope

Klucz nie ma zakresu uprawnień wymaganego przez to wywołanie (403), na przykład models:run do uruchomienia lub models:read do odczytu żądań i salda. Zobacz Uwierzytelnianie.

account_disabled

Konto jest zamknięte lub zawieszone (403). Jego klucze przestały działać.

not_found

Ścieżka nie istnieje (404).

model_not_found

Żaden publiczny model nie ma tego identyfikatora (404). Wyświetl modele za pomocą GET https://api.doitong.com/v1/models.

request_not_found

Na koncie nie istnieje żądanie o tym identyfikatorze (404). Żądania innych kont nigdy nie są widoczne.

insufficient_credits

Saldo API konta (kredyty API, 1000 kredytów API = 1 $ — nie kredyty aplikacji Doitong) nie pokrywa ceny tego wywołania (402). Odpowiedź jest wysyłana, zanim zostanie pobrana jakakolwiek opłata. Błąd zawiera top_up_url; dodaj środki pod adresem https://doitong.com/developers/dashboard#balance i ponów próbę.

JSON
{ "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.com/developers/dashboard#balance",
             "top_up_url": "https://doitong.com/developers/dashboard#balance", "doc_url": "https://doitong.com/developers/docs/errors#insufficient_credits" } }

budget_exceeded

Wywołanie przekroczyłoby własny budżet klucza API w kredytach API (402). Budżet ustala właściciel klucza; ponowienie próby nie pomoże, dopóki go nie zwiększy.

conflict

Wywołanie jest sprzeczne z bieżącym stanem zasobu (409).

idempotency_mismatch

Idempotency-Key został już użyty z inną treścią (409). Użyj nowego klucza dla nowej operacji.

idempotency_in_progress

Właśnie tworzone jest żądanie z tym samym Idempotency-Key (409). Za chwilę ponów próbę, aby je uzyskać.

request_active

Żądanie nadal ma status queued lub running, więc nie ma jeszcze plików do usunięcia (409). Usuń je po zakończeniu żądania.

not_cancelable

Żądanie ma już status succeeded lub failed i nie można go anulować (409).

rate_limited

Klucz wykonał zbyt wiele żądań w bieżącym oknie (429). Zobacz nagłówki X-RateLimit-* i Retry-After.

too_many_inflight

Konto ma już 10 żądań ze statusem queued lub running (429). Uruchom następne, gdy jedno z nich się zakończy.

upstream_error

Backend modelu odrzucił żądanie lub nie zdołał go wykonać (502 podczas uruchamiania albo failed z tym kodem w żądaniu). Kredyty API są zwracane. Jeśli backend odrzucił same dane wejściowe, wywołanie zwraca 422 invalid_input z odpowiednim komunikatem.

upstream_lost

Backend modelu nie zna już żądania, więc wynik nigdy nie nadejdzie. Żądanie kończy się statusem failed z tym kodem (typ upstream_error) i otrzymuje zwrot. Uruchom je ponownie.

timeout

Żądanie trwało dłużej niż limit (15 minut dla obrazów, 60 dla wideo, 30 w pozostałych przypadkach) i zostało zatrzymane. Kończy się statusem failed z tym kodem i otrzymuje zwrot.

service_unavailable

API jest tymczasowo wstrzymane lub niedostępna jest zależność, na przykład przesyłanie plików (503). Spróbuj później.

internal_error

Coś zepsuło się po naszej stronie (500). Ponów próbę; jeśli problem się utrzymuje, skontaktuj się z pomocą techniczną.

charge_failed

Nie można obciążyć konta z powodu wewnętrznego problemu (500). Żądanie otrzymuje status failed; nic nie pobrano. Ponów próbę.

pricing_unavailable

Cena modelu nie jest skonfigurowana, więc nie można jej teraz wyświetlić ani uruchomić modelu (500).