Проверено 2026-11-12

Codex CLI на предоплаченном балансе через один блок provider

Codex CLI подключается одним блоком model provider в ~/.codex/config.toml: в base_url указывается https://api.relayswitch.io/v1, а ключ хранится в переменной окружения. Работа с Codex не меняется, а каждый шаг списывается за токены с предоплаченного баланса через маршрут Responses.

01Что такое Codex и что здесь меняется

Codex CLI является консольным агентом для кодинга от OpenAI. В его конфигурации есть настройка model_provider со значением по умолчанию openai, поэтому запросы уходят на собственный интерфейс OpenAI. Эту настройку можно заменить: опишите своего провайдера в config.toml, указав адрес эндпоинта и имя переменной окружения, в которой хранится ключ, и направьте model_provider на него. Команды и способ работы с Codex остаются прежними; меняется только то, кто выставляет счет.

Codex говорит только на одном протоколе, Responses API от OpenAI: в справочнике по его конфигурации сказано, что wire_api поддерживает только значение responses. Поэтому у шлюза в первую очередь нужно проверить наличие /v1/responses, а не только /v1/chat/completions. Здесь есть оба маршрута, и Codex использует первый.

02config.toml: один блок provider

В блоке ниже четыре строки, и API-ключ в файл не записывается. Что значит каждая настройка:

  • model_provider выбирает блок по имени его таблицы. Имя вы задаете сами, но openai, ollama, lmstudio, amazon-bedrock, amazon-bedrock-runtime и gcp являются встроенными ID Codex, и переопределить их нельзя.
  • В base_url указывается https://api.relayswitch.io/v1, с /v1; Codex добавляет к нему /responses.
  • env_key содержит имя переменной окружения, в которой хранится ключ, а не сам ключ. Поскольку ключ остается в переменной окружения, файл конфигурации можно безопасно коммитить и синхронизировать.
  • У wire_api только одно допустимое значение, responses, и оно же стоит по умолчанию, так что эту строку можно удалить.
  • requires_openai_auth по умолчанию равен false, и писать его не нужно: пользовательский провайдер использует ключ из env_key, а не вход в аккаунт OpenAI.
toml
1# ~/.codex/config.toml
2model = "gpt-6.1-sol"
3model_provider = "relayswitch"
4
5[model_providers.relayswitch]
6name = "RelaySwitch"
7base_url = "https://api.relayswitch.io/v1"
8env_key = "RELAYSWITCH_API_KEY"
9wire_api = "responses"

03Сохраните ключ в переменной окружения и запустите codex

Запишите этот блок в ~/.codex/config.toml. Этот каталог задается переменной окружения CODEX_HOME и по умолчанию равен ~/.codex; провайдер нужно описывать именно в этом файле уровня пользователя. Затем выполните export ключа в терминале, где запускается Codex, и начинайте. Добавьте строку export в конфигурационный файл своего shell, чтобы новые терминалы тоже ее получали.

bash
1export RELAYSWITCH_API_KEY="sk-relay-..."
2codex

04Проверьте маршрут Responses через curl

Перед запуском Codex отправьте один небольшой запрос Responses, чтобы убедиться, что ключ и адрес верны. Опция -i выводит строку статуса и заголовки ответа, включая ID запроса.

Если пришел ответ 200, запустите codex и отправьте первую команду. Этот запрос появится на странице Usage в консоли через несколько секунд, вместе с токенами и стоимостью. Чтобы временно сменить модель, используйте codex --model с нужным ID.

bash
1curl -i https://api.relayswitch.io/v1/responses \
2 -H "Authorization: Bearer sk-relay-..." \
3 -H "content-type: application/json" \
4 -d '{"model": "gpt-6.1-sol", "input": "Reply with ok"}'

05Цены на модели GPT и стоимость одной задачи

В этой таблице модели GPT из каталога, в USD за миллион токенов, с отдельными ценами на вход, кешированный вход и выход. Codex рассчитан на модели GPT и маршрут Responses, поэтому убедитесь, что ID, который вы пишете в config.toml, отвечает на проверку через curl выше.

Codex на каждом шаге заново отправляет диалог и вывод инструментов. Эти токены оплачиваются по цене кешированного входа, когда попадают в кеш, и ответ сообщает число кешированных токенов; попадут они в кеш или нет, зависит от модели и самого запроса. Отсюда конкретные способы экономить: используйте более дешевую модель для повседневных правок и переходите на более дорогую только для сложных ревью и рефакторинга, начинайте новую сессию после завершения задачи, чтобы контекст не рос бесконечно, и создайте отдельный ключ для Codex с бюджетом в долларах и дневным лимитом расходов. Когда лимит достигнут, шлюз отвечает 402 и останавливается только этот ключ; остальной баланс аккаунта не затрагивается.

МодельРазработчикВходВыходКонтекст
GPT-6.1 Solgpt-6.1-solOpenAI$0.582$2.911,050,000
GPT-6 Lunagpt-6-lunaOpenAI$0.0625$0.201,050,000
GPT-6 Solgpt-6-solOpenAI$0.60$3.001,050,000
GPT-6 Astragpt-6-astraOpenAI$3.00$15.001,050,000
GPT-5.6 Lunagpt-5.6-lunaOpenAI$0.12$0.721,050,000
GPT-5.6 Solgpt-5.6-solOpenAI$1.20$3.001,050,000
GPT-5.6 Terragpt-5.6-terraOpenAI$1.20$3.601,050,000
GPT-5.5gpt-5.5OpenAI$1.80$9.001,050,000
GPT-5.4 Minigpt-5.4-miniOpenAI$0.75$4.50400,000
GPT-5.4gpt-5.4OpenAI$1.50$9.001,050,000
GPT-5.3-Codexgpt-5.3-codexOpenAI$1.75$14.00400,000
GPT-4o minigpt-4o-miniOpenAI$0.15$0.60128,000
GPT-4ogpt-4oOpenAI$2.50$10.00128,000
GPT-4.1 Nanogpt-4.1-nanoOpenAI$0.10$0.401,048,576
GPT 5.4 Nanogpt-5.4-nanoOpenAI$0.40$2.50400,000
GPT 5.6gpt-5.6OpenAI$0.9412$4.70591,050,000
GPT 6.1 Terragpt-6.1-terraOpenAI$0.2941$1.47061,000,000
gpt-oss-120bgpt-oss-120bOpenAI$0.20$1.80
gpt-oss-20bgpt-oss-20bOpenAI$0.16$0.72

USD за миллион токенов

06Профили для моделей и меню /model

Профиль представляет собой файл с именем ~/.codex/<name>.config.toml, в котором записаны только строки, отличающиеся от config.toml; он накладывается поверх него, когда Codex запускается командой codex --profile <name>. Начиная с Codex 0.134.0 таблицы [profiles.<name>] внутри config.toml больше не читаются, а селектор profile = верхнего уровня удален; руководства, написанные до этого, используют старый способ и при копировании не работают. Значение model_reasoning_effort должно соответствовать уровням, которые поддерживает выбранная модель; Codex отправляет его в каждом запросе, а шлюз передает модели как есть.

При работе с пользовательским провайдером меню /model в Codex по-прежнему показывает встроенные модели OpenAI, а не модели вашего провайдера. Выбор любой из них перезапишет активный файл профиля: модель сменится, провайдер нет. Если записанный ID есть в каталоге, Codex работает по цене этой модели; если нет, придет ответ 404. Чтобы сменить модель, используйте --profile или --model.

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

Статусы с 401 по 404 возвращаются до того, как запрос дошел до модели, а 429, 502 и 503 не несут ответа; ни один из них не оплачивается. Полная таблица по статусам есть на странице OpenAI API. Для кодинга с Claude в терминале используйте Claude Code; оба инструмента работают с одним ключом и балансом, а как создать ключ, описано на странице Claude API ключ.

401Ключ неверен или уже отозван, либо RELAYSWITCH_API_KEY пуста в терминале, где запускается Codex. Выполните export еще раз и перезапустите.
402Баланса не хватает, или бюджет ключа исчерпан. Все заработает, как только вы пополните баланс или поднимете бюджет.
404ID модели нет в каталоге, обычно потому, что меню /model перезаписало профиль. Верните строку model.
429Достигнут лимит частоты запросов ключа. Подождите столько, сколько указано в заголовке retry-after, или поднимите лимит запросов в минуту для этого ключа в консоли.
Блок provider не применяетсяИмя таблицы совпадает со встроенным ID, или в model_provider указано не имя этой таблицы.
Профиль не применяетсяОн все еще записан как таблица [profiles.<name>] в config.toml; перенесите его строки в отдельный файл.

Частые вопросы

Что такое Codex CLI?
Codex CLI является консольным агентом для кодинга от OpenAI. Настройка model_provider в его конфигурации определяет, куда уходят запросы; по умолчанию она равна openai, и ее можно направить на провайдера, которого вы сами описали в config.toml.
Как настроить Codex со своим API-ключом?
Добавьте в ~/.codex/config.toml блок model_providers.relayswitch с полями name, base_url (https://api.relayswitch.io/v1) и env_key (RELAYSWITCH_API_KEY). Затем укажите на верхнем уровне model_provider со значением relayswitch и model с одним из ID GPT из каталога. Сохраните ключ в переменной окружения через export и запустите codex.
Нужен ли аккаунт ChatGPT или API-ключ OpenAI?
Согласно справочнику по конфигурации Codex, requires_openai_auth у пользовательского провайдера по умолчанию равен false, а запросы аутентифицируются ключом из переменной окружения, на которую указывает env_key. Ваш аккаунт и баланс находятся в RelaySwitch, а ключ начинается с sk-relay-.
Нужен ли /v1 в base_url и что писать в wire_api?
В base_url указывается https://api.relayswitch.io/v1, с /v1; Codex добавляет к нему /responses. У wire_api только одно допустимое значение, responses, и оно же стоит по умолчанию, так что строку можно удалить. Значение chat из старых руководств больше не работает.
Как узнать, что модель не подменили незаметно?
Две вещи вы можете проверить сами. Каждая модель раз в сутки получает один и тот же тестовый промпт, и ответ сравнивается с предыдущими результатами; результаты открыты по адресу https://api.relayswitch.io/v1/proof. У каждого запроса также есть подписанная квитанция, где записаны ID модели, оплаченные токены и стоимость. Значение model_reasoning_effort Codex отправляет в каждом запросе, и шлюз передает его модели как есть.
Токены в Codex кажутся дорогими, как сэкономить?
Codex на каждом шаге заново отправляет диалог и вывод инструментов, поэтому расходы приходятся в основном на вход и кешированный вход. Три способа: более дешевая модель для повседневных правок и дорогая только для сложных задач, новая сессия после завершения задачи, а также бюджет в долларах и дневной лимит на ключе Codex, чтобы он останавливался при достижении лимита.

Один блок provider, одна переменная окружения

base_url https://api.relayswitch.io/v1, модели GPT оплачиваются за токены по ценам каталога, а ежедневная проверка открыта для всех.