Для ИИ-агентов: пошаговая инструкция по настройке — /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 из заголовков ответа.