POST /v1/responses
OpenAI Responses-совместимый эндпоинт для текста, инструментов, веб-поиска поставщика и Codex CLI.
Запрос
curl https://api.model-gate.com/v1/responses \
-H "Authorization: Bearer mg_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": [
{
"role": "user",
"content": [{"type": "input_text", "text": "Summarize the release."}]
}
],
"stream": false
}'
Ответ
{
"id": "resp_example",
"object": "response",
"status": "completed",
"model": "gpt-5.4",
"output": [
{
"type": "message",
"role": "assistant",
"content": [{"type": "output_text", "text": "The release adds synchronized documentation and model aliases."}]
}
],
"usage": {
"input_tokens": 18,
"output_tokens": 14,
"total_tokens": 32
}
}
Веб-поиск на стороне поставщика
Добавьте:
{
"tools": [{"type": "web_search"}],
"tool_choice": "required",
"include": ["web_search_call.action.sources"]
}
Отдельного поддержанного контракта /v1/web-search нет. Используйте инструмент Responses API.
Асинхронный режим
"async": true поддерживается только с "stream": false.
Инструмент Responses image_generation, когда его действительно поддерживает настроенный поставщик, — не выделенный Images API. Его выходные элементы не создают /v1/images/operations, закрытые ресурсы скачивания Images или гарантию идемпотентности/отправки Images. Отдельно подтвердите контракт инструмента и учёта конкретного поставщика; для сохраняемой генерации/редактирования используйте операции Images.
Session ID
Передавайте стабильный JSON session_id или заголовок X-Session-ID в каждом обращении этого диалога. Приоритет: session_id → X-Session-ID → распознанная сессия в metadata.user_id → prompt_cache_key → начальное содержимое диалога. Уровень идентификации не зависит от типа поставщика. Один и тот же ID не гарантирует попадание в кеш и не отключает допустимое резервное переключение. Автоматическое поведение, область действия, ограничения и отличия от идемпотентности и хранения контекста описаны в разделе идентификатор диалога и привязка маршрута.
Выбранный идентификатор сохраняется для потока и асинхронной отправки, когда эндпоинт её поддерживает. После тайм-аута не отправляйте новый платный POST только для проверки сессии: сначала проверьте существующий запрос.
При продолжении через previous_response_id повторяйте явный ID диалога. Идентификатор сохранённого ответа и Session ID решают разные задачи; не заменяйте один другим.
Уже заданная распознанная сессия в метаданных используется без ошибки несовпадения; обычный metadata.user_id сохраняется и не считается диалогом. Более приоритетные явные поля побеждают. Форматы и ограничения передачи поставщику приведены в указанном справочнике идентификации.
Распознанная metadata-сессия имеет приоритет перед подсказкой кеширования. Автоматическая идентичность не учитывает известные маркеры cache_control и эквивалентные одиночные текстовые обёртки, не меняя запрос к модели. Отдельно настроенный совместимый транспорт сессионного заголовка не занимает обычный metadata.user_id; эту возможность настраивает оператор, а не клиент.