Для ШІ-агентів: покрокова інструкція з налаштування — /docs/agents.md, індекс документації — /llms.txt.

Помилки та ліміти

Ліміти запитів, таймаути та коди помилок шлюзу. Для кожної відповіді вказано, коли вона виникає і що робити: повторити запит чи виправити його.

Ліміти#

Числа — з поля limits відповіді GET /v1/capabilities: там завжди актуальні значення.

ЛімітЗначенняПри перевищенні
Запитів на хвилину на ключ120, вікно 60 с від першого запиту429 rate_limit_exceeded і заголовок Retry-After; відмови шлюзу 5xx квоту не витрачають
Одночасні запити акаунтаобмеженізайві чекають у черзі; не дочекалися — 429 queue_timeout
Розмір тіла запиту16 МіБ413
Довжина відповідіза моделями — таблиця нижчебільше за стелю моделі — зрізається до стелі, без помилки
Дочірні ключідо 50 на керівний ключ, до 120 запитів на хвилину кожномупідняти стелі — через підтримку

Довжина відповіді за моделями#

Без max_tokens шлюз підставляє усталене: без стріму — коротше, щоб відповідь уклалася в таймаути, у стрімі — стеля моделі. max_completion_tokens — те саме поле.

modelСтеляБез стрімуУ стрімі
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

Таймаути#

ЕтапЗначенняЩо відбувається
Очікування місця в черзі45 с429 queue_timeout із заголовком Retry-After: 1
Початок відповіді мережі, стрім150 с504 upstream_timeout; списується оцінка вхідних токенів
Початок відповіді мережі, без стріму150 с504 upstream_timeout; списується оцінка вхідних токенів
Генерація відповіді≈ 300 смережа обриває генерацію: відповідь надходить із finish_reason: length — продовжте наступним запитом
Пауза між чанками стріму30 спотік закривається: finish_reason: stop у чанку joingonka-stream-stalled
Сигнал активності у стрімі15 скоментар : keep-alive — SSE-клієнти його пропускають
Відкриття потоку30 сдо цього моменту відмова надходить кодом відповіді, після — чанком joingonka-error
Рання відповідь без стріму90 сшлюз віддає 200 і кожні 15 с шле пробіли — JSON залишається валідним; помилка після цього надходить тілом із полем error, статус залишається 200

Що списується при таймауті

Запит, прийнятий мережею, скасувати не можна. При 504 upstream_timeout списується оцінка вхідних токенів, вихідні — ні; повтор — нове списання. Стрим, обірваний до підсумкового usage, оплачується так само. Довгі відповіді просіть із stream: true.

Коди помилок#

Тіло помилки — об'єкт error з полями message, type, code, param; частина полів є не в усіх помилках. Орієнтуйтеся на статус і type, уточнюйте за code: текст message може змінюватися. Формат Anthropic — у розділі Формат помилок Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
ВідповідьКолиЩо робити
400 invalid_request_errorНевірне тіло: немає messages, повідомлення не об'єкт, тіло не JSON; невідома модель — з param: model і списком доступних моделей у текстіВиправте запит за текстом помилки
400 invalid_request_error empty_content_after_normalizationПовідомлення порожнє після нормалізації — наприклад, у ньому було лише зображенняДодайте в повідомлення текст
400 invalid_request_error web_search_privacy_sanitization_not_supportedПлагіни web і privacy-sanitization в одному запитіЗалиште один із них
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: посилання на збережену відповідь, діалог або елемент; фоновий режим; вимога вбудованого інструментаНадсилайте історію повністю в input
400 api_errorМережа відхилила параметри — наприклад, значення reasoning_effort поза її спискомВиправте значення за текстом помилки
401 authentication_errorКлюч не знайдено, відкликано або невідомого форматуПеревірте ключ на сторінці gate.joingonka.ai/keys
402 insufficient_fundsБалансу не вистачає на оцінку запиту; залишок — у balance_ngonkaПоповніть баланс: gate.joingonka.ai/billing
402 insufficient_fundsЗапит без ключа не з сайту (is_demo: true)Передайте API-ключ
402 child_key_limit_exceededПеревищено ліміт витрат ключа — денний, місячний або загальний; залишки — у daily_remaining, monthly_remaining, total_remainingПідніміть ліміт ключа на сторінці gate.joingonka.ai/keys або дочекайтеся скидання
403 forbiddenКерівний ключ gm- у запиті до моделі; API-ключ на маршруті лише для кабінетуДля запитів — ключ jg- або gc-; керування акаунтом — у кабінеті
404 invalid_request_error model_not_foundGET /v1/models/{model}: моделі немає в каталозі або вона тимчасово прихованаВізьміть id із GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} та інші адреси стану, /v1/responses/compactЗберігайте історію в себе; для Codex CLI задайте свій id провайдера
404 invalid_request_errorНевідомий шляхПеревірте метод, шлях і базову адресу
413 invalid_request_errorТіло запиту більше за лімітСкоротіть запит
415 invalid_request_errorТіло не JSON за заголовком: потрібен Content-Type: application/jsonНадішліть Content-Type: application/json
429 rate_limit_exceededПеревищено кількість запитів за хвилину на ключ; у тілі — rate_limit з limit, remaining, resetЗачекайте стільки секунд, скільки в Retry-After
429 rate_limit_exceeded upstream_rate_limitedМодель перевантажена в мережі GonkaПовторіть після Retry-After або візьміть іншу модель — Моделі
429 rate_limit_exceeded queue_timeout queue_fullУсі місця до мережі зайняті: черга повна або очікування минулоПовторіть після Retry-After
500 server_errorВнутрішня помилка шлюзуПовторіть пізніше; повторюється — напишіть у підтримку і додайте x-request-id
501 not_implementedPOST /v1/embeddings: у мережі немає ембедингових моделейВізьміть інший сервіс ембедингів
502 api_error upstream_unauthorizedПровайдер мережі відхилив облікові дані шлюзу — ваш ключ гараздПовторіть за хвилину
502 api_errorПомилка мережі Gonka; code — від мережі, якщо вона його надіслалаПовторіть із паузою або візьміть іншу модель
503 model_unavailable model_outage model_initializing model_unstable model_not_servedМодель зараз недоступна за пробами мережі: збій, запуск, нестабільність або її ніхто не обслуговує; відмова одразу, без очікуванняВізьміть іншу модель — текст помилки підкаже яку; список — Моделі
503 service_unavailableНемає доступних нодПовторіть пізніше
504 timeout upstream_timeoutМережа прийняла запит, але не відповіла вчасно; оцінку вхідних токенів списаноДля довгих відповідей — stream: true; повтор — нове списання

Помилки у відкритому потоці#

Поки потік не відкрито, відмова приходить звичайним кодом відповіді — як без стриму. Після відкриття статус уже 200, і помилка приходить так:

  • Chat Completions — чанк joingonka-error з полем error, потім обрив без [DONE].
  • Без стриму після ранньої відповіді — статус 200 і тіло з полем error.
  • Anthropic Messages — подія event: error, потім потік закривається.
  • OpenAI Responses — подія response.failed, причина в response.error.code.
  • Legacy Completions — data: {"error": …}, потім [DONE].
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Формат помилок Anthropic#

  • POST /v1/messages відповідає конвертом Anthropic: {"type": "error", "error": {"type", "message"}}.
  • Відмови шлюзу зберігають type з таблиці вище (insufficient_funds, model_unavailable та інші); поля code у цьому конверті немає — причина в тексті.
  • Помилки форми запиту — invalid_request_error: немає повідомлень або max_tokens, виклик інструмента без імені, невідома модель.
  • Невідомий шлях — not_found_error, занадто велике тіло — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

Що повторювати#

  • Після паузи з Retry-After: 429
  • З наростаючою паузою — 1, 2, 4 с і далі: 500, 502, 503 service_unavailable, 504
  • З іншою моделлю: 503 model_unavailable
  • Не повторювати без змін — виправте запит, ключ або баланс: 400, 401, 402, 403, 404, 413, 415, 501

Кожен повтор після 504 — нове списання оцінки входу; для довгих відповідей вмикайте stream: true.

Помилка повторюється — напишіть у підтримку і додайте x-request-id із заголовків відповіді.