Skip to content

Codex

Используйте rout.my как custom model provider для Codex CLI или Codex IDE extension, если хотите, чтобы Codex отправлял OpenAI Responses-style запросы через rout.my.

Гайд сверялся с текущей официальной документацией OpenAI Codex по конфигурации и публичным обсуждением Responses migration. Главное:

  • Для Codex указывайте wire_api = "responses".
  • Provider credentials кладутся в user-level Codex config, обычно ~/.codex/config.toml.
  • Не кладите provider auth в project .codex/config.toml: Codex по соображениям безопасности игнорирует project-local model_provider и model_providers.
  • Гайд уже заполнен рекомендуемой Codex-моделью rout.my: openai/gpt-5.4.

1. Создайте rout.my key

Создайте или скопируйте API key в rout.my dashboard, затем задайте его в том же терминале, из которого запускаете Codex.

Выберите команду под свою операционную систему и shell:

Где запускаете CodexTemporary command для текущего терминала
macOS, Linux, WSL, Git Bashexport ROUTMY_API_KEY="sk_your_key_here"
Windows PowerShell$env:ROUTMY_API_KEY="sk_your_key_here"
Windows cmd.exeset ROUTMY_API_KEY=sk_your_key_here

Проверьте, что терминал видит key:

bash
echo "$ROUTMY_API_KEY"

В PowerShell используйте:

powershell
echo $env:ROUTMY_API_KEY

В cmd.exe используйте:

bat
echo %ROUTMY_API_KEY%

Если команда ничего не печатает, Codex тоже не увидит key.

Для persistent setup используйте один из вариантов:

bash
# macOS/Linux/WSL with zsh
echo 'export ROUTMY_API_KEY="sk_your_key_here"' >> ~/.zshrc
source ~/.zshrc
bash
# macOS/Linux/WSL with bash
echo 'export ROUTMY_API_KEY="sk_your_key_here"' >> ~/.bashrc
source ~/.bashrc
powershell
# Windows PowerShell
[Environment]::SetEnvironmentVariable("ROUTMY_API_KEY", "sk_your_key_here", "User")
bat
:: Windows cmd.exe
setx ROUTMY_API_KEY "sk_your_key_here"

После setx или [Environment]::SetEnvironmentVariable закройте терминал и откройте новый. Уже открытые Windows terminals не получают новое значение автоматически.

ROUTMY_API_KEY не является фиксированной Codex-переменной. Это имя переменной, на которое ниже будет ссылаться env_key.

2. Проверьте key и default model

Snippets ниже уже используют openai/gpt-5.4. Перед правкой Codex config проверьте, что ваш key видит каталог моделей:

bash
curl https://api.rout.my/v1/models \
  -H "Authorization: Bearer $ROUTMY_API_KEY"

Windows PowerShell:

powershell
curl.exe https://api.rout.my/v1/models -H "Authorization: Bearer $env:ROUTMY_API_KEY"

Windows cmd.exe:

bat
curl.exe https://api.rout.my/v1/models -H "Authorization: Bearer %ROUTMY_API_KEY%"

Готовый default для этого гайда:

text
openai/gpt-5.4

Вручную выбирать модель не нужно. Используйте openai/gpt-5.4, если не хотите специально заменить ее:

СценарийModel
Default Codex setupopenai/gpt-5.4
Дешевле/быстрее для Codexopenai/gpt-5.4-mini

Если меняете model, копируйте точный ID из /v1/models; не сокращайте его и не удаляйте provider prefix.

3. Добавьте Codex provider

Откройте user-level Codex config. Выберите вариант:

bash
# macOS/Linux/WSL
mkdir -p ~/.codex
nano ~/.codex/config.toml
powershell
# Windows PowerShell
New-Item -ItemType Directory -Force "$HOME\.codex" | Out-Null
notepad "$HOME\.codex\config.toml"
bat
:: Windows cmd.exe
mkdir "%USERPROFILE%\.codex"
notepad "%USERPROFILE%\.codex\config.toml"

Добавьте блок:

toml
model = "openai/gpt-5.4"
model_provider = "routmy"

[model_providers.routmy]
name = "rout.my"
base_url = "https://api.rout.my/v1"
env_key = "ROUTMY_API_KEY"
wire_api = "responses"

Этот block можно вставлять как есть после настройки ROUTMY_API_KEY.

Оставьте base_url как https://api.rout.my/v1, а не https://api.rout.my/v1/responses. Codex сам добавляет endpoint path.

4. Проверьте Responses напрямую

Этот запрос проверяет тот же endpoint family, который будет использовать Codex:

bash
curl https://api.rout.my/v1/responses \
  -H "Authorization: Bearer $ROUTMY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.4",
    "input": "Return one short deployment checklist."
  }'

Если curl падает, сначала исправьте API key, model ID или доступ к модели, и только потом тестируйте Codex.

Эквивалент для Windows PowerShell:

powershell
curl.exe https://api.rout.my/v1/responses `
  -H "Authorization: Bearer $env:ROUTMY_API_KEY" `
  -H "Content-Type: application/json" `
  -d "{\"model\":\"openai/gpt-5.4\",\"input\":\"Return one short deployment checklist.\"}"

5. Запустите Codex

Если config выше должен быть default:

bash
codex

Для разовой non-interactive проверки:

bash
codex exec "Return one short deployment checklist."

Если не хотите делать rout.my default provider, оставьте provider block в ~/.codex/config.toml и передайте one-off override:

bash
codex exec \
  --config model_provider='"routmy"' \
  --model "openai/gpt-5.4" \
  "Return one short deployment checklist."

Codex --config values парсятся как TOML, поэтому вложенные кавычки вокруг "routmy" здесь нужны.

Optional profile

Можно держать rout.my в отдельном Codex profile:

toml
# ~/.codex/routmy.config.toml
model = "openai/gpt-5.4"
model_provider = "routmy"

[model_providers.routmy]
name = "rout.my"
base_url = "https://api.rout.my/v1"
env_key = "ROUTMY_API_KEY"
wire_api = "responses"

Запуск:

bash
codex --profile routmy
codex exec --profile routmy "Return one short deployment checklist."

Copy-paste checklist

Используйте это, если помогаете человеку, который не понимает environment variables:

  1. Открыть новый terminal.
  2. Задать ROUTMY_API_KEY командой для этого terminal.
  3. Выполнить echo "$ROUTMY_API_KEY" или echo $env:ROUTMY_API_KEY в PowerShell.
  4. Выполнить curl https://api.rout.my/v1/models -H "Authorization: Bearer $ROUTMY_API_KEY".
  5. Вставить готовый config block с openai/gpt-5.4 в ~/.codex/config.toml.
  6. Менять model только если специально нужен openai/gpt-5.4-mini или другой точный ID из /v1/models.
  7. Запустить codex из того же terminal.

Не вставляйте rout.my key напрямую в config.toml. У Codex есть direct bearer-token config field, но в официальном sample он помечен как dev-only experimental. Для нормальной настройки используйте env_key = "ROUTMY_API_KEY".

Частые ошибки

СимптомЧто проверить
ROUTMY_API_KEY игнорируетсяenv_key = "ROUTMY_API_KEY" указывает на environment variable. Экспортируйте ее в той же shell-сессии перед запуском codex.
PowerShell curl ведет себя странноИспользуйте curl.exe, чтобы PowerShell не вызвал старый alias curl.
echo $ROUTMY_API_KEY ничего не печатаетВы в неправильной shell или использовали команду для другой OS. В PowerShell используйте $env:ROUTMY_API_KEY, в cmd.exe - %ROUTMY_API_KEY%.
PowerShell работает, а cmd.exe нетEnvironment variables задаются отдельно для shell. Задайте variable там, где запускаете codex, или используйте persistent Windows command и переоткройте terminal.
WSL не видит key из WindowsWSL - отдельное Linux environment. Выполните macOS/Linux/WSL export команду внутри WSL.
Codex все еще ходит напрямую в OpenAIПроверьте model_provider = "routmy" в user-level ~/.codex/config.toml, не только в project .codex/config.toml.
Запрос идет в /v1/chat/completionsУкажите wire_api = "responses". Chat Completions provider path для Codex custom providers считается устаревающим.
404 или doubled pathbase_url должен быть https://api.rout.my/v1, а не https://api.rout.my, https://api.rout.my/v1/responses или полный request URL.
model_not_found или No providers availableВыполните GET /v1/models тем же rout.my key и скопируйте точный model ID из ответа.
401Повторите curl /v1/models. Если он падает, key отсутствует, истек или экспортирован в другой shell-сессии.
Config игнорируется в CIУказывайте CODEX_HOME только если директория уже создана и внутри лежит нужный config.toml. Иначе Codex использует ~/.codex.

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

OpenAI Codex docs описывают custom model providers через model_providers.<id>, base_url, env_key и wire_api. В той же документации указано, что provider configuration должна быть в user-level config, потому что project-local .codex/config.toml не может переопределять provider auth или provider selection.

OpenAI также документирует CODEX_API_KEY как single-run переменную для codex exec, а custom provider API keys читаются из переменной, имя которой указано в env_key. Для rout.my в примерах используется ROUTMY_API_KEY, чтобы не путать его с OpenAI OPENAI_API_KEY.

Источники

API documentation for rout.my.