切换外观
压缩 Response 上下文
POST/responses/compact接口说明
透传 OpenAI Responses Compact 的独立操作;加密压缩内容不解析、不改写,成功响应必须包含真实 Usage,并保持原供应商亲和。
请求
方法:
POST鉴权:
Authorization: Bearer ${TOKENFACTORY_API_KEY}
请求头
| 名称 | 必填 | 值或类型 | 说明 |
|---|---|---|---|
Authorization | 是 | Bearer ${TOKENFACTORY_API_KEY} | Token Factory API Key |
Content-Type | 是 | application/json | 请求体媒体类型 |
路径参数:无
查询参数:无
请求字段
| 字段 | 类型 | 必填 | 说明 | 示例或约束 |
|---|---|---|---|---|
input | string 或 object[] | 否 | OpenAI 官方可选且允许为 null 的字符串或待压缩输入项数组;数组项保持开放,可包含既有 compaction/encrypted_content。 | 示例:[{"content":"历史上下文","role":"user","type":"message"},{"encrypted_content":"......;可为 null;形式:string 或 object[] |
input[].acknowledged_safety_checks | object[] | 否 | 已确认的计算机操作安全检查数组。 | — |
input[].action | object | 否 | Web Search 或 Computer 操作。 | — |
input[].approval_request_id | string | 否 | MCP 审批请求 ID。 | — |
input[].approve | boolean | 否 | 是否批准 MCP 调用。 | — |
input[].arguments | string | 否 | 函数参数 JSON 字符串。 | — |
input[].authorization | string | 否 | MCP 调用授权值。 | — |
input[].call_id | string | 否 | 工具调用 ID。 | — |
input[].caller | object | 否 | 工具调用来源。 | — |
input[].command | object | 否 | Shell 或计算机命令。 | — |
input[].commands | string[] | 否 | 命令字符串数组。 | — |
input[].connector_id | string | 否 | MCP Connector ID。 | — |
input[].content | string 或 object[] | 否 | 消息文本或图片/内联文件内容块数组。 | 示例:"历史上下文";形式:string 或 object[] |
input[].content[].detail | string | 否 | 输入图片或文件细节级别;接受非空字符串,可用值由供应商判断。 | 最短:1 字符 |
input[].content[].file_data | string | 否 | Base64 data URL 文件内容。 | — |
input[].content[].file_id | string | 否 | 官方 Files 引用 ID;Token Factory 当前未实现 Files 生命周期,发送即返回 400 invalid_request_error。 | — |
input[].content[].file_url | string | 否 | 文件 URL。 | — |
input[].content[].filename | string | 否 | 内联文件名。 | — |
input[].content[].image_url | string | 否 | 图片 URL 或 data URL。 | — |
input[].content[].prompt_cache_breakpoint | object | 否 | 显式 Prompt Cache 断点。 | — |
input[].content[].text | string | 否 | 输入文本。 | — |
input[].content[].type | string | 父字段存在且匹配该形式时必填 | 输入内容块类型。 | 可选值:"input_text"、"input_image"、"input_file" |
input[].encrypted_content | string | 否 | 不透明加密上下文。 | — |
input[].id | string | 否 | 既有输入项 ID。 | — |
input[].name | string | 否 | 工具或函数名。 | — |
input[].namespace | string | 否 | 工具命名空间。 | — |
input[].output | object | 否 | 工具调用输出。 | — |
input[].pending_safety_checks | object[] | 否 | 等待确认的计算机操作安全检查数组。 | — |
input[].queries | string[] | 否 | 搜索查询字符串数组。 | — |
input[].results | object[] | 否 | 工具调用结果数组。 | — |
input[].role | string | 否 | 消息角色。 | 示例:"user" |
input[].server_label | string | 否 | MCP Server 标签。 | — |
input[].server_url | string | 否 | MCP Server URL。 | — |
input[].shell_id | string | 否 | Shell 会话 ID。 | — |
input[].status | string | 否 | 输出项状态。 | 可选值:"in_progress"、"completed"、"incomplete" |
input[].summary | object[] | 否 | Reasoning 摘要块数组。 | — |
input[].tools | object[] | 否 | 动态发现的工具定义数组。 | — |
input[].type | string | 否 | 输入项类型。 | 示例:"message" |
instructions | string | 否 | 系统级指令字符串。 | 可为 null |
model | string | 是 | 必须提供且允许为 null 的压缩模型字段。Token Factory 仅在 previous_response_id 或加密上下文能恢复原模型亲和时接受 null,否则返回 400 invalid_request_error。 | 示例:"YOUR_MODEL_ID";可为 null |
previous_response_id | string | 否 | 上一次 Response ID;允许为 null。 | 示例:"resp_previous_example";可为 null |
prompt_cache_key | string | 否 | Prompt Cache 路由键;允许为 null,最长 64 个字符。 | 最长:64 字符;可为 null |
prompt_cache_options | object | 否 | Prompt Cache 选项。 | 可为 null |
prompt_cache_options.mode | string | 否 | 缓存断点模式。 | 最短:1 字符 |
prompt_cache_options.ttl | string | 否 | 缓存生存时间。 | 最短:1 字符 |
prompt_cache_retention | string | 否 | 已弃用的 Prompt Cache 保留策略;允许为 null。 | 最短:1 字符;可为 null |
service_tier | string | 否 | 服务处理等级;允许为 null。 | 最短:1 字符;可为 null |
请求报文
媒体类型:application/json
json
{
"input": [
{
"content": "历史上下文",
"role": "user",
"type": "message"
},
{
"encrypted_content": "...",
"type": "compaction"
}
],
"model": "YOUR_MODEL_ID",
"previous_response_id": "resp_previous_example"
}响应
成功状态:200
响应头
| 名称 | 值或类型 | 说明 |
|---|---|---|
Content-Type | application/json | 响应媒体类型 |
request-id | string | Token Factory 独立生成的平台请求编号;Anthropic 错误体的 request_id 与其相同。 |
retry-after | string | 可选重试等待提示:非负秒数或标准 HTTP 日期。重试前仍需确认请求可安全重复。 |
x-request-id | string | Token Factory 独立生成的平台请求编号,与 request-id 相同。 |
响应字段
OpenAI Responses Compact 成功响应;官方新增字段保持开放。 下表完整列出当前公开协议明确声明的字段;开放扩展只允许未声明的附加字段,不会放宽已声明字段的必填、类型或枚举约束。
| 字段 | 类型 | 必填 | 说明 | 示例或约束 |
|---|---|---|---|---|
created_at | number | 是 | Compaction 创建时间的 Unix 秒时间戳;官方 wire 类型为 number。 | 示例:1787832000;最小值:0 |
id | string | 是 | Compaction 响应 ID。 | 示例:"resp_compaction_example" |
object | string | 是 | 固定为 response.compaction。 | 示例:"response.compaction";可选值:"response.compaction" |
output | object 或 object 或 object 或 object 或 object 或 object 或 object[] | 是 | 保留消息、内容和扩展项的原始顺序;至少有一个带 id 与 encrypted_content 的 compaction 项。 | 示例:[{"content":[{"text":"历史上下文","type":"input_text"}],"id":"msg_input_example","...;最少:1 项 |
output[].content | string 或 object 或 object 或 object 或 object 或 object 或 object 或 object 或 object 或 object[] 或 object 或 object[] | 匹配该形式时必填 | 保留的字符串或内容块数组;有效扩展内容保持原值与顺序。;Reasoning 正文;官方可省略或为 null。 | 示例:[{"text":"历史上下文","type":"input_text"}];形式:string 或 object 或 object 或 object 或 object 或 object 或 object 或 object 或 object 或 object[];示例:[{"text":"历史上下文","type":"input_text"}];可为 null |
output[].content[].text | string | 父字段存在且匹配该形式时必填 | 保留的原始输入文本。;输出文本。;Reasoning 正文文本。 | 示例:"历史上下文" |
output[].content[].type | string | 父字段存在且匹配该形式时必填 | 固定为 input_text。;保留的图片或文件内容类型。;保留的图片或文件内容类型。;固定为 output_text。;固定为 refusal。;未列出的有效内容类型;已知类型使用对应结构。;固定为 reasoning_text。;未列出的有效内容类型;已知类型使用对应结构。 | 示例:"input_text";可选值:"input_text";示例:"input_text";可选值:"input_image";示例:"input_text";可选值:"input_file";示例:"input_text";可选值:"output_text";示例:"input_text";可选值:"refusal";示例:"input_text";最短:1 字符;示例:"input_text";可选值:"reasoning_text";示例:"input_text";最短:1 字符 |
output[].content[].file_id | string | 匹配该形式时必填 | 文件标识。 | 可为 null;最短:1 字符;可为 null;最短:1 字符 |
output[].content[].image_url | string | 匹配该形式时必填 | 图片地址。 | 可为 null;最短:1 字符 |
output[].content[].file_data | string | 匹配该形式时必填 | 不透明文件数据。 | 可为 null;最短:1 字符 |
output[].content[].file_url | string | 匹配该形式时必填 | 文件地址。 | 可为 null;最短:1 字符 |
output[].content[].annotations | object[] | 匹配该形式时必填 | 输出文本注释数组。 | — |
output[].content[].logprobs | object[] | 否 | 输出 Token 对数概率数组。 | — |
output[].content[].logprobs[].logprob | number | 父字段存在且匹配该形式时必填 | Token 对数概率。 | — |
output[].content[].logprobs[].token | string | 父字段存在且匹配该形式时必填 | Token 文本。 | — |
output[].content[].logprobs[].top_logprobs | object[] | 否 | 该位置的候选 Token 对数概率数组。 | — |
output[].content[].refusal | string | 匹配该形式时必填 | 拒答说明。 | — |
output[].id | string | 匹配该形式时必填 | 可选消息 ID。;Compaction 项 ID。;Reasoning 项 ID。;输出项 ID;官方可省略或为 null。 ;输出项 ID。 | 示例:"msg_input_example";可为 null;示例:"msg_input_example";示例:"msg_input_example";示例:"msg_input_example";可为 null;示例:"msg_input_example" |
output[].role | string | 匹配该形式时必填 | 保留的非空消息角色。 | 示例:"user";最短:1 字符 |
output[].status | string | 否 | 输出项状态。;Reasoning 输出项状态;官方可省略或为 null。 ;调用状态;官方可省略或为 null。 ;工具输出项状态;不同类型可省略或为 null。 | 示例:"completed";可选值:"in_progress"、"completed"、"incomplete";可为 null |
output[].type | string | 匹配该形式时必填 | 固定为 message。;固定为 compaction。;固定为 reasoning。;固定为 function_call。;工具输出项类型。;音频输出类型。;未列出的有效内容类型;已知类型使用对应结构。 | 示例:"message";可选值:"message";示例:"message";可选值:"compaction";示例:"message";可选值:"reasoning";示例:"message";可选值:"function_call";示例:"message";可选值:"additional_tools"、"apply_patch_call"、"apply_patch_call_output"、"code_interpreter_call"、"computer_call"、"computer_call_output"、"custom_tool_call"、"custom_tool_call_output"、"file_search_call"、"function_call_output"、"image_generation_call"、"local_shell_call"、"local_shell_call_output"、"mcp_call"、"mcp_approval_request"、"mcp_approval_response"、"mcp_list_tools"、"program"、"program_output"、"shell_call"、"shell_call_output"、"tool_search_call"、"tool_search_output"、"web_search_call";示例:"message";可选值:"audio"、"output_audio";示例:"message";最短:1 字符 |
output[].created_by | string | 否 | 创建该项的 actor ID。 | — |
output[].encrypted_content | string | 匹配该形式时必填 | 必须原样续接的不透明加密上下文。;可原样续接的不透明加密上下文。 | 可为 null |
output[].summary | object 或 object[] | 匹配该形式时必填 | Reasoning 摘要内容块数组。 | — |
output[].summary[].text | string | 匹配该形式时必填 | 摘要文本。 | — |
output[].summary[].type | string | 匹配该形式时必填 | 固定为 summary_text。;未列出的有效内容类型;已知类型使用对应结构。 | 可选值:"summary_text";最短:1 字符 |
output[].arguments | string | 匹配该形式时必填 | 函数参数字符串;官方不保证有效 JSON,也允许空字符串。 | — |
output[].call_id | string | 匹配该形式时必填 | 客户端回传结果时使用的调用 ID。 | — |
output[].caller | object 或 object 或 object | 否 | 调用来源;官方可省略或为 null。 | 可为 null;形式:object 或 object 或 object |
output[].caller.type | string | 父字段存在且匹配该形式时必填 | 固定为 direct。;固定为 program。;未列出的有效内容类型;已知类型使用对应结构。 | 可选值:"direct";可选值:"program";最短:1 字符 |
output[].caller.caller_id | string | 父字段存在且匹配该形式时必填 | 来源 program 调用 ID。 | — |
output[].name | string | 匹配该形式时必填 | 函数名。 | — |
output[].namespace | string | 否 | 函数命名空间;官方可省略或为 null。 | 可为 null |
output[].data | string | 匹配该形式时必填 | 供应商返回的音频数据。 | 最短:1 字符 |
usage | object | 是 | 可信协议 Usage;成功终态缺失时请求失败关闭。 | 示例:{"input_tokens":29,"input_tokens_details":{"cache_write_tokens":0,"cached_tok... |
usage.input_tokens | integer (int32) | 是 | 输入 Token 数。 | 示例:29;最小值:0 |
usage.input_tokens_details | object | 是 | 输入 Token 分类明细。 | 示例: |
usage.input_tokens_details.cache_write_tokens | integer (int32) | 是 | 写入 Prompt Cache 的 Token 数。 | 示例:0;最小值:0 |
usage.input_tokens_details.cached_tokens | integer (int32) | 是 | 从 Prompt Cache 读取的 Token 数。 | 示例:0;最小值:0 |
usage.output_tokens | integer (int32) | 是 | 输出 Token 数。 | 示例:8;最小值:0 |
usage.output_tokens_details | object | 是 | 输出 Token 分类明细。 | 示例: |
usage.output_tokens_details.reasoning_tokens | integer (int32) | 是 | Reasoning Token 数。 | 示例:0;最小值:0 |
usage.total_tokens | integer (int32) | 是 | 输入与输出 Token 总数。 | 示例:37;最小值:0 |
返回报文
媒体类型:application/json
json
{
"created_at": 1787832000,
"id": "resp_compaction_example",
"object": "response.compaction",
"output": [
{
"content": [
{
"text": "历史上下文",
"type": "input_text"
}
],
"id": "msg_input_example",
"role": "user",
"status": "completed",
"type": "message"
},
{
"encrypted_content": "gAAAAAB_example",
"id": "cmp_example",
"type": "compaction"
}
],
"usage": {
"input_tokens": 29,
"input_tokens_details": {
"cache_write_tokens": 0,
"cached_tokens": 0
},
"output_tokens": 8,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 37
}
}错误
| 适用完整地址 | 状态 | 错误码 | 常见触发 | 重试 | 建议动作 | 结果风险 |
|---|---|---|---|---|---|---|
https://api.tokenfactory.cn/v1/responses/compact | 401 | invalid_api_key | Authorization 缺失、Bearer 格式错误、Key 不可用或账户未实名 | 否 | 检查 Bearer API Key、Key 状态与实名状态 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 400 | model_not_found | 当前模型不可用 | 否 | 核对模型名称与请求地址;持续出现时联系支持 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 404 | model_not_found | 模型不存在、未上架或当前入口不可用 | 否 | 调用模型列表并改用当前入口可用模型 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 404 | MODEL_ROUTING_PROTOCOL_UNSUPPORTED | 当前模型不可用 | 否 | 核对模型名称与当前入口的模型列表;持续出现时联系支持 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 503 | MODEL_ROUTING_NOT_CONFIGURED | 当前模型服务不可用 | 视情况 | 稍后重试;持续出现时提供平台请求编号联系支持 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 503 | MODEL_ROUTING_POLICY_INVALID | 当前模型服务不可用 | 视情况 | 稍后重试;持续出现时提供平台请求编号联系支持 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 503 | MODEL_ROUTING_NO_AVAILABLE_ROUTE | 当前模型服务不可用 | 否 | 提供平台请求编号联系支持,确认服务恢复后再发送 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 429 | insufficient_balance | 账户可用余额不足 | 否 | 充值后重新发起请求 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 429 | balance_daily_limit_exceeded | 账户当天余额消费已达到自助上限 | 否 | 调整每日上限或等待次日恢复 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 413 | request_too_large | 请求体超过平台接收上限 | 否 | 缩小请求体后重试 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 400 | invalid_request_error | 请求参数或请求体缺字段、格式错误或不受支持 | 否 | 修正请求后重试 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 502 | upstream_error | 服务响应异常,请稍后重试 | 视情况 | 确认未收到有效结果后再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 504 | upstream_timeout | 请求处理超时,请稍后重试 | 视情况 | 先确认是否已有部分输出,再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 500 | internal_error | 平台内部出现未预期错误 | 视情况 | 确认未收到有效结果并记录请求时间后再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 405 | method_not_allowed | 请求方法不是该公开地址允许的方法 | 否 | 改用文档列出的 HTTP 方法 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 415 | unsupported_media_type | Content-Type 与该公开地址要求的媒体类型不一致 | 否 | 按文档发送正确 Content-Type | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 403 | permission_denied | 当前 API Key 无权执行该请求 | 否 | 检查 API Key 权限与当前入口的模型可见性 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 409 | conflict_error | 请求与当前资源状态冲突 | 视情况 | 读取最新状态后修正请求或稍后重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 422 | unprocessable_entity | 请求结构正确但当前请求无法处理 | 否 | 按错误信息修正参数或输入内容 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 503 | service_unavailable | 服务暂不可用,请稍后重试 | 视情况 | 保留平台请求编号,稍后重试或联系支持 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 503 | service_busy | 模型服务繁忙,请稍后重试 | 视情况 | 参考 Retry-After 并限制重试次数;已收到输出时先确认是否可安全重复 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compact | 400 | context_length_exceeded | 输入超过模型上下文限制 | 否 | 缩短输入或减少历史上下文后再发送 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 400 | missing_required_parameter | 缺少必填请求参数 | 否 | 按文档补齐错误指出的公开参数后再发送 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 400 | invalid_parameter | 请求参数的类型或格式不正确 | 否 | 修正错误指出的公开参数类型或格式后再发送 | 无 |
https://api.tokenfactory.cn/v1/responses/compact | 502 | upstream_usage_missing | 服务响应缺少可验证的用量信息 | 视情况 | 保留平台请求编号联系支持;确认可安全重复后再发送 | 中到高 |
错误返回报文
适用完整地址
https://api.tokenfactory.cn/v1/responses/compact
HTTP 400;Content-Type: application/json;响应头:request-id: string、retry-after: string、x-request-id: string
json
{
"error": {
"code": "model_not_found",
"message": "当前模型不可用",
"param": null,
"type": "invalid_request_error"
}
}适用完整地址:https://api.tokenfactory.cn/v1/responses/compact
供应商非 2xx 响应会归一化为当前公开协议的错误信封,并只保留安全响应头;502、504 或连接中断时,调用结果可能未知。
限制与计费
| 适用完整地址 | 限制或计费说明 |
|---|---|
https://api.tokenfactory.cn/v1/responses/compact | 请求成功后按通用余额计费;余额不足时调用失败。 受全局请求体上限约束。 模型上下文与输出限制依当前模型和上游事实而定。 Compact 与 Responses Create 分别验证;encrypted_content 原样透传且不读取。 不自研摘要替代 Compact,也不跨供应商恢复 previous_response_id 上下文。 |
相关说明
请求与响应按当前 OpenAI 兼容能力开放;供应商扩展字段可能随所选模型变化。