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.
| Limit | Wartość | Po przekroczeniu |
|---|---|---|
| Zapytania na minutę na klucz | 120, okno 60 s od pierwszego zapytania | 429 rate_limit_exceeded i nagłówek Retry-After; odmowy bramy 5xx nie zużywają kwoty |
| Jednoczesne zapytania konta | ograniczone | nadmiarowe czekają w kolejce; jeśli się nie doczekają — 429 queue_timeout |
| Rozmiar ciała zapytania | 16 MiB | 413 |
| Długość odpowiedzi | według modeli — tabela poniżej | powyżej pułapu modelu — przycinane do pułapu, bez błędu |
| Klucze podrzędne | do 50 na klucz zarządzający, do 120 zapytań na minutę dla każdego | podniesienie 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.
model | Pułap | Bez streamingu | W streamingu |
|---|---|---|---|
MiniMaxAI/MiniMax-M2.7 | 8192 | 1500 | 8192 |
deepseek-ai/DeepSeek-V4-Flash-0731 | 32768 | 1500 | 32768 |
zai-org/GLM-5.3-Flash | 8192 | 3000 | 8192 |
Timeouty#
| Etap | Wartość | Co się dzieje |
|---|---|---|
| Oczekiwanie na miejsce w kolejce | 45 s | 429 queue_timeout z nagłówkiem Retry-After: 1 |
| Początek odpowiedzi sieci, streaming | 150 s | 504 upstream_timeout; pobierana jest opłata za szacunkową liczbę tokenów wejściowych |
| Początek odpowiedzi sieci, bez streamingu | 150 s | 504 upstream_timeout; pobierana jest opłata za szacunkową liczbę tokenów wejściowych |
| Generowanie odpowiedzi | ≈ 300 s | sieć przerywa generowanie: odpowiedź przychodzi z finish_reason: length — kontynuuj kolejnym zapytaniem |
| Pauza między chunkami streamingu | 30 s | strumień jest zamykany: finish_reason: stop w chunku joingonka-stream-stalled |
| Sygnał aktywności w streamingu | 15 s | komentarz : keep-alive — klienci SSE go pomijają |
| Otwarcie strumienia | 30 s | do tego momentu odmowa przychodzi kodem odpowiedzi, po nim — chunkiem joingonka-error |
| Wczesna odpowiedź bez streamingu | 90 s | brama 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.
{
"error": {
"message": "Model is currently overloaded in the Gonka network",
"type": "rate_limit_exceeded",
"code": "upstream_rate_limited"
}
}| Odpowiedź | Kiedy | Co robić |
|---|---|---|
400 invalid_request_error | Nieprawidł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ści | Popraw żądanie zgodnie z treścią błędu |
400 invalid_request_error empty_content_after_normalization | Wiadomość jest pusta po normalizacji — na przykład zawierała tylko obraz | Dodaj tekst do wiadomości |
400 invalid_request_error web_search_privacy_sanitization_not_supported | Pluginy web i privacy-sanitization w jednym żądaniu | Zostaw 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_supported | OpenAI Responses: odwołanie do zapisanej odpowiedzi, dialogu lub elementu; tryb w tle; wymóg wbudowanego narzędzia | Przesyłaj całą historię w input |
400 api_error | Sieć odrzuciła parametry — na przykład wartość reasoning_effort poza jej listą | Popraw wartość zgodnie z treścią błędu |
401 authentication_error | Klucz nie został znaleziony, został unieważniony lub ma nieznany format | Sprawdź klucz na stronie gate.joingonka.ai/keys |
402 insufficient_funds | Saldo nie wystarcza na wycenę żądania; pozostała kwota — w balance_ngonka | Doładuj saldo: gate.joingonka.ai/billing |
402 insufficient_funds | Żądanie bez klucza spoza strony (is_demo: true) | Przekaż klucz API |
402 child_key_limit_exceeded | Przekroczono limit wydatków klucza — dzienny, miesięczny lub całkowity; pozostałe kwoty — w daily_remaining, monthly_remaining, total_remaining | Podnieś limit klucza na stronie gate.joingonka.ai/keys lub poczekaj na reset |
403 forbidden | Klucz zarządzający gm- w żądaniu do modelu; klucz API na trasie dostępnej tylko z panelu | Do żądań używaj klucza jg- lub gc-; zarządzanie kontem — w panelu |
404 invalid_request_error model_not_found | GET /v1/models/{model}: modelu nie ma w katalogu lub jest tymczasowo ukryty | Weź id z GET /v1/models |
404 invalid_request_error not_found compact_not_supported | OpenAI Responses: /v1/responses/{id} i inne adresy stanu, /v1/responses/compact | Przechowuj historię u siebie; dla Codex CLI ustaw własny id providera |
404 invalid_request_error | Nieznana ścieżka | Sprawdź metodę, ścieżkę i adres bazowy |
413 invalid_request_error | Treść żądania przekracza limit | Skróć żądanie |
415 invalid_request_error | Treść nie jest JSON-em według nagłówka: wymagany Content-Type: application/json | Wyślij Content-Type: application/json |
429 rate_limit_exceeded | Przekroczono liczbę żądań na minutę dla klucza; w treści — rate_limit z limit, remaining, reset | Poczekaj tyle sekund, ile podano w Retry-After |
429 rate_limit_exceeded upstream_rate_limited | Model jest przeciążony w sieci Gonka | Powtórz po Retry-After lub weź inny model — Modele |
429 rate_limit_exceeded queue_timeout queue_full | Wszystkie miejsca w sieci są zajęte: kolejka jest pełna lub upłynął czas oczekiwania | Powtórz po Retry-After |
500 server_error | Wewnętrzny błąd bramy | Powtórz później; jeśli się powtarza — napisz do wsparcia i załącz x-request-id |
501 not_implemented | POST /v1/embeddings: w sieci nie ma modeli embeddingowych | Skorzystaj z innej usługi embeddingów |
502 api_error upstream_unauthorized | Provider sieci odrzucił dane uwierzytelniające bramy — twój klucz jest w porządku | Powtórz po minucie |
502 api_error | Błąd sieci Gonka; code — od sieci, jeśli go przysłała | Powtórz z pauzą lub weź inny model |
503 model_unavailable model_outage model_initializing model_unstable model_not_served | Model jest obecnie niedostępny według prób sieci: awaria, uruchamianie, niestabilność lub nikt go nie obsługuje; odmowa od razu, bez oczekiwania | Weź inny model — treść błędu podpowie który; lista — Modele |
503 service_unavailable | Brak dostępnych węzłów | Powtórz później |
504 timeout upstream_timeout | Sieć przyjęła żądanie, ale nie odpowiedziała na czas; opłata za tokeny wejściowe została pobrana | Dla 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-errorz polemerror, potem przerwanie bez[DONE]. - Bez streamingu po wczesnej odpowiedzi — status
200i treść z polemerror. - Anthropic Messages — zdarzenie
event: error, potem strumień się zamyka. - OpenAI Responses — zdarzenie
response.failed, przyczyna wresponse.error.code. - Legacy Completions —
data: {"error": …}, potem[DONE].
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/messagesodpowiada kopertą Anthropic:{"type": "error", "error": {"type", "message"}}.- Odmowy bramy zachowują
typez tabeli powyżej (insufficient_funds,model_unavailablei inne); polacodew tej kopercie nie ma — przyczyna jest w treści. - Błędy formy żądania —
invalid_request_error: brak wiadomości lubmax_tokens, wywołanie narzędzia bez nazwy, nieznany model. - Nieznana ścieżka —
not_found_error, zbyt duża treść —request_too_large.
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.