Диагностика · Codex CLI

Codex: stream error: unexpected status 401/404 — решение

HTTP-сбои посреди стрима Codex печатает как stream error: unexpected status. Что там означают 401, 404 и 429 и как воспроизвести их через curl, чтобы найти сломанную половину.

Что вы видите

stream error: unexpected status 401 Unauthorized

Почему возникает

  • 401 — переменная из env_key не задана, пуста, либо её ключ не принадлежит base_url из профиля.
  • 404 — base_url не подходит протоколу: пропущенный /v1, удвоенный /v1/v1 или хост, который не обслуживает Responses API.
  • 429 — исчерпана поминутная пропускная способность ключа; стриму отказывают ещё до старта.
  • Прокси или сетевое устройство, обрывающее SSE-стрим посреди ответа, даёт вариант с разрывом, а не со статусом.

Что делать

  • Воспроизведите через curl по точному base_url из профиля плюс /responses с тем же ключом — статус скажет, какая половина сломана.
  • Для 401 почините пару ключ/эндпоинт; для 404 — исправьте base_url на задокументированное значение; для 429 — переждите окно и уменьшите параллельные прогоны.
  • При повторяющихся разрывах посреди стрима без статуса проверьте без VPN и прокси — SSE первым страдает от вмешивающихся промежуточных узлов.

Воспроизведите вне Codex

curl https://openai.api.apitoken.sale/v1/responses \
  -H "Authorization: Bearer $APITOKEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.6-sol","input":"Reply with exactly: connected"}'

Похожие запросы

  • codex stream error unexpected status
  • stream disconnected before completion

Вопросы и ответы

Что означает stream error: unexpected status 401 в Codex?+
Эндпоинт отклонил учётные данные на старте стрима. Проверьте, что переменная из env_key профиля задана в работающей оболочке и что её ключ принадлежит base_url профиля.
Почему 404, если хост точно верный?+
Ошибки пути: base_url для этого шлюза должен включать /v1 и не должен его удваивать. Путь Responses Codex дописывает сам.
Стрим умирает на середине без статуса — это API?+
Обычно сетевой путь: прокси и VPN, которые буферизуют или обрывают SSE. Прежде чем винить эндпоинт, воспроизведите через curl на чистом соединении.

Пропустите сломанную настройку

apiToken.sale отдаёт стандартный Anthropic API — те же модели, те же SDK, один предоплаченный баланс. Направьте base URL вашего инструмента на него, и конфигурация с этой страницы заработает как написано.