Lovely RouterДокументация
Получить ключ
Справочник API

Эндпоинты моделей

Справочник LLM-эндпоинтов в форматах Anthropic, OpenAI и Gemini с заголовками Lovely Router, которые каждый из них принимает и возвращает.

Эндпоинты моделей — это собственные API вендоров, доступные по адресу https://lovelyrouter.com. Тела запросов и ответов следуют схеме вендора и передаются без изменений, поэтому на этой странице перечислены самые используемые параметры, а за остальным мы отсылаем к справочнику вендора. Поведение, общее для всех эндпоинтов, описано в разделе Как работает шлюз.

Каждый эндпоинт принимает API-ключ как Authorization: Bearer, x-api-key, x-goog-api-key или параметр запроса ?key=. Ошибки возвращаются в формате вызванного API; см. Ошибки.

Заголовки ответа

x-lovely-request-idstring

Id вызова, например req_6f1c0b9e2d4a47a1b8c3d5e7. Показан в Логах. Присутствует в успешных ответах, а также в ошибках ёмкости 429 и ошибках 502.

x-lovely-groupstring

Группа каналов, обслужившая вызов.

x-lovely-channelstring

Метка канала группы в URL-кодировке.

x-lovely-queued-msinteger

Сколько миллисекунд запрос ждал ёмкости. Есть только если ему пришлось ждать.

retry-afterinteger

Сколько секунд подождать. Отправляется с ответами 429, вызванными лимитами ключа или занятой ёмкостью.

Создание сообщения#

POST/v1/messages

Генерирует ответ модели через Anthropic Messages API. Укажите stream, чтобы получать серверные события. Мышление, инструменты, изображения и кеш промпта работают так, как их описывает Anthropic. Руководство: Anthropic Messages.

Заголовки

x-api-keystringОбязательно

Ваш ключ Lovely Router. Authorization: Bearer тоже подходит.

anthropic-versionstringПо умолчанию 2023-06-01

Передаётся модели.

anthropic-betastring

Передаётся как есть.

x-lovely-groupstring

Группа каналов для этого запроса, например claude-value. Игнорируется, если ключ привязан к группе.

x-session-idstring

Стабильный id диалога, по которому каждый ход направляется на канал, где хранится его кеш.

Параметры тела запроса

modelstringОбязательно

Id модели из GET /v1/models, например claude-sonnet-5.5. Другие варианты написания, например claude-sonnet-5-5, разрешаются в ту же модель.

messagesarrayОбязательно

Диалог на данный момент, чередующиеся ходы user и assistant.

max_tokensintegerОбязательно

Максимальное число генерируемых токенов.

systemstring or array

Системный промпт. Текстовые блоки принимают cache_control.

streambooleanПо умолчанию false

Передавать ответ потоком серверных событий.

thinkingobject

Настройки расширенного мышления модели.

output_configobject

Настройки вывода, например effort и format.

toolsarray

Инструменты, которые может вызывать модель.

tool_choiceobject

Как модель выбирает инструменты.

metadataobject

Метаданные запроса.

curl https://lovelyrouter.com/v1/messages \
  -H "x-api-key: $LOVELY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5.5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, Claude"}]
  }'
Response
{
  "id": "msg_01XFDUDYJgAACzvnptvVoYEL",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5-5",
  "content": [
    {"type": "text", "text": "Hello! How can I help you today?"}
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 10,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 12
  }
}

Подсчёт токенов сообщения#

POST/v1/messages/count_tokens

Оценивает число входных токенов запроса к Messages, не выполняя его. Бесплатно и доступно при нулевом балансе. Подсчёт приблизительный: используйте его для проверки контекстного окна и планирования бюджета; плата за реальный вызов берётся из его usage. Руководство Anthropic по подсчёту токенов.

Заголовки

x-api-keystringОбязательно

Ваш ключ Lovely Router. Authorization: Bearer тоже подходит.

x-lovely-groupstring

Группа каналов, по которой проверяется модель. Игнорируется, если ключ привязан к группе.

Параметры тела запроса

modelstringОбязательно

Id модели, как для POST /v1/messages.

messagesarrayОбязательно

Сообщения для подсчёта.

systemstring or array

Системный промпт, который нужно учесть.

toolsarray

Определения инструментов, которые нужно учесть.

curl https://lovelyrouter.com/v1/messages/count_tokens \
  -H "x-api-key: $LOVELY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5.5",
       "messages": [{"role": "user", "content": "Hello, Claude"}]}'
Response
{
  "input_tokens": 24
}

Создание chat completion#

POST/v1/chat/completions

Генерирует ответ через OpenAI Chat Completions API. Этот формат принимает каждая модель из GET /v1/models. Потоковые запросы всегда получают stream_options.include_usage: true, поэтому последний фрагмент содержит usage. Руководство: OpenAI Chat Completions.

Заголовки

AuthorizationstringОбязательно

Bearer и ваш ключ Lovely Router.

openai-betastring

Передаётся как есть.

x-lovely-groupstring

Группа каналов для этого запроса, например gpt-value. Игнорируется, если ключ привязан к группе.

x-session-idstring

Стабильный id диалога, по которому каждый ход направляется на канал, где хранится его кеш.

Параметры тела запроса

modelstringОбязательно

Id модели из GET /v1/models, например gpt-6.1-sol.

messagesarrayОбязательно

Диалог на данный момент: сообщения system или developer, user, assistant и tool.

streambooleanПо умолчанию false

Передавать ответ потоком серверных событий, завершающимся data: [DONE].

max_completion_tokensinteger

Верхняя граница генерируемых токенов, включая токены рассуждений.

reasoning_effortstring

Насколько много думает модель с рассуждениями. Значения зависят от модели.

toolsarray

Функции, которые может вызывать модель.

tool_choicestring or object

Как модель выбирает инструменты.

response_formatobject

Запросить вывод в JSON или по JSON Schema.

prompt_cache_keystring

Повышает долю попаданий в кеш. Также используется как id диалога для маршрутизации.

userstring

Id конечного пользователя. Используется как id диалога для маршрутизации, если не отправлено ничего более конкретного.

curl https://lovelyrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
Response
{
  "id": "chatcmpl-B9MHDbslfkBeAs8l4bebGdFOJ6PeG",
  "object": "chat.completion",
  "created": 1791700000,
  "model": "gpt-6.1-sol",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Hello! How can I help?"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 0}
  }
}

Создание response#

POST/v1/responses

Генерирует ответ через OpenAI Responses API — API, который использует Codex CLI. Доступен только для моделей GPT; другие модели возвращают 404. Ответы не хранятся: отправляйте весь диалог в input. Руководство: Responses API.

Заголовки

AuthorizationstringОбязательно

Bearer и ваш ключ Lovely Router.

openai-betastring

Передаётся как есть.

x-lovely-groupstring

Группа каналов для этого запроса, например gpt-value. Игнорируется, если ключ привязан к группе.

x-session-idstring

Стабильный id диалога, по которому каждый ход направляется на канал, где хранится его кеш.

Параметры тела запроса

modelstringОбязательно

Id модели GPT из GET /v1/models, например gpt-6.1-sol.

inputstring or arrayОбязательно

Промпт или диалог в виде списка входных элементов.

instructionsstring

Системные инструкции. Ответ повторяет то, что вы отправили, или null.

streambooleanПо умолчанию false

Передавать типизированные серверные события, завершающиеся response.completed (с usage).

max_output_tokensinteger

Верхняя граница генерируемых токенов, включая токены рассуждений.

reasoningobject

Настройки рассуждений, например effort. Значения зависят от модели.

toolsarray

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

storeboolean

Отправляйте false: ответы не сохраняются для последующего получения.

prompt_cache_keystring

Повышает долю попаданий в кеш. Также используется как id диалога для маршрутизации.

curl https://lovelyrouter.com/v1/responses \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "input": "Hello!",
    "store": false
  }'

Генерация контента#

POST/v1beta/models/{model}:generateContent

Генерирует ответ через Gemini API. Руководство: Gemini.

Параметры пути

modelstringОбязательно

Id модели, например gemini-3.1-pro. Варианты написания Google, например gemini-3.1-pro-preview, разрешаются в ту же модель.

Заголовки

x-goog-api-keystringОбязательно

Ваш ключ Lovely Router. Authorization: Bearer или параметр запроса ?key= тоже подходят.

x-lovely-groupstring

Группа каналов для этого запроса, например gemini-value. Игнорируется, если ключ привязан к группе.

x-session-idstring

Стабильный id диалога, по которому каждый ход направляется на канал, где хранится его кеш.

Параметры тела запроса

contentsarrayОбязательно

Диалог на данный момент: ходы user и model, состоящие из parts.

systemInstructionobject

Системная инструкция в виде объекта контента с текстовыми частями.

generationConfigobject

Настройки вывода: maxOutputTokens, temperature, responseMimeType, thinkingConfig и другие.

toolsarray

Объявления функций и другие инструменты.

toolConfigobject

Как модель выбирает функции.

safetySettingsarray

Пороги безопасности по категориям.

curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:generateContent" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Hello!"}]}]}'
Response
{
  "candidates": [
    {
      "content": {"role": "model", "parts": [{"text": "Hello! How can I help?"}]},
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 3,
    "candidatesTokenCount": 7,
    "thoughtsTokenCount": 96,
    "totalTokenCount": 106
  },
  "responseId": "mFHoaNC1Lo3HqtsP"
}

Потоковая генерация контента#

POST/v1beta/models/{model}:streamGenerateContent

Тот же запрос, что и generateContent, но ответ приходит потоком. Добавьте alt=sse, чтобы получать серверные события, по одному частичному ответу на событие; SDK делают это за вас. Без него ответ — единый потоковый JSON-массив. См. Потоковая передача.

Параметры запроса

altstring

Задайте sse для серверных событий. Рекомендуется.

Параметр пути, заголовки и тело такие же, как для Генерации контента.

curl -N "https://lovelyrouter.com/v1beta/models/gemini-3-flash:streamGenerateContent?alt=sse" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Count to three."}]}]}'
Response
data: {"candidates":[{"content":{"role":"model","parts":[{"text":"One, two,"}]}}],"usageMetadata":{"promptTokenCount":5,"candidatesTokenCount":4,"totalTokenCount":9}}

data: {"candidates":[{"content":{"role":"model","parts":[{"text":" three."}]},"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":5,"candidatesTokenCount":7,"totalTokenCount":12}}

Подсчёт токенов Gemini#

POST/v1beta/models/{model}:countTokens

Оценивает число токенов в contents, не запуская модель. Бесплатно и доступно при нулевом балансе. Подсчёт приблизительный. Справочник Gemini.

Параметры тела запроса

contentsarrayОбязательно

Контент для подсчёта, в той же форме, что и для generateContent.

Параметр пути и заголовки такие же, как для Генерации контента.

curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:countTokens" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Hello, Gemini"}]}]}'
Response
{
  "totalTokens": 18
}

Список моделей#

GET/v1/models

Выводит все модели, которые можно вызвать прямо сейчас, с размером контекста, прайс-ценами и группами каналов, которые их обслуживают. API-ключ не нужен. Формат совместим с models.list() в SDK OpenAI и Anthropic. Значения полей описаны в разделе Модели и цены.

Поля ответа

dataarray

По объекту на модель.

has_moreboolean

Всегда false: весь список возвращается сразу.

curl https://lovelyrouter.com/v1/models
Response
{
  "object": "list",
  "data": [
    {
      "id": "claude-sonnet-5.5",
      "object": "model",
      "type": "model",
      "display_name": "Claude Sonnet 5.5",
      "created": 1700000000,
      "created_at": "2025-01-01T00:00:00Z",
      "owned_by": "Anthropic",
      "context_length": 1000000,
      "pricing": {
        "input": 2,
        "output": 10,
        "cache_read": 0.1,
        "cache_write": 2.5,
        "unit": "USD per 1M tokens"
      },
      "groups": ["claude-value"]
    }
  ],
  "has_more": false,
  "first_id": "claude-fable-5.1",
  "last_id": "gpt-5.6-luna"
}

Список моделей в формате Gemini#

GET/v1beta/models

Выводит модели, доступные через эндпоинты Gemini, в формате Gemini API. API-ключ не нужен. SDK Google Gen AI вызывают его из models.list(). Цены есть только в GET /v1/models.

cURL
curl https://lovelyrouter.com/v1beta/models
Response
{
  "models": [
    {
      "name": "models/gemini-3.1-pro",
      "displayName": "Gemini 3.1 Pro",
      "inputTokenLimit": 1048576,
      "supportedGenerationMethods": ["generateContent", "streamGenerateContent", "countTokens"]
    }
  ]
}