Когда интеграция с Heli не работает, сначала уберите из уравнения SDK, фреймворк и IDE. curl показывает сырой HTTP-ответ: статус, заголовки и JSON ошибки. Если запрос через curl проходит, проблема в настройках вашего инструмента, а не в ключе или модели. Ключ передавайте через переменную окружения, чтобы он не остался в истории команд.
1. Проверка ключа
Статус 200 и JSON со списком моделей — ключ рабочий. Флаг -i показывает статус и заголовки ответа. Статус 401 — ключ неверный, отозван или передан не полностью.
export HELI_API_KEY="sk-heli-…"
curl -sS -i https://getheli.ru/v1/models \
-H "Authorization: Bearer $HELI_API_KEY"2. Тестовый запрос к модели
curl -sS https://getheli.ru/v1/chat/completions \
-H "Authorization: Bearer $HELI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-mini","messages":[{"role":"user","content":"ping"}],"max_tokens":20}'
# стриминг: -N отключает буферизацию curl
curl -sS -N https://getheli.ru/v1/chat/completions \
-H "Authorization: Bearer $HELI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-mini","stream":true,"messages":[{"role":"user","content":"Сосчитай до пяти"}]}'
# время до первого байта и общее время
curl -sS -o /dev/null -w "%{http_code} ttfb=%{time_starttransfer}s total=%{time_total}s\n" ...Как читать ответ
- 401 authentication_error — ключ. Проверьте его во вкладке «Ключи».
- 402 insufficient_balance — закончился баланс.
- 429 — лимит запросов или бюджет; смотрите code и заголовок Retry-After.
- 400 model_denied — модель запрещена политикой ключа.
- 502 — ошибка на стороне модели, в том числе неверный слаг model; читайте message.
- 504 — модель не ответила вовремя; попробуйте stream или меньший max_tokens.
Windows и частые ловушки
- В PowerShell curl может оказаться псевдонимом Invoke-WebRequest. Вызывайте curl.exe явно.
- Одинарные кавычки вокруг JSON не работают в cmd.exe. Сохраните тело в файл body.json и передайте его как -d @body.json.
- Адрес без /v1 возвращает 404 — в base URL всегда нужен /v1.
- Не вставляйте полный ключ в чаты и тикеты поддержки: достаточно времени запроса, модели, статуса и текста ошибки.
Проверяйте из того же окружения
Запускайте curl на том же сервере или в том же контейнере, где работает приложение. Так видны сетевые проблемы, которых нет на вашем ноутбуке: исходящий трафик закрыт файрволом, запросы идут через корпоративный прокси из переменной HTTPS_PROXY, в минимальном Docker-образе нет корневых сертификатов и TLS-соединение не устанавливается. Флаг -v покажет, на каком шаге всё ломается: DNS, подключение, TLS-рукопожатие или уже HTTP-ответ.
Если curl из контейнера работает, а SDK в том же контейнере — нет, сравните адрес, заголовок Authorization и тело запроса: обычно отличается base URL или имя модели.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.