Запускайте Codex CLI на apiToken.sale
Codex CLI полностью работает на аутентификации по API-ключу, если задать кастомного провайдера модели. Один TOML-профиль направляет его на apiToken.sale, и предоплаченный баланс покрывает каждую сессию — без входа в ChatGPT и со скидкой до 70% от официального расхода.
·
Создайте профиль
Сохраните это как ~/.codex/apitoken.config.toml. Именованный профиль не трогает конфигурацию Codex по умолчанию и возможный вход в ChatGPT — вы включаете его явно на каждый запуск.
# ~/.codex/apitoken.config.toml model = "gpt-5.6-sol" model_provider = "apitoken" [model_providers.apitoken] name = "apiToken.sale" base_url = "https://openai.api.apitoken.sale/v1" wire_api = "responses" env_key = "APITOKEN_API_KEY"
env_key задаёт имя переменной окружения, из которой Codex читает ключ, — секрет остаётся в шелле и никогда не попадает в TOML-файл.
Читайте также: OpenAI-совместимый API: Responses и Chat Completions
Запуск и проверка
export APITOKEN_API_KEY=sk-pool-••• codex --profile apitoken
- Всегда явно передавайте --profile apitoken, чтобы не было двусмысленности, какой провайдер — и какая переменная — активен.
- Меняйте модель под проект строкой model: gpt-5.6-sol для самой сложной работы, gpt-5.6-terra на каждый день, gpt-5.6-luna для быстрых дешёвых шагов.
- GET https://openai.api.apitoken.sale/v1/models с тем же Bearer-ключом показывает актуальный набор моделей.
wire_api = "responses" — правильное значение для этого шлюза: он обслуживает и Responses, и Chat Completions, а Codex стримит через Responses. Ставьте "chat" только если конкретный клиент требует классическую форму.
Ошибки, которые можно встретить
- Missing APITOKEN_API_KEY — переменная из env_key не экспортирована в шелле, который запускает codex. Экспортируйте её в том же шелле или в профиле оболочки.
- stream error: unexpected status 401 — ключ неверен, отозван или base_url потерял суффикс /v1. Воспроизведите curl'ом вне Codex, чтобы понять, какая половина сломана.
- stream error: unexpected status 404 — ID модели не включён; проверьте GET /v1/models вместо предположений.
- 402 — предоплаченный баланс нужно пополнить; ожидание не поможет.
Полный разбор ошибок Codex — config.toml, auth.json, stream errors →
Частые вопросы
Нужен ли аккаунт или подписка ChatGPT?
Нет. С кастомным профилем model_providers и ключом провайдера в окружении Codex работает полностью на аутентификации по API-ключу — вход ChatGPT из auth.json роли не играет.
Меняет ли это мою конфигурацию Codex по умолчанию?
Нет. Профиль живёт в отдельном файле и активируется только с --profile apitoken. Конфигурация и вход по умолчанию остаются как были.
Скидка та же, что и для Claude?
Да. Использование GPT-5.6 метерится по официальным ставкам OpenAI, и ваша активная скидка B2C — от 60% до 70% — применяется к тому же предоплаченному балансу.
Responses или Chat Completions для wire_api?
Используйте wire_api = "responses" — шлюз обслуживает оба формата, а Codex построен вокруг потока Responses. Форма Chat Completions существует для клиентов, которым она нужна.
Создайте аккаунт через Google или GitHub и протестируйте шлюз на $10 использования API.