星渡开发文档

comfyui

星渡开放平台文档

星渡 AutoDL ComfyUI 适配 API

本文档描述星渡对外提供的 7 个 H3 AutoDL public workflow 兼容接口。接口采用异步任务模式:先提交 workflow,再使用任务 ID 查询状态与结果。IndexTTS2 仅保留上游参数参考,当前未在星渡启用。

示例中的 YOUR_XINDU_API_KEY、任务 ID 和媒体 URL 均为占位值,不是真实凭据或生产资源。

1. 接入信息

  • API origin:https://xindu.xyz
  • 鉴权:Authorization: Bearer YOUR_XINDU_API_KEY
  • 分组限制:API Key 必须绑定 H3 开放分组——group 51「国模全覆盖」或 group 120「H3视频专用」(一倍率);其他分组不会开放这些 workflow
  • 请求与响应:JSON
  • 提交:POST /v1/comfyui/comfyui_workflow/{workflow_id}
  • 查询:GET /v1/comfyui/comfyui_workflow/result/{task_id}

请求体直接使用对应 workflow 的平铺字段,不要再包一层 input、parameters 或 workflow。

2. 异步调用流程

2.1 提交任务

curl -X POST \
  'https://xindu.xyz/v1/comfyui/comfyui_workflow/minimax_h3_image_audio_to_video_v2_15s' \
  -H 'Authorization: Bearer YOUR_XINDU_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "电影感城市夜景,镜头缓慢推进",
    "duration": 8,
    "resolution": "768p竖",
    "seed": 20260822,
    "ref_image_0": "https://example.com/assets/first.webp",
    "ref_audio_0": "https://example.com/assets/voice.mp3"
  }'

成功响应:

{
  "code": "Success",
  "data": {
    "task_id": "task_example_01",
    "status": "QUEUED",
    "results": []
  },
  "msg": "success",
  "request_id": "req_example_01"
}

保存 data.task_id。request_id 用于排障,不可替代任务 ID。

2.2 查询状态

curl \
  'https://xindu.xyz/v1/comfyui/comfyui_workflow/result/task_example_01' \
  -H 'Authorization: Bearer YOUR_XINDU_API_KEY'

任务状态保持 AutoDL 兼容值:

状态含义调用方行为
QUEUED已进入队列继续轮询
RUNNING生成中继续轮询
SUCCESS已完成读取 data.results
COMPLETED已完成(兼容状态)与 SUCCESS 相同,读取 data.results
FAILED任务失败停止轮询,记录 msg 与 request_id

成功结果示例:

{
  "code": "Success",
  "data": {
    "task_id": "task_example_01",
    "status": "SUCCESS",
    "results": [
      {
        "url": "https://example-result.invalid/temporary/output.mp4",
        "type": "video",
        "file_type": "mp4",
        "output_type": "video"
      }
    ]
  },
  "msg": "success",
  "request_id": "req_example_02"
}

2.3 下载结果

data.results[].url 是短期有效地址。任务成功后应立即下载并保存到自己的持久存储,不要把结果 URL 当作长期文件地址。下载结果时仍应检查 HTTP 状态、Content-Type 和文件大小。

3. 通用字段

3.1 seed

支持 seed 的 workflow 接受整数 1..999999999999999。不传时由 workflow 生成随机种子;不同 workflow 的随机默认值可能不同,调用方不应依赖固定默认 seed。

3.2 媒体 URL

  • 图片:JPG、PNG、WebP
  • H3 音频参考:MP3、WAV、MP4、FLAC
  • IndexTTS2 音频参考:MP3、WAV

媒体字段必须是绝对 HTTP(S) URL,最长 4096 字符,不得携带 URL userinfo(如 user:password@host)或控制字符。URL 必须在任务执行期间可由服务端访问;需要鉴权、只在本地可见或过早失效的地址可能导致任务失败。

3.3 分辨率精确值

横竖值使用无括号字符串:

  • 480p竖、480p横
  • 768p竖、768p横
  • 1080p竖、1080p横

方形值使用:

  • 480p(1:1)、768p(1:1)、1080p(1:1)

每个 workflow 只接受下文列出的子集。

4. Workflow 一览

workflow_id主要输入时长分辨率参考媒体上限
minimax_h3_image_audio_to_video_v2_15s文本、图片、音频1–15 秒480p/768p 横竖9 图、3 音频
minimax_h3_lightx2v_v5_15s文本、图片1–15 秒480p/768p 横竖与 1:19 图,至少 1 图
minimax_h3_image_audio_to_video_v2文本、图片、音频1–10 秒480p/768p/1080p 横竖9 图、3 音频
minimax_h3_image_audio_to_video图片、音频1–15 秒480p/768p/1080p 横竖固定 1 图、1 音频
minimax_h3_lightx2v_v5文本、图片1–10 秒480p/768p/1080p 横竖与 1:19 图,至少 1 图
minimax_h3_lightx2v_no_pic纯文本1–15 秒480p/768p 横竖无
minimax_h3_lightx2v文本、首尾帧1–15 秒480p/768p 横竖首帧、尾帧各 1

indextts2-v1 不在上表的星渡可调用 workflow 中;其上游参数仅在第 6 节作为参考保留。

5. H3 Workflow 参数

5.1 minimax_h3_image_audio_to_video_v2_15s

字段必填约束
prompt是字符串,1–10000 字符
seed否整数,1–999999999999999
duration否整数,1–15,默认 5
resolution否480p竖、480p横、768p竖、768p横;默认 768p竖
ref_image_0 … ref_image_8否图片 URL,最多 9 个
ref_audio_0 … ref_audio_2否音频 URL,最多 3 个

5.2 minimax_h3_lightx2v_v5_15s

字段必填约束
prompt是字符串,1–500000 字符
seed否整数,1–999999999999999
duration否整数,1–15,默认 5
resolution否480p/768p 横竖及 480p(1:1)、768p(1:1);默认 768p竖
ref_image_0是图片 URL
ref_image_1 … ref_image_8否图片 URL,连同 0 最多 9 个

5.3 minimax_h3_image_audio_to_video_v2

字段与 minimax_h3_image_audio_to_video_v2_15s 相同,但:

  • duration 为 1–10 秒,默认 5;
  • resolution 另支持 1080p竖、1080p横。

5.4 minimax_h3_image_audio_to_video

字段必填约束
audio_duration否整数,1–15,默认 5
resolution否480p/768p/1080p 横竖;默认 768p竖
ref_image_0是图片 URL,只接受 1 张
ref_audio_0是音频 URL,只接受 1 个

此 workflow 没有 prompt 字段;不要发送空 prompt 代替音频或图片。

5.5 minimax_h3_lightx2v_v5

字段必填约束
prompt是字符串,1–500000 字符
seed否整数,1–999999999999999
duration否整数,1–10,默认 5
resolution否480p/768p/1080p 横竖及三档 1:1;默认 768p竖
ref_image_0是图片 URL
ref_image_1 … ref_image_8否图片 URL,连同 0 最多 9 个

5.6 minimax_h3_lightx2v_no_pic

字段必填约束
prompt是字符串,1–200000 字符
duration否整数,1–15,默认 5
resolution否480p/768p 横竖;默认 768p竖

5.7 minimax_h3_lightx2v

字段必填约束
prompt是字符串,1–2000000 字符
duration否整数,1–15,默认 5
resolution否480p/768p 横竖;默认 768p竖
first_frame是首帧图片 URL
last_frame是尾帧图片 URL

6. AutoDL 参考:IndexTTS2(星渡未启用)

indextts2-v1 是 AutoDL 上游参考 workflow,当前未在星渡启用,也不在星渡 OpenAPI 的可调用 workflow_id 枚举中。以下参数表仅用于理解上游格式,不能据此向星渡接口提交任务。

字段必填约束
prompt_simple是音色参考音频 URL,MP3 或 WAV
prompt_text是待合成文本,1–2048 字符
emo_control_method是固定为 与音色参考音频相同
emo_ref_audio否情绪参考音频 URL,MP3 或 WAV
emo_happy否数值,0–1.4
emo_angry否数值,0–1.4
emo_sad否数值,0–1.4
emo_afraid否数值,0–1.4
emo_disgusted否数值,0–1.4
emo_melancholic否数值,0–1.4
emo_calm否数值,0–1.4
emo_surprised否字符串,唯一允许值 0
emo_random否布尔值

7. 计费

H3 视频 workflow 使用站内固定 CNY 单价,不乘分组倍率或用户倍率:

分辨率档单价
480p,包括 480p竖、480p横、480p(1:1)¥0.12/秒
768p,包括 768p竖、768p横、768p(1:1)¥0.12/秒
1080p,包括 1080p竖、1080p横、1080p(1:1)¥0.12/秒

H3 价格按请求中的 duration 或 audio_duration 秒数及分辨率档计算。2026-09-12 起全档统一 ¥0.12/秒。例如 8 秒 768p竖 的参考金额为 8 × ¥0.12 = ¥0.96。

IndexTTS2 上游当前参考价为 ¥0.01/次,但该 workflow 本次未在星渡启用,不构成星渡可调用能力或站内报价。

8. Python 示例

import os
import time
from pathlib import Path

import requests

BASE_URL = "https://xindu.xyz"
API_KEY = os.environ["XINDU_API_KEY"]
WORKFLOW_ID = "minimax_h3_lightx2v_no_pic"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

submit = requests.post(
    f"{BASE_URL}/v1/comfyui/comfyui_workflow/{WORKFLOW_ID}",
    headers=headers,
    json={
        "prompt": "雨后的未来城市,霓虹倒影,固定镜头",
        "duration": 5,
        "resolution": "768p横",
    },
    timeout=30,
)
submit.raise_for_status()
submit_body = submit.json()
if submit_body.get("code") != "Success":
    raise RuntimeError(submit_body)

task_id = submit_body["data"]["task_id"]

while True:
    response = requests.get(
        f"{BASE_URL}/v1/comfyui/comfyui_workflow/result/{task_id}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        timeout=30,
    )
    if response.status_code == 429:
        time.sleep(5)
        continue
    response.raise_for_status()
    body = response.json()
    if body.get("code") != "Success":
        raise RuntimeError(body)
    status = body["data"]["status"]
    if status == "FAILED":
        raise RuntimeError(body.get("msg") or body)
    if status in ("SUCCESS", "COMPLETED"):
        break
    time.sleep(3)

for index, result in enumerate(body["data"].get("results", []), start=1):
    download = requests.get(result["url"], timeout=120)
    download.raise_for_status()
    suffix = result.get("file_type") or "bin"
    Path(f"result-{index}.{suffix}").write_bytes(download.content)

生产代码应设置总轮询截止时间、指数退避或服务端建议的重试间隔,并持久化 task_id,避免调用进程重启后遗失任务。

9. 错误处理

错误响应仍包含 code、msg 和可用于排障的 request_id;data 可能为空。不要只判断 HTTP 200,也要判断 code 和任务 status。

9.1 提交任务不可盲目重试

POST 提交发生网络错误、超时、EOF、HTTP 502 或 503 时,任务可能已经被 AutoDL 接受。此时自动重放可能生成重复任务并重复计费;不要仅因没有收到成功响应就盲目重试。

如果响应 code 为 SubmissionUnknown,保存 data.task_id,不要重新提交,并携带 task_id 与 request_id 联系支持或核对上游任务记录。如果错误响应没有任务 ID,也应先核对请求日志或联系支持再决定是否重新提交。GET 状态查询是只读操作,可以在 429、502 或 503 后退避重试。

HTTP场景建议
400workflow 字段、类型、长度、媒体格式或枚举无效修正请求,不要原样重试
401缺少或无效 API Key检查 Authorization,不要打印完整 Key
403Key 无权使用分组、workflow 或相关能力更换有权限的 Key 或联系管理员
404workflow 或 task_id 不存在检查路径和任务 ID
409任务状态或请求与现有任务冲突查询原任务状态后再决定是否提交
429请求频率、并发或队列受限退避后重试,并限制客户端并发
502AutoDL/ComfyUI 上游返回无效响应或网关失败POST 不可盲目重试;GET 可有限次数退避重试
503服务、计费、任务绑定或上游暂不可用POST 按上文核对结果;GET 可稍后重试

提交结果未知示例:

{
  "code": "SubmissionUnknown",
  "data": {
    "task_id": "task_example_unknown",
    "status": "SUBMISSION_UNKNOWN"
  },
  "msg": "upstream accepted the task but local ownership binding could not be persisted; retain task_id and contact support",
  "request_id": "req_example_unknown"
}

失败示例:

{
  "code": "InvalidRequest",
  "data": null,
  "msg": "resolution is not supported by this workflow",
  "request_id": "req_example_error"
}

10. OpenAPI

机器可读契约见 AUTODL_COMFYUI_OPENAPI.yaml。OpenAPI 中的 workflow ID、字段约束、状态、结果和错误响应与本文档保持一致。

On this page