开发者 / API

把模型、智能体与工作成果
接入你的应用

数流云枢 API 不止于生成一段回复。调用模型、延续会话,或将任务交给智能体执行,再读取进度与交付文件;通过双向连接,把云端工作延伸到本地。

选择接入方式

工作流可按依赖顺序运行多个智能体任务,Skills 可同步到全局或指定会话。模型与智能体的可用范围以当前部署返回的清单为准。

地址与鉴权

部署后的 API 前缀为 https://YOUR_SITE/api;本地后端默认使用 http://localhost:3001/api。将示例中的 YOUR_SITE 替换为你的站点域名。

  1. 登录控制台,在 API Key 管理中创建专用密钥。
  2. 在服务端环境变量中保存密钥,通过以下任一种请求头传入。
Authorization: Bearer YOUR_API_KEY
# 或
X-API-Key: YOUR_API_KEY

密钥关联当前账号的会话、任务与用量。不要将密钥写入公开前端代码。缺少、无效或已撤销的密钥返回 401;未创建密钥不会关闭鉴权。

API Key、网页登录 JWT 和连接器配对凭据用途不同。配对凭据仅用于 Bridge / MCP,不能替代模型调用的 API Key。

首次调用:模型补全

先请求 GET /api/models,从响应 data 数组中选择模型的 name,作为补全请求的 model。模型清单无需鉴权;展示名称 displayName 不能代替模型代码。

curl "https://YOUR_SITE/api/models"
# 将 YOUR_API_KEY 和 MODEL_NAME 替换为实际值(POSIX shell 示例)
curl "https://YOUR_SITE/api/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_NAME","messages":[{"role":"user","content":"用三句话介绍这个项目"}],"stream":false}'
这里使用类似 OpenAI Chat Completions 的请求字段,但路径是 /api/chat/completions,结果位于 data 中。目前不支持 stream: true,也不是可直接替换 baseURL 的完整 OpenAI API。

请求字段

字段要求说明
model必填 · stringGET /api/models 返回的 name。
messages必填 · array消息列表,每项包含字符串 role 和 content;当前接口不接受多模态 content 数组。
temperature可选 · number0–2;实际支持情况取决于模型。
max_tokens可选 · number大于或等于 1;实际输出受模型限制。
stream可选 · boolean省略或设为 false;true 返回 400 / STREAM_NOT_SUPPORTED。

响应结构示意

{
  "success": true,
  "data": {
    "id": "chatcmpl-...",
    "object": "chat.completion",
    "model": "MODEL_NAME",
    "provider": "PROVIDER",
    "choices": [
      {
        "index": 0,
        "message": {
          "role": "assistant",
          "content": "模型生成的回复"
        },
        "finish_reason": "stop"
      }
    ],
    "usage": {
      "prompt_tokens": 20,
      "completion_tokens": 40,
      "total_tokens": 60
    },
    "cost": 0.001
  }
}

读取 data.choices[0].message.content 获取正文,data.usage 获取本次 token 用量。该接口由调用方提供 messages 上下文,不会自动创建网站会话。

带历史的对话与会话

POST/api/chat/proxyAPI Key

适合需要网站会话记录与知识上下文的应用。首次调用不传 session_id 会自动创建会话;后续传回同一个 ID 继续对话。回复位于 data.responses,会话 ID 位于 data.session_id。

curl "https://YOUR_SITE/api/chat/proxy" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"根据已积累的知识整理一份项目摘要","knowledge_base":true}'
字段要求说明
message必填 · string本次消息。
session_id可选 · string继续已有会话;省略则创建新会话。
message_id可选 · string与 session_id 一起使用,标识同一条消息的重试;新消息使用新 ID。
with_history可选 · boolean默认加载历史;false 不等于禁止保存。
knowledge_base可选 · boolean设为 true 时读取账号知识并注入上下文;不传则不启用。
user_name可选 · string用户显示名称,不改变数据归属。
image_url / file_url / file_name可选 · string图片或文件引用及文件名称;能否处理取决于资源可访问性、文件类型和模型能力。

with_history: false 仅关闭本次历史上下文加载,消息仍会保存到会话。数据归属由 API Key 所属账号决定,不使用自定义 user_id 建立独立用户或共享 QQ 记忆。

会话管理端点

以下端点支持 API Key 或 JWT。普通对话消息通过会话详情读取;智能体任务记录和产物通过 Bridge 的 session_read、task_events、artifacts_list 读取。

方法路径用途
POST/api/chat/sessions创建会话,可指定 model。
GET/api/chat/sessions获取账号会话列表。
GET/api/chat/sessions/:id读取会话详情与普通对话消息。
PUT/api/chat/sessions/:id更新标题。
DELETE/api/chat/sessions/:id删除会话;执行前确认目标 ID。

创建会话请求为 { "title": "项目调研", "model": "MODEL_NAME" },model 可省略;修改标题传 { "title": "新的标题" }。所有路径中的 ID 均须属于当前账号。

智能体任务:从执行到交付

POST/api/bridge/tools/:name

通过 REST 调用 Bridge 工具,请求体直接传工具参数,响应为 { success: true, data: ... }。也可通过 MCP 调用同一组工具。支持 API Key、JWT 或有效的配对凭据。

  1. agents_list:发现智能体及真实运行时可用状态,选取可用的 agentId。
  2. session_create:创建会话;传入稳定的 sessionId 与 title。
  3. session_send:发送任务,立即取得 taskId。
  4. task_events:增量读取进度;同时通过 task_read 判断任务状态。
  5. artifacts_list / artifact_read:读取产物列表与内容。
# 1. 发现可用智能体
curl "https://YOUR_SITE/api/bridge/tools/agents_list" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" -d '{}'

# 2. 创建会话(同一次创建重试时保持 sessionId 和 title 不变)
curl "https://YOUR_SITE/api/bridge/tools/session_create" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sessionId":"demo-project-001","title":"项目调研"}'

# 3. 将 AGENT_ID 替换为第一步返回的可用智能体 ID
curl "https://YOUR_SITE/api/bridge/tools/session_send" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sessionId":"demo-project-001","agentId":"AGENT_ID","message":"整理项目调研报告并生成文件","requestId":"demo-request-001"}'

将返回的 data.taskId 用于后续请求。task_events 的 data.nextCursor 作为下一次 after;当 hasMore 为 true 时继续读取,直到读完当前事件。任务结束后再读取产物,不能把“提交成功”当作“执行完成”。

curl "https://YOUR_SITE/api/bridge/tools/task_events" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"taskId":"TASK_ID","after":0,"limit":100}'

# 完成后,将工具名换为 artifacts_list,请求体为 {"taskId":"TASK_ID"}
# 读取文件:artifact_read,请求体为 {"taskId":"TASK_ID","artifactId":"ARTIFACT_ID"}
重试同一动作时复用相同 requestId 和参数;新动作使用新 ID。requestId 长度为 8–128,允许字母、数字、下划线、点、冒号和连字符。session_control 可追加指令或回答问题;task_cancel 需要先通过 task_read 获取当前 revision,并作为 expectedRevision 提交。

工作流与 Skills

工具用途与边界
workflow_teams / workflow_create选择团队并创建含节点和依赖关系的工作流;创建不会自动执行。
workflow_read / workflow_save读取或更新工作流;保存时提供当前 expectedRevision。
workflow_run / workflow_schedule / workflow_cancel手动执行、安排一次或重复运行、取消运行。
skills_list / skills_sync读取或同步 Skill 文件包;省略 sessionId 为全局范围。更新已有 Skill 时传 id 和 expectedUpdatedAt。

完整参数可通过 MCP 的 tools/list 查询;工作流接入说明见 MCP 资源 shuliu://skills/workflow。

MCP 与本地双向连接

MCP 入口为 https://YOUR_SITE/api/mcp,使用无状态 Streamable HTTP,通过请求头携带凭据。GET / DELETE 返回 405 属于当前传输实现的预期行为;它不是旧式 SSE 连接地址。

推荐前往 智能体连接,按客户端下载连接程序、完成配对并生成配置。也可以在支持 HTTP MCP 的客户端中使用以下配置格式;具体字段以客户端支持的格式为准。

{
  "mcpServers": {
    "shuliu": {
      "type": "http",
      "url": "https://YOUR_SITE/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
方向调用流程前提
本地调用云端agents_list → session_create → session_send → task_eventsMCP 配置或 REST 凭据有效,目标智能体可用。
云端派发本地devices_list → local_dispatch → local_read本机连接器在线,配置本地 CLI,启用执行且通过设备访问授权。

local_dispatch 使用设备返回的 deviceId、profile,并传 prompt、requestId;返回的 data.id 作为 local_read 的 jobId。读取时保存 data.nextCursor,可设置 waitMs: 25000 并传 knownStatus 等待变化。

连接器仅发起出站请求,本地无需开放端口。本地任务还需通过设备访问权限检查;等待授权时请在网站处理。MCP 连通不代表已登录本地模型,也不会自动接管现有桌面聊天。配对凭据有效期为 24 小时,过期后需重新配对。调用 bridge_status 可检查连接能力,无需启动模型。

响应、用量与排错

普通 REST 接口通常返回 { success: true, data: ... }。MCP 使用协议规定的工具结果格式,不套用 REST 的读取方式。代理对话额外返回 _rateLimit,其中 limit / remaining 是 credits 额度,不是每分钟请求次数。

实际可用模型、额度和并行工作数取决于当前部署与账号。请查看 用量页面;不要写死模型名单或套餐额度。智能体执行与工作流运行可能产生模型用量。

HTTP 状态处理建议
400字段、工具名称或模型参数不正确;检查请求结构,补全接口不要启用 stream。
401凭据缺失、无效、撤销或过期;检查密钥或重新配对。
403账号、权限或可用额度限制;查看响应原因与控制台状态。
404资源不存在或不属于当前账号;核对会话、任务和文件 ID。
409状态、版本或请求标识冲突;重新读取状态,不要盲目重复执行。
429请求频率或并发限制;退避重试,避免高频轮询。
503模型供应商或运行服务暂不可用;检查可用清单,稍后重试。

客户端应接受成功的 2xx 状态,而非只判断 200。失败时结合响应中的错误信息处理;对可能产生任务或用量的操作,先查询状态再决定是否重试。

接口范围与迁移

此页面向外部应用接入。网页使用的 /api/chat/ask-stream 与 /api/chat/upload 需要 JWT,不能直接用 API Key 替代。需要流式智能体进度时,使用 Bridge 的任务事件接口。

旧版独立 Bot 的 /api/v1/chat、memory、person、decision 及 bot_config.toml 配置不属于当前平台公开接入方式。请迁移至本页的模型、会话与 Bridge 接口。

Swagger 接口索引只在本地开发环境开放(http://localhost:3001/api/docs),生产环境不对外提供,以本页说明为准。Bridge 工具的完整参数以 MCP tools/list 为准。健康检查为后端 GET /health,不带 /api 前缀。