Wan 3.0 视频 API
模型介绍
万相 Wan 3.0 支持文本、首帧或首尾帧图片,以及图像、视频、音频等参考素材输入,也可以根据文件或网页内容生成视频。通过同一个接口即可完成文生视频、图生视频和参考生视频。
| 模型 | 说明 |
|---|---|
wan3.0-video | 标准版 |
wan3.0-video-prime | 高速版,与标准版使用相同的请求格式,生成速度更快 |
视频生成采用异步调用:先创建任务,保存 output.task_id,再查询任务状态,成功后从 output.video_url 获取视频。
API 概览
| 项目 | 值 |
|---|---|
| Base URL | https://api.exchangetoken.ai |
| 创建任务 | POST /api/v1/services/aigc/video-generation/video-synthesis |
| 查询任务 | GET /api/v1/tasks/{task_id} |
| 鉴权 | Authorization: Bearer YOUR_API_KEY |
| 创建请求格式 | Content-Type: application/json |
YOUR_API_KEY 使用在 Exchange Token 控制台 创建的 API Key。创建和查询任务请使用同一个 API Key。
创建视频生成任务
POST https://api.exchangetoken.ai/api/v1/services/aigc/video-generation/video-synthesis请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | wan3.0-video 或 wan3.0-video-prime |
input | object | 是 | 输入内容;prompt 和 media 至少提供一项 |
input.prompt | string | 条件必填 | 描述视频内容、动作、镜头或声音的提示词 |
input.media | object[] | 条件必填 | 素材数组,每项包含 type 和 url |
parameters | object | 否 | 生成参数,见下表 |
生成参数
以下字段均放在 parameters 对象中。
以下取值和默认值说明百炼的参数约定,具体合法性由上游校验。Exchange Token 保留模型路由权限与计费配置检查。
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
resolution | string | 1080P | 480P、720P 或 1080P,注意使用大写 P |
duration | integer | 5 | 输出秒数,取 2–30 的整数;-1 表示智能时长 |
ratio | string | adaptive | adaptive、21:9、16:9、4:3、1:1、3:4 或 9:16 |
audio | boolean | true | 是否生成声音 |
prompt_extend | boolean | true | 是否智能改写提示词;使用 file 或 link 时必须为 true |
seed | integer | -1 | -1 为随机种子,也可指定 0–2147483647;不保证完全复现 |
watermark | boolean | false | 是否添加水印 |
有参考视频时,输入视频总时长与输出视频时长之和不得超过 30 秒。智能时长模式的实际输出以查询结果为准。
素材与生成场景
| 场景 | input.media 中的 type | 说明 |
|---|---|---|
| 文生视频 | 不传 media | 通过 input.prompt 描述视频 |
| 首帧图生视频 | first_frame | 一张首帧图片 |
| 首尾帧图生视频 | first_frame + last_frame | 首帧、尾帧各一张图片 |
| 参考生视频 | reference_image、reference_video、reference_audio | 可以组合参考图片、视频和音频 |
| 文件或网页生视频 | file 或 link | 两者二选一,可搭配参考素材;开启 prompt_extend |
首帧、首尾帧模式不能与参考素材、文件或网页混用。素材 url 建议使用无需登录即可访问的 HTTP(S) 地址;图片也支持 Base64 Data URL。文件格式、大小、数量和时长限制请参见百炼官方媒体参数说明。
文生视频示例
将 YOUR_API_KEY 替换为自己的 Exchange Token API Key。以下示例生成一段 5 秒、720P、有声音的视频。
curl -sS -X POST "https://api.exchangetoken.ai/api/v1/services/aigc/video-generation/video-synthesis" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"input": {
"prompt": "清晨的海边,一艘白色帆船缓缓驶过,镜头平稳跟随,阳光照亮海面,伴随轻柔的海浪声。"
},
"parameters": {
"resolution": "720P",
"duration": 5,
"ratio": "16:9",
"audio": true
}
}'使用高速版时,将 model 改为 wan3.0-video-prime 即可。
首尾帧图生视频示例
将示例中的 https://example.com/... 替换为符合媒体限制、可公开访问的真实素材地址。仅需要首帧时,删除 last_frame 项。
curl -sS -X POST "https://api.exchangetoken.ai/api/v1/services/aigc/video-generation/video-synthesis" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"input": {
"prompt": "镜头缓缓推进,花苞逐渐绽放,自然过渡到尾帧中盛开的花朵。",
"media": [
{"type": "first_frame", "url": "https://example.com/first-frame.jpg"},
{"type": "last_frame", "url": "https://example.com/last-frame.jpg"}
]
},
"parameters": {
"resolution": "720P",
"duration": 5,
"ratio": "adaptive"
}
}'参考生视频示例
本例通过参考图片、视频和音频引导生成。提示词中的“图1”“视频1”“音频1”分别对应各类型素材在数组中的顺序。
curl -sS -X POST "https://api.exchangetoken.ai/api/v1/services/aigc/video-generation/video-synthesis" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video-prime",
"input": {
"prompt": "让图1中的人物参考视频1中的动作表演,声音参考音频1,保持人物外观一致。",
"media": [
{"type": "reference_image", "url": "https://example.com/character.jpg"},
{"type": "reference_video", "url": "https://example.com/motion.mp4"},
{"type": "reference_audio", "url": "https://example.com/voice.mp3"}
]
},
"parameters": {
"resolution": "720P",
"duration": 5,
"ratio": "16:9",
"audio": true
}
}'创建响应
{
"output": {
"task_id": "sg_vid_xxxxxxxxxxxxxxxx",
"task_status": "PENDING"
},
"request_id": "request_xxxxxxxxxxxxxxxx"
}保存 output.task_id 并进入查询流程。request_id 用于排查请求问题,不能代替任务 ID。获得任务 ID 后,重复提交创建请求会生成新的任务,应查询已有任务。
查询任务与获取结果
将路径中的 ID 替换为创建响应的 output.task_id,并使用创建任务时的 API Key。
curl -sS "https://api.exchangetoken.ai/api/v1/tasks/sg_vid_xxxxxxxxxxxxxxxx" \
-H "Authorization: Bearer YOUR_API_KEY"建议每 15 秒查询一次,并设置应用侧等待上限。仍处于 PENDING 或 RUNNING 时继续查询;达到等待上限后可保留任务 ID,稍后恢复查询。
任务状态
output.task_status | 含义与处理方式 |
|---|---|
PENDING | 排队中,继续查询 |
RUNNING | 生成中,继续查询 |
SUCCEEDED | 已成功,从 output.video_url 获取视频 |
FAILED | 已失败,查看 output.code(若有)和 output.message |
CANCELED | 任务已取消,停止轮询 |
UNKNOWN | 上游报告任务不存在或状态未知,停止轮询并排查 |
查询返回 HTTP 200 只表示查询成功,仍需检查 output.task_status 才能判断视频是否生成成功。
成功响应示例
以下示例包含 2.25 秒输入参考视频和 5 秒输出视频。
{
"request_id": "request_xxxxxxxxxxxxxxxx",
"output": {
"task_id": "sg_vid_xxxxxxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://example.com/generated-video.mp4"
},
"usage": {
"video_count": 1,
"duration": 7.25,
"input_video_duration": 2.25,
"output_video_duration": 5,
"SR": 720,
"fps": 30,
"ratio": "16:9"
}
}响应还可能包含 output.submit_time、output.scheduled_time、output.end_time 和 output.orig_prompt。视频地址是临时下载链接,请在成功后及时下载或转存。
用量与计费
成功结果中的 usage 描述实际视频用量;任务尚未完成时,用量可能尚不可用。
| 字段 | 说明 |
|---|---|
usage.video_count | 生成视频数量 |
usage.duration | 总计费秒数,包含输入参考视频和输出视频的时长,支持小数 |
usage.input_video_duration | 输入参考视频时长,无参考视频时为 0 |
usage.output_video_duration | 实际输出视频时长 |
usage.SR | 实际分辨率档位,如 480、720 或 1080;字段名为大写 |
usage.fps | 输出帧率 |
usage.ratio | 输出宽高比 |
仅成功任务计费,查询任务不会新增生成费用。费用按所选模型、实际分辨率和 usage.duration 计算;开启或关闭声音不改变单价。不要使用请求中的 parameters.duration 代替实际计费时长,也不要在 usage.duration 上再次累加输入视频时长。上例的总计费时长为 7.25 秒。
任务失败示例
{
"output": {
"task_id": "sg_vid_xxxxxxxxxxxxxxxx",
"task_status": "FAILED",
"message": "Video generation failed."
}
}失败详情位于 output 中;平台或上游提供具体错误码时还会返回 output.code。
请求错误
平台校验错误
Exchange Token 自身产生的错误,例如平台 API Key 无效、余额不足或缺少匹配的计费配置,使用以下格式。下面是 HTTP 503 的计费配置错误示例:
{
"error": {
"type": "billing_unavailable",
"message": "media billing configuration unavailable for routed model"
}
}遇到 HTTP 404 时,请检查任务 ID 是否完整,以及是否使用了创建该任务的 API Key;遇到参数错误时,请检查模型名、分辨率大小写、时长和素材组合。
上游拒绝创建任务
当前 Wan 3.0 创建接口也会将百炼的请求错误包装为 error 对象:上游 code 映射为 error.type,上游 message 映射为 error.message。例如百炼返回限流错误时,客户端收到的响应形如:
{
"error": {
"type": "Throttling",
"message": "rate limited"
}
}上游返回非 2xx 时保留其 HTTP 状态码;如果上游返回 2xx,但响应体包含错误码,则返回 HTTP 502。缺少可解析的错误字段时使用平台默认错误说明。上游的 request_id 等其他顶层字段不会原样透传到这一错误响应中。
这与任务已创建后的生成失败不同:生成失败通过查询响应的 output.task_status、output.code 和 output.message 表达,见上文“任务失败示例”。
参考文档
模型参数与素材限制参考百炼 Wan 3.0 官方 API 文档。通过 Exchange Token 接入时,请使用本页的域名、平台 API Key 和任务查询方式。
