dokumentacja
Pomoc

Błędy i limity

Markdown

Kody odpowiedzi, ich znaczenie i zalecane działania. Wszystkie błędy mają format JSON i zawierają Request ID.

Pełny przewodnik

Format błędu

Błąd jest zwracany w formacie wywołanego API: obiekt error dla OpenAI, {"type": "error", "error": {...}} dla Anthropic i error z polami status i details dla Gemini. Dlatego SDK rozpoznają je jako zwykłe błędy API.

  • error.code i error.reason — klasa błędu z poniższej tabeli; ich wartości są takie same. error.type — standardowa wartość dla danego formatu (na przykład invalid_request_error lub server_error).
  • error.request_id (w Anthropic — request_id na najwyższym poziomie), nagłówek X-Request-ID i końcówka treści komunikatu — identyfikator żądania.
  • W Gemini klasa znajduje się w error.details: ErrorInfo.reason — ten sam kod zapisany wielkimi literami (na przykład MODEL_OVERLOADED), domain — ailoot.ai; identyfikator żądania — w RequestInfo.requestId.
  • W formacie Gemini błąd 5xx, którego nie wolno automatycznie ponawiać, oraz result_pending_check są zwracane ze statusem 409 i status ABORTED: dzięki temu Gemini SDK i CLI nie ponawiają ich samodzielnie. Klasa błędu znajduje się w ErrorInfo.reason (na przykład MODEL_TIMEOUT lub RESULT_PENDING_CHECK).
  • Odpowiedź w formacie OpenAI zawiera również pola najwyższego poziomu code i message — dla starszych aplikacji klienckich.
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}

Kody błędów

HTTPKlasa (reason)Co się stałoCo zrobić
400invalid_requestŻądanie jest nieprawidłowe: błędna treść lub parametr; model nie obsługuje pola, załącznika lub narzędzia z żądania; klucz przekazano w adresie Popraw żądanie zgodnie z treścią błędu: usuń nieobsługiwane pole, załącznik lub narzędzie; klucz przekazuj w nagłówku. Odrzucenie z powodu nieobsługiwanego pola, załącznika lub narzędzia następuje przed utworzeniem rezerwy — nic nie pobrano
400context_length_exceededŻądanie przekracza długość kontekstu modeluSkróć historię lub wybierz model z większym kontekstem
400content_policy_violationŻądanie odrzucono zgodnie z zasadami modeluPrzeformułuj żądanie
401invalid_api_keyBrak klucza lub klucz jest nieprawidłowySprawdź, czy przekazano cały klucz
401api_key_disabledKlucz jest wyłączonyWłącz klucz lub utwórz nowy
402insufficient_balance, insufficient_quotaWolne saldo nie wystarcza nawet na minimalną rezerwę (insufficient_quota — ten sam przypadek w formie stosowanej przez OpenAI SDK)Doładuj saldo lub zmniejsz max_tokens
402api_key_quota_exhaustedWyczerpano całkowity limit wydatków kluczaZwiększ limit klucza w panelu
402payment_disputedNa koncie jest zadłużenie z tytułu zakwestionowanej płatnościNowe żądania są wstrzymane do spłaty — skontaktuj się z pomocą techniczną
403api_key_expiredKlucz wygasłUtwórz nowy klucz
403account_inactiveTwoje konto jest wyłączoneSkontaktuj się z pomocą techniczną
403permission_deniedKlucz nie ma uprawnień do tego żądania (na przykład ze względu na IP)Sprawdź ograniczenia klucza
404model_not_foundTaki model nie istniejePorównaj ID z /v1/models
404unsupported_endpointModel nie działa w tym formacieWybierz inny format lub model
404not_foundTaka ścieżka lub taki obiekt nie istnieje (na przykład zadanie)Sprawdź adres i identyfikator
409duplicate_requestOperacja z tym samym kluczem idempotencji została już przyjęta i mogła się już zakończyćSprawdź wynik pierwszej operacji; nie wysyłaj nowej
409not_ready, video_not_readyWideo lub inne zadanie nie jest jeszcze gotoweSprawdź status później
409, 503result_pending_checkUstalamy wynik żądania. W przypadku zadania wideo jest to flaga result_pending_check: true w odpowiedzi ze statusem; samo zadanie pozostaje w stanie in_progressNie wysyłaj żądania ponownie — status pojawi się w historii (GET https://ailoot.ai/api/v1/usage). Nie twórz zadania wideo od nowa: sprawdź je później przez GET /v1/videos/{id}
410model_retiredModel wycofano z obsługiWybierz nową wersję z GET /v1/models
413request_too_largeTreść żądania jest zbyt dużaZmniejsz pliki lub skróć historię
429rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_fullZ Twojego konta wysłano zbyt wiele żądań lub zbyt wiele żądań jednocześniePoczekaj (nagłówek Retry-After, zwykle 10 s) i ponów żądanie
429usage_limit_reachedWyczerpano limit wydatków klucza w oknie czasowym (5 godzin, 1 dzień lub 7 dni)Poczekaj na odnowienie okna lub zwiększ limit klucza
500internal_errorBłąd AilootSkontaktuj się z pomocą techniczną, podając Request ID
502invalid_model_response, empty_response, incomplete_responseModel zwrócił nieprawidłową, pustą lub niepełną odpowiedźZnajdź Request ID w historii panelu konta. Jeśli jest tam wynik lub obciążenie, ponowienie utworzy drugie płatne żądanie. Brak wpisu nie potwierdza, że żądanie nie zostało wysłane lub wykonane: nie ponawiaj wysyłki o nieznanym statusie; skontaktuj się z pomocą, podając Request ID.
502result_not_deliveredWynik nie został dostarczony z winy Ailoot; rezerwa lub pobrana kwota zostały zwróconeŻądanie można wysłać ponownie
503model_overloadedModel jest chwilowo przeciążonyJeśli X-Should-Retry: true — ponów po Retry-After sekundach; jeśli false — najpierw sprawdź Request ID w historii
503model_unavailableModel jest chwilowo niedostępnyWybierz inny model. Jeśli X-Should-Retry: true — ponów żądanie po liczbie sekund wskazanej przez Retry-After; jeśli false — najpierw sprawdź Request ID w historii
503service_unavailableChwilowa awaria po stronie AilootJeśli X-Should-Retry: true — ponów po Retry-After sekundach; jeśli false — najpierw sprawdź Request ID w historii
503charge_not_confirmedOdpowiedź nie została wydana: nie udało się potwierdzić pobrania opłaty; rezerwa została zwrócona, pieniędzy nie pobranoJeśli X-Should-Retry: true — ponów po Retry-After sekundach; jeśli false — najpierw sprawdź Request ID w historii
504model_timeoutModel nie odpowiedział na czas; wynik może się jeszcze pojawićNie wysyłaj żądania ponownie, dopóki nie sprawdzisz Request ID w historii

Kody dotyczące odpowiedzi modelu i sprawdzania wyniku (502, 503 i 504) wskazują teraz model lub żądanie: model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed i result_pending_check. Jeśli Twój kod porównuje error.code z poprzednimi wartościami, zastąp je kodami z tabeli; informacje o powiązaniu dawnych kodów z nowymi poda pomoc techniczna.

Kiedy ponawiać żądanie

  • Najpierw sprawdź X-Should-Retry: przy false, result_pending_check lub model_timeout nie ponawiaj żądania automatycznie. Znajdź Request ID w historii panelu: widać tam wynik i pobraną opłatę.
  • Ponowienie jest bezpieczne, gdy otrzymasz X-Should-Retry: true: poczekaj Retry-After sekund. W przypadku 5xx sam kod nie wystarcza: wynik mógł już się pojawić. Najpierw sprawdź historię w panelu lub skontaktuj się z pomocą techniczną, podając Request ID. To szczególnie ważne w przypadku obrazów, wideo, muzyki i długich kroków agentów.
  • Ponowienie nie pomoże: 400, 401, 402, 403, 404 — najpierw popraw żądanie, klucz lub saldo.

Limity

Częstotliwość i liczba jednoczesnych żądań są ograniczone dla całego konta, a nie pojedynczego klucza. Po przekroczeniu limitu otrzymasz 429 rate_limit_exceeded z nagłówkiem Retry-After: 10. Jeśli przeciążony jest sam model — 503 model_overloaded z Retry-After: 30. Jeśli potrzebujesz większej przepustowości, skontaktuj się z pomocą techniczną.

Limity wydatków ustawia się dla klucza: całkowity limit — 402 api_key_quota_exhausted, okna 5 godzin, 1 dzień i 7 dni — 429 usage_limit_reached. Więcej informacji — Klucze i adres API.

Modele NVIDIA: kolejka

Listę modeli można pobrać także przy zerowym saldzie; generowanie wymaga salda wystarczającego na rezerwę. Modele NVIDIA (Nemotron i inne) korzystają ze wspólnej kolejki: przy dużym obciążeniu odpowiedź może nadejść później albo zostanie zwrócony błąd „model jest chwilowo przeciążony” z nagłówkiem Retry-After — ponów żądanie po wskazanym czasie. Ceny są w katalogu, a opłaty pobiera się tak jak dla pozostałych modeli.

Limity rozmiaru zależą od modelu: kontekst (ile tokenów można wysłać) i maksymalna długość odpowiedzi. Są podane w katalogu.

Historia i wydatki

Historia i wydatki · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN

JWT ≠ sk-… · Logowanie i sesje

Dodatkowe pytania? Prześlij Request ID i opis — pomożemy wyjaśnić sprawę.Napisz do wsparcia