Claude Code на CloseRouter: ANTHROPIC_BASE_URL
Claude Code по умолчанию ходит на API Anthropic. Свой шлюз подключается через ANTHROPIC_BASE_URL. Это смена хоста для того же Messages API, не кнопка «любая модель мира».
Официально: Other LLM gateways. Anthropic не endorse сторонние шлюзы и не поддерживает прогон Claude Code на не-Claude моделях.
Что делает ANTHROPIC_BASE_URL
Переменная задаёт host. Без неё - production Anthropic. С ней - ваш gateway.
Одного URL мало. Нужен credential шлюза. Документация Anthropic: выставить только BASE_URL без credential не отключает логин claude.ai. Запросы могут идти через gateway, биллинг останется на подписке, пока не подложен ключ шлюза.
Claude Code сам дописывает путь (/v1/messages). Поэтому в BASE_URL обычно нет хвоста /v1/messages.
Как клиент шлёт секреты (это объясняет, почему у шлюзов разный env):
ANTHROPIC_AUTH_TOKEN→ заголовокAuthorization: Bearer …ANTHROPIC_API_KEY→ заголовокx-api-key
Шлюз, который ждёт Bearer, почти всегда просит TOKEN. Шлюз, который ждёт x-api-key, - API_KEY. Если заполнены оба, поведение зависит от клиента и кэша логина. Не копируйте чужой блок слепо.
Куда писать конфиг
Чтобы настройка пережила терминал, используйте ~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json).
OpenRouter отдельно пишет: native installer не читает .env проекта. Не кладите ключ в репозиторий. Пользовательский файл в $HOME - нормальное место. Проектный .claude/settings.json с URL шлюза в git - плохая идея (класс атак через чужой clone).
Если раньше логинились в Anthropic: /logout, закрыть процесс, открыть заново. У OpenRouter кэш на macOS может жить в Keychain как Claude Code-credentials.
Проверка внутри сессии: /status - какой token и какой base URL.
Три рабочих примера
Цифры и slug моделей сверяйте в кабинетах. Ниже только host и какой ключ куда.
CloseRouter
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.closerouter.dev",
"ANTHROPIC_API_KEY": "YOUR_API_KEY"
}
}
ANTHROPIC_AUTH_TOKEN удалите. Хост без /v1. Ключ из closerouter.dev/keys.
Установщик: bash <(curl -fsSL https://closerouter.dev/install.sh). Он запрашивает ключ без записи в историю команд, сам пишет эти два поля и снимает AUTH_TOKEN. Гайд: docs/claude.
OpenRouter
Из их cookbook:
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
export ANTHROPIC_API_KEY=""
Порядок важен: TOKEN раскрывается в момент source. Ключ должен быть задан выше в профиле. Они гарантируют Claude Code только с first-party Anthropic в приоритете провайдеров.
После настройки: /logout при старом логине, /status должен показать ANTHROPIC_AUTH_TOKEN и https://openrouter.ai/api.
Kie.ai
Из их гайда:
ANTHROPIC_BASE_URL=https://api.kie.ai/claude
Либо ANTHROPIC_API_KEY="Bearer <key>" (слово Bearer и пробел), либо ANTHROPIC_AUTH_TOKEN=<key> без префикса. Не логиниться аккаунтом Anthropic после установки CLI. Не дописывать /v1/messages.
Codex и Cursor - это уже не BASE_URL
Codex говорит на OpenAI /v1, не на Anthropic host.
CloseRouter (после установщика добавьте model_provider сами):
model_provider = "closerouter"
[model_providers.closerouter]
name = "CloseRouter"
base_url = "https://api.closerouter.dev/v1"
wire_api = "responses"
env_key = "CLOSEROUTER_API_KEY"
Экспортируйте CLOSEROUTER_API_KEY в окружении, из которого запускается Codex; сам токен в config.toml хранить не нужно.
OpenRouter в cookbook: model_provider = "openrouter", base_url = https://openrouter.ai/api/v1, ключ через auth.command, не только env_key (иначе каталог моделей не обновится).
Cursor: Override OpenAI Base URL + ключ в UI. Env-файл сам не читает.
Как выбрать шлюз под агента
- Живой
/v1/messages(или их Anthropic-skin). - Документировано, какой заголовок они ждут.
- Понятный биллинг и лимит на ключ.
- Не ломают дефолтные модели клиента, если вы этого не просили.
Прямой Anthropic - эталон, два кабинета если нужен ещё GPT. OpenRouter - широкий каталог и failover. CloseRouter - один кабинет RU/EN, СБП, установщик, оба контракта. LiteLLM - если шлюз обязан быть вашим. Kie Claude - если уже живёте в их кредитах ради медиа и хотите тот же кошелёк для CLI; основной продукт Kie всё равно async Market, не этот хост.
Типичные поломки
| Симптом | Что проверить |
|---|---|
| Просит login Anthropic | Нет ключа шлюза; не сделали /logout; не перечитали профиль |
| 401 | Не тот заголовок (TOKEN vs API_KEY); у Kie забыли Bearer |
| Ходит на Anthropic, не на шлюз | Живой ANTHROPIC_API_KEY при OR-настройке; BASE_URL не подхватился |
| model not found | Не тот slug; у OR не пустой API_KEY + старый логин |
| Работает в CLI, нет в IDE | IDE не видит user env; нужен settings.json или полный рестарт |
claude --debug пишет фактический URL. Это быстрее гаданий.
FAQ
Можно ли через BASE_URL кормить GPT в Claude Code?
Anthropic это не поддерживает. Шлюз может уметь, клиент - нет как поддерживаемый сценарий.
Почему остаётся подписка?
Нет credential шлюза. Один BASE_URL подписку не снимает.
Нужен ли /v1 у CloseRouter? Нет. У OpenRouter Claude-пути - https://openrouter.ai/api. У Kie - https://api.kie.ai/claude.
Где протокол для своего gateway?
Gateway protocol у Anthropic: какие заголовки форвардить, чтобы не отвалить фичи CLI.
Читать дальше
Теги