Документация API
LLM Hub предоставляет OpenAI-совместимый HTTP API. Работают готовые SDK и любой HTTP-клиент; аутентификация — Bearer-токеном (API-ключом).
Базовый URL и аутентификация
Базовый URL API:
https://api.threadsradar.com/v1Каждый запрос передаёт API-ключ в заголовкеAuthorization: Bearer <ваш-ключ>. Ключ создаётся в личном кабинете после запуска сервиса.
- Храните ключ в переменной окружения, не в коде и не в репозитории.
- Не вставляйте ключ в клиентские приложения (браузер, мобильные).
- При компрометации немедленно отзовите ключ в личном кабинете.
Список моделей и цены
Актуальный список моделей возвращает эндпоинт GET /v1/models:
curl https://api.threadsradar.com/v1/models \
-H "Authorization: Bearer $LLMHUB_API_KEY"Цены в рублях за 1 000 000 токенов (снапшот от 1 ноября 2026 г.):
| Модель | Вход, ₽ за 1 млн токенов | Выход, ₽ за 1 млн токенов |
|---|---|---|
| deepseek-v4.1-flash | 1,9 | 7,6 |
| deepseek-v4.1-flash-1017 | 1,9 | 7,6 |
| glm-5.3 | 15,7 | 49,4 |
| gpt-6.1-sol | 14,4 | 88 |
| gpt-6-astra | 67,6 | 338,2 |
Запрос без стриминга
curl https://api.threadsradar.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLMHUB_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "Объясни квантовую запутанность простыми словами"}
]
}'Пример ответа (сокращён):
{
"id": "chatcmpl-0000000001",
"object": "chat.completion",
"created": 1767225600,
"model": "deepseek-v4.1-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Квантовая запутанность — это состояние, в котором..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 132,
"total_tokens": 156
}
}Биллинг считается по полю usage: prompt_tokens — входные токены, completion_tokens — выходные.
Потоковый запрос (stream)
Добавьте "stream": true — ответ придёт в формате Server-Sent Events (SSE) частями по мере генерации:
curl -N https://api.threadsradar.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLMHUB_API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"stream": true,
"messages": [
{"role": "user", "content": "Объясни квантовую запутанность простыми словами"}
]
}'Фрагмент потока:
data: {"id":"chatcmpl-0000000001","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"Квантовая"},"finish_reason":null}]}
data: {"id":"chatcmpl-0000000001","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" запутанность —"},"finish_reason":null}]}
data: [DONE]Флаг -N отключает буферизацию curl, чтобы видеть события сразу. Поток завершается строкой data: [DONE].
Python: OpenAI SDK
# pip install openai
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.threadsradar.com/v1",
api_key=os.environ["LLMHUB_API_KEY"],
)
completion = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Привет!"}],
)
print(completion.choices[0].message.content)Стриминг тем же SDK:
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "Привет!"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)Коды ошибок
| Код | Значение | Что делать |
|---|---|---|
| 400 | Некорректный запрос | Проверьте параметры: имя модели, структуру messages, JSON-синтаксис. |
| 401 | Не авторизован | API-ключ неверен, отозван или отсутствует заголовок Authorization: Bearer. |
| 402 | Недостаточно средств | Баланс не покрывает стоимость запроса — пополните его в личном кабинете. |
| 404 | Не найдено | Неизвестная модель или неверный путь эндпоинта; сверьтесь со списком моделей. |
| 429 | Слишком много одновременных запросов | Превышен in-flight лимит аккаунта (не rate limit). Дождитесь завершения активных запросов и повторите. |
| 500, 502 | Внутренняя ошибка сервиса | Повторите запрос; при повторяющихся ошибках проверьте страницу статуса. |
| 503 | Модель временно недоступна | Повторите позже или выберите другую модель. Деньги за такой запрос не списываются. |
Тело ошибки следует конвенции OpenAI (текст сообщений может отличаться):
{"error":"insufficient_balance"}- При
402запрос не выполняется и деньги не списываются. - При
429используйте экспоненциальную задержку между повторами. - Ошибки
5xxи503означают, что запрос не обработан: удержание средств освобождается.
Проверка доступности
Публичный эндпоинт GET https://api.threadsradar.com/healthбез аутентификации возвращает состояние сервиса и базы данных:
{"ok": true, "db": true}Живая проверка из браузера — на странице «Статус».