切换外观
压缩 Response 上下文
POST/responses/compact- 鉴权
- Bearer API Key
- 执行方式
- 按所调用的完整地址执行
接口说明
本页说明压缩 Response 上下文能力的共同请求与响应结构,各地址的权益、错误与限制按完整公开地址分别列出。
请求
以下请求头、参数与报文结构适用于本页列出的全部完整公开地址。
方法:
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 | 否 | 输入图片细节级别;Responses 额外支持 original。 | 可选值:"auto"、"low"、"high"、"original" |
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 | 否 | 缓存断点模式。 | 可选值:"implicit"、"explicit" |
prompt_cache_options.ttl | string | 否 | 缓存生存时间。 | 可选值:"30m" |
prompt_cache_retention | string | 否 | 已弃用的 Prompt Cache 保留策略;允许为 null。 | 可选值:"in_memory"、"24h";可为 null |
service_tier | string | 否 | 服务处理等级;允许为 null。 | 可选值:"auto"、"default"、"fast"、"flex"、"priority";可为 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 | 响应媒体类型 |
retry-after | string | 上游限流或暂时不可用时保留的重试等待秒数。 |
x-ratelimit-limit-input-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-limit-output-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-limit-requests | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-limit-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-remaining-input-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-remaining-output-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-remaining-requests | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-remaining-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-reset-input-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-reset-output-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-reset-requests | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-ratelimit-reset-tokens | string | 上游返回时安全保留的 OpenAI 限额信息。 |
x-request-id | string | 本次 OpenAI 协议请求的关联 ID;上游未提供时由 Token Factory 生成。 |
响应字段
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[] | 是 | 所有 user 消息之后必须有且仅有一个带 id 与 encrypted_content 的 compaction 项。 | 示例:[{"content":[{"text":"历史上下文","type":"input_text"}],"id":"msg_input_example","...;最少:1 项 |
output[].content | object[] | 匹配该形式时必填 | Compact 保留的输入内容块数组。 | 示例:[{"text":"历史上下文","type":"input_text"}] |
output[].content[].text | string | 匹配该形式时必填 | 输入文本。 | 示例:"历史上下文" |
output[].content[].type | string | 匹配该形式时必填 | 固定为 input_text。 | 示例:"input_text";可选值:"input_text" |
output[].id | string | 匹配该形式时必填 | 消息 ID。;Compaction 项 ID。 | 示例:"msg_input_example" |
output[].role | string | 匹配该形式时必填 | 固定为 user。 | 示例:"user";可选值:"user" |
output[].status | string | 匹配该形式时必填 | 输出项状态。 | 示例:"completed";可选值:"in_progress"、"completed"、"incomplete" |
output[].type | string | 匹配该形式时必填 | 固定为 message。;固定为 compaction。 | 示例:"message";可选值:"message";示例:"message";可选值:"compaction" |
output[].created_by | string | 否 | 创建该项的 actor ID。 | — |
output[].encrypted_content | string | 匹配该形式时必填 | 必须原样续接的不透明加密上下文。 | — |
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/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 401 | invalid_api_key | Authorization 缺失、Bearer 格式错误、Key 不可用或账户未实名 | 否 | 检查 Bearer API Key、Key 状态与实名状态 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 400 | model_not_found | 模型存在,但不具备当前端点要求的能力 | 否 | 改用支持当前端点能力的模型,或改为调用该模型支持的端点 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 404 | model_not_found | 模型不存在、未上架或当前入口不可用 | 否 | 调用模型列表并改用当前入口可用模型 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 404 | MODEL_ROUTING_PROTOCOL_UNSUPPORTED | 模型未开放当前 API 接口对应协议 | 否 | 改用该模型已开放的协议或其他模型 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 503 | MODEL_ROUTING_NOT_CONFIGURED | 模型的协议路由尚未配置 | 视情况 | 稍后重试;持续出现时联系平台确认路由配置 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 503 | MODEL_ROUTING_POLICY_INVALID | 模型协议路由策略状态异常 | 视情况 | 稍后重试;持续出现时联系平台检查路由策略 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 503 | MODEL_ROUTING_NO_HEALTHY_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/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 413 | request_too_large | 请求体超过平台接收上限 | 否 | 缩小请求体后重试 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 400 | invalid_request_error | 请求参数或请求体缺字段、格式错误或不受支持 | 否 | 修正请求后重试 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 502 | upstream_error | 供应商连接失败或返回异常响应 | 视情况 | 确认未收到有效结果后再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 504 | upstream_timeout | 供应商在平台超时时间内未完成响应 | 视情况 | 先确认是否已有部分输出,再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 500 | internal_error | 平台内部出现未预期错误 | 视情况 | 确认未收到有效结果并记录请求时间后再决定是否重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 405 | method_not_allowed | 请求方法不是该公开地址允许的方法 | 否 | 改用文档列出的 HTTP 方法 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 415 | unsupported_media_type | Content-Type 与该公开地址要求的媒体类型不一致 | 否 | 按文档发送正确 Content-Type | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 403 | permission_denied | 当前 API Key 或上游账户无权执行该请求 | 否 | 检查权限、模型可见性与供应商授权 | 无 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 409 | conflict_error | 请求与上游资源当前状态冲突 | 视情况 | 读取最新状态后修正请求或稍后重试 | 中到高 |
https://api.tokenfactory.cn/v1/responses/compacthttps://api.tokenfactory.cn/v1/coding/responses/compact | 422 | unprocessable_entity | 请求结构正确但上游无法处理其中的语义 | 否 | 按错误信息修正参数或输入内容 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 429 | insufficient_package | 账户没有可用 Coding Plan | 否 | 购买或启用可用套餐 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 429 | package_expired | Coding Plan 已过期 | 否 | 续费套餐后重新发起请求 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 400 | model_not_in_package | 所选模型不在当前套餐支持范围 | 否 | 改用套餐支持的模型 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 429 | package_5h_quota_exhausted | 5 小时套餐窗口额度已用尽 | 否 | 等待窗口恢复或升级套餐 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 429 | package_weekly_quota_exhausted | 每周套餐窗口额度已用尽 | 否 | 等待窗口恢复或升级套餐 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 429 | package_concurrency_limited | 当前套餐并发调用数已达上限 | 是,退避后 | 等待在途调用结束后再试 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 413 | package_input_too_large | 请求超过 Coding Plan 输入字节上限 | 否 | 缩短输入后重试 | 无 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 400 | package_output_limit_exceeded | 请求的输出 Token 上限超过套餐限制 | 否 | 降低输出上限后重试 | 无 |
错误返回报文
适用完整地址
https://api.tokenfactory.cn/v1/responses/compact、https://api.tokenfactory.cn/v1/coding/responses/compact
HTTP 400;Content-Type: application/json;响应头:retry-after: string、x-ratelimit-limit-input-tokens: string、x-ratelimit-limit-output-tokens: string、x-ratelimit-limit-requests: string、x-ratelimit-limit-tokens: string、x-ratelimit-remaining-input-tokens: string、x-ratelimit-remaining-output-tokens: string、x-ratelimit-remaining-requests: string、x-ratelimit-remaining-tokens: string、x-ratelimit-reset-input-tokens: string、x-ratelimit-reset-output-tokens: string、x-ratelimit-reset-requests: string、x-ratelimit-reset-tokens: 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、https://api.tokenfactory.cn/v1/coding/responses/compact
供应商非 2xx 响应会归一化为当前公开协议的错误信封,并只保留安全响应头;502、504 或连接中断时,调用结果可能未知。
限制与计费
| 适用完整地址 | 限制或计费说明 |
|---|---|
https://api.tokenfactory.cn/v1/responses/compact | 请求成功后按通用余额计费;余额不足时调用失败。 受全局请求体上限约束。 模型上下文与输出限制依当前模型和上游事实而定。 Compact 与 Responses Create 分别验证;encrypted_content 原样透传且不读取。 不自研摘要替代 Compact,也不跨供应商恢复 previous_response_id 上下文。 余额计费调用不会自动改用 Coding Plan 权益。 |
https://api.tokenfactory.cn/v1/coding/responses/compact | 请求按 Coding Plan 独立权益计入用量;套餐不可用时调用失败。 受全局请求体上限约束。 Coding Plan 权益、并发与模型限制按当前套餐事实执行。 Compact 与 Responses Create 分别验证;encrypted_content 原样透传且不读取。 不自研摘要替代 Compact,也不跨供应商恢复 previous_response_id 上下文。 Coding Plan 权益独立核验;套餐不可用时不会自动改扣余额。 |
调用示例
cURL · https://api.tokenfactory.cn/v1/responses/compact
sh
curl --request POST "https://api.tokenfactory.cn/v1/responses/compact" --silent --show-error --fail-with-body --max-time 60 --header "Authorization: Bearer ${TOKENFACTORY_API_KEY}" --header "Content-Type: application/json" --data "{\"model\":\"${TOKENFACTORY_MODEL_ID}\",\"input\":[{\"type\":\"compaction\",\"encrypted_content\":\"...\"}]}"cURL · https://api.tokenfactory.cn/v1/coding/responses/compact
sh
curl --request POST "https://api.tokenfactory.cn/v1/coding/responses/compact" --silent --show-error --fail-with-body --max-time 60 --header "Authorization: Bearer ${TOKENFACTORY_API_KEY}" --header "Content-Type: application/json" --data "{\"model\":\"${TOKENFACTORY_MODEL_ID}\",\"input\":[{\"type\":\"compaction\",\"encrypted_content\":\"...\"}]}"相关说明
请求与响应按当前 OpenAI 兼容能力开放;供应商扩展字段可能随所选模型变化。