Диагностика · Claude Code
Claude Code API Error 401 invalid x-api-key — решение
Claude Code печатает API Error: 401 invalid x-api-key, когда ключ не доходит до нужного эндпоинта. Правила переменных окружения, которые к этому приводят, и решение.
Что вы видите
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}}Почему возникает
- Заданы обе переменные — ANTHROPIC_API_KEY и ANTHROPIC_AUTH_TOKEN: уходят оба заголовка, и запрос отклоняется. Пустая строка тоже считается заданным значением. Это самая частая причина при своём base URL.
- Переменная задана не в той оболочке, из которой запущен claude, — export в одном терминале не существует в другом, а GUI-лаунчеры не читают ваш профиль оболочки.
- ANTHROPIC_BASE_URL указывает на одного провайдера, а ключ выпущен другим. Валидный ключ, отправленный не на тот эндпоинт, — всё равно 401.
- Ключ отозван или истёк, если выпускался с датой окончания.
Что делать
- Выберите одну переменную, вторую снимите: для этого шлюза используйте ANTHROPIC_AUTH_TOKEN вместе с ANTHROPIC_BASE_URL и убедитесь, что ANTHROPIC_API_KEY не экспортирована одновременно.
- Проверяйте в той же оболочке, которая запускает claude: выведите первые символы переменной прямо перед запуском.
- Убедитесь, что ключ активен в панели, а base URL соответствует его издателю.
Рабочее окружение для этого шлюза
export ANTHROPIC_BASE_URL="https://api.apitoken.sale"
export ANTHROPIC_AUTH_TOKEN="sk-pool-•••"
unset ANTHROPIC_API_KEY # must not be set at the same time
claudeПохожие запросы
claude code 401 custom ANTHROPIC_BASE_URLclaude code invalid api key
Вопросы и ответы
Почему Claude Code возвращает 401 сразу после установки своего ANTHROPIC_BASE_URL?+
Обычно заданы обе переменные — ANTHROPIC_API_KEY и ANTHROPIC_AUTH_TOKEN — сразу, либо ключ принадлежит не тому эндпоинту, куда ведёт base URL. Снимите одну переменную и сопоставьте ключ с эндпоинтом.
Какая переменная правильная — ANTHROPIC_API_KEY или ANTHROPIC_AUTH_TOKEN?+
ANTHROPIC_API_KEY становится заголовком x-api-key; ANTHROPIC_AUTH_TOKEN — заголовком Authorization: Bearer. Используйте ровно одну. Для этого шлюза задокументирован ANTHROPIC_AUTH_TOKEN.
Тот же ключ работает в curl, но не в Claude Code — почему?+
У оболочки, запускающей claude, другое состояние окружения: конкурирующая переменная, устаревшее значение или его отсутствие. Проверьте окружение именно в этой оболочке.
Пропустите сломанную настройку
apiToken.sale отдаёт стандартный Anthropic API — те же модели, те же SDK, один предоплаченный баланс. Направьте base URL вашего инструмента на него, и конфигурация с этой страницы заработает как написано.