Ошибки GPT-6 Astra API: model_not_found, 401 и ловушка max_tokens

Настоящие тела ошибок с эндпоинта GPT-6 Astra и измеренный факт: Astra полностью игнорирует max_tokens. Мы запросили 16, а счёт выставили за 2614.

Ошибки GPT-6 Astra API: model_not_found, 401 и ловушка max_tokens

Каждое тело ошибки ниже получено живыми запросами к эндпоинту GPT-6 Astra 6 сентября 2026 года. Без пересказов и без выдуманных текстов ошибок. И ещё один факт, который вообще не ошибка, но обойдётся вам дороже любой из них: Astra игнорирует max_tokens.

model_not_found        404 → строки модели не существует
invalid_api_key        401 → ключ неверный, отсутствует или отозван
invalid_request_error  400 → отсутствует обязательное поле
invalid_request_error  --- → значение параметра не принимается
max_tokens             ⚠️  молча игнорируется — см. ниже

Самое дорогое: max_tokens ничего не делает

Мы попросили 16 токенов, а счёт выставили за 2614. finish_reason вернулся как stop, а не length, так что ничто в ответе не сигнализирует, что ваш лимит был проигнорирован.

Измерено на openai/gpt-6-astra, запрос каждый раз одинаковый:

ЗапрошеноВыданоfinish_reason
max_tokens: 162614stop
max_tokens: 502913stop
max_tokens: 1002667stop
max_completion_tokens: 502944stop

Между выданным и запрошенным количеством нет никакой связи. Переход на max_completion_tokens — параметр, который обычно нужен моделям OpenAI с рассуждениями, — ничего не меняет.

Это специфика Astra, а не шлюза. Тот же запрос к GPT-5.6 Sol на том же эндпоинте отрабатывает корректно:

Модельmax_tokens: 50finish_reason
openai/gpt-5.6-solвыдано 50length
openai/gpt-6-astraвыдано 2913stop

Sol обрезает и сообщает length. Astra игнорирует и сообщает stop.

Во что это обходится. При $50 за миллион выходных токенов запрос, рассчитанный на 50 токенов ($0.0025) и вернувший 2900 ($0.145), — это 58-кратное превышение сметы. На цикле из 10 000 таких вызовов получается $25 по плану против $1450 по счёту. Если у вас есть защита от перерасхода, построенная на max_tokens, на этой модели она ничего не защищает.

Что делать вместо этого прямо сейчас:

  • Ограничивайте в самом запросе. «Ответь одним предложением» действительно работает; max_tokens — нет.
  • Понижайте reasoning.effort. Токены рассуждений тарифицируются по цене вывода и составляют основную часть перерасхода.
  • Ставьте оповещения на usage, а не на свой запрос. Читайте completion_tokens из каждого ответа и настройте тревогу по суммарному объёму. Параметры вашего запроса здесь не являются средством контроля расходов.
  • Ограничивайте на уровне шлюза или аккаунта, если провайдер это позволяет, раз рычаг на уровне отдельного запроса не работает.

Мы нигде не нашли этого в документации, так что считайте это измерением, а не спецификацией: перепроверьте сами, прежде чем закладывать в архитектуру, и будьте готовы, что поведение изменится без предупреждения.

Ошибки и их настоящие тела

model_not_found

{"error":{"message":"Model 'gpt-6' not found","type":"model_not_found","code":404}}

Такой строки в каталоге нет. Действительные идентификаторы:

  • openai/gpt-6-astra
  • псевдонимы gpt-6-astra и gpt-6-astra-2026-09-03

Два типичных способа сюда попасть:

Голое gpt-6. Возвращает 404. Собственный API OpenAI в некоторых случаях разрешает короткие имена через псевдонимы; шлюз не угадывает.

Суффикс уровня. gpt-6-astra-sol даёт тот же 404:

{"error":{"message":"Model 'gpt-6-astra-sol' not found","type":"model_not_found","code":404}}

GPT-5.6 вышла как Sol, Terra и Luna. У GPT-6 уровней нет — есть Astra и Astra Pro. Любой роутер или шаблон конфигурации, который собирает строку модели, дописывая уровень, на этом семействе сломается. Что ещё ломает эта смена именования, разобрано в сравнении поколений.

invalid_api_key

{"error":{"message":"Invalid or expired API key","type":"invalid_api_key","code":401}}

Ключ неверный, отозванный или от другого аккаунта. Проверьте, что Authorization выглядит как Bearer <key> и что ключ действительно загрузился из окружения, а не оказался молча пустым: пустая переменная даёт именно эту ошибку, а не сообщение об отсутствующем заголовке — поэтому люди и ищут не в том слое.

Если проблема именно в Codex CLI, а не в сыром вызове API, различия в путях аутентификации там разобраны в Codex CLI 401 Unauthorized.

invalid_request_error — отсутствует поле

{"error":{"message":"Missing required parameter: 'messages' is required. [ofox.ai]","type":"invalid_request_error","code":400}}

Отсутствует обязательное поле. Стоит заметить суффикс [ofox.ai]: он помечает ошибку, сгенерированную на шлюзе, а не переданную снизу. Когда вы разбираетесь, какой слой отклонил запрос, этот тег говорит вам, что запрос вообще не покидал шлюз.

invalid_request_error — недопустимое значение параметра

{"error":{"code":null,"message":"Unsupported value: 'reasoning_effort' does not support 'ultra' with this model. Supported values are: 'none', 'low', 'medium', 'high', and 'xhigh'.","param":null,"type":"invalid_request_error"}}

Вы отправили значение, которое модель не принимает. Это не то же самое, что отсутствующее поле: поле существует, а значение — нет.

Но списку доверять не стоит. В ошибке названы пять значений и пропущено max. Мы проверили все шесть на живом эндпоинте, и каждое вернуло успешный ответ:

effortРезультат
none✅ ответ получен
low
medium
high
xhigh
maxработает, хотя в тексте ошибки его нет

То есть текст ошибки устарел или неполон, а не авторитетен. max — реальная настройка, и наш обзор объясняет, почему это редко та настройка, которая вам нужна: по сторонним измерениям она даёт один пункт индекса сверх high примерно за вдвое большие деньги.

Что ошибкой не является

Длинный ответ — не сбой. С учётом описанного выше поведения max_tokens самая частая жалоба «что-то не так» на этой модели — ответ намного длиннее ожидаемого. Так модель сейчас и работает, и счёт выставляется соответственно.

Пустой content при наличии токенов рассуждений — тоже не сбой. На моделях с рассуждениями низкий потолок может быть целиком израсходован на рассуждения до появления видимого текста, и тогда content пуст, а completion_tokens_details.reasoning_tokens заполнено. Здесь нужно поднять потолок, а не повторять запрос. Правда, на Astra потолок всё равно не соблюдается, так что если вы это увидели — сначала посмотрите usage, а потом решайте, какая из причин ваша.

Работающий запрос

curl -X POST https://api.ofox.io/v1/chat/completions \
  -H "Authorization: Bearer $OFOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-6-astra",
    "messages": [{"role": "user", "content": "Answer in one sentence: what is quicksort?"}],
    "reasoning": {"effort": "high"}
  }'

Обратите внимание, что здесь делает работу: ограничение длины сидит в самом запросе, а не в max_tokens. Прочитайте usage.completion_tokens в ответе и сравните с ожиданиями, прежде чем разворачивать это в цикл.

Что можно вызвать и по какой цене — определяет GET https://api.ofox.io/v1/models, а не эта страница.

Читайте также

  • Цены GPT-6 Astra API — во что на самом деле обходятся описанные выше токены, включая наценку за длинный контекст на 272K.
  • Обзор GPT-6 Astra — картина независимых бенчмарков и кривая стоимости по уровням effort.
  • GPT-6 Astra в Codex, Cursor, Cline и DSH — рабочие конфигурации для каждого агента.
  • GPT-5.6 model not available — версия той же проблемы с именованием в прошлом поколении, включая случай Codex с аккаунтом ChatGPT.

Источники

Каждое тело ошибки на этой странице получено живыми запросами к эндпоинту Ofox /v1/chat/completions 6 сентября 2026 года. Измерения по max_tokens — это четыре запроса к openai/gpt-6-astra и один контрольный к openai/gpt-5.6-sol, с одинаковым промптом и различием только в проверяемом параметре. Это малая выборка на одном маршруте за один день, а не спецификация — проверьте на своём аккаунте, прежде чем строить на этом модель расходов. На других маршрутах, включая прямой OpenAI, текст ошибок использует другую оболочку.

Часто задаваемые вопросы

Почему GPT-6 Astra возвращает model_not_found?
Такой строки модели нет в каталоге. Ответ: {"error":{"message":"Model 'gpt-6' not found","type":"model_not_found","code":404}}. Действительная строка в Ofox — openai/gpt-6-astra, с псевдонимами gpt-6-astra и gpt-6-astra-2026-09-03. Голое gpt-6 даёт 404, и любой суффикс уровня вроде gpt-6-astra-sol тоже — у GPT-6 нет уровней Sol, Terra или Luna.
Соблюдает ли GPT-6 Astra параметр max_tokens?
Нет, и это самое дорогое на этой странице. Мы запросили max_tokens 16, а счёт выставили за 2614 токенов ответа, причём finish_reason был stop, а не length. С max_completion_tokens то же самое: запросили 50 — получили 2944. GPT-5.6 Sol на том же шлюзе соблюдает max_tokens точно, возвращая 50 токенов с finish_reason length, так что дело именно в Astra, а не в эндпоинте.
Какие значения reasoning effort принимает GPT-6 Astra?
В нашей проверке 6 сентября 2026 года none, low, medium, high, xhigh и max — все вернули успешные ответы. При недопустимом значении приходит ошибка, в тексте которой перечислены только 'none', 'low', 'medium', 'high' и 'xhigh' — но max работает, хотя в этом списке его нет, так что текст ошибки следует считать неполным, а не авторитетным.
Что означает invalid_api_key на эндпоинте GPT-6 Astra?
Ключ неверный, отозванный или от другого аккаунта. Ответ: {"error":{"message":"Invalid or expired API key","type":"invalid_api_key","code":401}}. Пустая переменная окружения даёт ту же ошибку, а не сообщение об отсутствующем заголовке, из-за чего люди ищут проблему не там.
Как исправить Missing required parameter messages is required?
В теле запроса нет массива messages. Ответ: {"error":{"message":"Missing required parameter: 'messages' is required. [ofox.ai]","type":"invalid_request_error","code":400}}. Обратите внимание на суффикс [ofox.ai] — он помечает ошибку, сгенерированную на шлюзе, а не переданную снизу от провайдера, и это полезный сигнал, когда вы выясняете, какой слой вас отклонил.
Доступна ли GPT-6 Astra в Ofox?
Да, с 5 сентября 2026 года, как openai/gpt-6-astra по $10.00 за миллион входных токенов и $50.00 за выходные, при чтении кэша $1.00 и записи $12.50, на /v1/chat/completions и /v1/responses.