万相 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.mp4import 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-{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"
}参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 带分辨率后缀的模型名 |
prompt | string | 是 | 画面描述,可用「图1」「音频1」引用素材顺序 |
seconds | string | 建议 | 输出时长,如 "10";也接受 duration 别名 |
size | string | 否 | 480P / 720P / 1080P,会被模型名后缀覆盖 |
aspect_ratio | string | 否 | 16:9(默认)/ 9:16 / 1:1 / adaptive |
reference_images | object[] | 否 | 最多 10 张,用 role 指定用途 |
reference_videos | object[] | 否 | 暂不支持,带了返回 400 reference_videos_unsupported |
reference_audios | object[] | 否 | 参与生成,不计入秒数 |
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" }
]
}'多参考素材:首帧 + 参考图 + 参考音频
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里放视频,都会返回 400reference_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 分钟出片。
最后更新于