完成 ComfyUI 应用部署后,您不仅可以通过 WebUI 页面生成图像,还可以通过 API 调用的方式实现图像生成。ComfyUI Serverless API 将原生 ComfyUI 的出图、上传图片、获取状态及获取图片合并成了同一个接口,使得可以借助多实例并发出图的能力,加速您的出图任务。
1. 导出工作流 API 所需 JSON 文件
1. 在进行 API 调用之前,请先在 ComfyUI WebUI 中搭建并调试您所需的工作流,并确认该工作流可以成功生成图像。
2. 调试完毕后,在 ComfyUI 界面点击菜单项工作流 > 导出(API),您的浏览器将会下载一个包含工作流定义的 JSON 文件。如下图所示:

3. 该 JSON 文件描述了当前工作流是如何工作的,后续 API 请求时作为主体内容发送,示例结构如下:
{"3": {"inputs": {"seed": 219250535919244,"steps": 20,"cfg": 8,"sampler_name": "euler","scheduler": "normal","denoise": 1,"model": ["4",0],"positive": ["6",0],"negative": ["7",0],"latent_image": ["5",0]},"class_type": "KSampler","_meta": {"title": "K采样器"}},"4": {"inputs": {"ckpt_name": "v1-5-pruned-emaonly-fp16.safetensors"},"class_type": "CheckpointLoaderSimple","_meta": {"title": "Checkpoint加载器(简易)"}},"5": {"inputs": {"width": 512,"height": 512,"batch_size": 1},"class_type": "EmptyLatentImage","_meta": {"title": "空Latent图像"}},"6": {"inputs": {"text": "beautiful scenery nature glass bottle landscape, , purple galaxy bottle,","clip": ["4",1]},"class_type": "CLIPTextEncode","_meta": {"title": "CLIP文本编码"}},"7": {"inputs": {"text": "text, watermark","clip": ["4",1]},"class_type": "CLIPTextEncode","_meta": {"title": "CLIP文本编码"}},"8": {"inputs": {"samples": ["3",0],"vae": ["4",2]},"class_type": "VAEDecode","_meta": {"title": "VAE解码"}},"9": {"inputs": {"filename_prefix": "ComfyUI","images": ["8",0]},"class_type": "SaveImage","_meta": {"title": "保存图像"}}}
2. API 说明
1. 登录 Serverless 控制台,单击左侧导航栏的图像生成。
2. 查看应用列表,选择已经创建的 ComfyUI 应用。

3. 平台会自动生成一个可用于外部调用的 API 地址,在 API 调用页签中,参照页面内的 API 调用文档,并结合上文导出的 JSON 文件,即可构造 API 请求,完成 AI 生图业务调用。

Serverless API 生图(HTTP)
通过 API 调用 ComfyUI 进行图像生成。
POST:/api/serverless/run
请求参数 | Key | 是否必填 | 字段类型 | 描述 |
Header 部分 | Content-Type | 必填 | - | Body 部分的内容类型,需要固定为 application/json。 |
| X-Scf-Invocation-Type | 选填 | - | 指定函数调用类型,可选项为: Sync 表示同步调用,即请求会等待函数执行完成返回结果,如果函数执行时间过长,可能会导致请求超时,建议使用异步调用。 Async 表示异步调用,无配置时默认为该值,此时请求会立即返回,请求返回响应 Headers 包含 X-Scf-Request-Id,也就是本次生图的任务 ID,函数执行结果会通过消息队列通知到调用方。 |
Query 部分 | output_cos | 选填 | boolean | 输出结果中是否包含 COS 内容。 |
| output_base64 | 选填 | boolean | 输出结果中是否包含 base64 内容。 |
| stream | 选填 | boolean | 是否启用流式输出。 |
Body 部分 | - | - | - | 仅发送一次,ComfyUI 导出的 API 文件,JSON 格式,key 为节点 id,value 为节点配置。 增加以下适配能力: KSampler 节点,seed 为 -1 时,自动替换为随机数。 LoadImage 节点,支持如下形式的图片: url:从 url 读入图片,如 https://example.com/example.png。cos:从 cos 读入图片(需要为函数授予相关权限),如 cos:https/1253970226-e2sef2gdnt.ap-chongqing.tencentscf.com/example.png。base64:从 base64 读入图片,如 iVBORw0KGgoAAAANSUhEUgAAA...。 |
响应部分:
响应结果 | Key | 字段类型 | 描述 |
非流式响应结果 | .type | string | 固定为 serverless_api。 |
| .data | object | 输出结果。 |
| .data.prompt_id | string | 本次出图的任务 id 即 prompt_id,由 ComfyUI 生成,可用于后续查询历史记录(数据在内存中,实例轮转后销毁)。 |
| .data.results | array | 结果图片数组。 |
| .data.results[*].node_id | string | 保存当前图片的节点 id。 |
| .data.results[*].batch_id | number | 当前图片的 batch 序号。 |
| .data.results[*].output | object | 图片结果。 |
| .data.results[*].output.raw | object | 图片原始信息。 |
| .data.results[*].output.raw.filename | string | 文件名。 |
| .data.results[*].output.raw.type | string | 文件类型,固定为 output。 |
| .data.results[*].output.raw.subfolder | string | 子文件夹名。 |
| .data.results[*].output.raw.filepath | string | 文件相对路径。 |
| .data.results[*].output.base64 | object | base64 信息(需要在输入时传入 output_base64)。 |
| .data.results[*].output.base64.content | string | 当前图片的base64(需要开启output_base64)。 |
| .data.results[*].output.cos | object | 输出的COS信息(需要在输入时传入 output_cos)。 |
| .data.results[*].output.cos.region | string | COS bucket 所属的地域。 |
| .data.results[*].output.cos.bucket | string | COS bucket 名称。 |
| .data.results[*].output.cos.object | string | COS 对象名。 |
| .data.results[*].output.cos.url | string | 生成的临时 URL。 |
流式响应结果 | - | - | 每行内容均以 data: 开头,内容为 ComfyUI 原生返回的状态信息。在出图结束后,返回与非流式一致的输出内容。 |
| .type | string | 消息类型,可能的值包括 status、executing、progress、serverless_api。 |
| .data | object | 消息内容,根据类型不同有不同的结构。 |
| .data.prompt_id | string | 当前任务 ID。 |
Serverless API 生图(WebSocket)
通过 WebSocket 方式调用 ComfyUI 进行图像生成。
WEBSOCKET:/api/serverless/ws
请求参数 | Key | 是否必填 | 字段类型 | 描述 |
Query 部分 | output_cos | 选填 | boolean | 输出结果中是否包含 COS 内容。 |
| output_base64 | 选填 | boolean | 输出结果中是否包含 base64 内容。 |
WebSocket Message | - | - | - | 仅发送一次,ComfyUI 导出的 API 文件,JSON 格式,key 为节点 id,value 为节点配置。 增加以下适配能力: KSampler 节点,seed 为 -1 时,自动替换为随机数。 LoadImage 节点,支持如下形式的图片: url:从 url 读入图片,如 https://example.com/example.png。cos:从 cos 读入图片(需要为函数授予相关权限),如 cos:https/1253970226-e2sef2gdnt.ap-chongqing.tencentscf.com/example.png。base64:从 base64 读入图片,如 iVBORw0KGgoAAAANSUhEUgAAA...。 |
响应部分:
响应结果 | Key | 字段类型 | 描述 |
- | - | 每条输出 Message 与 ComfyUI 原生返回的状态信息相同。在出图结束后,返回与 HTTP 非流式一致的输出内容。 | |
.type | string | 消息类型,可能的值包括 status、executing、progress、serverless_api。 | |
.data | object | 消息内容,根据类型不同有不同的结构。 | |
.data.prompt_id | string | 当前任务 ID。 |
Serverless API 状态获取(GET)
获取指定任务的执行状态。
WEBSOCKET/api/serverless/status
请求参数 | Key | 是否必填 | 字段类型 | 描述 |
Query 部分 | id | 必填 | string | 要查询的任务 id(默认为异步生图请求 ID,可通过返回响应 Headers 里的 X-Scf-Request-Id 获取)。 |
Header 部分 | X-Scf-Invocation-Type | 选填 | string | Sync 表示同步调用,即请求会等待函数执行完成返回结果,如果函数执行时间过长,可能会导致请求超时,建议使用异步调用。 Async 表示异步调用。无配置时默认为该值,此时请求会立即返回,请求返回响应 Headers 包含 X-Scf-Request-Id,也就是本次生图的任务 ID,函数执行结果会通过消息队列通知到调用方。 |
响应部分:
响应结果 | Key | 字段类型 | 描述 |
- | - | 返回流式数据内容相同的数组。 | |
type | string | 消息类型,可能的值包括 status、executing、progress、serverless_api。 | |
data | object | 消息内容,格式同 WebSocket 消息。 |