Dla agentów AI: instrukcja konfiguracji krok po kroku — /docs/agents.md, indeks dokumentacji — /llms.txt.

Błędy i limity

Limity żądań, limity czasu i kody błędów bramy. Przy każdej odpowiedzi wyjaśniamy, kiedy występuje i co zrobić: ponowić żądanie czy je poprawić.

Limity#

Liczby — z pola limits odpowiedzi GET /v1/capabilities: tam zawsze są aktualne wartości.

LimitWartośćPo przekroczeniu
Zapytania na minutę na klucz120, okno 60 s od pierwszego zapytania429 rate_limit_exceeded i nagłówek Retry-After; odmowy bramy 5xx nie zużywają kwoty
Jednoczesne zapytania kontaograniczonenadmiarowe czekają w kolejce; jeśli się nie doczekają — 429 queue_timeout
Rozmiar ciała zapytania16 MiB413
Długość odpowiedziwedług modeli — tabela poniżejpowyżej pułapu modelu — przycinane do pułapu, bez błędu
Klucze podrzędnedo 50 na klucz zarządzający, do 120 zapytań na minutę dla każdegopodniesienie pułapów — przez support

Długość odpowiedzi według modeli#

Bez max_tokens brama podstawia wartość domyślną: bez streamingu — krótszą, aby odpowiedź zmieściła się w timeoutach, w streamingu — pułap modelu. max_completion_tokens — to samo pole.

modelPułapBez streaminguW streamingu
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

Timeouty#

EtapWartośćCo się dzieje
Oczekiwanie na miejsce w kolejce45 s429 queue_timeout z nagłówkiem Retry-After: 1
Początek odpowiedzi sieci, streaming150 s504 upstream_timeout; pobierana jest opłata za szacunkową liczbę tokenów wejściowych
Początek odpowiedzi sieci, bez streamingu150 s504 upstream_timeout; pobierana jest opłata za szacunkową liczbę tokenów wejściowych
Generowanie odpowiedzi≈ 300 ssieć przerywa generowanie: odpowiedź przychodzi z finish_reason: length — kontynuuj kolejnym zapytaniem
Pauza między chunkami streamingu30 sstrumień jest zamykany: finish_reason: stop w chunku joingonka-stream-stalled
Sygnał aktywności w streamingu15 skomentarz : keep-alive — klienci SSE go pomijają
Otwarcie strumienia30 sdo tego momentu odmowa przychodzi kodem odpowiedzi, po nim — chunkiem joingonka-error
Wczesna odpowiedź bez streamingu90 sbrama zwraca 200 i co 15 s wysyła spacje — JSON pozostaje poprawny; błąd po tym przychodzi w ciele z polem error, status pozostaje 200

Co jest pobierane przy timeoucie

Żądania przyjętego przez sieć nie można anulować. Przy 504 upstream_timeout pobierana jest opłata za tokeny wejściowe, za wyjściowe — nie; ponowienie to nowe obciążenie. Strumień przerwany przed końcowym usage jest rozliczany tak samo. Długie odpowiedzi zamawiaj z stream: true.

Kody błędów#

Treść błędu to obiekt error z polami message, type, code, param; nie każdy błąd ma wszystkie pola. Kieruj się statusem i type, doprecyzowuj po code: tekst message może się zmieniać. Format Anthropic — w sekcji Format błędów Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
OdpowiedźKiedyCo robić
400 invalid_request_errorNieprawidłowa treść: brak messages, wiadomość nie jest obiektem, treść nie jest JSON-em; nieznany model — z param: model i listą dostępnych modeli w treściPopraw żądanie zgodnie z treścią błędu
400 invalid_request_error empty_content_after_normalizationWiadomość jest pusta po normalizacji — na przykład zawierała tylko obrazDodaj tekst do wiadomości
400 invalid_request_error web_search_privacy_sanitization_not_supportedPluginy web i privacy-sanitization w jednym żądaniuZostaw jeden z nich
400 invalid_request_error previous_response_id_not_supported conversation_not_supported item_reference_not_supported background_not_supported hosted_tool_choice_not_supportedOpenAI Responses: odwołanie do zapisanej odpowiedzi, dialogu lub elementu; tryb w tle; wymóg wbudowanego narzędziaPrzesyłaj całą historię w input
400 api_errorSieć odrzuciła parametry — na przykład wartość reasoning_effort poza jej listąPopraw wartość zgodnie z treścią błędu
401 authentication_errorKlucz nie został znaleziony, został unieważniony lub ma nieznany formatSprawdź klucz na stronie gate.joingonka.ai/keys
402 insufficient_fundsSaldo nie wystarcza na wycenę żądania; pozostała kwota — w balance_ngonkaDoładuj saldo: gate.joingonka.ai/billing
402 insufficient_fundsŻądanie bez klucza spoza strony (is_demo: true)Przekaż klucz API
402 child_key_limit_exceededPrzekroczono limit wydatków klucza — dzienny, miesięczny lub całkowity; pozostałe kwoty — w daily_remaining, monthly_remaining, total_remainingPodnieś limit klucza na stronie gate.joingonka.ai/keys lub poczekaj na reset
403 forbiddenKlucz zarządzający gm- w żądaniu do modelu; klucz API na trasie dostępnej tylko z paneluDo żądań używaj klucza jg- lub gc-; zarządzanie kontem — w panelu
404 invalid_request_error model_not_foundGET /v1/models/{model}: modelu nie ma w katalogu lub jest tymczasowo ukrytyWeź id z GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} i inne adresy stanu, /v1/responses/compactPrzechowuj historię u siebie; dla Codex CLI ustaw własny id providera
404 invalid_request_errorNieznana ścieżkaSprawdź metodę, ścieżkę i adres bazowy
413 invalid_request_errorTreść żądania przekracza limitSkróć żądanie
415 invalid_request_errorTreść nie jest JSON-em według nagłówka: wymagany Content-Type: application/jsonWyślij Content-Type: application/json
429 rate_limit_exceededPrzekroczono liczbę żądań na minutę dla klucza; w treści — rate_limit z limit, remaining, resetPoczekaj tyle sekund, ile podano w Retry-After
429 rate_limit_exceeded upstream_rate_limitedModel jest przeciążony w sieci GonkaPowtórz po Retry-After lub weź inny model — Modele
429 rate_limit_exceeded queue_timeout queue_fullWszystkie miejsca w sieci są zajęte: kolejka jest pełna lub upłynął czas oczekiwaniaPowtórz po Retry-After
500 server_errorWewnętrzny błąd bramyPowtórz później; jeśli się powtarza — napisz do wsparcia i załącz x-request-id
501 not_implementedPOST /v1/embeddings: w sieci nie ma modeli embeddingowychSkorzystaj z innej usługi embeddingów
502 api_error upstream_unauthorizedProvider sieci odrzucił dane uwierzytelniające bramy — twój klucz jest w porządkuPowtórz po minucie
502 api_errorBłąd sieci Gonka; code — od sieci, jeśli go przysłałaPowtórz z pauzą lub weź inny model
503 model_unavailable model_outage model_initializing model_unstable model_not_servedModel jest obecnie niedostępny według prób sieci: awaria, uruchamianie, niestabilność lub nikt go nie obsługuje; odmowa od razu, bez oczekiwaniaWeź inny model — treść błędu podpowie który; lista — Modele
503 service_unavailableBrak dostępnych węzłówPowtórz później
504 timeout upstream_timeoutSieć przyjęła żądanie, ale nie odpowiedziała na czas; opłata za tokeny wejściowe została pobranaDla długich odpowiedzi — stream: true; ponowienie to nowe obciążenie

Błędy w otwartym strumieniu#

Dopóki strumień nie jest otwarty, odmowa przychodzi zwykłym kodem odpowiedzi — jak bez streamingu. Po otwarciu status to już 200, a błąd przychodzi tak:

  • Chat Completions — chunk joingonka-error z polem error, potem przerwanie bez [DONE].
  • Bez streamingu po wczesnej odpowiedzi — status 200 i treść z polem error.
  • Anthropic Messages — zdarzenie event: error, potem strumień się zamyka.
  • OpenAI Responses — zdarzenie response.failed, przyczyna w response.error.code.
  • Legacy Completions — data: {"error": …}, potem [DONE].
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Format błędów Anthropic#

  • POST /v1/messages odpowiada kopertą Anthropic: {"type": "error", "error": {"type", "message"}}.
  • Odmowy bramy zachowują type z tabeli powyżej (insufficient_funds, model_unavailable i inne); pola code w tej kopercie nie ma — przyczyna jest w treści.
  • Błędy formy żądania — invalid_request_error: brak wiadomości lub max_tokens, wywołanie narzędzia bez nazwy, nieznany model.
  • Nieznana ścieżka — not_found_error, zbyt duża treść — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

Co powtarzać#

  • Po pauzie z Retry-After: 429
  • Z rosnącą pauzą — 1, 2, 4 s i dalej: 500, 502, 503 service_unavailable, 504
  • Z innym modelem: 503 model_unavailable
  • Nie powtarzaj bez zmian — popraw żądanie, klucz lub saldo: 400, 401, 402, 403, 404, 413, 415, 501

Każde ponowienie po 504 to nowe obciążenie wyceną wejścia; dla długich odpowiedzi włączaj stream: true.

Błąd się powtarza — napisz do wsparcia i załącz x-request-id z nagłówków odpowiedzi.