跳转至

ComfyUI API

ComfyUI API功能是AutoDL将ComfyUI工作流进行包装后暴露工作流核心参数进行推理的API服务。ComfyUI API页面的不同工作流的接入流程和整体API参数基本一致,主要区别在于:工作流ID不同、提交任务时与工作流相关的入参会有差异。以下以MiniMax H3文生图工作流为例说明:

API调用过程分两步:

第一步:提交任务,这一步只会立即返回任务ID,需在第二步查询推理生成的结果,如图片、视频等

第二步:异步查询任务

第一步:提交任务

请求URL

POST https://autodl.art/api/v1/comfyui/comfyui_workflow/{workflow_id}

其中:{workflow_id} 为工作流ID,可点击工作流后在右侧抽屉页面中可见:

Headers

需要传入鉴权Token:{"Authorization": 您的Token令牌, "Content-Type": "application/json"}

Token令牌获取位置:令牌管理 点击创建令牌,分组选择:ComfyUI

Request Body

可点击工作流后在右侧抽屉页面中查看,或者使用【在线调用API】在此页面查看

Response Body

提交任务后会返回任务的ID,此ID将用于异步查询任务的生成结果(可能是视频、图片等)

{
  "code": "Success",
  "data": {
    "task_id": "2a25da1d-39ad-495c-8dac-bae8e8f6b1a1",
    "workflow": "H3文生视频",
    "status": "QUEUED",
    "client_id": "8c93a8000ef50e05d5314014756bd62c",
    "message": "工作流任务已提交",
    "created_at": "2026-08-18T11:33:02.456421825+08:00"
  },
  "msg": "",
  "request_id": "8c93a8000ef50e05d5314014756bd62c"
}

以上返回的Response Body中,task_id为任务ID

第二步:异步查询任务

请求URL

GET https://autodl.art/api/v1/comfyui/comfyui_workflow/result/{task_id}

其中:{task_id} 为第一步提交任务返回的task_id

Headers

同提交任务

Request Body

Response Body

{
  "code": "Success",
  "data": {
    "task_id": "363ba3f5-f4fb-480c-afcf-b9410179c724",
    "status": "RUNNING",
    "client_id": "430e8d3d055baa169c23ba31e49a548d",
    "created_at": "2026-08-14 10:35:28",
    "started_at": "2026-08-14 10:35:30",
    "duration": 196,
    "results": []
  },
  "msg": "",
  "request_id": "8c93a8000ef50e05d5314014756bd62c"
}

以上status为任务状态,可能为QUEUED排队中,RUNNING执行中,SUCCESS成功,当成功后,results字段中将返回生成的图片、视频等资源的URL地址,该URL地址资源有效期较短,获取后请尽快下载保存,超时将无法下载

Python代码示例

import json
import time

import requests

headers = {"Authorization": "***请替换成自己的Token, 获取地址:https://autodl.art/large-model/tokens ***", "Content-Type": "application/json"}
workflow_id = "minimax_h3_lightx2v_no_pic"  # 这里用的H3文生图工作流
create_task_url = f"https://autodl.art/api/v1/comfyui/comfyui_workflow/{workflow_id}"
query_task_url = "https://autodl.art/api/v1/comfyui/comfyui_workflow/result/{task_id}"
# 这里请填写对应工作流的请求参数,可在网页端点击工作流的弹窗中查看API请求参数
create_task_body = {
    "prompt": "生成一直小猫咪在云端漫步",
    "duration": 1,
    "resolution": "480p竖"
}


def create_task():
    response = requests.post(create_task_url, json=create_task_body, headers=headers)
    print(f"提交任务返回task的Body:{response.content.decode()}")
    json_response = json.loads(response.content.decode())
    task_id = json_response['data']['task_id']
    return task_id


def query_task_result(task_id):
    q_url = query_task_url.format(task_id=task_id)
    while True:
        response = requests.get(q_url, headers=headers)
        # print(f"查询任务返回task的Body:{response.content.decode()}")
        json_response = json.loads(response.content.decode())
        data = json_response['data']
        print(f'任务状态:{data["status"]} 耗时:{data["duration"]}秒')
        if data["status"] == "SUCCESS":
            print(f'任务执行成功,推理结果:{data["results"]}')
            return
        elif data["status"] == "FAILED":
            print(f'任务执行失败')
            return
        time.sleep(1)


if __name__ == '__main__':
    _task_id = create_task()
    assert _task_id, "task_id为空"
    query_task_result(_task_id)