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)