Перейти к основному содержанию
POST
Запрос чату
Основной эндпоинт для работы с текстовыми моделями. Совместим с OpenAI Chat Completions, поэтому официальный SDK OpenAI работает без изменений — достаточно поменять base_url.

Минимальный запрос

Идентификатор модели нужно взять из GET /api/v1/models и подставить как есть, без префикса провайдера. Если модель неизвестна, придёт 404 с кодом model_not_found. Идентификатор в примерах ниже конкретный, чтобы их можно было скопировать; в рабочем коде получайте его из каталога — состав моделей меняется.

Поля запроса

Обязательные

Генерация

Формат ответа и инструменты

Рассуждения

Нельзя задавать reasoning_effort и reasoning.effort одновременно — придёт ошибка 400. Укажите что-то одно.
Любое значение effort, кроме none, включает рассуждение. Текст рассуждений приходит в choices[0].message.reasoning (и дублируется в reasoning_content) и в usage.completion_tokens_details.reasoning_tokens.

Прочее

Неизвестные поля в теле запроса игнорируются, ошибки не вызывают.

Формат сообщений

Текст

Роли: system, developer, user, assistant, tool.

Мультимодальность

content может быть массивом блоков. Поддерживаются четыре типа:
Ссылка в image_url.url должна быть публично доступна без авторизации — её скачает провайдер. Файл из хранилища подходит: загрузите его через POST /api/v1/storage/upload и подставьте полученный url.
Изображения принимают не все модели: если выбранная модель не поддерживает зрение, придёт 400 invalid_request.

Вызов функций

В ответе вызов приходит в choices[0].message.tool_calls, а finish_reason равен tool_calls:
Аргументы приходят JSON-строкой — их нужно распарсить. Дальше выполните функцию и отправьте результат сообщением с ролью tool и тем же tool_call_id.

Ответ

Стоимость

usage.cost.total_cost — сумма, списанная с вашего кошелька в рублях. Именно она совпадает с cost_context и cost_completion из GET /api/v1/models.

Потоковая передача

При stream: true приходит поток SSE. Каждый кадр — безымянное событие data:; отдельного поля event: сервер не пишет, поэтому клиенты, разбирающие поток по event:, работать не будут.
Стоимость приходит в последнем кадре вместе с usage. Этот кадр приходит всегда, даже если вы не задавали stream_options.include_usage — и именно в нём списываются деньги.
Список кадров и момент списания платы — в гайде Потоковая передача. Если провайдер оборвал поток, в середине придёт кадр с ошибкой, а [DONE] не придёт вовсе:

Проверки перед вызовом

Часть ошибок возвращается до обращения к провайдеру:

Что дальше

Responses API

Более современный интерфейс с элементами вывода

Anthropic Messages

Совместимость с Anthropic SDK

Ошибки

Полная таблица кодов

Лимиты

Таймауты и ограничения

Авторизации

Authorization
string
header
обязательно

API-ключ в формате sk-.... Альтернативно — заголовок X-Api-Key: sk-... (совместимо с Anthropic SDK).

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

session_id
string

Ключ закреплённого роутинга. Одинаковый session_id направляет запросы на одного и того же провайдера. Тело запроса имеет приоритет над заголовком x-session-id.

Maximum string length: 256

Тело

application/json
model
string
обязательно

Идентификатор модели из GET /api/v1/models без изменений.

Пример:

"gpt-4o"

messages
object[]
обязательно

История диалога.

stream
boolean
по умолчанию:false
max_completion_tokens
integer

Потолок числа выходных токенов.

max_tokens
integer

Устаревшее имя max_completion_tokens. Если задано max_completion_tokens, игнорируется.

temperature
number
top_p
number
top_k
integer

Поддерживается только провайдерами Anthropic; остальные молча игнорируют.

stop
string[]
presence_penalty
number
frequency_penalty
number
seed
integer
n
integer
logprobs
boolean
top_logprobs
integer
logit_bias
object
stream_options
object
response_format
object

Формат ответа: {"type": "text"}, {"type": "json_object"} или {"type": "json_schema", "json_schema": {...}}.

tools
object[]
tool_choice

none, auto, required либо объект с именем функции.

parallel_tool_calls
boolean
reasoning
object

Настройки рассуждений. Значение effort, отличное от none, включает рассуждение.

reasoning_effort
enum<string>

Сокращённая запись reasoning.effort. Задавать вместе с reasoning.effort нельзя — будет ошибка.

Доступные опции:
none,
minimal,
low,
medium,
high
web_search_options
object
modalities
string[]
service_tier
string
user
string

Принимается, но не используется для атрибуции: запрос всегда относится к владельцу ключа.

metadata
object

Ответ

Успешный ответ. При stream: true — поток SSE.

id
string
обязательно
object
string
обязательно
Пример:

"chat.completion"

created
integer
обязательно
model
string
обязательно

Идентификатор модели из запроса.

choices
object[]
обязательно
system_fingerprint
string
service_tier
string
usage
object