Skip to Content
六. 高级应用30 · API 与自动化工作流

30 · API 与自动化工作流

用 ComfyUI API 远程调用、脚本化批量生成、接入自动化管线


01 ComfyUI API 基础

ComfyUI 启动时自带 API 服务(默认端口 8188),可以用 HTTP 请求调用。

基础 URL

http://127.0.0.1:8188

API 文档

启动 ComfyUI 后访问:http://127.0.0.1:8188/docs(Swagger UI)


02 核心 API 端点

端点方法用途
/promptPOST提交工作流 JSON 执行
/historyGET查询执行历史
/history/{id}GET查询特定执行结果
/queueDELETE清空队列
/interruptPOST中断当前执行
/viewGET获取生成的图片

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 全都能做。