Ошибка 401 Invalid API key — почему ключ не работает

Ключ скопирован, а сервер отвечает 401. Разбираем пять причин по частоте и показываем, как проверить ключ одной командой.

2 мин · · Обновлено · ошибки · api-ключи · подключение

Ответ 401 с текстом Invalid API key означает одно: сервер не смог сопоставить присланный ключ ни с одним активным. Причина почти всегда в том, как ключ передан, а не в самом ключе.

Сначала проверьте ключ отдельно

Прежде чем чинить клиент, убедитесь, что ключ живой. Одна команда:

bash
curl -s -o /dev/null -w "%{http_code}\n" https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"привет"}]}'

Код 200 — ключ рабочий, проблема в настройках клиента. Код 401 — дело в самом ключе, читайте дальше.

Пять причин по частоте

Лишние символы при копировании. Самая частая. Пробел в конце, перенос строки, невидимый символ из буфера обмена. Ключ выглядит правильным, но байты не совпадают. Удалите значение целиком и вставьте заново, не выделяя мышью соседние символы.

Не тот заголовок. Ключ передаётся как Authorization: Bearer fetch_.... Некоторые клиенты по умолчанию шлют x-api-key — для Anthropic-совместимого пути это тоже работает, но смешивать нельзя: если в запросе оба заголовка, обрабатываться будет один, и не обязательно тот, что вы заполнили.

Ключ отозван. Отозванный ключ перестаёт работать мгновенно и навсегда. Откройте страницу ключей и посмотрите, активен ли тот, что стоит в клиенте. Если сомневаетесь — выпустите новый, это бесплатно.

Ключ от другого сервиса. Ключи Anthropic начинаются с sk-ant-, ключи OpenAI — с sk-. Наши — с fetch_. Если в переменной окружения лежит ключ с чужим префиксом, значит клиент читает не ту переменную или подхватил старое значение из системного окружения.

Переменная перекрыта. В командной строке экспортированная переменная перебивает значение из файла настроек. Проверьте echo $ANTHROPIC_AUTH_TOKEN — если там не ваш ключ, ищите export в .zshrc, .bashrc или в конфигурации терминала.

Чего 401 не означает

Пустой баланс даёт 402, а не 401. Модель, не разрешённая для этого ключа, — 403 (model_not_allowed_for_key). Выключенная модель — 503 (model_disabled). Если вы видите именно 401, деньги и настройки аккаунта ни при чём, вопрос только в ключе.

Если ничего не помогло

Выпустите новый ключ, вставьте его в отдельный файл, проверьте командой выше и только потом переносите в клиент. Так вы отделите проблему ключа от проблемы конфигурации и не будете чинить обе сразу.

zukko

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

за Claude Code & ChatGPT

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

Ошибка 401 Invalid API key: причины и решение · Zukko