HiAPI
博客

使用指南

使用 wan2.7-video/text-to-video@pro 制作短视频:端到端 hiapi API 工作流

2026年11月3日
使用 wan2.7-video/text-to-video@pro 制作短视频:端到端 hiapi API 工作流

短视频的成败取决于迭代速度:你需要大量候选片段,竖屏格式,带声音,而且要快。本指南正是围绕这一点展开,使用 hiapi 上的 wan2.7-video/text-to-video@pro——阿里巴巴通义万相 2.7 文生视频模型,最高输出 1080P、原生音频、片段最长 15 秒。下文中的每个请求结构、参数边界和错误信息,都是撰写本文时针对线上 API 实际运行验证过的,文中嵌入的两段演示片段也由所示代码原样生成。

模型能给你什么

wan2.7-video/text-to-video@pro 通过 hiapi 的统一异步任务端点(/v1/tasks)提供服务。关键特性,已对照线上 schema 验证:

  • 输出:H.264 MP4,最高 1080P,带原生 AAC 音轨——模型会根据你的提示词生成环境声和音效,无需单独的音频步骤。
  • 时长:每段 2–15 秒(整数秒)。
  • 宽高比:16:9、9:16、1:1、4:3、3:4——真正竖屏 9:16,适配 Shorts/Reels/TikTok 类格式,无需裁剪。
  • 计费:按输出视频秒数计费,撰写时起价 $0.167/秒——5 秒 1080P 片段约 $0.84。批量生成前请务必在定价页面确认。

视频没有同步模式:你需要创建任务、轮询直到完成,然后下载结果。

最小可运行示例(curl)

创建任务:

curl -X POST "https://api.hiapi.ai/v1/tasks" \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan2.7-video/text-to-video@pro",
    "input": {
      "prompt": "微距棚拍:一滴宝蓝色墨水落入清水中,慢动作绽放,墨丝舒展成云朵形状,背景为明亮的白色无缝背景,清晰的高调布光,轻柔的环境嗡鸣",
      "ratio": "16:9",
      "resolution": "1080P",
      "duration": 4
    }
  }'

响应:

{"code": 200, "data": {"taskId": "tk-hiapi-01KWGGS29FDZ8NRJW49YRQZ65R"}, "message": "success"}

轮询结果:

curl "https://api.hiapi.ai/v1/tasks/tk-hiapi-01KWGGS29FDZ8NRJW49YRQZ65R" \
  -H "Authorization: Bearer sk-YOUR_KEY"

渲染期间,data.status 为 handling;完成后会变为 success,data.output[0].url 中即包含 MP4。该请求原样生成了此片段:

⚠️ 输出 URL 是带 expireAt 时间戳的临时链接。任务成功后请立即将文件下载到你自己的存储——不要直接热链或存入数据库。

完整输入 schema(已对照线上 API 验证)

API 会严格校验 input 并拒绝未知字段,以下是完整可接受的字段列表——直接针对端点探测所得,而非从任何地方复制:

字段 类型 约束 是否必填
prompt string 场景描述;同时驱动生成的音频 ✅
ratio string 16:9、9:16、1:1、4:3、3:4 之一 可选
resolution string 720P 或 1080P 可选
duration integer 2–15(秒) 可选
negative_prompt string 需要抑制的内容(如 水印、文字叠加) 可选
seed integer 重试间可复现 可选
watermark boolean 切换服务商水印 可选

两个能帮你避免 400 的坑:

  • 字段名是 ratio,不是 aspect_ratio——hiapi 上的图像模型使用 aspect_ratio,此视频模型不用。发送 aspect_ratio 会返回 additional properties 'aspect_ratio' not allowed。
  • duration 在服务端校验:duration: minimum: got 1, want 2 和 maximum: got 999, want 15 就是超出 2–15 范围时得到的确切错误。

端到端 Python:输入提示词,输出可发布 MP4

这是完整工作流——创建、轮询、下载——无需 SDK,只用 requests:

import time
import requests

API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": "Bearer sk-YOUR_KEY", "Content-Type": "application/json"}

def make_short(prompt: str, out_path: str, duration: int = 5,
               ratio: str = "9:16", seed: int | None = None) -> str:
    payload = {
        "model": "wan2.7-video/text-to-video@pro",
        "input": {
            "prompt": prompt,
            "ratio": ratio,               # 9:16 = 竖屏短视频
            "resolution": "1080P",
            "duration": duration,          # 2..15 秒
            "negative_prompt": "文字叠加, 水印, 扭曲的手",
        },
    }
    if seed is not None:
        payload["input"]["seed"] = seed

    task_id = requests.post(API, headers=HEADERS, json=payload).json()["data"]["taskId"]

    while True:
        task = requests.get(f"{API}/{task_id}", headers=HEADERS).json()["data"]
        if task["status"] == "success":
            break
        if task["status"] == "fail":
            raise RuntimeError(f"task failed: {task.get('error')}")
        time.sleep(10)

    video_url = task["output"][0]["url"]   # 临时链接——请立即下载
    with open(out_path, "wb") as f:
        f.write(requests.get(video_url, timeout=120).content)
    return out_path

make_short(
    "黄金时刻手持竖屏夜市镜头:一位街头小吃摊主 "
    "在火焰翻腾的炒锅中颠炒滋滋作响的面条,蒸汽和橙色火星向 "
    "镜头旋转飘来,霓虹招牌在虚化背景中透出柔和的粉色和青色,浅 "
    "景深,充满动感的手持纪实感,伴有滋滋声和噼啪声",
    "night-market.mp4",
    duration=5,
    seed=20260702,
)

以下是该调用实际生成的片段——竖屏 1080×1920,5 秒,滋滋声由提示词文本生成:

在我的运行中,4 秒 16:9 片段大约 3 分钟完成,5 秒 9:16 片段稍长一些——每段预留几分钟,每约 10 秒轮询一次,不要猛打端点。

短视频提示词技巧:运动和音频都由提示词决定

schema 中没有镜头控制或运动参数——所有关于运动、节奏和声音的内容都通过提示词语言来引导。在我的测试中有效的做法:

  • 明确点名镜头行为:如 "handheld"(手持)、"slow push-in"(缓慢推近)、"macro"(微距)、"shallow depth of field"(浅景深)。夜市片段的纪实晃动完全来自 "handheld" 一词。
  • 描述你想要的音频:模型会根据提示词生成声音。"sizzling and crackling sounds"(滋滋声和噼啪声)和 "gentle ambient hum"(轻柔的环境嗡鸣)都出现在了输出音轨中。
  • 把钩子前置:对于短视频,第一秒决定一切。把最有动感的元素(火焰颠锅、墨滴入水)放在提示词描述的开头。
  • 防御性地使用 negative_prompt:"text overlay, watermark, distorted hands"(文字叠加、水印、扭曲的手)能在不影响主提示词的情况下清理最常见的瑕疵。
  • 迭代时固定 seed:固定 seed,一次只改一个提示词短语,观察该短语实际起什么作用。

需要首帧控制?使用图生视频变体

如果你的工作流从设计好的关键帧开始——产品图、品牌风格的首帧——文生视频不接受图像输入。配套模型 wan2.7-video/image-to-video@pro 可以:它接受 {"url": "...", "type": "image"} 对象组成的 media 数组,并搭配相同的 prompt / resolution / duration 字段,为你提供的帧做动画,而不是凭空生成一帧。同样是基于任务的流程,同样按秒计费。一条实用流水线:用图像模型生成静帧,审核通过后再对已批准的帧做动画——这样你只为已经签核的帧花费视频生成费用。

常见错误及其实际含义

  • invalid input: prompt: missing required field "prompt"——prompt 是唯一必填字段。
  • invalid input: ratio: value must be one of '16:9', '9:16', '1:1', '4:3', '3:4'——你传入了模型不支持的宽高比(或拼错了)。
  • invalid input: <root>: additional properties '...' not allowed——未知字段;schema 很严格,请检查上表。
  • status: "fail" 且带 TASK_FAILED——任务在创建后失败;创建新任务(复用你的 seed 以保持可复现)。
  • 下载的文件很小或无法播放——你很可能抓取了已过期的输出 URL。重新检查 expireAt,并在 success 后立即下载。

总结

一次 POST、一个轮询循环、一次下载——这就是从文本提示词到可发布带声竖屏 MP4 的全部距离。如果你要构建短视频流水线,从控制台获取 API key,以上面的 Python 函数起步,并浏览模型目录的其余部分——相同的 /v1/tasks 模式(如我们的 seedance-2.0-fast 指南所示)适用于平台上所有视频模型,因此之后换模型只需改一行。

立即开始构建持久 AI 产物

获取 API 密钥,通过一个基于任务(task)的 API 调用图像、视频和音频模型。

阅读 API 文档