Подключение к API

Endpoint в формате OpenAI Chat Completions с оплатой с рублёвого баланса. Здесь — всё, что нужно для интеграции: адрес, авторизация, примеры, потоковые ответы, ошибки и ограничения.

Основное

Базовый URLhttps://llm.liho.dev/v1
АвторизацияЗаголовок Authorization: Bearer lh_… — ключ из кабинета
ФорматJSON, OpenAI Chat Completions
МоделиИдентификатор из каталога, например gpt-6-sol. Без префикса разработчика
Обязательные поляmodel, messages и max_tokens (или max_completion_tokens)
ТаймаутОтвет может занимать до 15 минут — ставьте таймаут клиента не меньше 900 секунд
Идентификатор запросаЗаголовок X-Request-ID совпадает с id ответа

Запрос

Минимальный запрос. Для OpenAI SDK достаточно указать base_url и ключ.

shell
curl https://llm.liho.dev/v1/chat/completions \
  -H "Authorization: Bearer $LIHO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-sol",
    "max_tokens": 512,
    "messages": [
      {"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."}
    ]
  }'

Потоковый ответ

С "stream": true ответ приходит как text/event-stream: события data: с фрагментами и завершающее data: [DONE]. Последний фрагмент перед [DONE] содержит usage — токены и стоимость в рублях. Если данных нет 15 секунд, сервер отправляет комментарий : keep-alive.

shell
curl -N https://llm.liho.dev/v1/chat/completions \
  -H "Authorization: Bearer $LIHO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash",
    "max_tokens": 512,
    "stream": true,
    "messages": [
      {"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."}
    ]
  }'
Формат событий
data: {"id":"…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"…"}}]}

: keep-alive

data: {"id":"…","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":…,"completion_tokens":…,"cost":…}}

data: [DONE]

Если списание ещё не окончательное, последний фрагмент придёт без поля cost — итоговая стоимость появится в истории и в /v1/generation.

Параметры

Набор параметров зависит от модели — список supported_parameters есть в карточке каждой модели в каталоге. Каталог моделей.

ПараметрОписание
max_tokensОбязателен. Ограничивает ответ и задаёт резерв стоимости. Для моделей с рассуждением закладывайте запас: токены рассуждения входят в этот лимит.
messagesОт 1 до 2048 сообщений, до 256 частей в сообщении. Роли system, user, assistant, tool.
tools, tool_choice, parallel_tool_callsВызов инструментов: до 128 инструментов. В потоке вызовы приходят в delta.tool_calls.
reasoning_effortУровень рассуждения для моделей, которые его поддерживают. Также принимается reasoning: {effort}.
temperature, top_p, presence_penalty, frequency_penalty, seed, userСтандартные параметры выборки.
streamПотоковый ответ (SSE).
HTTP-Referer, X-TitleНеобязательные заголовки: название приложения отображается в истории запросов.
Idempotency-KeyНеобязательный заголовок до 100 байт. Повтор с тем же ключом вернёт 409 и не запустит генерацию повторно.

Неизвестные поля не приводят к ошибке: они отбрасываются и перечисляются в заголовке ответа X-Liho-Ignored-Fields.

Ошибки и лимиты

Ошибки приходят в одном формате и разбираются OpenAI SDK.

JSON
{
  "error": {
    "code": 402,
    "message": "…",
    "type": "liho_error",
    "metadata": { "request_id": "…" }
  }
}
КодПричина
400Некорректный запрос или параметр, который модель не поддерживает
401Ключ не указан, неверен, отозван или истёк
402Недостаточно средств или исчерпан лимит ключа
403Управляющим ключом нельзя отправлять запросы к моделям
404Неизвестная модель
409Повтор запроса с тем же Idempotency-Key
413Тело запроса больше 32 МиБ
429Превышен лимит запросов ключа в минуту, см. Retry-After
502Ошибка на стороне провайдера модели
503Временная нехватка мощности, см. Retry-After
  • Лимит запросов в минуту задаётся для каждого ключа: от 1 до 1000, по умолчанию 300.
  • Ответы с проверкой лимита содержат заголовки X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset.
  • До 100 активных ключей на аккаунт.

Учёт и ключи через API

Для агентов и инструментов, которым нужно знать остаток средств или стоимость конкретного запроса.

МетодЧто возвращает
GET /v1/modelsОпубликованные модели с ценами и параметрами. Нужен ключ
GET /v1/keyСведения о текущем ключе: лимит и расход
GET /v1/creditsБаланс аккаунта
GET /v1/generation?id=…Токены, стоимость и время выполнения отдельного запроса
/v1/keysСоздание, изменение и отзыв ключей управляющим ключом

Не поддерживается

  • Responses API (/v1/responses), embeddings, legacy completions, генерация изображений, аудио, модерация.
  • Протокол Anthropic Messages (/v1/messages). Claude Code подключается только через сторонний адаптер — см. документацию в кабинете.
  • Части сообщений с аудио и файлами; параметры n > 1, logprobs, logit_bias.
  • Модель auto: пока модель указывается явно.
  • Структурированный вывод (response_format) и stop-последовательности сейчас не включены ни для одной модели каталога.

В следующем релизе: режим Auto с подбором модели под задачу за 10 мс, Responses API, embeddings, генерация изображений и аудио.

Документация

Пошаговое руководство: первый запрос