登录
开发者文档

万相 3.0

阿里万相 3.0 的文生视频与图生视频 API:分辨率写在模型名里、按秒计费、首尾帧与参考图,经 POST /v1/videos 异步提交

POST /v1/videos,model 为 wan3.0-video-{480p,720p,1080p}(文生 / 图生)或 wan3.0-image-*(图生视频专用);prime 版为高速档。 分辨率写在模型名里,请求体里的 size / resolution 会被模型名覆盖。按秒计费,见视频生成。本页结论来自对本网关的真实调用,最后验证:2026-09-05。

万相 3.0 暂停供应

2026-10-31 起万相 3.0 暂时不可用,恢复时间未定。期间可以改用可灵 4.0,同样按秒计费,分辨率也写在模型名里。

基本调用

# 1. 提交
curl https://www.vibeapi.cn/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video-1080p",
    "prompt": "潘多拉魔盒开启的瞬间。昏暗石室中一只古老匣子微微开启,金色与暗色的光雾自缝隙翻涌而出,尘埃在光柱中悬浮,镜头极缓慢推近,电影级布光",
    "seconds": "5",
    "aspect_ratio": "16:9"
}'

# 2. 轮询(每 10~15 秒一次)
curl "https://www.vibeapi.cn/v1/videos/$TASK_ID" -H "Authorization: Bearer $API_KEY"

# 3. 取片
curl -L "https://www.vibeapi.cn/v1/videos/$TASK_ID/content" \
  -H "Authorization: Bearer $API_KEY" -o output.mp4
import time, requests

BASE = "https://www.vibeapi.cn/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}

task = requests.post(f"{BASE}/videos", headers=H, json={
    "model": "wan3.0-video-1080p",
    "prompt": "潘多拉魔盒开启的瞬间。昏暗石室中一只古老匣子微微开启,金色与暗色的光雾自缝隙翻涌而出,尘埃在光柱中悬浮,镜头极缓慢推近,电影级布光",
    "seconds": "5",
    "aspect_ratio": "16:9",
}).json()

while True:
    s = requests.get(f"{BASE}/videos/{task['id']}", headers=H).json()
    if s["status"] in ("completed", "failed"):
        break
    time.sleep(12)

if s["status"] == "completed":
    url = s.get("metadata", {}).get("url") or f"{BASE}/videos/{task['id']}/content"
    open("output.mp4", "wb").write(requests.get(url, headers=H).content)
import fs from "fs";

const BASE = "https://www.vibeapi.cn/v1";
const H = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

const task = await (await fetch(`${BASE}/videos`, {
  method: "POST",
  headers: H,
  body: JSON.stringify({
    model: "wan3.0-video-1080p",
    prompt: "潘多拉魔盒开启的瞬间。昏暗石室中一只古老匣子微微开启,金色与暗色的光雾自缝隙翻涌而出,尘埃在光柱中悬浮,镜头极缓慢推近,电影级布光",
    seconds: "5",
    aspect_ratio: "16:9",
  }),
})).json();

let s;
while (true) {
  s = await (await fetch(`${BASE}/videos/${task.id}`, { headers: H })).json();
  if (s.status === "completed" || s.status === "failed") break;
  await sleep(12_000);
}

if (s.status === "completed") {
  const url = s.metadata?.url ?? `${BASE}/videos/${task.id}/content`;
  fs.writeFileSync("output.mp4", Buffer.from(await (await fetch(url, { headers: H })).arrayBuffer()));
}
潘多拉魔盒 · wan3.0-video-1080p · 5 秒

型号怎么选

型号用途输出备注
wan3.0-video-{480p,720p,1080p}文生 / 图生832×480 / 1280×720 / 1920×1080暂不收参考视频
wan3.0-video-prime-*同上,高速版同上单价高约 20%,1–3 分钟出片
wan3.0-image-*图生专用,reference_images 必填同上三档不收参考视频
wan3.0-image-prime-*同上,高速版同上三档

三档分辨率与 prime

分辨率只由模型名决定,请求体里的 size 不生效;同一档的 prime 版本参数完全一样,只是更快、更贵。 纯文生视频用 wan3.0-video-*,不传任何参考素材:

{
  "model": "wan3.0-video-720p",
  "prompt": "一只猫在窗台上打盹,阳光缓缓移动,窗帘轻轻摆动",
  "seconds": "5",
  "aspect_ratio": "16:9"
}

参数

字段类型必填说明
modelstring是带分辨率后缀的模型名
promptstring是画面描述,可用「图1」「音频1」引用素材顺序
secondsstring建议输出时长,如 "10";也接受 duration 别名
sizestring否480P / 720P / 1080P,会被模型名后缀覆盖
aspect_ratiostring否16:9(默认)/ 9:16 / 1:1 / adaptive
reference_imagesobject[]否最多 10 张,用 role 指定用途
reference_videosobject[]否暂不支持,带了返回 400 reference_videos_unsupported
reference_audiosobject[]否参与生成,不计入秒数

seconds 请传字符串。所有 wan3.0 型号都只按输出时长计费。

图生视频

role 三个取值:reference_image(默认)、first_frame、last_frame。 素材必须是公网可直接下载的 HTTPS 地址。

curl https://www.vibeapi.cn/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-image-1080p",
    "prompt": "以参考图为首帧。火炬的火焰剧烈燃烧,火星向上飘散,背景云层缓慢翻涌,镜头极缓慢推进",
    "seconds": "5",
    "aspect_ratio": "16:9",
    "reference_images": [
      { "url": "https://your-cdn.example.com/prometheus.png", "role": "first_frame" }
    ]
  }'
普罗米修斯 · wan3.0-image-1080p · 参考图作首帧

多参考素材:首帧 + 参考图 + 参考音频

reference_images 里每一项都带 role,所以位置不重要、角色才重要:首帧和尾帧各只能一张, reference_image 可以多张。提示词里按素材在各自数组里的顺序叫「图1」「图2」「音频1」。 下面这条是 wan3.0-video-* 的完整形态。参考视频暂不支持,请求里不要带 reference_videos:

curl https://www.vibeapi.cn/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan3.0-video-720p",
    "prompt": "以图1为首帧。图2里的机器人从画面右侧走入,沿着街道走向镜头,动作节奏跟随音频1的鼓点;黄昏光线保持不变,镜头缓慢推进",
    "seconds": "8",
    "aspect_ratio": "16:9",
    "reference_images": [
      { "url": "https://your-cdn.example.com/street-dusk.png", "role": "first_frame" },
      { "url": "https://your-cdn.example.com/robot.png", "role": "reference_image" }
    ],
    "reference_audios": [
      { "url": "https://your-cdn.example.com/drums.mp3" }
    ]
  }'
  • 「图1」「图2」按 reference_images 的数组顺序数,与 role 无关;首帧不必排第一,但习惯上放第一。
  • 参考音频不计入计费秒数。
  • 带 reference_videos、或在 input.media 里放视频,都会返回 400 reference_videos_unsupported。
  • 要首尾帧插值就再加一项 {"url": ..., "role": "last_frame"};同一张图同时作首尾帧就是无缝循环的做法,见视频生成工作流。

已知限制(截至 2026-10-31)

限制说明怎么办
分辨率只认模型名size / resolution 传了会被模型名后缀覆盖,不报错换分辨率就换模型名
暂停供应2026-10-31 起暂时不可用,恢复时间未定改用可灵 4.0
暂不收参考视频带 reference_videos 或 input.media 里的视频返回 400 reference_videos_unsupported去掉参考视频;要参考动作可以先截一帧作参考图
1080p 成片很大15 秒 1080p 通常 40–230 MB,码率高做网页背景先转码;下载超时按 3 分钟设
wan3.0-image-* 收不收参考音频未验证传了不会在提交阶段被拒,可能到异步阶段才 failed(全额退款)需要音频参考走 wan3.0-video-*
首尾帧与参考图规则首帧、尾帧各只能一张;adaptive 画幅要带图或视频才可用见图生视频
出片时间普通版 3–8 分钟,prime 1–3 分钟轮询超时按 20 分钟设

商业方向样片

所有底图都是用 gpt-image-2.5-sunburst 出的(横版 2560×1440、竖版 1440×2560), 再作为首帧 / 参考图交给本页模型,提示词只写运镜与动态。成片保留原始音轨。

汽车、地产这类需要 1080p 的方向用 wan3.0-video-1080p / wan3.0-image-prime-1080p; 竖版短视频用 720p 档就够,5 秒一条 1–3 分钟出片。

汽车 · 海岸公路 · wan3.0-video-1080p · 8 s
地产 · 黄昏别墅 · wan3.0-image-prime-1080p · 8 s
饮品 · 冰块入杯 · wan3.0-video-720p · 5 s
饮品 · 气泡上升 · wan3.0-image-720p · 5 s

最后更新于