Ошибки GPT-6 Astra API: model_not_found, 401 и ловушка max_tokens
Настоящие тела ошибок с эндпоинта GPT-6 Astra и измеренный факт: Astra полностью игнорирует max_tokens. Мы запросили 16, а счёт выставили за 2614.
Каждое тело ошибки ниже получено живыми запросами к эндпоинту 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: 16 | 2614 | stop |
max_tokens: 50 | 2913 | stop |
max_tokens: 100 | 2667 | stop |
max_completion_tokens: 50 | 2944 | stop |
Между выданным и запрошенным количеством нет никакой связи. Переход на max_completion_tokens — параметр, который обычно нужен моделям OpenAI с рассуждениями, — ничего не меняет.
Это специфика Astra, а не шлюза. Тот же запрос к GPT-5.6 Sol на том же эндпоинте отрабатывает корректно:
| Модель | max_tokens: 50 | finish_reason |
|---|---|---|
openai/gpt-5.6-sol | выдано 50 | length |
openai/gpt-6-astra | выдано 2913 | stop |
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.ai/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.ai/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.


