同一个模型名背后有多条线路,网关默认按可用性自动分配。多轮对话、Agent 长任务、用 previous_response_id 续接时,往往希望整段会话都落在同一条线路上(思考签名、缓存、上游保存的会话状态都能沿用)。这就是会话亲和:网关把会话和第一次成功的线路绑定,之后同一会话的请求优先发往这条线路。
X-CA-Session-ID 的请求优先回到原线路,原线路报错时照常换线路完成本次请求(续接请求除外,见下文「线路不可用时」);带该请求头时,响应里会返回 X-CA-Session-* 响应头。怎么用
本页示例为海外模型,地址用国外通道 https://acapi.top;换成国内通道 https://api.acapi.top 同样可用,两个地址均可用,见 调用地址。
在请求头加 X-CA-Session-ID,同一会话的每一轮都带同一个值:
curl https://acapi.top/v1/responses \
-H "Authorization: Bearer sk-xxxxxx" \
-H "X-CA-Session-ID: my-task-20261004-001" \
-H "content-type: application/json" \
-d '{"model": "gpt-6.1-sol", "input": "先列出提纲"}'响应头示例(第一次绑定代号为 1;下一轮可用 X-CA-Session-Reset: 1 主动重置):
HTTP/1.1 200 OK
content-type: application/json
X-CA-Session-Generation: 1| 请求头 / 响应头 | 说明 |
|---|---|
X-CA-Session-ID(请求) | 会话标识,自己生成:1–128 位字母、数字、. _ -,每个请求只能带一个。绑定按「API Key + 模型 + 协议 + 会话标识」区分,不同 Key 或不同模型互不影响 |
X-CA-Session-Generation(响应) | 当前绑定的代号(整数)。会话换绑一次,代号加一 |
X-CA-Session-Reset(请求) | 主动重置绑定:值填最近一次响应里的 X-CA-Session-Generation,网关会为该会话重新选择线路。只能和 X-CA-Session-ID 一起用,续接请求(带 previous_response_id)不能重置 |
X-CA-Session-Mode(响应,可能出现) | excluded:该模型不使用会话绑定,本次按普通请求自动分配;degraded-config:会话服务暂时降级,本次按普通请求处理 |
绑定多久
- ·带 `X-CA-Session-ID`:24 小时内有成功请求就一直有效;超过 24 小时没有成功请求,再用同一个标识会返回 409
session_expired,换一个新标识或用X-CA-Session-Reset重置即可。 - ·不带 `X-CA-Session-ID`:网关仍会对同一 Key、同一模型的连续请求做轻量亲和,2 小时内没有成功请求就重新选择线路。
- ·绑定不会因为请求次数或 token 数而切换线路。
线路不可用时
- ·普通请求(不续接上一轮):绑定的线路这一次全部失败时,网关自动换一条线路完成本次请求,并把会话换绑到新线路(
X-CA-Session-Generation加一)。 - ·连续失败自动解绑:绑定的线路在短时间内连续失败达到阈值后,网关自动解除该会话的绑定,下一请求按普通请求重新选择线路并重新绑定;客户端不需要处理。
- ·福利版不绑定:
*-free模型不使用会话绑定(响应头X-CA-Session-Mode: excluded),每次按普通请求自动分配。 - ·续接请求(带
previous_response_id等上游保存的状态):只能发往原线路,原线路不可用时返回 503session_supplier_unavailable,请稍后重试或开新会话。 - ·上游已经接收的请求不会被网关自动重发(无论是否有会话),避免重复执行和重复计费。
支持范围
会话亲和对 /v1/chat/completions、/v1/messages、/v1/responses 都生效。/v1/responses 的 previous_response_id 续接已覆盖本站提供 Responses 原生线路的 GPT 模型(含 gpt-6-sol、gpt-6.1-sol)。会话内 gpt-6 系带 tools 走 Chat Completions 时,网关仍会在同一条线路上自动改走 Responses,不会换线路。会话绑定下同样允许协议转换承接(例如用 /v1/messages 调 GPT、用 /v1/responses 调 Claude),同一会话仍固定回到同一条线路;只有续接请求(带 `previous_response_id`)必须落在原生线路。由平台转换承接的 Responses 请求不保存会话状态,不能用它的 id 续接(会返回 409 session_state_unbound),请在请求里自带历史或新开会话。
session_*)都在发往上游之前返回,不扣费,绑定保持不变。完整列表见 错误码 的「会话绑定错误码」。