通过 Server-Sent Events 流式读取 Session 公开事件。
GET /api/v1/cloud/sessions/{session_id}/events/stream
以 Server-Sent Events 流式返回 Session 公开事件。
路径参数
| 参数 | 类型 | 说明 |
|---|---|---|
session_id | string | 以 sess_ 为前缀的 Session ID |
Query 参数
| 参数 | 类型 | 说明 |
|---|---|---|
event_deltas[] | string | 可选,可重复传入。允许值为 agent.message 和 agent.thinking,用于选择当前连接需要增量输出的事件类型。 |
请求头
| 头部 | 必选 | 说明 |
|---|---|---|
Authorization | 是 | Bearer $QODER_ACCESS_TOKEN |
Accept | 否 | 使用 text/event-stream |
Last-Event-ID | 否 | 从指定 buffered 事件 ID 之后续传。等于在途 event delta ID 时,会跳过该事件的历史 delta,只发送后续输出。 |
示例请求
响应
响应类型为 text/event-stream。每个 data: payload 为以下结构之一:
- 完整的公开 Event 对象(下文称为 buffered 事件),会写入 Session 事件历史,并包含可用于续传的 SSE
id:; - stream-only event delta 帧,其 SSE
id:为正在增量输出的事件 ID。
流格式
每个事件都按标准 SSE 字段输出:
: heartbeat 注释行以保持连接活跃。
Event delta 帧
agent.message 的增量输出包含一个 event_start,随后输出一个或多个 event_delta。agent.thinking 的增量输出只包含 event_start。
id: 都是正在增量输出的事件 ID,其 JSON payload 不包含顶层 id 或 processed_at 字段。Event delta 帧不会出现在 list/history 响应中。已保留的 delta 仅在事件仍在生成时可用于重连;buffered agent.message 写入后,历史 delta 不再重放。
断线重连
对于普通 buffered 事件,Last-Event-ID 从指定事件之后继续。在途增量事件的 event_start、所有 event_delta 和最终 buffered 事件使用同一个 ID,因此还有以下行为:
- 游标位于当前
event_start之前,并且事件仍在生成时,会重放其 start 和已保留的历史 delta。 - 游标等于在途事件 ID 时,会跳过其历史 delta,只接收后续新 delta 和 buffered 最终事件。
- 事件完成后,从更早的 buffered 事件重连只返回最终
agent.message,不会返回历史 delta。
event_start 之前最近的 buffered 事件重连,并按照共享事件 ID 重新处理各帧。完整客户端建议见 SSE Event Stream。
错误码
| HTTP | 类型 | 触发条件 |
|---|---|---|
| 400 | invalid_request_error | Last-Event-ID 指向已归档或非公开事件,或 event_deltas[] 包含不支持的值 |
| 401 | authentication_error | PAT 或 SAT 无效或过期 |
| 404 | not_found_error | Session 或 Last-Event-ID 引用的事件不存在 |