# Claude Code

NezhaGate отдаёт тот же Messages API, что и Anthropic, поэтому вызов инструментов, размышления и кэш промптов в Claude Code работают без изменений. Задайте две переменные окружения — и можно начинать.

> https://nezhagate.com/ru/docs/integrations/claude-code

## Перед началом

- API-ключ NezhaGate (создайте его на странице API Keys в консоли).

- Установленный Claude Code. Если его ещё нет, выполните команду (нужен Node.js 18 или новее):

```
npm install -g @anthropic-ai/claude-code
```

## Шаг 1: задайте переменные окружения

Задайте их в терминале, где будете запускать `claude`. `ANTHROPIC_AUTH_TOKEN` — ваш ключ NezhaGate; `ANTHROPIC_MODEL` — модель по умолчанию.

```
export ANTHROPIC_BASE_URL=https://nezhagate.com/anthropic
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-sonnet-5
claude
```

```
$env:ANTHROPIC_BASE_URL = "https://nezhagate.com/anthropic"
$env:ANTHROPIC_AUTH_TOKEN = "YOUR_API_KEY"
$env:ANTHROPIC_MODEL = "claude-sonnet-5"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "claude-sonnet-5"
claude
```

Так переменные действуют только в текущем терминале; в новом их нужно задать заново. Чтобы они сохранились, используйте settings.json из следующего шага.

## Шаг 2 (рекомендуется): сохраните в settings.json

Запишите те же настройки в пользовательский файл настроек Claude Code — тогда они будут работать в любом терминале. Файл: `~/.claude/settings.json` на macOS / Linux и `%USERPROFILE%\.claude\settings.json` в Windows; если файла нет, создайте его.

```
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://nezhagate.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
    "ANTHROPIC_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-sonnet-5"
  }
}
```

## Шаг 3: запустите и проверьте

Запустите `claude` в папке проекта и введите `/status`, чтобы увидеть текущие настройки: base URL должен быть `https://nezhagate.com/anthropic`.

## Выбор модели

Claude Code работает только с моделями Claude (эндпоинт /anthropic принимает только их). Доступны сейчас:

| ID модели | Вход | Выход | Чтение кэша |
| --- | --- | --- | --- |
| `claude-sonnet-4-6` | $1.50 | $7.50 | $0.15 |
| `claude-opus-5` | $4.00 | $20.00 | $0.40 |
| `claude-fable-5` | $8.00 | $40.00 | $0.80 |
| `claude-sonnet-5` | $1.00 | $5.00 | $0.10 |

Цены в долларах США за миллион токенов.

Чтобы переключиться во время сессии, введите `/model` и ID модели, например `/model claude-opus-5`. Какие модели стоят за пунктами Opus и Sonnet в меню `/model`, задают `ANTHROPIC_DEFAULT_OPUS_MODEL` и `ANTHROPIC_DEFAULT_SONNET_MODEL`.

### Модель для фоновых задач

Небольшие фоновые задачи (например, название для диалога) Claude Code поручает маленькой модели и по умолчанию запрашивает Claude Haiku. В NezhaGate Haiku нет, поэтому укажите в `ANTHROPIC_DEFAULT_HAIKU_MODEL` одну из моделей из таблицы выше — иначе эти фоновые запросы будут получать 404.

## Оплата и кэш

Оплата за токены, по тем же ценам, что и на эндпоинтах /v1. Попадания в кэш промптов оплачиваются по цене «Чтение кэша» из таблицы — намного дешевле входа. Claude Code в каждом ходе отправляет один и тот же системный промпт и контекст проекта, поэтому обычно попадает в кэш на каждом ходе.

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

**401 или «Invalid API key»**

Ключ введён с ошибкой, в нём лишний пробел или он отключён. Проверьте его в консоли и задайте заново.

**404 «model: …»**

Запрошенной модели нет в списке NezhaGate; чаще всего это Haiku, которую по умолчанию запрашивают фоновые задачи. Задайте `ANTHROPIC_MODEL` и `ANTHROPIC_DEFAULT_HAIKU_MODEL`, как описано выше.

**402: недостаточно средств**

На балансе аккаунта не хватает средств, или ключ достиг заданного вами бюджета. Пополните баланс в консоли или увеличьте лимит ключа.

**Похоже, настройки не применились**

Задавайте переменные окружения до запуска `claude` и в том же терминале; после правки settings.json перезапустите Claude Code. Текущий base URL показывает `/status`.

**429 или «overloaded»**

Все линии этой модели сейчас заняты. Повторите через несколько секунд — ничего не спишется.
