GET /v1/sessions/{session_id}/events/stream
通过 Server-Sent Events (SSE) 实时接收 Session 中的所有事件。连接建立后,服务端会推送该 Session 的完整事件历史,并在有新事件产生时继续推送。
请求头
| 头部 | 必选 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <PAT> |
Accept | 推荐 | text/event-stream |
Last-Event-ID | 否 | 从该事件 ID 之后继续推送。该 ID 必须属于当前 Session。 |
路径参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
session_id | string | 是 | Session ID(sess_ 前缀) |
查询参数
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
type | string | 否 | 按事件类型过滤。支持逗号分隔多值,也支持重复传参。 |
types[] | string | 否 | type 的数组写法替代方案。传入多个 types[]=... 参数可同时流式接收多种事件。 |
示例请求
示例响应
HTTP 200 OKContent-Type: text/event-stream
每个事件遵循 SSE 标准格式:
SSE 格式示例
注意: SSE用户消息:data行的 JSON 是完全平铺结构——所有字段(如name、input、evaluated_permission、content、is_error等)直接位于顶层对象中,没有额外的嵌套 wrapper。content字段在 SSE 输出中始终为数组格式[{"type": "text", "text": "..."}]。
事件类型
完整事件类型列表:| event (SSE field) | 说明 |
|---|---|
user.message | 用户发送的消息 |
session.status_running | Agent 开始处理 |
agent.thinking | Agent 思考中(内部推理) |
agent.message | Agent 生成的回复消息 |
agent.tool_use | Agent 调用内置工具 |
agent.tool_result | 工具执行返回结果 |
agent.custom_tool_use | Agent 请求 client-side 自定义工具 |
user.tool_confirmation | 用户批准或拒绝待确认工具调用 |
user.custom_tool_result | 用户/客户端返回自定义工具结果 |
agent.mcp_tool_use | Agent 调用 MCP 工具 |
agent.mcp_tool_result | MCP 工具执行返回结果 |
agent.artifact_delivered | Agent 通过 DeliverArtifacts 投递文件 |
session.status_idle | 处理完成,Session 回到空闲 |
session.error | 处理过程中发生错误 |
session.thread_created | 新子线程被创建(Managed Agents) |
session.thread_status_running | 子线程开始执行(Managed Agents) |
session.thread_status_idle | 子线程回到空闲(Managed Agents) |
session.thread_status_terminated | 子线程被归档或终止(Managed Agents) |
agent.thread_message_sent | 线程间发送消息(Managed Agents) |
agent.thread_message_received | 线程间接收消息(Managed Agents) |
agent.raw、agent.system、turn_completed、turn_cancelled、turn_failed、terminated、span.model_request_start、span.model_request_end 和 pending_action.*。
典型事件流生命周期
一次完整的对话 Turn 通常按以下顺序接收事件:user.message— 用户消息入队session.status_running— Agent 开始执行agent.thinking— Agent 内部推理agent.message— Agent 生成回复session.status_idle— Turn 完成,或以requires_action暂停
客户端实现建议
- 使用
EventSourceAPI 或支持 SSE 的 HTTP 客户端 - 使用标准
Last-Event-ID请求头从已知事件 ID 后续传 - 监听
session.status_idle;通过stop_reason.type判断 turn 是完成还是暂停等待操作 - 当
session.status_idle.stop_reason.type为requires_action时,使用user.tool_confirmation或user.custom_tool_result响应其中列出的event_ids - 通过
turn_id字段关联同一轮对话的所有事件 - 连接会保持打开直到客户端断开,服务端持续推送新事件
错误码
| HTTP | type | 触发条件 |
|---|---|---|
| 401 | authentication_error | PAT 无效或过期 |
| 404 | not_found_error | Session 不存在 |
相关
Session 事件流
通过 SSE 实时获取 Agent 的思考、消息、工具调用与状态。