模型与成本

视频生成 API 接入教程:异步任务、轮询与结果验收

讲清视频生成 API 的任务创建、状态轮询、超时与幂等、结果下载、质量评测和成本记录,避免重复任务和无上限等待。

更新于 2026-07-15已核对 2026-07-15预计阅读 11 分钟适用于 文生视频、图生视频和异步媒体生成任务
配置字段已按公开文档核对;模型、价格和可用能力会变化,请以控制台与接口实时返回为准。

视频生成通常不是一次 HTTP 请求等待到文件返回,而是“创建任务、查询状态、下载结果”的异步流程。接入时如果没有保存任务 ID、限制轮询和处理幂等,很容易重复扣费或生成重复视频。

先确认接口形态

从当前模型页面和 API 文档确认:

  1. 模型支持文生视频、图生视频还是视频编辑。
  2. 创建任务需要哪些输入和上传方式。
  3. 是否返回任务 ID。
  4. 查询状态和下载结果使用什么端点。
  5. 时长、分辨率、宽高比、音频等参数是否支持。

查看当前视频模型与价格。不要把其他平台的请求字段默认套到当前模型。

正确的任务状态机

应用至少处理这些状态:

created -> queued -> running -> succeeded
                         \-> failed
                         \-> cancelled
客户端观察时间超过上限 -> timed_out(应用侧状态)

服务端任务可能仍在运行,即使客户端已经超时。重新创建任务前,应先用原任务 ID 查询,避免把“查询超时”误判成“任务不存在”。

通用接入骨架

端点和字段必须从当前 API 文档复制。下面只展示应用结构:

import time

CREATE_URL = "从文档复制的任务创建端点"
STATUS_URL_TEMPLATE = "从文档复制的状态查询端点,包含任务ID占位符"

def create_video_task(payload):
    response = authenticated_post(CREATE_URL, payload, timeout=30)
    return response["task_id"]

def wait_for_video(task_id, max_wait_seconds=600):
    deadline = time.monotonic() + max_wait_seconds
    interval = 3

    while time.monotonic() < deadline:
        result = authenticated_get(
            STATUS_URL_TEMPLATE.replace("{task_id}", task_id),
            timeout=20,
        )
        if result["status"] == "succeeded":
            return result
        if result["status"] in {"failed", "cancelled"}:
            raise RuntimeError(result)
        time.sleep(interval)
        interval = min(interval + 2, 15)

    raise TimeoutError(f"task {task_id} is still not finished")

authenticated_postauthenticated_get 代表你自己的 HTTP 封装。示例不假设 AI快站当前视频接口一定使用 task_id 或这些状态名称,应按真实响应映射。

幂等和重复任务

为每个业务任务生成自己的唯一 ID,并保存:

  • 业务任务 ID。
  • 上游任务 ID。
  • 请求模型和关键参数。
  • 创建时间和最后查询时间。
  • 当前状态和结果地址。
  • 已尝试次数。

当用户刷新页面或队列消费者重启时,先查询已有任务,不要直接再次创建。只有当前接口明确支持幂等键时,才把业务 ID 放入对应请求头或字段。

轮询不要这样写

以下做法会增加故障和成本:

  • 每秒无限轮询。
  • 遇到所有 4xx、5xx 都立即重试。
  • 客户端超时后直接创建新任务。
  • 不保存任务 ID,只把任务放在内存中。
  • 结果下载失败就重新生成视频。

推荐区分创建超时、状态查询超时、任务失败和结果下载失败。下载失败通常只需要重试下载,不需要重新生成。

如何验收视频质量

固定提示词、参考图和受支持参数,分别检查:

维度 记录方式
指令完成 主体、动作、镜头和场景是否出现
时间一致性 人物、服装、物体在连续帧中是否稳定
运动质量 动作是否自然、是否出现跳变或穿模
画面质量 清晰度、压缩、闪烁和水印情况
任务性能 排队时间、生成时间、失败率和下载时间
完整成本 成功任务、失败任务和重复任务的总费用

先用较短时长和较低成本配置验证构图及动作,再提高正式输出规格。不要只比较一条成功样片。

结果保存与过期

如果返回临时下载地址:

  1. 生成成功后立即下载到自己的对象存储。
  2. 校验状态码、Content-Type、文件大小和视频时长。
  3. 保存上游任务 ID与自己的存储地址。
  4. 下载失败只重试下载,达到上限后告警。

不要把临时 URL 直接发给长期用户,也不要在日志中保存包含签名参数的完整下载地址。

常见错误

创建成功但一直 queued

记录模型、任务 ID、创建时间和查询响应。检查模型维护、队列状态、账号额度和并发限制,不要持续提高轮询频率。

状态查询返回 404

确认任务 ID、状态端点和账号是否一致。部分任务查询路径与创建路径不在同一前缀下,不能自行拼接。

图生视频输入失败

检查图片格式、大小、可访问性和上传方式。外部图片 URL 可能因防盗链、过期或访问权限导致服务端无法读取。

视频生成成功但下载失败

把生成和下载视为两个阶段。保存原任务 ID,重新获取或重试结果地址,不要立即重新创建生成任务。

上线前检查

  • 任务创建、查询和结果端点均来自当前文档。
  • 业务任务 ID 与上游任务 ID 已持久化。
  • 轮询间隔、总等待时间和重试次数都有上限。
  • 查询超时不会自动重复创建任务。
  • 临时结果会转存并校验文件。
  • 固定题集覆盖动作、人物和镜头失败案例。
  • 成本统计包含失败与重复任务。

继续阅读大模型 API 成本估算生产上线检查清单,把媒体任务纳入队列、告警和预算保护。

VERIFIED SOURCES

参考与核对来源

准备开始调用?

创建 API Key,按本文配置直接验证

注册后可在控制台查看可用模型、用量和请求记录。

注册使用 查看 API 文档