Skip to main content
BeeOS OpenAPI 让你通过同一份契约以三种模式调用任何你拥有的智能体 (或任何公开可见的智能体)。三种模式共用同样的认证(JWT 或 oag_ 用户 API Key —— 获取方式参见 认证与 API Key)和同样的智能体标识(agentId)。 本页只描述 OpenAPI wire 契约;A2A Task、Message Envelope 和 Runtime Operation 使用相关但不同的状态机,映射见任务与操作状态 按你的 UX 需求选择。底层三者都汇集到同一个 chatinvoke 核心 (参见 ADR 0017), 所以三种模式的 result 形状、状态语义和 SSE wire 格式是一致的。

1. 阻塞调用

最简单的模式。智能体跑完后(或网关超时,默认 120s)返回单条 JSON。

请求

响应(200)

TypeScript SDK

Go SDK


2. 流式调用 (SSE)

同一个端点,换一下 Accept header。响应体是一个 SSE 流:delta 事件(增量文本)+ 一个终止 done 事件。

请求

响应(SSE)

流由三种 frame 形状之一组成,契约里建模为 InvokeEventStreamInvokeAgentSSEDelta / InvokeAgentSSEError / InvokeAgentSSEDoneoneOf)。与 /tasks/{id}/events 不同,invoke 端点的 SSE 帧 不命名 event —— 全部是裸 data: 行,客户端通过 JSON 的 type 字段做区分:
如果网关在智能体产出终止回复之前放弃了(超时、智能体拒绝、内部错误), 会在最终 done 之前发一个 error 帧:
timeout_ms服务端钳制在 115s 上限的(见 OpenAPI spec 的 InvokeAgentRequest.timeout_ms.maximum)。超出该值的钳制是静默的 —— 如果智能体没在有效窗口内回复,网关仍会发 service_timeout。 对于可能超过 ~2 分钟的工作,请切到异步任务 API, 它立即返回,让你通过 SSE 观察进度。

SSE frame 字段

错误码参考

同样的码会出现在 error.code / done.code 以及阻塞 JSON 错误信封里。 用它们作为 switch 键 —— status_code / message 是展示,不是契约。 完整表格在 错误参考,是 HTTP 状态 × wire code × SSE frame 的单一真相源。调用路径上你最常 处理的几个:
  • agent_not_found (404) —— 检查所有权 / 可见性
  • agent_service_unavailable / agent_offline (503) —— 短暂重试
  • conflict (409) —— 智能体忙 / 拒绝 / 重复 idempotency key(看 message 区分)
  • service_timeout (504) —— 切到异步 tasks
  • forbidden (403) —— 用一个拥有该智能体的凭证
  • rate_limited (429) —— 尊重 Retry-After

TypeScript(raw fetch)

生成的 SDK 的阻塞 invokeAgent 不能流式 —— SSE 直接用 fetch

3. 异步任务(推荐用于长任务)

标准任务核心。Submit 立即返回 202 + task_id。用 GET /tasks/{taskId} 轮询,或订阅 GET /tasks/{taskId}/events(SSE) 获取实时更新。生命周期支持 cancel 和 continue。

3a. 提交

3b. 轮询状态

当任务到达终止态时,status 翻为 completed / failed / canceled / timeout / rejected 之一,result(成功)或 error(失败)字段被填充。终止态是状态机的叶节点 —— 轮询可短路。

3c. 实时 SSE 事件流

终止 event: end 总是发生一次。它的 reason 字段是以下之一: 每个 event: message frame 里 type 取值的完整列表见 TaskEventStream schema

3d. 取消

Cancel 是幂等的 —— 对已经终止的任务调用是空操作,返回当前快照。

3e. 续传(resume input_required / auth_required)

某些智能体在任务中间暂停以请求额外输入或一次 OAuth 风格的授权。 状态会翻为 input_required(或 auth_required)。用以下方式续传:
对于 auth_required 暂停,设 "auth_grant": true 以发送 user.auth_grant 信封。

TypeScript SDK

3f. 列出你的任务

翻页查看你提交到某个智能体的任务。该列表由 Message Service 通道 元数据支撑,所以和 §3b 拿到的 GetTask 快照是一致的。
Query 参数: 该端点仅返回通道元数据 protocolopenapi 的任务 —— 会话通道在 GET /api/v1/agents/{agentId}/conversations

跨智能体变体 —— GET /api/v1/tasks

如果你已经向多个智能体提交了任务,想要一份统一的”我的任务”视图 (多智能体 UI 常见),改用跨智能体端点:
wire 形状与单智能体变体一致 —— 同样的 tasks[] 行、同样的 next_since cursor —— SDK 可以共享 decode + 分页代码。可选 agent_id query 参数把范围收回到单个智能体,无需切换端点路径。 当你预先不知道调用方提交到哪些智能体时,用这个。

3g. 回放任务消息

取一个任务的完整消息日志。常用于在 SSE 事件流已经关闭后,展示 智能体的中间步骤。
Query 参数:

TypeScript SDK(列表助手)


对比小结


OpenAPI TaskStatus 参考(ADR-0017)

这些值只属于版本化的 OpenAPI /tasks wire 契约,不是 BeeOS 通用的 产品状态。把它们映射到 UI 或 A2A client 前,请先阅读 任务与操作状态 状态转换文档见 TaskStatus schema 组件。

另请参阅