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 с префиксом Bearer | Claude 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 создаётся за пару минут:
- Зарегистрируйтесь на zukko.pro и пополните баланс (от $1): СБП, криптовалюта или карта MasterCard. Через СБП платёжная страница добавляет комиссию 8,5% сверху.
- Откройте раздел API-ключи и создайте ключ. Полный ключ вида
fetch_...показывается один раз при создании, сразу сохраните его в менеджере паролей. - Задайте имя, дневной и месячный лимит в долларах и при желании список разрешённых моделей. Отдельный ключ на проект удобнее: его можно отозвать, не ломая остальные.
Полная схема авторизации описана в документации.
Как задать переменные
macOS и Linux
Для текущей сессии терминала:
export ANTHROPIC_BASE_URL=https://api.zukko.pro
export ANTHROPIC_AUTH_TOKEN=fetch_ваш_ключЧтобы переменные сохранялись, добавьте эти строки в ~/.zshrc (macOS, zsh) или ~/.bashrc (Linux, bash) и перезапустите терминал или выполните source ~/.zshrc. Учтите: файл читается любым процессом из вашего пользователя и может попасть в резервные копии дотфайлов; если вы публикуете дотфайлы в git, ключ туда класть нельзя.
Windows (PowerShell)
Для текущего окна:
$env:ANTHROPIC_BASE_URL = "https://api.zukko.pro"
$env:ANTHROPIC_AUTH_TOKEN = "fetch_ваш_ключ"Чтобы значения сохранялись для следующих окон:
setx ANTHROPIC_BASE_URL "https://api.zukko.pro"
setx ANTHROPIC_AUTH_TOKEN "fetch_ваш_ключ"Команда setx не меняет переменные в уже открытом окне, поэтому закройте его и откройте новое.
Через settings.json Claude Code
Claude Code читает блок env из файла настроек ~/.claude/settings.json, поэтому не обязательно экспортировать переменные в каждом терминале:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.zukko.pro",
"ANTHROPIC_AUTH_TOKEN": "fetch_ваш_ключ"
}
}Файл в домашней папке лежит вне репозитория, это безопаснее, чем настройки проекта. Если вы кладёте настройки в .claude/settings.json внутри проекта, ключ туда не вписывайте. Установка и первые команды описаны в документации Claude Code.
Файл .env для приложений
В своих приложениях ключ принято хранить в .env, добавленном в .gitignore. Для Python удобна библиотека python-dotenv:
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 публичный и ключ игнорирует. Проверяйте ключ запросом баланса, где ключ обязателен, а запрос ничего не стоит:
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.
Похожие статьи
- Свой прокси к нейросети на Node.js: не показывать API-ключ во фронтендеНебольшой сервер на Express между вашим фронтендом и API нейросети: ключ остаётся на сервере, а модели, длина запроса и частота ограничены.
- DeepSeek API на Python: запросы, стриминг, JSON и обработка ошибокГотовый код для DeepSeek V4.1 Flash и V4 Pro на OpenAI SDK: запрос, стриминг, разбор JSON и аккуратная обработка ошибок.
- Gemini API на Python: запросы через OpenAI SDK и OpenAI-форматРабочий пример Gemini API на Python без отдельной библиотеки: меняем base_url в OpenAI SDK, добавляем стриминг и JSON и сравниваем с google-genai.
- Anthropic SDK для Python: base_url, ключ и первый запрос через шлюзОфициальный пакет anthropic для Python нужно только направить на другой адрес. Разбираем base_url, ключ, стриминг, подсчёт токенов, кэш и ошибки.