Chat Completions

POST/api/v1/chat/completions — основной эндпоинт для текстовых моделей. Формат тот же, что у OpenAI Chat Completions, поэтому подойдёт любой клиент OpenAI.

Запрос

Обязательные поля — model (идентификатор из каталога) и messages:

{
  "model": "openai/gpt-4o-mini",
  "messages": [
    {"role": "system", "content": "Отвечай кратко."},
    {"role": "user", "content": "Столица Норвегии?"}
  ],
  "temperature": 0.3,
  "max_tokens": 200
}

Ответ — объект chat.completion: текст в choices[0].message.content, расход и стоимость в usage.

Длина ответа

Если не указать max_tokens, ответ ограничивается 8192 токенами или меньшим пределом модели. На время запроса на балансе резервируется сумма на ответ такой длины, а после ответа списывается фактическая стоимость.

Если баланса или лимита ключа на такой резерв не хватает, предел уменьшается до покрываемого, но не ниже 256 токенов. Тогда ответ может оборваться раньше, с finish_reason: "length". Если же max_tokens указан явно и резерв не покрывается, запрос получит 402. max_tokens больше предела модели — 422 с кодом invalid_max_tokens.

Стриминг

С "stream": true ответ приходит событиями server-sent events, по фрагменту в строке data:, а последняя строка — data: [DONE]. Расход и стоимость — в последнем фрагменте, в поле usage. Формат событий и обработка обрывов — на странице «Стриминг».

Параметры

Какие поля поддерживает модель, указано на её странице в каталоге: temperature, top_p, max_tokens, stop, seed, response_format, tools, tool_choice, reasoning_effort и другие. Поля запроса передаются модели как есть. Общий справочник — на странице «Параметры запроса».

Изображения и файлы на входе

Модели, которые принимают изображения, получают их частью сообщения: {"type": "image_url", "image_url": {"url": "…"}}. Подойдёт и ссылка, и data-URL с base64. Если модель такой вход не принимает, запрос получит 422 с кодом unsupported_modality. PDF моделям без входа «файлы» передаются через плагин.