无限扩散 · 发布与核对日期

视频生成 API 如何轮询任务、下载结果并避免重复提交

视频生成是异步任务:提交一次后保存本站任务 ID,用 GET /v1/videos/{id} 查询;状态为 completed 时下载,failed 时检查错误和任务日志。查询失败或本地等待超时,都不代表应重新提交生成请求。

统一 V1 的任务流程

  1. 使用 POST /v1/videos 提交一次任务,记录返回的 id,成功提交可能产生费用。
  2. 使用同一本站密钥和 ID 查询 GET /v1/videos/{id},建议至少间隔 30 秒。
  3. 成功后下载 GET /v1/videos/{id}/content,将结果保存到自己的存储。

四种视频状态分别怎么处理?

status含义客户端处理
queued排队中继续查询原任务
in_progress生成中继续查询,降低并发
completed生成成功下载并保存视频
failed生成失败检查 error、任务日志及退款明细

这些状态适用于统一 V1 视频接口。旧接口可能使用不同的状态字段;图片接口通常直接返回 data[].url,不能套用这段视频轮询流程。

Python:只轮询已有任务

把密钥和已创建的任务 ID 放入服务端环境变量 WXKS_API_KEY、WXKS_TASK_ID。下面的 20 分钟是示例的本地等待上限,不是服务承诺的完成时间。

import json, os, time
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError

# 此示例只查询一个已经创建的任务,不提交生成任务。
task_id = os.environ["WXKS_TASK_ID"]
api_key = os.environ["WXKS_API_KEY"]
url = "https://api.wxksai.com/v1/videos/" + task_id
deadline = time.monotonic() + 20 * 60
while time.monotonic() < deadline:
    request = Request(url, headers={"Authorization": "Bearer " + api_key})
    try:
        with urlopen(request, timeout=30) as response:
            task = json.load(response)
    except HTTPError as error:
        if error.code not in (429, 500, 502, 503, 504):
            raise
        time.sleep(30)  # 查询暂时失败,继续查询原任务
        continue
    except (URLError, TimeoutError):
        time.sleep(30)
        continue
    state = task.get("status")
    if state == "completed":
        print("任务完成:", task_id)
        break
    if state == "failed":
        raise RuntimeError(task.get("error") or "任务失败,请查看任务日志")
    if state not in ("queued", "in_progress"):
        raise RuntimeError("未知状态,请保存任务 ID 并检查响应")
    time.sleep(30)
else:
    raise TimeoutError("本地等待结束,请保留任务 ID 后续查询,不要重新提交")

生成成功后如何下载?

下载使用原任务 ID 和同一个本站密钥;不要把下载失败处理成重新生成。结果地址可能有时效,应尽快存入自己的存储。

curl -L -o result.mp4 'https://api.wxksai.com/v1/videos/你的任务ID/content' \
  -H "Authorization: Bearer $WXKS_API_KEY"

提交超时、查询报错和生成失败有何区别?

不要假定传入 Idempotency-Key 就一定会去重。将任务 ID 与自己的业务单号持久保存,有助于避免因客户端重启造成重复付费。

资料来源与核对范围

本文依据本站当前公开 API 文档、公开模型计费配置及模型广场整理,核对日期为 2026-11-02。示例说明接入方法;规格、价格、密钥权限和实时可用性以调用时配置及账户记录为准。