API Reference
API REFERENCE

POST /v1/responses (бета)

Эндпоинт OpenAI Responses API. Подходит для рассуждающих моделей и агентов.

Бета. Авторизация, тарификация и потоковая передача стабильны и подходят для продакшена. Метка беты относится к составу внутренних блоков output[] (текст, рассуждения, вызовы инструментов) — туда со временем добавляются новые типы по мере появления у провайдеров моделей. Если ваш клиент строго разбирает конкретные блоки — будьте готовы расширять обработку.

/v1/responses — альтернативный эндпоинт OpenAI Responses API (без сохранения состояния на стороне сервера). Подходит для рассуждающих моделей (o-серия, Claude с расширенным рассуждением), для агентских CLI вроде Codex и для абстракций, где нужен более гибкий контейнер ответа, чем chat.completion.

Когда использовать

Чаще всего вам нужен POST /v1/chat/completions — он совместим с большинством OpenAI-инструментов. /v1/responses стоит выбрать только если:

  • Вы работаете с рассуждающими моделями (o1, o3, Claude с расширенным рассуждением) и хотите явно управлять блоками рассуждения.
  • Вы строите агентский фреймворк, которому нужен единый контейнер для разных типов выходных блоков.
  • Используете агентский CLI вроде Codex, который ходит только в Responses API.
  • Конкретный клиент или провайдер требует именно этот формат.

Эндпоинт

POSThttps://api.hubris.pw/v1/responses

Заголовки:

HeaderЗначение
AuthorizationBearer sk-gw-... (обязательно)
Content-Typeapplication/json (обязательно)
Acceptapplication/json или text/event-stream (опционально; при stream: true — SSE)

Тело запроса

ПолеТипПо умолчаниюОписание
modelstringИдентификатор модели, например openai/o1-mini.
inputstring | object[]Запрос. Простая строка ИЛИ массив input-блоков (см. OpenAI Responses API).
streambooleanfalseСтриминг ответа через SSE.

Дополнительные параметры (instructions, tools, temperature и т.д.) передаются модели как есть — Hubris их не нормализует. Полная схема — в OpenAI Responses API docs.

Минимальный пример

curl -s https://api.hubris.pw/v1/responses \-H "Authorization: Bearer sk-gw-..." \-H "Content-Type: application/json" \-d '{  "model": "openai/gpt-4o-mini",  "input": "Привет, как дела?"}'
from openai import OpenAIclient = OpenAI(  base_url="https://api.hubris.pw/v1",  api_key="sk-gw-...",)response = client.responses.create(  model="openai/gpt-4o-mini",  input="Привет, как дела?",)print(response.output_text)
import OpenAI from "openai";const client = new OpenAI({baseURL: "https://api.hubris.pw/v1",apiKey: "sk-gw-...",});const response = await client.responses.create({model: "openai/gpt-4o-mini",input: "Привет, как дела?",});console.log(response.output_text);

input может быть строкой или массивом блоков — передаваемый формат зависит от модели.

Ответ

{
  "id": "resp_abc123",
  "object": "response",
  "created_at": 1714000000,
  "model": "openai/gpt-4o-mini",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        { "type": "output_text", "text": "Привет! Хорошо, спасибо." }
      ]
    }
  ],
  "usage": {
    "input_tokens": 8,
    "output_tokens": 12,
    "total_tokens": 20,
    "cost": 24
  },
  "status": "completed"
}

Поля ответа

ПолеТипОписание
idstringУникальный идентификатор response. Префикс resp_.
object"response"Тип объекта.
created_atintegerUnix-timestamp (секунды).
modelstringФактически использованная модель.
output[]array<Block>Выходные блоки. Структура зависит от модели и версии — может содержать message, reasoning, tool_call и другие типы. Hubris передаёт как есть, без нормализации.
usage.input_tokensintegerТокены ввода.
usage.output_tokensintegerТокены вывода (включая reasoning-токены, если модель их использует).
usage.total_tokensintegerСумма.
usage.costintegerСтоимость в копейках. Hubris-расширение.
status"completed" | "in_progress" | "failed" | ...Состояние генерации.

Стриминг

stream: true включает SSE. Завершающее событие response.completed содержит полный объект response вместе с usage. Hubris списывает стоимость из этого события (или, в редком случае обрыва до его прихода, — из оценки по длине ввода).

curl -N -s https://api.hubris.pw/v1/responses \
  -H "Authorization: Bearer sk-gw-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "input": "Объясни квантовую запутанность",
    "stream": true
  }'

Формат событий и их обработка — на странице Стриминг.

HTTP-коды

КодКогда
200Успешный ответ.
400Тело запроса не соответствует схеме.
401Ключ отсутствует / отозван / невалиден.
402Недостаточно средств на балансе.
404Модели с таким model не существует или не поддерживает Responses API.
429Превышен дневной лимит на ключе.
502 / 503 / 504Транзиентные сбои у провайдера или курса ЦБ.

Формат тела ошибки и стратегия retry — Ошибки.

Тарификация

Считаем так же, как и для /v1/chat/completions: входные + выходные токены × цены модели в ₽. Токены рассуждения (если модель их использует) учитываются в output_tokens и тарифицируются как обычные выходные токены.

Что дальше

  • POST /v1/chat/completions — основной эндпоинт, подходит большинству задач.
  • Codex CLI — как подключить агентский CLI к Hubris через Responses API.
  • Стриминг — формат событий SSE.
  • Ошибки — таблица кодов.

Обновлено:

POST /v1/responses (бета) · Hubris