К блогу
Гайд18 августа 2026 г.

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-файл сам не читает.

Как выбрать шлюз под агента

  1. Живой /v1/messages (или их Anthropic-skin).
  2. Документировано, какой заголовок они ждут.
  3. Понятный биллинг и лимит на ключ.
  4. Не ломают дефолтные модели клиента, если вы этого не просили.

Прямой 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, нет в IDEIDE не видит 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.

Читать дальше

Теги

ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKENclaude code custom endpoint