ANTHROPIC_API_KEY и ANTHROPIC_AUTH_TOKEN: где взять ключ и куда прописать

Какая переменная нужна SDK, какая Claude Code, где получить ключ и как прописать его в Windows, macOS и Linux так, чтобы он не попал в git.

5 мин · · API-ключи · разработка

Вопрос «anthropic_api_key где взять» на самом деле состоит из двух: откуда берётся сам ключ и в какую переменную окружения его класть. Вторая часть путает чаще: у Anthropic SDK и у Claude Code переменные разные, и ключ, вставленный не туда, даёт ошибку авторизации или заставляет программу искать вход через подписку. Ниже разбираем, какая переменная для чего, как задать её на трёх системах и как не опубликовать ключ случайно.

Две переменные: чем они отличаются

ПеременнаяЧто делаетКто её читает
ANTHROPIC_API_KEYключ передаётся в заголовке x-api-keyофициальный Anthropic SDK
ANTHROPIC_AUTH_TOKENзначение уходит в заголовок Authorization с префиксом BearerClaude Code; поддерживается и в SDK
ANTHROPIC_BASE_URLадрес API, вместо адреса по умолчаниюоба

По документации Claude Code (страница «Environment variables») ANTHROPIC_API_KEY отправляется как заголовок X-Api-Key, а когда он задан, используется вместо входа через подписку, даже если вы вошли в аккаунт. В интерактивном режиме Claude Code при этом просит один раз подтвердить использование ключа. ANTHROPIC_AUTH_TOKEN задаёт значение заголовка Authorization, к нему добавляется Bearer .

Отсюда практическое правило для ключа Zukko:

  • в Claude Code используйте ANTHROPIC_AUTH_TOKEN и ANTHROPIC_BASE_URL=https://api.zukko.pro;
  • в Anthropic SDK (Python, TypeScript) обычно хватает ANTHROPIC_API_KEY и ANTHROPIC_BASE_URL=https://api.zukko.pro: SDK шлёт x-api-key, и шлюз принимает его наравне с заголовком Authorization: Bearer;
  • в клиентах на OpenAI SDK переменные другие: OPENAI_API_KEY и OPENAI_BASE_URL=https://api.zukko.pro/v1.

Обратите внимание на адрес. Официальный Anthropic SDK и Claude Code сами добавляют /v1 к адресу, поэтому в ANTHROPIC_BASE_URL его не пишут. Это отдельный частый источник ошибок, подробно разобранный в статье про base URL с /v1 и без.

Где взять ключ

Официальный ключ Anthropic выдаётся в консоли Anthropic после регистрации и привязки оплаты. Условия, поддерживаемые страны и способы оплаты определяет сама Anthropic, и из России этот путь обычно сложен: смотрите актуальные правила на их сайте, мы не можем гарантировать, что он у вас сработает.

Ключ Zukko создаётся за пару минут:

  1. Зарегистрируйтесь на zukko.pro и пополните баланс (от $1): СБП, криптовалюта или карта MasterCard. Через СБП платёжная страница добавляет комиссию 8,5% сверху.
  2. Откройте раздел API-ключи и создайте ключ. Полный ключ вида fetch_... показывается один раз при создании, сразу сохраните его в менеджере паролей.
  3. Задайте имя, дневной и месячный лимит в долларах и при желании список разрешённых моделей. Отдельный ключ на проект удобнее: его можно отозвать, не ломая остальные.

Полная схема авторизации описана в документации.

Как задать переменные

macOS и Linux

Для текущей сессии терминала:

bash
export ANTHROPIC_BASE_URL=https://api.zukko.pro
export ANTHROPIC_AUTH_TOKEN=fetch_ваш_ключ

Чтобы переменные сохранялись, добавьте эти строки в ~/.zshrc (macOS, zsh) или ~/.bashrc (Linux, bash) и перезапустите терминал или выполните source ~/.zshrc. Учтите: файл читается любым процессом из вашего пользователя и может попасть в резервные копии дотфайлов; если вы публикуете дотфайлы в git, ключ туда класть нельзя.

Windows (PowerShell)

Для текущего окна:

bash
$env:ANTHROPIC_BASE_URL = "https://api.zukko.pro"
$env:ANTHROPIC_AUTH_TOKEN = "fetch_ваш_ключ"

Чтобы значения сохранялись для следующих окон:

bash
setx ANTHROPIC_BASE_URL "https://api.zukko.pro"
setx ANTHROPIC_AUTH_TOKEN "fetch_ваш_ключ"

Команда setx не меняет переменные в уже открытом окне, поэтому закройте его и откройте новое.

Через settings.json Claude Code

Claude Code читает блок env из файла настроек ~/.claude/settings.json, поэтому не обязательно экспортировать переменные в каждом терминале:

bash
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.zukko.pro",
    "ANTHROPIC_AUTH_TOKEN": "fetch_ваш_ключ"
  }
}

Файл в домашней папке лежит вне репозитория, это безопаснее, чем настройки проекта. Если вы кладёте настройки в .claude/settings.json внутри проекта, ключ туда не вписывайте. Установка и первые команды описаны в документации Claude Code.

Файл .env для приложений

В своих приложениях ключ принято хранить в .env, добавленном в .gitignore. Для Python удобна библиотека python-dotenv:

bash
from anthropic import Anthropic
from dotenv import load_dotenv

load_dotenv()  # читает .env рядом со скриптом

client = Anthropic()  # берёт ANTHROPIC_API_KEY и ANTHROPIC_BASE_URL из окружения
msg = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=200,
    messages=[{"role": "user", "content": "Ответь одним словом: работает?"}],
)
print(msg.content[0].text)

В .env лежат строки ANTHROPIC_API_KEY=fetch_... и ANTHROPIC_BASE_URL=https://api.zukko.pro. Если конструктор не подхватил переменную, передайте значения явно: Anthropic(api_key=..., base_url=...).

Проверка, что ключ работает

Список моделей для проверки ключа не годится: эндпоинт GET /v1/models публичный и ключ игнорирует. Проверяйте ключ запросом баланса, где ключ обязателен, а запрос ничего не стоит:

bash
curl https://api.zukko.pro/v1/balance -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN"

Ответ 200 с балансом означает, что ключ принят. Ошибка 401 говорит о неверном ключе (лишний пробел, обрезанная строка, ключ другого сервиса). Ошибки 402 (не хватает баланса) и 403 model_not_allowed_for_key (модель не входит в список ключа) появляются уже при запросе к модели.

Конфликты переменных

Если в окружении одновременно заданы ANTHROPIC_API_KEY с чужим ключом и ANTHROPIC_AUTH_TOKEN для Zukko, по документации Claude Code (раздел о порядке выбора учётных данных) приоритет у ANTHROPIC_AUTH_TOKEN. Но лишняя переменная путает диагностику, а Anthropic SDK и другие программы возьмут именно ANTHROPIC_API_KEY. Какой способ входа активен в Claude Code, показывает команда /status. Старый ключ часто остаётся в профиле шелла после экспериментов. Проверьте командой env | grep ANTHROPIC (macOS и Linux) или Get-ChildItem Env:ANTHROPIC* (PowerShell), а лишнюю переменную уберите через unset ANTHROPIC_API_KEY. Если вы раньше входили в Claude Code через подписку, а теперь используете ключ, при необходимости выйдите из аккаунта, команды смотрите в документации Claude Code.

Как не засветить ключ

  • Не коммитьте .env: добавьте его в .gitignore до первого коммита.
  • Не вставляйте ключ в код, в скриншоты и в сообщения чата поддержки.
  • Не передавайте ключ в docker build через ARG: он попадёт в слои образа, передавайте его при запуске контейнера.
  • Заведите дневной и месячный лимит: если ключ всё же утечёт, ущерб ограничен.
  • Если ключ уже попал в репозиторий, удаление коммита не помогает: он остаётся в истории. Отзовите его в кабинете и создайте новый (что делать по шагам).

Частые вопросы

Чем ANTHROPIC_API_KEY отличается от ANTHROPIC_AUTH_TOKEN?

Первый отправляется в заголовке x-api-key, второй в Authorization: Bearer. Zukko принимает оба заголовка. Для Claude Code берите ANTHROPIC_AUTH_TOKEN, для SDK достаточно ANTHROPIC_API_KEY.

Где взять Anthropic API key, если не получается зарегистрироваться?

Официальный ключ выдаёт Anthropic на своих условиях, и мы не можем обещать, что вы его получите. Альтернатива: ключ Zukko, который работает в Anthropic-формате и в OpenAI-формате; доступ из России идёт через шлюз, оплата СБП, картой MasterCard или криптой.

Нужно ли писать /v1 в ANTHROPIC_BASE_URL?

Нет. Для Claude Code и официального Anthropic SDK адрес https://api.zukko.pro без /v1. С /v1 вы получите путь вида /v1/v1/messages и ошибку 404.

Можно ли хранить ключ в переменных окружения на сервере?

Да, это обычная практика: через менеджер секретов хостинга или файл окружения сервиса с ограниченными правами. Не кладите ключ в репозиторий и в образ.

Чтобы начать, создайте ключ в кабинете Zukko и задайте две переменные из этой статьи.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.