Как настроить Codex CLI на Tokenator API
Codex CLI описывает провайдеров в собственном файле config.toml. Достаточно добавить один блок [model_providers.tokenator] и указать переменную окружения с ключом — дальше агент работает как обычно.
Что получится в итоге
После настройки Codex CLI перестаёт обращаться к своему стандартному провайдеру и отправляет все запросы в Tokenator. Оплата идёт токенами вашего ключа, а список доступных моделей задаётся ключом, а не инструментом.
| Инструмент | Codex CLI |
| Протокол | OpenAI-совместимый |
| Base URL | https://api.tokenator.top/v1 |
| Ключ | sk-your-tokenator-key |
Требования и поддерживаемые ОС
- Windows 10/11, macOS 12+ или современный Linux с 64-битной архитектурой.
- Доступ в интернет к домену Tokenator по HTTPS.
- API-ключ Tokenator вида
sk-your-tokenator-key.
Для установки через npm нужен Node.js LTS. У Codex CLI есть и отдельные бинарные сборки, устанавливать Node в этом случае не обязательно.
Установка Codex CLI
npm install -g @openai/codex
brew install --cask codex
После установки один раз запустите codex, чтобы создался каталог ~/.codex.
Настройка Tokenator
- Зарегистрируйтесь в личном кабинете и купите пакет токенов.
- Ключ появится в кабинете сразу после подтверждения оплаты — копировать его нужно целиком, вместе с префиксом.
- В примерах ниже вместо настоящего ключа стоит плейсхолдер
sk-your-tokenator-key. Не публикуйте настоящий ключ в репозиториях и скриншотах.
Конфигурация для Windows
model = "gpt-5.5" model_provider = "tokenator" [model_providers.tokenator] name = "Tokenator" base_url = "https://api.tokenator.top/v1" env_key = "TOKENATOR_API_KEY" wire_api = "responses"
$env:TOKENATOR_API_KEY = "sk-your-tokenator-key"
codexsetx TOKENATOR_API_KEY "sk-your-tokenator-key"
Идентификатор провайдера не должен совпадать с зарезервированными (openai, ollama, lmstudio) — поэтому в примере он назван tokenator. Ключ в файл не записывается: env_key указывает, из какой переменной окружения его взять.
Конфигурация для macOS и Linux
model = "gpt-5.5" model_provider = "tokenator" [model_providers.tokenator] name = "Tokenator" base_url = "https://api.tokenator.top/v1" env_key = "TOKENATOR_API_KEY" wire_api = "responses"
export TOKENATOR_API_KEY="sk-your-tokenator-key" codex
Идентификатор провайдера не должен совпадать с зарезервированными (openai, ollama, lmstudio) — поэтому в примере он назван tokenator. Ключ в файл не записывается: env_key указывает, из какой переменной окружения его взять.
Первый запрос
Перед запуском инструмента полезно убедиться, что ключ и модель рабочие. Один запрос curl отвечает на оба вопроса сразу.
curl https://api.tokenator.top/v1/chat/completions \ -H "Authorization: Bearer sk-your-tokenator-key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [{"role": "user", "content": "ping"}] }'
cd /path/to/project
codexУспешный ответ означает, что ключ действителен, модель разрешена для этого ключа и апстрим доступен. Расход виден в кабинете сразу после запроса.
Переключение моделей
Модель меняется в config.toml полем model — либо на запуск, флагом codex -m <model-id>.
Примеры ID моделей, доступных сейчас:
claude-haiku-4-5claude-opus-4-6claude-opus-4-7claude-sonnet-4-6gpt-5.5deepseek-v4-flash
Актуальные ID и характеристики — в каталоге AI-моделей; там же видно, какие модели сейчас доступны. Выбрать между близкими вариантами помогает сравнение моделей.
Настройка reasoning
Codex CLI передаёт уровень усилий рассуждения в самом запросе — в конфиге это model_reasoning_effort. Значение уходит в апстрим как есть; если модель его не поддерживает, оно игнорируется без ошибки.
Reasoning оплачивается как output-токены, поэтому высокий уровень заметно увеличивает расход.
Частые ошибки и способы исправления
| Симптом | Причина | Что сделать |
|---|---|---|
| Codex игнорирует провайдера | В конфиге не выставлен model_provider, либо идентификатор провайдера совпал с зарезервированным. | Убедитесь, что model_provider = "tokenator" находится на верхнем уровне файла, до таблиц [model_providers.*]. |
401 или сообщение о недействительном ключе | Ключ скопирован с лишними пробелами, отозван, истёк или подставлен не в ту переменную окружения. | Проверьте ключ в личном кабинете и убедитесь, что переменная окружения действительно попала в тот процесс, где запускается инструмент. |
403 | Модель не входит в список разрешённых для этого ключа. | Посмотрите список моделей ключа в кабинете и выберите ID из каталога моделей. |
429 | Превышен лимит запросов в минуту или час либо лимит одновременных стримов для ключа. | Уменьшите параллелизм агента и повторите запрос с экспоненциальной задержкой. Лимиты ключа видны в кабинете. |
| Модель не найдена / не поддерживается | В запросе указан ID, которого нет в каталоге, либо алиас, недоступный этому ключу. | Скопируйте точный API ID со страницы модели — регистр и точки значимы. |
| Запрос завис или обрывается на длинном ответе | Клиент закрыл соединение по своему таймауту раньше, чем модель закончила генерацию. | Включите потоковый режим (stream: true) и увеличьте таймаут клиента: у длинных reasoning-ответов первый токен может прийти не сразу. |
| Ошибка вида «Request error» без деталей | Апстрим-провайдер вернул ошибку. Её текст не передаётся клиенту. | Повторите запрос: Tokenator сам переключается на следующего провайдера модели. Если ошибка стабильна — напишите в поддержку. |
Частые вопросы
Нужна ли подписка Codex CLI или отдельный аккаунт провайдера?
Нет. Инструмент обращается к Tokenator, а оплата идёт токенами вашего ключа Tokenator.
Где посмотреть расход после подключения?
В личном кабинете: там видны запросы, израсходованные токены и остаток лимита ключа.
Можно ли использовать один ключ в нескольких инструментах?
Да. Ограничение — лимиты самого ключа: запросы в минуту и час, а также количество одновременных стримов.
Что будет, если токены закончатся посреди сессии?
Запросы начнут возвращать ошибку. Лимит восстанавливается пополнением того же ключа — переустанавливать инструмент не нужно.
Как вернуться к прежнему провайдеру?
Уберите добавленные настройки — переменные окружения или блок провайдера в конфиге. Инструмент вернётся к своему поведению по умолчанию.
Где почитать про сам формат API?
В документации Tokenator API и на странице про OpenAI-compatible API.