把工作流接入原生 API:从正确导出到取得 prompt_id
本指南面向调用自有或获授权 ComfyUI 实例的开发者。网站提供的 MCP 与 ComfyUI 原生 HTTP API 是两套不同接口;这里讨论后者,不涉及自动登录第三方平台或绕过访问限制。
用途与适用范围
本指南面向调用自有或获授权 ComfyUI 实例的开发者。网站提供的 MCP 与 ComfyUI 原生 HTTP API 是两套不同接口;这里讨论后者,不涉及自动登录第三方平台或绕过访问限制。
已核对的依据
官方服务端路由定义 POST /prompt 负责校验与排队,返回 prompt_id 或结构化错误。执行事件与历史接口用于后续追踪,因此提交请求与任务完成必须分开。 D09 D10 C01
开始前需要分清的事项
1. 使用当前实例能够正常打开和运行的工作流,并采用 API 导出格式。
2. 核对自定义节点与模型在目标服务端存在,不假设本机与服务器环境一致。
3. 远程部署使用受保护入口,不把无限制生成接口直接暴露公网。
操作与检查步骤
以下步骤是基于所列资料编排的操作建议;具体文件、版本和运行环境仍需按实际项目核对。
第 1 步。 从原生 UI 导出 API 工作流,确认节点包含 class_type 和 inputs;不要直接把带位置的 UI nodes 数组当 prompt。
第 2 步。 使用服务端实际模型选项和文件路径替换必要输入,保持所有连接 ID 与输出槽有效。
第 3 步。 构造包含 prompt 和可追踪 client_id 的请求体;发送后检查 HTTP 状态及 error/node_errors,不忽略失败响应。
第 4 步。 拿到 prompt_id 后保存它,按 WebSocket 或历史接口跟踪成功、失败、中断;重试逻辑要防止重复排队。
可复制的检查命令
请求结构示意(API_WORKFLOW 应替换为真实导出对象):
const body = { prompt: API_WORKFLOW, client_id: CLIENT_ID };
const response = await fetch(`${COMFY_BASE_URL}/prompt`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const result = await response.json();
if (!response.ok || !result.prompt_id) {
throw new Error("提交失败:请读取已脱敏的 error 与 node_errors");
}
完成后的检查
请求通过校验、产生有效 ID,并最终取得对应任务结果。仅返回 HTTP 200 或队列编号不能对用户显示“已生成”。
注意事项与尚未确认的部分
以下代码片段只展示请求外形,不是可独立执行的完整工作流。实际节点定义、认证与网络超时应按部署实现。
资料核对日期:2026-09-21。本站未执行此工作流,未进行 GPU、最低显存或耗时测试。
原始资料
- D09 · ComfyUI Server API routes。核对:2026-09-21。
- D10 · ComfyUI execution messages。核对:2026-09-21。
- C01 · ComfyUI execution.py validation。核对:2026-09-21。
相关排查与操作
这篇内容对你有帮助吗?
匿名统计,只记录“有/没有帮助”的计数,不记录账号、IP 地址或设备信息。
资料来源
基于上游文档、源代码或标注为个案的错误报告整理。诊断顺序由本站编排;没有执行、硬件测试或保证修复的结论。
01ComfyUI Server API routes资料核对: 2026-09-2102ComfyUI execution messages资料核对: 2026-09-2103ComfyUI execution.py validation资料核对: 2026-09-21报告问题 · a1e8ee32-ab77-5524-9efb-1380f4cdf725
相关阅读
编辑为本页关联的条目。
日志关键词: prompt_outputs_failed_validation
原生 ComfyUI API 拒绝提交工作流。HTTP 400 只说明这次请求不符合要求,具体原因应从 error 与 node_errors 中提取,不能一律当成网络不稳定重试。
日志关键词: has no class_type
提交的工作流中某个节点缺少 API 执行所需的 class_type。相同 missing_node_type 错误分类还可能用于类名存在但服务端不认识,因此必须同时查看 message 和 extra_info。
日志关键词: execution_error
API 客户端能连接 WebSocket,也成功排队,但一直等待某个事件或没有取回结果。需要核对 client_id、prompt_id、终止事件和历史查询,而不是只以连接保持为成功条件。
工作流执行成功后,调用方还需要知道哪些节点产生了结果、结果保存在什么位置,以及如何取回。不要把节点 ID、文件名和任务 ID 混成一个字段。