Responses 格式
POST
/v1/responses
OpenAI Responses API,用于创建模型响应。支持多轮对话、工具调用和推理等功能。
请求参数
请求头
Authorization
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
请求体字段(12 个)
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
model | string | — | 模型 ID。 | 是 |
input | string / array | — | 输入内容,可以是字符串或消息数组。未提供时由上游返回参数错误。 | 否 |
instructions | string | — | 应用于本次请求的系统级指令。 | 否 |
max_output_tokens | integer | — | 限制最大输出 token 数。 | 否 |
temperature | number | — | 采样温度;是否支持取决于模型。 | 否 |
top_p | number | — | 核采样参数;通常与 temperature 二选一。 | 否 |
stream | boolean | — | 是否以 SSE 事件流返回结果,默认 false。 | 否 |
tools | array | — | 模型可以调用的工具。 | 否 |
tool_choice | string / object | — | 工具选择策略。 | 否 |
reasoning | object | — | 推理配置,例如 { "effort": "low" };仅适用于支持推理的模型。 | 否 |
previous_response_id | string | — | 关联上一轮响应 ID,用于多轮对话。 | 否 |
truncation | string | — | 上下文超限时的处理方式:auto 或 disabled。 | 否 |
input在 OpenAPI 文档中标记为可选,但创建响应时通常仍应提供输入内容;model是唯一标记为必填的字段。
字段边界
- 调用必需字段:
model必须填写;虽然input在 schema 中标记为可选,但实际创建响应时应提供input。 - Responses 专属字段:
instructions、max_output_tokens、reasoning、previous_response_id和truncation用于 Responses 的系统指令、输出限制、推理、多轮关联和上下文截断控制。 - 通用或模型相关字段:
temperature、top_p、stream、tools和tool_choice是否可用取决于目标模型。max_output_tokens是 Responses 字段,不等同于 Chat Completions 的max_completion_tokens。
文档中的字段表示网关请求格式支持的入口;上游模型不支持的字段仍可能返回 400,请以目标模型能力为准。
请求示例
JSON 请求体
{
"model": "gpt-5.6-sol",
"instructions": "你是一个简洁的助手。",
"input": "用一句话介绍 Responses API。",
"max_output_tokens": 256,
"stream": false
}
请求示例代码
curl -X POST "https://10000router.com/v1/responses" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-5.6-sol",
"input": "用一句话介绍 Responses API。",
"max_output_tokens": 256
}'
const payload = {
model: "gpt-5.6-sol",
input: "用一句话介绍 Responses API。",
max_output_tokens: 256
};
const response = await fetch("https://10000router.com/v1/responses", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.API_KEY,
},
body: JSON.stringify(payload)
});
const data = await response.json();
console.log(data.output_text ?? data.output);
payload := strings.NewReader(`{
"model": "gpt-5.6-sol",
"input": "用一句话介绍 Responses API。",
"max_output_tokens": 256
}`)
req, err := http.NewRequest("POST", "https://10000router.com/v1/responses", payload)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")
payload = {
"model": "gpt-5.6-sol",
"input": "用一句话介绍 Responses API。",
"max_output_tokens": 256,
}
response = client.post(
"https://10000router.com/v1/responses",
headers={
"Authorization": "Bearer " + os.environ["API_KEY"],
},
json=payload,
)
response.raise_for_status()
print(response)
var client = java.net.http.HttpClient.newHttpClient();
var payload = "{"
+ "\"model\":\"gpt-5.6-sol\","
+ "\"input\":\"用一句话介绍 Responses API。\","
+ "\"max_output_tokens\":256}";
var request = java.net.http.HttpRequest.newBuilder()
.uri(java.net.URI.create("https://10000router.com/v1/responses"))
.header("Authorization", "Bearer " + System.getenv("API_KEY"))
.POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload))
.build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new(
"Bearer",
Environment.GetEnvironmentVariable("API_KEY")
);
var payload = new
{
model = "gpt-5.6-sol",
input = "用一句话介绍 Responses API。",
max_output_tokens = 256
};
var response = await client.PostAsJsonAsync(
"https://10000router.com/v1/responses",
payload
);
Console.WriteLine(await response.Content.ReadAsStringAsync());
图像输入
Responses 请求可以在 input 消息的 content 数组中同时传入 input_text 和 input_image 内容块。所选上游模型必须支持视觉输入;image_url 可以是公开 URL 或 data URL,具体可用性取决于模型和渠道。
图像请求体字段
图像输入字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 支持视觉输入的模型 ID。 |
input | array | 是 | 包含 role 和 content 的消息数组。 |
input[].content[].type | string | 是 | input_text 或 input_image。 |
input[].content[].image_url | string / object | 图像块必填 | 公开图像 URL、data URL,或渠道要求的对象格式。 |
图像 JSON 请求体
查看图像输入 JSON 示例
{
"model": "gpt-5.6-sol",
"input": [
{
"role": "user",
"content": [
{ "type": "input_text", "text": "描述这张图片" },
{ "type": "input_image", "image_url": "https://example.com/image.png" }
]
}
]
}
图像输入请求示例
curl -X POST "https://10000router.com/v1/responses" \
-H "Authorization: Bearer $API_KEY" \
-d '{"model":"gpt-5.6-sol","input":[{"role":"user","content":[{"type":"input_text","text":"描述这张图片"},{"type":"input_image","image_url":"https://example.com/image.png"}]}]}'const payload = {
model: "gpt-5.6-sol",
input: [{ role: "user", content: [
{ type: "input_text", text: "描述这张图片" },
{ type: "input_image", image_url: "https://example.com/image.png" }
] }]
};
const response = await fetch("https://10000router.com/v1/responses", {
method: "POST",
headers: { Authorization: "Bearer " + process.env.API_KEY },
body: JSON.stringify(payload)
});
console.log(await response.json());payload := `{"model":"gpt-5.6-sol","input":[{"role":"user","content":[{"type":"input_text","text":"描述这张图片"},{"type":"input_image","image_url":"https://example.com/image.png"}]}]}`
req, _ := http.NewRequest("POST", "https://10000router.com/v1/responses", strings.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")
payload = {
"model": "gpt-5.6-sol",
"input": [{"role": "user", "content": [
{"type": "input_text", "text": "描述这张图片"},
{"type": "input_image", "image_url": "https://example.com/image.png"},
]}],
}
response = client.post("https://10000router.com/v1/responses", headers={"Authorization": "Bearer " + os.environ["API_KEY"]}, json=payload)
print(response)var payload = "{\"model\":\"gpt-5.6-sol\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"描述这张图片\"},{\"type\":\"input_image\",\"image_url\":\"https://example.com/image.png\"}]}]}";
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create("https://10000router.com/v1/responses"))
.header("Authorization", "Bearer " + System.getenv("API_KEY"))
.POST(java.net.http.HttpRequest.BodyPublishers.ofString(payload)).build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var payload = new {
model = "gpt-5.6-sol",
input = new[] { new { role = "user", content = new object[] {
new { type = "input_text", text = "描述这张图片" },
new { type = "input_image", image_url = "https://example.com/image.png" }
} } }
};
var response = await client.PostAsJsonAsync("https://10000router.com/v1/responses", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());图像输入响应
图像输入请求返回的响应结构与普通 Responses 请求一致。文本结果位于 output[].content[] 的 output_text 内容块中;输入图像不会原样回显。
图像响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
output | array | 模型输出项数组。 |
output[].content[].text | string | 模型对输入图像的文本描述或回答。 |
usage | object | 输入、输出和总 token 用量。 |
返回响应
非流式响应(200)
NewAPI 透传上游的 response 对象。不同模型的 output 项类型可能不同,读取文本时优先使用 SDK 提供的 output_text,或遍历 output 中的文本内容块。
{
"id": "resp_abc123",
"object": "response",
"created_at": 1710000000,
"status": "completed",
"model": "gpt-5.6-sol",
"output": [
{
"id": "msg_abc123",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Responses API 使用统一的输入和输出项。",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 18,
"output_tokens": 12,
"total_tokens": 30
}
}
响应对象字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 响应 ID。 |
object | string | 固定为 response。 |
status | string | 响应状态,例如 completed 或 in_progress。 |
output | array | 模型输出项数组,内容块位于 output[].content[]。 |
output[].content[].text | string | 输出文本内容。 |
usage | object | 输入、输出和总 token 用量。 |
output[]
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 输出项 ID。 |
type | string | 输出项类型,例如 message。 |
role | string | 消息角色,通常为 assistant。 |
content | array | 输出内容块数组。 |
usage
| 字段 | 类型 | 说明 |
|---|---|---|
input_tokens | integer | 输入 token 数。 |
output_tokens | integer | 输出 token 数。 |
total_tokens | integer | 总 token 数。 |
流式响应
将 stream 设为 true 后,响应类型为 text/event-stream。客户端应按事件类型处理 data,并按顺序拼接文本增量:
event: response.created
data: {"type":"response.created","response":{"id":"resp_abc123","status":"in_progress"}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"Responses API"}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_abc123","status":"completed"}}
工具调用或推理模型可能发送其他 response.* 事件;未知事件应安全忽略。若网关发送 data: [DONE],表示事件流结束。
错误响应
成功响应请参阅上方的非流式响应示例。
{
"error": {
"message": "Missing required parameter: model",
"type": "invalid_request_error",
"param": "model",
"code": null
}
}
{
"error": {
"message": "Rate limit reached",
"type": "rate_limit_exceeded",
"param": null,
"code": null
}
}
{
"error": {
"message": "Invalid authentication credentials",
"type": "invalid_request_error",
"param": null,
"code": null
}
}
常见状态码包括 400(请求参数错误)、401(认证失败)、429(请求频率限制)和 5xx(上游服务错误)。