Skip to main content
POST
Responses API
Совместим с OpenAI Responses API: официальный SDK работает без изменений — достаточно поменять base_url. В отличие от Chat Completions, ответ собирается в плоский список output — сообщения, вызовы функций и вызовы встроенных инструментов лежат в одном массиве и различаются по полю type.
Если вам не нужен список элементов вывода, используйте Запрос чату — формат проще, а цены и тарификация те же.

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

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

Поля запроса

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

Если input не передан или равен пустой строке, придёт 400 input is required. instructions не заменяет input — хотя бы одно из них всегда нужно.
input как массив — это обычные сообщения с role и content. Поддерживаются роли user, assistant, system, developer.

Генерация

Структурированный вывод

Поле text задаёт формат ответа и подробность (поле verbosity):
format.type — text, json_object или json_schema. Для json_schema обязательны name и schema; description и strict необязательны.

Инструменты

Поддерживаемые type в tools[]:

Рассуждения

effort — none, minimal, low, medium, high, xhigh, max. Значение, отличное от none, включает рассуждение. Текст рассуждений приходит событиями response.reasoning_summary_text.delta и попадает в output_tokens_details.reasoning_tokens.

Включить в ответ дополнительные поля

include — массив строк. Например:

Ответ

Поле model повторяет запрошенный идентификатор. status — одно из completed, in_progress, incomplete, failed, cancelled, queued.
Текст ответа лежит не на верхнем уровне, а внутри output. Обычно это output[0].content[0].text, но элемент с вызовом функции тоже может стоять первым — ищите текст перебором всех элементов, а не по индексу. В SDK за это отвечает response.output_text.

Стоимость

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

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

При stream: true приходит поток SSE. Каждый кадр — безымянное событие data:; отдельного поля event: сервер не пишет, поэтому клиенты, разбирающие поток по event:, работать не будут. Тип события лежит в поле type самого объекта.

События

Жизненный цикл ответа: Элементы вывода и их части: Текст: Инструменты: Рассуждения: Каждое событие несёт sequence_number — номер по порядку. По нему можно отсеять дубли и поймать пропуск кадров. Индексы output_index и content_index адресуют конкретный элемент и часть контента внутри него.
Деньги списываются на событии response.completed: именно в его поле response.usage.cost.total_cost лежит сумма в рублях. Если поток оборвался раньше, списания по этому кадру не будет — сверяйтесь с балансом через GET /api/v1/balance.
После последнего события сервер дописывает кадр data: [DONE]. Его нет в спецификации OpenAI Responses API: строгий клиент попытается распарсить [DONE] как JSON и упадёт. Обработайте эту строку как конец потока и завершайте чтение.
Если провайдер оборвал поток, в середине придёт событие error с объектом error внутри, а response.completed и [DONE] не придут вовсе:
Обрабатывайте неизвестные типы событий без ошибки: новые события появляются без изменения основного контракта.

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

Часть ошибок возвращается до обращения к провайдеру — в формате OpenAI:
Полная таблица кодов — на странице Ошибки.

Что дальше

Запрос чату

Тот же набор моделей в формате Chat Completions

Anthropic Messages

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

Каталог моделей

Идентификаторы и цены

Ошибки

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

Авторизации

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

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

Тело

application/json
model
string
обязательно
Пример:

"gpt-4o"

input
обязательно

Строка с запросом либо массив сообщений.

stream
boolean
по умолчанию:false
instructions
string
max_output_tokens
integer
max_tool_calls
integer
temperature
number
top_p
number
text
object
tools
object[]
tool_choice
Доступные опции:
none,
auto,
required,
any
parallel_tool_calls
boolean
reasoning
object
previous_response_id
string
conversation
object
truncation
enum<string>
Доступные опции:
auto,
disabled
include
string[]
store
boolean
metadata
object

Ответ

Успешный ответ. При stream: true — поток SSE с событиями Responses API, завершающийся кадром data: [DONE].

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

"response"

model
string
обязательно
output
object[]
обязательно
created_at
integer
completed_at
integer | null
status
enum<string>
Доступные опции:
completed,
in_progress,
incomplete,
failed,
cancelled,
queued
error
object | null
usage
object