401 Unauthorized означает, что сервер не принял ключ из заголовка Authorization. У Heli причин немного: ключ скопирован неточно, отозван, передан не в том заголовке — или запрос вообще ушёл не на getheli.ru, а в API OpenAI. Ниже — как быстро понять, какой из вариантов ваш.
Как выглядит ответ Heli
Heli отвечает в формате OpenAI, поэтому SDK превращает ответ в AuthenticationError. Если в тексте ошибки упоминается platform.openai.com, ключ проверял не Heli: клиент не получил base URL и отправил запрос в OpenAI.
HTTP/1.1 401 Unauthorized
{
"error": {
"message": "Incorrect API key provided. Проверьте ключ во вкладке «Ключи» кабинета Heli.",
"type": "authentication_error",
"param": null,
"code": "invalid_api_key"
}
}
# Проверка ключа без SDK
curl -i https://getheli.ru/v1/models \
-H "Authorization: Bearer sk-heli-ВАШ_КЛЮЧ"Что проверить по порядку
- Заголовок: Authorization: Bearer sk-heli-…, с пробелом после Bearer. Ключ в query-параметре или в заголовке x-api-key Heli не принимает.
- Ключ целиком: без кавычек и переносов строки внутри значения. При копировании из мессенджера часто теряется последний символ.
- Статус ключа во вкладке «Ключи» кабинета: отозванный ключ больше не принимается. При ротации старый ключ действует ещё какое-то время, затем отзывается — обновите его во всех сервисах заранее.
- Base URL: https://getheli.ru/v1. Если в коде задан только ключ, OpenAI SDK возьмёт OPENAI_BASE_URL из окружения или отправит запрос в OpenAI.
- Ключ того сервиса: ключи других платформ в Heli не подходят, как и sk-heli-… в чужих API.
- Переменная окружения видна процессу: после правки .env перезапустите сервер, контейнер или IDE.
Когда 401 превращается в 429
После серии неудачных попыток авторизации с одного IP или с одним и тем же ключом Heli временно отвечает 429 Too many authentication failures с заголовком Retry-After. Это защита от перебора ключей. Исправьте ключ, дождитесь окончания паузы и не запускайте ретраи на ответ 401 — он не исправится повтором.
Какой моделью проверять
Для проверочного запроса подойдёт любая недорогая модель: так тест ключа почти не тратит баланс.
Gemini 3.5 Flash Lite — быстрый тестовый запрос.
GPT-5.4 nano — проверка совместимости OpenAI SDK.
Похожие ошибки
- 402 insufficient_balance — ключ верный, но закончился баланс; нужно пополнение.
- 429 rate_limit — ключ верный, но запросов слишком много.
- Модель не найдена — ключ верный, но слаг модели указан без префикса вендора.
- Таймаут вместо 401 — запрос не доходит до сервера: проверьте сеть, прокси и DNS.
Оплата — пополнение баланса.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.