Ошибка 401 Invalid API key — почему ключ не работает
Ключ скопирован, а сервер отвечает 401. Разбираем пять причин по частоте и показываем, как проверить ключ одной командой.
2 мин · · Обновлено · ошибки · api-ключи · подключение
Ответ 401 с текстом Invalid API key означает одно: сервер не смог сопоставить присланный ключ ни с одним активным. Причина почти всегда в том, как ключ передан, а не в самом ключе.
Сначала проверьте ключ отдельно
Прежде чем чинить клиент, убедитесь, что ключ живой. Одна команда:
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.
Похожие статьи
- Ключи OpenAI API в открытом доступе: почему ими нельзя пользоватьсяОткуда берутся «бесплатные» ключи на GitHub, почему пользоваться ими опасно и для вас, и для владельца, и как защитить собственный ключ от такой же утечки.
- Ошибки GLM API: почему не работает запрос и как это исправитьНеверный id модели, переполненный контекст 128K, ключ, баланс, лимиты: типичные причины ошибок GLM API и быстрый способ найти свою.
- This organization has been disabled в Claude API: что это и как продолжитьКлюч Anthropic внезапно отвечает «organization has been disabled». Объясняем, что это за ошибка, что проверить и как перенести SDK и Claude Code на другой провайдер.
- Gemini API не работает: регион, ключ, лимиты и имя моделиПошаговая диагностика Gemini API: от проверки статуса и региона до утёкшего ключа, ошибок 429 и 503 и опечатки в имени модели.