Wan 2.2 Spicy 视频生成

查看 Markdown 原文

概述

Wan 2.2 Spicy 视频生成接口,为 480P 固定分辨率模型,支持三种生成模式:

  • 文生视频(T2V):仅凭提示词生成视频,不传任何图片。
  • 图生视频(I2V):基于 1 张首帧图片生成视频。
  • 参考生视频(R2V):基于最多 5 个参考素材(参考图 / 参考视频 / 首帧图)生成视频。

模式由请求参数自动判定,无需额外开关,判定优先级为 R2V > I2V > T2V(详见下方参数说明)。

注意:本模型分辨率固定为 480P。无论请求传入何种 resolution,一律按 480P 出网并计价。

Base URL: https://api.apiverse.ai


认证方式

所有接口均需要在请求头中携带 API Key 进行认证:

Authorization: Bearer {YOUR_API_KEY}

快速开始

cURL 示例

创建 Wan 2.2 Spicy 任务(图生视频)

curl -X POST "https://api.apiverse.ai/api/v2/open/aigc/wan-2.2-spicy" \
  -H "Authorization: Bearer your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "女孩开始跳舞,在结尾捧出一束花",
    "imageUrls": ["https://example.com/first-frame.jpg"],
    "duration": 5
  }'

查询任务状态

curl -X GET "https://api.apiverse.ai/api/v2/open/aigc/task_abc123" \
  -H "Authorization: Bearer your_api_key_here"

查询账户余额

curl -X GET "https://api.apiverse.ai/api/v2/open/balance" \
  -H "Authorization: Bearer your_api_key_here"

接口列表

1. 创建 Wan 2.2 Spicy 视频生成任务

POST /api/v2/open/aigc/wan-2.2-spicy

创建一个 Wan 2.2 Spicy 视频生成任务(480P 固定),支持文生视频(T2V)、图生视频(I2V)、参考生视频(R2V)三种模式。

Content-Type: application/json

请求参数

参数类型必填说明
promptstring视频描述提示词,用于指导人物动作、镜头运动或场景变化
imageUrlsstring[]首帧图片 URL 列表,最多 1 张(多传仅取第一张)。传入即为图生视频(I2V)模式
r2vMediaobject[]参考素材列表,最多 5 个。传入即为参考生视频(R2V)模式。元素结构见下方「r2vMedia 元素结构」
resolutionstring分辨率固定为 480P,传入其他值一律按 480P 处理
durationinteger视频时长(秒),范围 5~8,默认 5
ratiostring视频宽高比:16:9(默认) / 9:16 / 1:1。R2V 模式生效;I2V 模式下输出尺寸由首帧图决定,此参数不生效
negativePromptstring反向提示词,用于指定不希望出现的内容
promptOptimizationboolean是否开启提示词优化,默认 true
taskNicknamestring任务昵称,便于业务侧标识
callbackUrlstring任务完成后的回调通知 URL

r2vMedia 元素结构

字段类型必填说明
typestring素材类型:reference_image(参考图) / reference_video(参考视频) / first_frame(首帧图)
urlstring素材的 URL 地址

生成模式判定

三种模式互斥,按以下优先级自动判定:

模式触发条件说明
参考生视频(R2V)传入 r2vMedia(非空)基于最多 5 个参考素材生成
图生视频(I2V)传入 imageUrls(非空)且未传 r2vMedia基于 1 张首帧图生成
文生视频(T2V)imageUrlsr2vMedia 均为空仅凭提示词生成

时长规则

分辨率时长范围多段生成说明
480P5~8 秒不支持超出范围会被自动 clamp 到 [5, 8] 区间
说明
- imageUrls 支持 JPG / PNG / WebP 格式,建议图片大小不超过 5MB,推荐使用清晰的人像图
- r2vMedia 参考图建议不超过 2MB,参考视频与图片合计不超过 5 个素材
- 本模型不支持多段生成(multiShot)与 15 秒以上长视频
- promptOptimization 开启后会先对提示词做改写再生成,效果更佳但耗时略增
- 创建任务时会预扣费,余额不足将返回错误

请求示例

图生视频(I2V)

{
  "prompt": "女孩开始跳舞,在结尾捧出一束花",
  "imageUrls": ["https://example.com/first-frame.jpg"],
  "duration": 5,
  "promptOptimization": true
}

文生视频(T2V)

{
  "prompt": "夜晚的赛博朋克城市街道,霓虹灯闪烁,镜头缓慢向前推进",
  "duration": 6,
  "ratio": "16:9",
  "negativePrompt": "模糊,低画质,畸变"
}

参考生视频(R2V)

{
  "prompt": "保留角色美术风格,生成一段流畅的动画",
  "r2vMedia": [
    { "type": "reference_image", "url": "https://example.com/ref-1.png" },
    { "type": "reference_image", "url": "https://example.com/ref-2.png" }
  ],
  "duration": 8,
  "ratio": "16:9"
}

响应参数

参数类型说明
codeint状态码,0 表示成功
msgstring状态信息
data.taskIdstring任务 ID,用于查询任务状态
data.statusstring任务状态,创建时固定为 processing
data.createdAtstring创建时间

响应示例

成功

{
  "code": 0,
  "msg": "success",
  "data": {
    "taskId": "task_20260727103000_abc12345",
    "status": "processing",
    "createdAt": "2026-07-27 10:30:00"
  }
}

余额不足

{
  "code": 40001,
  "msg": "余额不足,当前余额: 0.0100 USD,需要: 0.0880 USD",
  "data": null
}

1.1 OpenAI 兼容接口(创建视频)

POST /v1/video/generations

面向已有 OpenAI SDK / new-api 生态的兼容入口,遵循 OpenAI 视频生成协议。创建为异步:返回 task_id,再用下方 GET /v1/video/generations/{task_id} 轮询结果。业务逻辑、计费与 /api/v2/open/aigc/wan-2.2-spicy 完全一致。

Content-Type: application/json

请求参数

参数类型必填说明
modelstring固定 wan-2.2-spicy
promptstring视频描述提示词
imagestring首帧图片 URL,传入即为图生视频(I2V)模式
durationinteger视频时长(秒),范围 5~8,默认 5
sizestring尺寸,如 854x480,自动换算为最接近的 ratio16:9 / 9:16 / 1:1 等)
metadataobject承载 OpenAI 标准字段之外的私有参数,见下方「metadata 扩展参数」

metadata 扩展参数

字段类型说明
negativePromptstring反向提示词
promptOptimizationboolean是否开启提示词优化,默认 true
说明:
- 分辨率固定 480P,metadata 中传入 resolution 不生效
- image 有值即为图生视频(I2V),为空则为文生视频(T2V);OpenAI 协议入口暂不支持 R2V 多参考素材,如需请使用 /api/v2/open/aigc/wan-2.2-spicy

请求示例

{
  "model": "wan-2.2-spicy",
  "prompt": "女孩开始跳舞,在结尾捧出一束花",
  "image": "https://example.com/first-frame.jpg",
  "duration": 5,
  "size": "854x480"
}

响应示例

{
  "id": "task_20260727103000_abc12345",
  "object": "video",
  "model": "wan-2.2-spicy",
  "created_at": 1769480400,
  "task_id": "task_20260727103000_abc12345",
  "status": "queued"
}

失败时返回 OpenAI 标准错误结构:

{
  "error": {
    "message": "余额不足,当前余额: 0.0100 USD,需要: 0.0880 USD",
    "type": "insufficient_quota"
  }
}

1.2 OpenAI 兼容接口(查询视频)

GET /v1/video/generations/{task_id}

轮询查询视频任务状态与结果。

路径参数

参数类型必填说明
task_idstring创建接口返回的任务 ID

响应参数

参数类型说明
task_idstring任务 ID
statusstring任务状态:queued / in_progress / completed / failed
urlstring生成视频 URL(completed 时返回)
formatstring视频格式,固定 mp4
errorobject失败信息(failed 时返回,含 code / message

响应示例

完成

{
  "task_id": "task_20260727103000_abc12345",
  "status": "completed",
  "url": "https://fc-gw-sh.oss-accelerate.aliyuncs.com/videos/output_001.mp4",
  "format": "mp4"
}

失败

{
  "task_id": "task_20260727103000_abc12345",
  "status": "failed",
  "format": "mp4",
  "error": {
    "code": "generation_error",
    "message": "生成失败:内容不符合规范"
  }
}

2. 查询任务状态

GET /api/v2/open/aigc/{taskId}

查询单个任务的执行状态。

路径参数

参数类型必填说明
taskIdstring任务 ID

响应参数

参数类型说明
codeint状态码,0 表示成功
msgstring状态信息
data.taskIdstring任务 ID
data.statusstring任务状态:processing / success / failed
data.resultstring[]生成的视频 URL 列表(成功时返回)
data.errorMsgstring错误信息(失败时返回)
data.createdAtstring创建时间
data.updatedAtstring更新时间

响应示例

成功

{
  "code": 0,
  "msg": "success",
  "data": {
    "taskId": "task_20260727103000_abc12345",
    "status": "success",
    "result": [
      "https://fc-gw-sh.oss-accelerate.aliyuncs.com/videos/2026/07/27/output_001.mp4"
    ],
    "createdAt": "2026-07-27 10:30:00",
    "updatedAt": "2026-07-27 10:32:10"
  }
}

失败

{
  "code": 0,
  "msg": "success",
  "data": {
    "taskId": "task_20260727103000_abc12345",
    "status": "failed",
    "errorMsg": "生成失败:内容不符合规范",
    "createdAt": "2026-07-27 10:30:00",
    "updatedAt": "2026-07-27 10:30:50"
  }
}

3. 批量查询任务状态

POST /api/v2/open/aigc/batch

批量查询多个任务的执行状态(最多 100 个)。

请求参数

参数类型必填说明
taskIdsstring[]任务 ID 列表,最多 100 个

请求示例

{
  "taskIds": ["task_20260727103000_abc12345", "task_20260727103200_def67890"]
}

4. 查询账户余额

GET /api/v2/open/balance

查询当前用户的账户余额。

响应示例

{
  "code": 0,
  "msg": "success",
  "data": {
    "userId": "user@example.com",
    "balance": "19.3550",
    "frozenBalance": "0.0880",
    "currency": "USD"
  }
}

回调通知

当任务完成(成功或失败)时,如果创建任务时提供了 callbackUrl,系统会向该 URL 发送 POST 请求。

Headers

Content-Type: application/json
X-Funcloud-Event: task.completed
X-Funcloud-Signature: {签名}

Body

{
  "event": "task.completed",
  "taskId": "task_20260727103000_abc12345",
  "status": "success",
  "result": ["https://fc-gw-sh.oss-accelerate.aliyuncs.com/videos/output_001.mp4"],
  "errorMsg": "",
  "timestamp": "2026-07-27T10:32:10+08:00",
  "signature": "a1b2c3d4e5f6..."
}

接收方应返回 HTTP 2xx 状态码表示成功接收。


错误码

code说明
0成功
10002参数缺失或格式错误
10005API Key 无效或缺失
30003任务不存在
40001余额不足
90003服务器内部错误

计费说明

Wan 2.2 Spicy 采用按秒计费(480P 单档单价):

  • 计费时长以请求的 duration 为准(clamp 到 5~8 秒)
  • 实际单价以账户配置为准,可通过控制台查询
  • 创建任务时按 单价 × duration 预扣费并冻结;任务成功后从冻结余额扣费,失败则全额退还

最佳实践

1. 轮询策略

  • 前 30 秒:每 3 秒查询一次
  • 30 秒 ~ 2 分钟:每 5 秒查询一次
  • 2 分钟后:每 10 秒查询一次

2. 使用回调

生产环境建议使用回调通知而非轮询,减少 API 调用、更快获得结果通知。

3. 参数选择建议

  • 首帧图建议使用清晰的人像图,提示词写明确的动作指令,效果最佳
  • R2V 模式建议关闭 promptOptimization,以保留原始脚本结构
  • 对提示词质量没把握时保留 promptOptimization 默认开启

4. 余额管理

  • 创建任务前建议先查询余额,避免因余额不足导致任务失败
  • 任务成功后会从冻结余额中扣费;失败后冻结金额自动退还到可用余额