Skip to content

ComfyUI API开发文档


接口共通部分

Header参数

参数类型必填说明
Authorizationstring访问令牌,格式:Bearer <Token>

查询ComfyUI应用列表

请求地址

GET https://waas.aigate.cc/api/openapi/comfyui/comfyuiApp/list

返回响应

response (application/json)
├── code: integer                                   # 业务状态码(0=成功,1=失败)
├── msg: string                                     # 业务返回消息
├── errCode: string                                 # 错误码(失败时返回)
└── data: array<object>                             # ComfyUI 应用列表
    ├── appId: integer                              # 应用 ID(int64)
    ├── appName: string                             # 应用名称
    ├── customerId: integer                         # 用户 ID(int64)
    ├── jsonDetail: object                          # ComfyUI API 详情
    ├── allowInput: object                          # 允许输入字段定义
    ├── allowInputAlias: object                     # 输入字段别名映射
    ├── allowInputType: object                      # 输入字段节点类型
    ├── intro: string                               # 应用介绍
    ├── createBy: string                            # 创建人
    ├── createTime: string                          # 创建时间
    ├── updateBy: string                            # 更新人
    ├── updateTime: string                          # 更新时间
    ├── bindInstanceIds: array<integer>             # 绑定的实例 ID 列表
    └── bindInstances: array<object>                # 应用与实例绑定关系
        ├── relationId: integer                     # 关系主键 ID(int64)
        ├── customerId: integer                     # 用户 ID(int64)
        ├── appId: integer                          # 应用 ID(int64)
        ├── instanceId: integer                     # 实例 ID(int64)
        ├── areaId: integer                         # 区域 ID(int64)
        ├── instanceStatus: string                  # 实例状态
        ├── instanceStatusTime: string              # 实例状态更新时间
        ├── createBy: string                        # 创建人
        ├── createTime: string                      # 创建时间
        ├── updateBy: string                        # 更新人
        ├── updateTime: string                      # 更新时间
        └── tenantId: integer                       # 所属租户 ID(int64)

返回示例:

json
{
  "code": 0,
  "msg": "",
  "errCode": "",
  "data": [
    {
      "appId": 0,
      "appName": "",
      "customerId": 0,
      "jsonDetail": {},
      "allowInput": {},
      "allowInputAlias": {},
      "allowInputType": {},
      "intro": "",
      "createBy": "",
      "createTime": "",
      "updateBy": "",
      "updateTime": "",
      "bindInstanceIds": [
        0
      ],
      "bindInstances": [
        {
          "relationId": 0,
          "customerId": 0,
          "appId": 0,
          "instanceId": 0,
          "areaId": 0,
          "instanceStatus": "",
          "instanceStatusTime": "",
          "createBy": "",
          "createTime": "",
          "updateBy": "",
          "updateTime": "",
          "tenantId": 0
        }
      ]
    }
  ]
}

代码示例:

bash
curl --location --request GET 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiApp/list' \
--header 'Authorization: Bearer 令牌Token'
javascript
var request = require('request');
var options = {
   'method': 'GET',
   'url': 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiApp/list',
   'headers': {
      'Authorization': 'Bearer 令牌Token'
   }
};
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});
python
import http.client

conn = http.client.HTTPSConnection("waas.aigate.cc")
payload = ''
headers = {
   'Authorization': 'Bearer 令牌Token'
}
conn.request("GET", "/api/openapi/comfyui/comfyuiApp/list", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
java
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
Request request = new Request.Builder()
   .url("https://waas.aigate.cc/api/openapi/comfyui/comfyuiApp/list")
   .get()
   .addHeader("Authorization", "Bearer 令牌Token")
   .build();
Response response = client.newCall(request).execute();
php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiApp/list',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'GET',
   CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer 令牌Token'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
http
GET /api/openapi/comfyui/comfyuiApp/list HTTP/1.1
Host: waas.aigate.cc
Authorization: Bearer 令牌Token

查询ComfyUI应用绑定的实例列表

请求地址

GET https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list

Query参数

参数位置类型必填说明
appIdqueryinteger应用ID(int64)

返回响应

response (application/json)
├── code: integer                         # 业务状态码(0=成功,1=失败)
├── msg: string                           # 返回信息
├── errCode: string                       # 错误码
└── data: array<object>                  # ComfyUI 实例列表
    ├── customerId: integer              # 用户 ID(int64)
    ├── appId: integer                   # 应用 ID(int64)
    ├── instanceId: integer              # 实例 ID(int64)
    ├── areaId: integer                  # 区域 ID(int64)
    ├── instanceStatus: string           # 实例状态
    │                                   # 1=创建中
    │                                   # 2=运行中
    │                                   # 3=正在保存(运行状态下)
    │                                   # 4=已释放
    │                                   # 5=释放中
    │                                   # 6=已暂停
    │                                   # 7~25 / 26 / 40 / 44 / 50 / 1000:系统内部状态
    ├── instanceStatusTime: string       # 实例状态更新时间
    ├── comfyuiHost: string              # ComfyUI 地址
    ├── createBy: string                 # 创建人
    ├── createTime: string               # 创建时间
    ├── updateBy: string                 # 更新人
    ├── updateTime: string               # 更新时间
    ├── delFlag: string                  # 删除标识(1=删除)
    └── tenantId: integer                # 所属租户 ID(int64)

返回示例:

json
{
  "code": 0,
  "msg": "",
  "errCode": "",
  "data": [
    {
      "customerId": 0,
      "appId": 0,
      "instanceId": 0,
      "areaId": 0,
      "instanceStatus": "",
      "instanceStatusTime": "",
      "comfyuiHost": "",
      "createBy": "",
      "createTime": "",
      "updateBy": "",
      "updateTime": "",
      "delFlag": "",
      "tenantId": 0
    }
  ]
}

代码示例:

bash
curl --location --request GET 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list?appId=0' \
--header 'Authorization: Bearer 令牌Token'
javascript
var request = require('request');
var options = {
   'method': 'GET',
   'url': 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list?appId=0',
   'headers': {
      'Authorization': 'Bearer 令牌Token'
   }
};
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});
python
import requests

url = "https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list"

params = {"appId": 0}
headers = {
   'Authorization': 'Bearer 令牌Token'
}

response = requests.get(url, headers=headers, params=params)
print(response.text)
java
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
HttpUrl url = HttpUrl.parse("https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list")
   .newBuilder()
   .addQueryParameter("appId", "0")
   .build();
Request request = new Request.Builder()
   .url(url)
   .get()
   .addHeader("Authorization", "Bearer 令牌Token")
   .build();
Response response = client.newCall(request).execute();
php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiInstance/list?appId=0',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'GET',
   CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer 令牌Token'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
http
GET /api/openapi/comfyui/comfyuiInstance/list?appId=0 HTTP/1.1
Host: waas.aigate.cc
Authorization: Bearer 令牌Token

创建ComfyUI任务

请求地址

POST https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create

Body参数

参数位置类型必填说明
appIdbodystring应用 ID
instanceIdbodystring实例 ID
allowInputbodyobjectcomfyui 工作流导出的参数

返回响应

response (application/json)
├── code: integer                 # 业务状态码(0=成功,1=失败)
├── msg: string                   # 返回信息
├── errCode: string               # 错误码
├── data: object                  # 数据
│   └── key: object               # key
└── ok: boolean                   # 是否成功

返回示例:

json
{
  "code": 0,
  "msg": "",
  "errCode": "",
  "data": {
    "": {}
  },
  "ok": false
}

代码示例:

bash
curl --location --request POST 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create' \
--header 'Authorization: Bearer 令牌Token' \
--header 'Content-Type: application/json' \
--data-raw '{
    "appId": "string",
    "instanceId": "string",
    "allowInput": {}
}'
javascript
var request = require('request');
var options = {
   'method': 'POST',
   'url': 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create',
   'headers': {
      'Authorization': 'Bearer 令牌Token',
      'Content-Type': 'application/json'
   },
   body: JSON.stringify({
      "appId": "string",
      "instanceId": "string",
      "allowInput": {}
   })

};
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});
python
import requests
import json

url = "https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create"

payload = json.dumps({
   "appId": "string",
   "instanceId": "string",
   "allowInput": {}
})
headers = {
   'Authorization': 'Bearer 令牌Token',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
java
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"appId\": \"string\",\n    \"instanceId\": \"string\",\n    \"allowInput\": {}\n}");
Request request = new Request.Builder()
   .url("https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create")
   .method("POST", body)
   .addHeader("Authorization", "Bearer 令牌Token")
   .addHeader("Content-Type", "application/json")
   .build();
Response response = client.newCall(request).execute();
php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/create',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'POST',
   CURLOPT_POSTFIELDS =>'{
    "appId": "string",
    "instanceId": "string",
    "allowInput": {}
}',
   CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer 令牌Token',
      'Content-Type: application/json'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
http
POST /api/openapi/comfyui/comfyuiTask/create HTTP/1.1
Host: waas.aigate.cc
Authorization: Bearer 令牌Token
Content-Type: application/json
Content-Length: 75

{
    "appId": "string",
    "instanceId": "string",
    "allowInput": {}
}

查询ComfyUI任务状态

请求地址

GET https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status

Query参数

参数位置类型必填说明
taskIdquerystring任务ID

返回响应

response (application/json)
├── code: integer                     # 业务状态码(0=成功,1=失败)
├── msg: string                       # 返回信息
├── errCode: string                   # 错误码
└── data: object                      # 数据(OpComfyuiTaskVO)
    ├── taskId: integer               # 请求任务id
    ├── comfyuiPromptId: string       # comfyui请求id
    ├── instanceId: integer           # 实例ID
    ├── comfyuiHost: string           # comfyui地址
    ├── allowInput: object            # 允许输入字段
    ├── jsonDetailNew: object          # 新ComfyUI API详情
    ├── status: integer               # 状态(0-排队中,1-生成中,2-成功,3-取消,4-失败,5-超时)
    ├── startTime: string             # 开始时间
    ├── endTime: string               # 结束时间
    ├── executionDuration: integer    # 执行耗时(秒)
    └── files: array<object>           # 结果文件列表
        ├── fileId: integer            # 文件ID
        ├── areaId: integer            # 区域ID
        ├── filePath: string           # 文件Path
        ├── downloadUrl: string        # 文件下载URL
        ├── fileName: string           # 文件名称
        └── fileType: string           # 文件类型

返回示例:

json
{
  "code": 0,
  "msg": "",
  "errCode": "",
  "data": {
    "taskId": 0,
    "comfyuiPromptId": "",
    "instanceId": 0,
    "comfyuiHost": "",
    "allowInput": {},
    "jsonDetailNew": {},
    "status": 0,
    "startTime": "",
    "endTime": "",
    "executionDuration": 0,
    "files": [
      {
        "fileId": 0,
        "areaId": 0,
        "filePath": "",
        "downloadUrl": "",
        "fileName": "",
        "fileType": ""
      }
    ]
  }
}

代码示例:

bash
curl --location --request GET 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status?taskId=0' \
--header 'Authorization: Bearer 令牌Token'
javascript
var request = require('request');
var options = {
   'method': 'GET',
   'url': 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status?taskId=0',
   'headers': {
      'Authorization': 'Bearer 令牌Token'
   }
};
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});
python
import requests

url = "https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status"

params = {"taskId": 0}
headers = {
   'Authorization': 'Bearer 令牌Token'
}

response = requests.get(url, headers=headers, params=params)
print(response.text)
java
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
HttpUrl url = HttpUrl.parse("https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status")
   .newBuilder()
   .addQueryParameter("taskId", "0")
   .build();
Request request = new Request.Builder()
   .url(url)
   .get()
   .addHeader("Authorization", "Bearer 令牌Token")
   .build();
Response response = client.newCall(request).execute();
php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://waas.aigate.cc/api/openapi/comfyui/comfyuiTask/status?taskId=0',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'GET',
   CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer 令牌Token'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
http
GET /api/openapi/comfyui/comfyuiTask/status?taskId=0 HTTP/1.1
Host: waas.aigate.cc
Authorization: Bearer 令牌Token

文件下载

在 ComfyUI 任务执行完成后,可通过以下步骤下载生成的结果文件:

  • 查询任务状态
    调用查询ComfyUI任务状态接口,确认任务已成功完成。当返回字段 status = 2 时,表示任务已成功,可进行文件下载。
  • 获取并下载文件
    在任务结果中,将包含一个或多个文件信息,每个文件提供对应的下载地址(downloadUrl)。请使用该 URL 下载所需文件。 注意事项
  • 下载链接有效期 下载地址与 ComfyUI 实例绑定。若对应实例已关机或被释放,所有相关下载链接将立即失效,请及时下载所需文件。
  • 网络与存储建议 受网络带宽限制,若需频繁调用或批量处理任务,建议在文件下载后尽快保存至个人持久化存储(例如:阿里云 OSS、本地服务器等),以避免因链接过期导致数据丢失。

文件上传

启动实例后,将用户本地文件上传到实例中指定目录,提供给ComfyUI组件调用。

请求地址

查询ComfyUI应用绑定的实例列表接口,获取指定实例的comfyuiHost做为请求地址
POST 请求地址 + /api/upload/image

Body参数

参数位置类型必填说明
imagebodystring(binary)上传的文件 (二进制格式)
typebodystring固定值: input

返回示例:

json
{
   "name": "示例文件.png",
   "subfolder": "",
   "type": "input"
}

文件调用:
实例中上传文件目录:/root/comfyui/ComfyUI/input
ComfyUI组件调用:如加载图像节点,传入上传文件的名称。

代码示例:

bash
curl --location --request POST 'https://请求地址/api/upload/image' \
--form 'image=@"/path/to/示例文件.png"' \
--form 'type="input"'
javascript
const request = require('request');
const fs = require('fs');

// 读取要上传的文件
const fileStream = fs.createReadStream('/path/to/示例文件.png');

// 构建请求选项
const options = {
   'method': 'POST',
   'url': 'https://请求地址/api/upload/image',
   // 使用 formData 进行文件上传
   'formData': {
      'image': {
         'value': fileStream,
         'options': {
            'filename': '示例文件.png',
            'contentType': null
         }
      },
      'type': 'input'
   }
};

// 发送请求
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});
python
import requests

# 请求地址(从实例列表接口获取的 comfyuiHost)
url = "https://请求地址/api/upload/image"

# 构建表单数据:包含文件和类型参数
files = {
   'image': open('/path/to/示例文件.png', 'rb')
}
data = {
   'type': 'input'
}

# 发送 POST 请求上传文件
response = requests.post(url, headers=headers, files=files, data=data)

# 输出响应结果
print(response.text)

# 关闭文件句柄
files['image'].close()
java
import okhttp3.*;
import java.io.File;

// 创建 OkHttpClient 实例
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();

// 构建请求体,包含文件和表单字段
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
   .addFormDataPart("type", "input")
   .addFormDataPart("image", "示例文件.png",
      RequestBody.create(MediaType.parse("application/octet-stream"),
         new File("/path/to/示例文件.png")))
   .build();

// 构建请求对象
Request request = new Request.Builder()
   .url("https://请求地址/api/upload/image")
   .method("POST", body)
   .build();

// 执行请求并获取响应
Response response = client.newCall(request).execute();
php
<?php

// 初始化 cURL
$curl = curl_init();

// 构建文件路径
$filePath = '/path/to/示例文件.png';

// 设置 cURL 选项
curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://请求地址/api/upload/image',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'POST',
   // 使用 CURLFile 对象上传文件
   CURLOPT_POSTFIELDS => array(
      'image' => new CURLFile($filePath),
      'type' => 'input'
   ),
));

// 执行请求并获取响应
$response = curl_exec($curl);

// 关闭 cURL 资源
curl_close($curl);

// 输出响应结果
echo $response;
http
POST /api/upload/image HTTP/1.1
Host: 请求地址
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 345

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="type"

input
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="image"; filename="示例文件.png"
Content-Type: image/png

[二进制文件数据]
------WebKitFormBoundary7MA4YWxkTrZu0gW--