在线工作流

慧星云提供了 ComfyUI 在线工作流服务,旨在让开发者能更轻松地在云端编辑和调试运行,并可以在业务中通过 API 调用该工作流。本文将为您介绍如何使用在线工作流服务。

计费方式

目前在线工作流服务采用按任务运行时长计费的模式。具体计费规则如下:
  • 每秒钟消耗0.2个算力点,向上取整。
  • 每次任务最低消耗2个算力点。
例如,17 秒的任务将消耗 4 个算力点。8 秒的任务将消耗 2 个算力点。
您可以通过「算力中心」-「我的算力」-「算力点明细」查看详细的算力点消耗记录。
此外,在线工作流部分权益与算力套餐相关。
  • 部署工作流 API :标准版、专业版支持,免费版不支持。
  • 工作流允许保存数量:免费版2个、标准版5个、专业版10个。

操作指南

新建工作流

进入编辑器页面,系统自动弹出创建工作流的选项。您可以选择创建从本地上传工作流、新建空白工作流,或者选择「为你推荐」预设工作流模板快速创建。

编辑工作流

无论是新建或者打开已保存的工作流,都将进入工作流编辑页面。
整个工作流画板与原ComfyUI功能类似,画板上方为菜单栏:
  • 左侧:「新建」、「我的工作流」、「生图记录」、「Node Library」、「节点组」等功能
  • 中间:显示当前工作流的名称,双击可编辑;名称下方显示工作流的保存状态,支持自动保存
  • 右侧:包括保存、上传、下载、中英文切换、部署API、撤销恢复、清空等功能
  • 画板所支持的原ComfyUI快捷键可点击右下角查看,如图所示

管理工作流

点击菜单栏左侧「我的工作流」可查看所有保存的工作流。列表中包含工作流快照、名称、节点数和更新时间。
您可以对工作流进行以下操作:
  • 编辑工作流:将工作流在画板内打开进行编辑
  • 克隆:将工作流克隆生成一份新的工作流
  • 删除:删除该工作流,不可恢复需谨慎操作

运行工作流

点击菜单栏左侧的「运行工作流」可运行当前工作流生图。同一时间最多只允许存在一个进行中的任务。
生图会生成对应的生成任务,可在「生成记录」弹窗内查看任务进行状态。
  • 排队中:任务在队列中 等待
  • 等待中:任务开始执行,可查看执行进度
  • 生图成功:图片加载展示出来即表示任务成功
  • 生图失败:任务执行失败未能生出图片,算力点会退还账号
生图任务结束后,可查看本次任务所消耗的算力点、任务ID、任务过期删除时间。
同时也支持预览生成任务时的工作流。在弹窗内预览支持拖拽查看工作流,允许将工作流再次导入编辑器进行编辑。
  • 导入当前窗口:如果当前编辑器内有内容将被覆盖
  • 新窗口打开 :自动新建一个工作流,并将工作流导入
图片操作
  • 查看:放大查看,支持图片放大缩小
  • 分享:可以将图片和生成图片的工作流一起分享到社区发布
  • 删除:删除图片,支持批量操作
  • 下载:下载png格式的图片,支持批量操作

部署工作流API

发布工作流

点击菜单栏右侧「部署」可部署当前工作流,使其可通过API调用。
在弹窗内选择工作流入参设置,即选择API服务对外暴露的参数。未选择的参数将使用工作流设置的默认值。设置入参的参数,若在API调用时未传入值,也默认使用工作流中设置的值。
选择的参数支持编辑参数别名,也可以点击删除取消选择该参数。
部署完成后,您可以查看最近一次部署工作流的时间,并在需要时重新导入工作流进行编辑。
点击「最近部署」则可以查看上一次部署的工作流详情。支持将工作流重新导入画板继续编辑。

API 调用

点击「API调用」,可查看允许工作流接口的请求地址,如图所示框起来的为发布的工作流的ID,即后续接口调用时需要用到app_id。
参数详情为发布工作流时选择的参数和别名。说明的内容为“节点名称-工作流中的节点编号-节点内的参数名称”。

密钥管理

密钥(Token)是调用工作流接口的身份验证凭证。您需要创建并管理这些密钥:点击「密钥管理」先进行安全验证。
点击「创建 API Key」生成 Token,填入密钥的唯一名称并点击“创建”。
可在密钥列表内查看到刚刚创建的密钥,默认状态为“启用”,以及创建时间、最近调用事件,可对密钥进行【复制密钥】【禁用】操作。
将密钥禁用后,可将密钥删除或重新启用。

调用日志

点击「调用日志」,可查看工作流API服务的使用情况。支持通过Token名称、任务状态、任务调用时间进行筛选查询。
  • Token名称:请求时所使用的密钥
  • ID:工作流生图任务的ID
  • 状态:生图任务的状态
  • 调用事件:发起生图任务的请求时间
  • 运行时间:从生图任务开始执行到结束所用的耗时
  • 算力点:本次生图任务所消耗的算力点,失败的任务不扣算力点

API 文档

鉴权

在进行接口请求时,所有请求需通过Token进行身份验证。在HTTP请求头中加入Authorization字段,其值设为Token字符串。
Authorization: "<token>"

上传图片

图片上传有效期为 24 小时。

请求

POST /comfyui/upload/image

请求格式

参数名称参数类型必填字段类型描述
fileformDatafile本地文件地址

请求示例

curl 'https://api-v1.huixingyun.com/comfyui/upload/image' \ -H 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7' \ --form 'file=@"/Users/admin/Downloads/05bed5e2be7d1c6596b1a151c3c99bd7.jpg"'

响应格式

参数字段类型说明
codeinteger错误码,成功为 0
messagestringCode 描述
dataobject数据 json
data.pathstring图片上传地址

响应示例

{ "code": 0, "message": "success", "data": { "path": "comfyui/app/img/c9482a0dfdcd2646e57592895f617860/05bed5e2be7d1c6596b1a151c3c99bd7.jpg" } }

提交任务

请求

POST /comfyui/task/:app_id

请求格式

参数名称参数类型必填类型描述
@.<上传参数字段> bodystringDataUrl 格式见 [rfc2397]见发布工作流时指定的入参字段
<入参字段>bodystring/number见发布工作流时指定的入参字段
app_idpathstring发布的应用编号

请求示例1

允许传指定参数 image,可以将上传的图片 path 传入
curl -X "POST" "https://api-v1.huixingyun.com/comfyui/task/92spw3za2mzupfj9kq54jadxdf3nle7f" \ -H 'Content-Type: application/json' \ -H 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7' \ -d $'{ "image": "comfyui/app/img/c9482a0dfdcd2646e57592895f617860/05bed5e2be7d1c6596b1a151c3c99bd7.jpg" }'

请求示例2

允许传指定参数 @.image,可以传入文件 DataUrl ,文件将自动上传。文件大小不得超过 10 MB
curl -X "POST" "https://api-v1.huixingyun.com/comfyui/task/92spw3za2mzupfj9kq54jadxdf3nle7f" \ -H 'Content-Type: application/json' \ -H 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7' \ -d $'{ "@": { "image": "data:image/png;base64,iVBORw0KGgoAAAANS..."} }'

响应格式

参数字段类型说明
codeinteger错误码,成功为 0
messagestringCode 描述
dataobject数据 json
data.request_idstring唯一请求 ID,用于查询应用任务状态

响应示例

{ "code": 0, "message": "success", "data": { "request_id": "4b17b5d5-8fa6-44f1-aa1f-4b3d655693e2", "node_errors": [] } }

取消任务

请求

POST /comfyui/cancel/:request_id

请求格式

参数名称参数类型必填字段类型描述
request_idpathtruestring见「提交任务」响应字段 request_id

请求示例

curl 'https://api-v1.huixingyun.com/comfyui/cancel/4b17b5d5-8fa6-44f1-aa1f-4b3d655693e2' \ -H 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7'

响应格式

参数字段类型说明
codeinteger错误码,成功为 0
messagestringCode 描述
dataobject数据 json
data.resultbooleancancel 成功 / 失败

响应示例

{ "code": 0, "message": "success", "data": { "result": false } }

查询接口

请求

POST /comfyui/task_info
JSON 请求参数
参数名称参数类型必填字段类型描述
request_idsbody[]string任务 ID 列表

请求示例

curl 'https://api-v1.huixingyun.com/comfyui/task_info' \ --header 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7' \ --header 'Content-Type: application/json' \ --data '{ "request_ids": [ "7538b527-b4f4-4766-845c-82db7f47608c", "non-existent number" ] }'

响应格式

参数字段类型说明
codeinteger错误码,成功为 0
messagestringCode 描述
dataobject数据 json
data.task_infosarray根据请求的 request_ids 获取数据列表
data.task_infos[0].request_idstring请求 ID
data.task_infos[0].filesobject对标到 Node ID 的输出图片列表,Key 是 Node ID,Value 是图片获取列表
data.task_infos[0].all_filesstring[]所有输出图片列表
data.task_infos[0].create_atstring创建时间
data.task_infos[0].app_key_namestring应用名
data.task_infos[0].statusstringSETUP 初始化配置INIT 排队中INFERENCING 执行中DONE 执行成功ERROR 执行失败STOP 取消任务
data.task_infos[0].start_atstring执行任务开始时间,任务状态为 DONE 时存在
data.task_infos[0].end_atstring执行任务结束时间,任务状态为 DONE 时存在
data.task_infos[0].percentageinteger执行百分比
data.task_infos[0].positioninteger队列位置
data.task_infos[0].queue_lengthinteger队列长度
data.task_infos[0].pointinteger算力点扣点,任务状态为 DONE 时存在
data.task_infos[0].running_timeintegerend_at - start_at,任务状态为 DONE 时存在
data.task_infos[0].custom_outputsobject自定义输出节点
data.task_infos[0].custom_outputs[<入参字段>]string输出节点值
data.task_infos[1]null不存在或不属于当前 AppKey 提交的任务,直接返回 null

响应示例

{ "code": 0, "message": "success", "data": { "task_infos": [ { "request_id": "65598d9c-ea8d-4a1d-8d85-b890c1cb3167", "files": { "5": [ "https://api-v1.huixingyun.com/comfyui/download/65598d9c-ea8d-4a1d-8d85-b890c1cb3167/20daa5cc-358f-41e3-b985-ee38c18d481d_1.png" ] }, "all_files": [ "https://api-v1.huixingyun.com/comfyui/download/65598d9c-ea8d-4a1d-8d85-b890c1cb3167/20daa5cc-358f-41e3-b985-ee38c18d481d_1.png" ], "create_at": "2024-11-21T07:44:04.000Z", "app_key_name": "test", "status": "DONE", "start_at": "2024-11-21T07:44:06.000Z", "end_at": "2024-11-21T07:44:33.000Z", "percentage": 100, "position": 0, "queue_length": 0, "point": 6, "running_time": 27, "node_errors": {}, "custom_outputs": { "output_5": "https://api-v1.huixingyun.com/comfyui/download/65598d9c-ea8d-4a1d-8d85-b890c1cb3167/20daa5cc-358f-41e3-b985-ee38c18d481d_1.png" } }, { "request_id": "1cc21404-088c-4017-b907-9501fc41f632", "files": { "5": [ "https://api-v1.huixingyun.com/comfyui/download/1cc21404-088c-4017-b907-9501fc41f632/2c8292ae-75e5-4468-837b-7448f21a3d3d_1.png" ] }, "all_files": [ "https://api-v1.huixingyun.com/comfyui/download/1cc21404-088c-4017-b907-9501fc41f632/2c8292ae-75e5-4468-837b-7448f21a3d3d_1.png" ], "create_at": "2024-11-22T02:29:01.000Z", "app_key_name": "test", "status": "DONE", "start_at": "2024-11-22T02:29:05.000Z", "end_at": "2024-11-22T02:29:33.000Z", "percentage": 100, "position": 0, "queue_length": 0, "point": 6, "running_time": 28, "node_errors": {} }, null ] } }

生成的图片查询接口

URL 地址见「查询接口」响应中的 all_files 地址。

请求示例

curl -O 'https://api-v1.huixingyun.com/comfyui/download/1cc21404-088c-4017-b907-9501fc41f632/2c8292ae-75e5-4468-837b-7448f21a3d3d_1.png' \ -H 'Authorization: app-7dnnrpiz1g6psh**********4cksfcw7'

错误码

HTTP 状态码均为 200,响应如下:
{ "code": 4000001, "message": "bad request" }
codemessage描述
1000001insufficient computility point算力点不足
4000001bad request请求参数错误
4000002file not exists上传图片未传入文件
4010001authorization failed鉴权失败
4010002authorization forbidden鉴权未开启
4010003token required未提供 Token
4040001app not found应用不存在
4040002app not belong to you应用与鉴权不一致
4090001Membership Requirements需要会员权限
4290001Too many prompt tasks正在执行的任务过多
5000001System Error系统错误
2025-10-29