Skip to content

Wan 3.0 视频 API ​

模型介绍 ​

万相 Wan 3.0 支持文本、首帧或首尾帧图片,以及图像、视频、音频等参考素材输入,也可以根据文件或网页内容生成视频。通过同一个接口即可完成文生视频、图生视频和参考生视频。

模型说明
wan3.0-video标准版
wan3.0-video-prime高速版,与标准版使用相同的请求格式,生成速度更快

视频生成采用异步调用:先创建任务,保存 output.task_id,再查询任务状态,成功后从 output.video_url 获取视频。

API 概览 ​

项目值
Base URLhttps://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。

创建视频生成任务 ​

http
POST https://api.exchangetoken.ai/api/v1/services/aigc/video-generation/video-synthesis

请求字段 ​

字段类型必填说明
modelstring是wan3.0-video 或 wan3.0-video-prime
inputobject是输入内容;prompt 和 media 至少提供一项
input.promptstring条件必填描述视频内容、动作、镜头或声音的提示词
input.mediaobject[]条件必填素材数组,每项包含 type 和 url
parametersobject否生成参数,见下表

生成参数 ​

以下字段均放在 parameters 对象中。

以下取值和默认值说明百炼的参数约定,具体合法性由上游校验。Exchange Token 保留模型路由权限与计费配置检查。

字段类型默认值说明
resolutionstring1080P480P、720P 或 1080P,注意使用大写 P
durationinteger5输出秒数,取 2–30 的整数;-1 表示智能时长
ratiostringadaptiveadaptive、21:9、16:9、4:3、1:1、3:4 或 9:16
audiobooleantrue是否生成声音
prompt_extendbooleantrue是否智能改写提示词;使用 file 或 link 时必须为 true
seedinteger-1-1 为随机种子,也可指定 0–2147483647;不保证完全复现
watermarkbooleanfalse是否添加水印

有参考视频时,输入视频总时长与输出视频时长之和不得超过 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、有声音的视频。

bash
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 项。

bash
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”分别对应各类型素材在数组中的顺序。

bash
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
    }
  }'

创建响应 ​

json
{
  "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。

bash
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 秒输出视频。

json
{
  "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 秒。

任务失败示例 ​

json
{
  "output": {
    "task_id": "sg_vid_xxxxxxxxxxxxxxxx",
    "task_status": "FAILED",
    "message": "Video generation failed."
  }
}

失败详情位于 output 中;平台或上游提供具体错误码时还会返回 output.code。

请求错误 ​

平台校验错误 ​

Exchange Token 自身产生的错误,例如平台 API Key 无效、余额不足或缺少匹配的计费配置,使用以下格式。下面是 HTTP 503 的计费配置错误示例:

json
{
  "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。例如百炼返回限流错误时,客户端收到的响应形如:

json
{
  "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 和任务查询方式。