Диагностика · 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_URL
  • claude 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 вашего инструмента на него, и конфигурация с этой страницы заработает как написано.