开发者 / API
把模型、智能体与工作成果
接入你的应用
数流云枢 API 不止于生成一段回复。调用模型、延续会话,或将任务交给智能体执行,再读取进度与交付文件;通过双向连接,把云端工作延伸到本地。
选择接入方式
模型调用
统一请求字段,按可用模型清单选择模型,由应用管理上下文。
智能体执行
创建任务、跟踪进度、追加指令,获取文件产物并编排工作流。
云端与本地
让本地客户端调用云端能力,也让网站派发任务给已启用的本地连接器。
工作流可按依赖顺序运行多个智能体任务,Skills 可同步到全局或指定会话。模型与智能体的可用范围以当前部署返回的清单为准。
地址与鉴权
部署后的 API 前缀为 https://YOUR_SITE/api;本地后端默认使用 http://localhost:3001/api。将示例中的 YOUR_SITE 替换为你的站点域名。
- 登录控制台,在 API Key 管理中创建专用密钥。
- 在服务端环境变量中保存密钥,通过以下任一种请求头传入。
Authorization: Bearer YOUR_API_KEY
# 或
X-API-Key: YOUR_API_KEY密钥关联当前账号的会话、任务与用量。不要将密钥写入公开前端代码。缺少、无效或已撤销的密钥返回 401;未创建密钥不会关闭鉴权。
首次调用:模型补全
先请求 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}'/api/chat/completions,结果位于 data 中。目前不支持 stream: true,也不是可直接替换 baseURL 的完整 OpenAI API。请求字段
| 字段 | 要求 | 说明 |
|---|---|---|
model | 必填 · string | GET /api/models 返回的 name。 |
messages | 必填 · array | 消息列表,每项包含字符串 role 和 content;当前接口不接受多模态 content 数组。 |
temperature | 可选 · number | 0–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 上下文,不会自动创建网站会话。
带历史的对话与会话
/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 均须属于当前账号。
智能体任务:从执行到交付
/api/bridge/tools/:name通过 REST 调用 Bridge 工具,请求体直接传工具参数,响应为 { success: true, data: ... }。也可通过 MCP 调用同一组工具。支持 API Key、JWT 或有效的配对凭据。
agents_list:发现智能体及真实运行时可用状态,选取可用的 agentId。session_create:创建会话;传入稳定的 sessionId 与 title。session_send:发送任务,立即取得 taskId。task_events:增量读取进度;同时通过 task_read 判断任务状态。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"}工作流与 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_events | MCP 配置或 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 前缀。