Responses — второй формат запросов OpenAI, кроме chat/completions. Он принимается на эндпоинте /v1/responses, с тем же адресом и тем же ключом.

Отличается структура запроса и ответа, набор доступных моделей тот же.

/v1/chat/completions/v1/responses
Текст запросамассив messagesполе input
Инструкция моделисообщение с ролью systemполе instructions
Текст ответаchoices[0].message.contentмассив output
Ограничение длины ответаmax_completion_tokensmax_output_tokens

Поле input принимает либо строку, либо массив сообщений — как messages в chat/completions.

curl "https://api.proxyapi.ru/v1/responses" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer <КЛЮЧ>" \
    -d '{
        "model": "openai/gpt-5-mini",
        "instructions": "Отвечай коротко.",
        "input": "Назови столицу Австралии."
    }'

Ответ приходит массивом output: в нём элемент с ролью assistant, внутри которого лежит текст.

{
    "output": [
        {
            "type": "message",
            "role": "assistant",
            "content": [
                {
                    "type": "output_text",
                    "text": "Канберра."
                }
            ]
        }
    ]
}

В официальных библиотеках разбирать массив вручную не нужно — готовый текст лежит в output_text.

Рядом приходит объект usage с числом токенов: input_tokens, output_tokens и total_tokens.

Те же, что и на chat/completions — любая текстовая модель каталога, а не только модели OpenAI.

  • Единый API — базовый формат запроса и ответа.
  • Модели — как устроены идентификаторы и что доступно.

Частые вопросы

Что выбрать — chat/completions или responses?

Если код пишется с нуля, проще chat/completions: этот формат понимают почти все сторонние библиотеки и инструменты. Responses нужен, когда код уже написан под него или когда используются возможности, доступные только в этом формате.

Как получить текст ответа?

В официальных библиотеках готовый текст лежит в поле output_text. Без библиотеки его нужно взять из первого текстового элемента массива output.

Нужно ли передавать переписку целиком?

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

Последняя редакция: 2 сентября 2026 г.