Wan3.0 视频生成
Wan3.0(wan3.0-video)是阿里通义万相 Wan3.0 视频生成模型,支持文生视频、图生视频(首帧 / 参考图)、视频参考与视频编辑等多种用法,最长 30 秒,输出帧率 30fps。调用走统一 POST /v1/videos 接口,返回 OpenAI Video 风格(id / status / metadata.url),与其它视频模型共享同一套任务轮询机制。
计费方式
Wan3.0 按**实际生成时长(秒)**计费,单价与分辨率档位挂钩(480P / 720P / 1080P 三档单价不同)。具体单价与计费表达式以控制台「模型广场」对应模型卡片展示为准(文档不展示实时价格)。
端点
- 创建任务:
POST $URL/v1/videos - 查询任务:
GET $URL/v1/videos/{task_id}
兼容入口
同时支持 OpenAI Sora 风格别名:POST $URL/v1/video/generations、GET $URL/v1/video/generations/{task_id},二者等价。
支持模型
| 模型名称 | 定位 | 支持分辨率 |
|---|---|---|
wan3.0-video | 标准版,全能参考生成 | 480P / 720P / 1080P |
wan3.0-video-prime | 高速版,端到端速度显著提升,能力对齐标准版 | 480P / 720P / 1080P |
同一个模型名下通过请求参数
size区分分辨率档位(见下方「主要参数」)。
主要参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | wan3.0-video / wan3.0-video-prime |
prompt | string | 是 | 视频内容描述,建议包含主体、动作、场景、镜头 |
size | string | 否 | 分辨率档位:480p / 720p / 1080p,默认 1080P |
seconds | string | 否 | 输出视频时长(秒),如 "5"、"10";无视频输入时范围 2–30,传 "-1" 为智能时长 |
image | string | 否 | 参考图片 URL(单张,作为首帧生成图生视频) |
images | array | 否 | 参考图片 URL 数组(多图参考生成) |
input_reference | string | 否 | 参考 / 待编辑视频的 URL,用于视频参考生成或视频编辑 |
metadata.resolution | string | 否 | 高级覆盖:直接指定上游分辨率 480P / 720P / 1080P |
metadata.duration | number | 否 | 覆盖输出时长(秒) |
metadata.seed | integer | 否 | 随机种子,用于复现 |
参考素材说明
支持直接传公网可访问的图片 / 视频 URL(上游服务端会自行拉取,内网或本地地址会失败)。Wan3.0 不提供独立素材库,请用 URL 方式传入参考素材。
请求示例
文生视频
# 1. 创建视频任务(720P,5 秒)
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"prompt": "一只戴着墨镜的猫走在霓虹灯街道上,赛博朋克风格,镜头缓慢推进",
"seconds": "5",
"size": "720p"
}'
# 2. 查询任务状态(替换 {task_id} 为上一步返回的 id)
curl $URL/v1/videos/{task_id} \
-H "Authorization: Bearer $YOUR_API_KEY"import time
import requests
url = "$URL/v1/videos"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"model": "wan3.0-video",
"prompt": "一只戴着墨镜的猫走在霓虹灯街道上,赛博朋克风格",
"seconds": "5",
"size": "720p",
}
task = requests.post(url, json=payload, headers=headers).json()
task_id = task["id"]
while True:
result = requests.get(f"{url}/{task_id}", headers=headers).json()
if result["status"] in ("completed", "failed"):
break
time.sleep(8)
print(result)图生视频(首帧)
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"prompt": "让画面中的人物转身走向镜头",
"image": "https://example.com/ref.png",
"seconds": "5",
"size": "1080p"
}'视频参考 / 视频编辑
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"prompt": "将整个画面转换为黏土风格",
"input_reference": "https://example.com/clip.mp4",
"seconds": "5",
"size": "720p"
}'高速版(prime)
把 model 换成 wan3.0-video-prime 即可,其余参数完全相同:
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video-prime",
"prompt": "海浪拍打礁石,慢镜头,电影质感",
"seconds": "5",
"size": "1080p"
}'响应字段
创建任务与查询任务返回同一结构(OpenAI Video 风格):
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务 ID |
status | string | 任务状态(见下方状态说明) |
metadata.url | string | 生成完成后的视频地址(仅 completed 时返回) |
progress | integer | 生成进度,0~100 |
completed_at | integer | 完成时间戳(秒,仅 completed 时返回) |
error.message | string | 失败原因(仅 failed 时返回) |
任务状态
| 状态 | 含义 | 处理建议 |
|---|---|---|
queued | 排队中 | 继续轮询 |
in_progress | 生成中 | 继续轮询 |
completed | 生成成功 | 从 metadata.url 获取视频地址,请尽快下载保存 |
failed | 生成失败 | 查看 error.message |
建议轮询间隔 5~10 秒
任务完成后请尽快下载转存:视频地址有时效性,过期后无法再访问。
响应示例
{
"id": "task_xxxxxxxx",
"status": "in_progress",
"progress": 30
}完成后:
{
"id": "task_xxxxxxxx",
"status": "completed",
"progress": 100,
"metadata": {
"url": "https://cdn.example.com/.../result.mp4"
},
"completed_at": 1786431715
}常见问题
Q: 提示词怎么写效果更好?
建议包含四个要素:主体(谁/什么)、动作(在做什么)、场景(在哪里)、镜头(怎么拍,如推进/环绕/俯拍)。避免过于抽象的描述。
Q: 任务大概多久完成?
与时长和分辨率相关,720P 5 秒通常在 1~3 分钟内完成,1080P 会更久。请通过轮询查询接口获取最终状态;任务超过 20 分钟未完成会自动置为失败。
Q: 生成的视频链接会过期吗?
会。视频地址有时效性,生成完成后请尽快下载转存到自己的存储。
Q: 支持素材库吗?
Wan3.0 不提供独立素材库,请使用公网可访问的图片/视频 URL 作为参考图或参考视频(见上文「主要参数」的 image / images / input_reference)。
