30 · API 与自动化工作流
用 ComfyUI API 远程调用、脚本化批量生成、接入自动化管线
01 ComfyUI API 基础
ComfyUI 启动时自带 API 服务(默认端口 8188),可以用 HTTP 请求调用。
基础 URL
http://127.0.0.1:8188API 文档
启动 ComfyUI 后访问:http://127.0.0.1:8188/docs(Swagger UI)
02 核心 API 端点
| 端点 | 方法 | 用途 |
|---|---|---|
/prompt | POST | 提交工作流 JSON 执行 |
/history | GET | 查询执行历史 |
/history/{id} | GET | 查询特定执行结果 |
/queue | DELETE | 清空队列 |
/interrupt | POST | 中断当前执行 |
/view | GET | 获取生成的图片 |
03 Python 调用 ComfyUI API
import json
import requests
import time
# 1. 加载工作流 JSON
with open("my_workflow.json", "r") as f:
workflow = json.load(f)
# 2. 你可以动态修改工作流里的参数
# 比如改提示词
for node_id, node in workflow.items():
if node["class_type"] == "CLIPTextEncode":
node["inputs"]["text"] = "新的提示词"
# 3. 提交任务
resp = requests.post(
"http://127.0.0.1:8188/prompt",
json={"prompt": workflow}
)
prompt_id = resp.json()["prompt_id"]
# 4. 轮询等结果
while True:
history = requests.get(f"http://127.0.0.1:8188/history/{prompt_id}").json()
if prompt_id in history:
break
time.sleep(1)
print("生成完成!")04 批量自动化场景
批量提示词生成
prompts = ["猫", "狗", "兔子", "鸟", "鱼"]
for p in prompts:
workflow = load_template()
set_prompt(workflow, p)
submit_and_wait(workflow)XY Plot 级别的参数探索
for cfg in [3, 5, 7, 9, 12]:
for sampler in ["euler", "dpmpp_2m", "dpmpp_sde"]:
workflow = load_template()
set_param(workflow, "cfg", cfg)
set_param(workflow, "sampler", sampler)
submit_and_wait(workflow)05 接入自动化管线
CI/CD 集成
- GitHub Actions:代码 push 后自动生成素材图
- 定时任务:每天生成一套社媒图
Webhook 触发
搭建一个简单的 Flask/FastAPI 服务,接收外部请求后调用 ComfyUI API:
from fastapi import FastAPI
import requests
app = FastAPI()
@app.post("/generate")
async def generate(prompt: str):
workflow = load_template()
set_prompt(workflow, prompt)
result = submit_comfyui(workflow)
return {"status": "done", "image_url": result}06 安全提醒
如果打算暴露 API 到公网:
- 加
--listen参数时注意内网安全 - 建议前面套一层 Nginx 做鉴权
- 不要在公网裸奔 ComfyUI API——别人能随意调用你的 GPU
💡 一句话总结:ComfyUI API = RESTful HTTP 接口,Python 脚本控制一切——批量、定时、Webhook 全都能做。