POST
/v1/responses
API Примеры
POST /v1/responses
Responses API — это новый формат OpenAI, который используют Claude Code, Codex CLI и OpenAI Agents SDK.
Эндпоинт
bash
POST https://api.zukko.pro/v1/responsesАутентификация
Формат
Заголовок
OpenAI
Authorization: Bearer fetch_...
Query
?api_key=fetch_...
Поддерживаемые параметры
Параметр
Тип
Описание
model
string
Обязательный. Название модели или алиас
input
string или array
Ввод — строка или массив сообщений/tool-вызовов
instructions
string
Системный промпт
stream
boolean
SSE-стриминг (по умолчанию: false)
max_output_tokens
integer
Максимум токенов в ответе
temperature
number
Температура сэмплирования
top_p
number
Nucleus sampling
tools
array
Функции в формате Responses API
tool_choice
string или object
Стратегия выбора инструмента
parallel_tool_calls
boolean
Параллельные вызовы инструментов
reasoning
object
{"effort": "low" / "medium" / "high"}
truncation
string
Стратегия обрезки
previous_response_id
string
Игнорируется (stateless proxy)
store
boolean
Игнорируется (stateless proxy)
Формат input
Поле input принимает три формата:
Простая строка:
JSON
bash
{
"model": "claude-sonnet-5",
"input": "Объясни квантовые вычисления простыми словами"
}Массив сообщений:
JSON
bash
{
"model": "gpt-5.6-terra",
"input": [
{
"type": "message",
"role": "user",
"content": [
{"type": "input_text", "text": "Что на этом изображении?"},
{"type": "input_image", "image_url": "https://example.com/photo.jpg"}
]
}
]
}Многоходовый диалог с tool calls:
JSON
bash
{
"model": "claude-sonnet-5",
"input": [
{"type": "message", "role": "user", "content": "Какая погода в Москве?"},
{"type": "function_call", "call_id": "call_1", "name": "get_weather", "arguments": "{\"city\":\"Moscow\"}"},
{"type": "function_call_output", "call_id": "call_1", "output": "{\"temp\": 18, \"condition\": \"облачно\"}"},
{"type": "message", "role": "user", "content": "А в Лондоне?"}
]
}Инструменты (Tools)
Инструменты в формате Responses API с type: "function":
JSON
bash
{
"tools": [
{
"type": "function",
"name": "get_weather",
"description": "Получить текущую погоду",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
]
}Формат ответа
Не-стриминговые ответы возвращают объект response:
JSON
bash
{
"id": "resp_chatcmpl-abc123",
"object": "response",
"created_at": 1715500000,
"model": "claude-sonnet-5",
"status": "completed",
"output": [
{
"id": "msg_chatcmpl-abc123",
"type": "message",
"role": "assistant",
"status": "completed",
"content": [
{"type": "output_text", "text": "Вот мой ответ..."}
]
}
],
"usage": {
"input_tokens": 42,
"output_tokens": 128,
"total_tokens": 170
}
}Ответ с вызовом инструмента:
JSON
bash
{
"output": [
{
"id": "call_1",
"type": "function_call",
"call_id": "call_1",
"name": "get_weather",
"arguments": "{\"city\":\"Moscow\"}",
"status": "completed"
}
]
}Reasoning (при установленном reasoning.effort):
JSON
bash
{
"output": [
{"id": "rs_abc", "type": "reasoning", "summary": []},
{
"type": "message",
"content": [{"type": "output_text", "text": "После тщательного анализа..."}]
}
]
}Стриминг
Установите "stream": true для получения Server-Sent Events:
bash
event: response.created
data: {"type":"response.created","response":{"id":"resp_...","status":"in_progress"}}
event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"type":"message"}}
event: response.content_part.added
data: {"type":"response.content_part.added","output_index":0,"content_index":0}
event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"content_index":0,"delta":"Привет"}
event: response.content_part.done
data: {"type":"response.content_part.done","output_index":0,"content_index":0}
event: response.output_item.done
data: {"type":"response.output_item.done","output_index":0}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_...","status":"completed"}}Стриминг вызовов инструментов:
response.output_item.added— элемент function_callresponse.function_call_arguments.delta— фрагменты аргументовresponse.function_call_arguments.done— аргументы завершеныresponse.output_item.done— вызов завершён
Стриминг reasoning:
response.output_item.added— элемент reasoningresponse.reasoning_text.delta— фрагменты размышлений
Использование с Claude Code
Bash
bash
export ANTHROPIC_BASE_URL=https://api.zukko.pro
export ANTHROPIC_API_KEY=fetch_ваш_ключ
claudeClaude Code использует Responses API по умолчанию. Дополнительная настройка не требуется.
Использование с Codex CLI
Bash
bash
export OPENAI_BASE_URL=https://api.zukko.pro/v1
export OPENAI_API_KEY=fetch_ваш_ключ
codexИспользование с OpenAI SDK
Python
bash
from openai import OpenAI
client = OpenAI(
api_key="fetch_ваш_ключ",
base_url="https://api.zukko.pro/v1"
)
response = client.responses.create(
model="claude-sonnet-5",
input="Напиши хайку о программировании"
)
print(response.output[0].content[0].text)Формат ошибок
Ошибки в формате OpenAI:
JSON
bash
{
"error": {
"message": "Model not found. Check available models at GET /v1/models",
"type": "model_not_found"
}
}Частые ошибки: 401 — неверный API-ключ, 402 — недостаточно средств, 429 — превышен лимит запросов, 400 — некорректный запрос.