Wan 3.0 API 报错速查:每种拒绝的原始响应

duration out of range [2, 30]、aspect_ratio 21:9 not supported、model_not_found。Wan 3.0 视频端点真实的报错体,以及每条是什么意思。

Wan 3.0 API 报错速查:每种拒绝的原始响应

下面每一条报错都是 Wan 3.0 视频端点返回的原始响应体,抓取于 2026 年 9 月 4 日。 没有转述,没有编造的报错文本。如果你的请求在失败,拿 code 字段对着这份清单比。

model_not_found         → 模型字符串不存在
unsupported_parameter   → 值越界或不被允许
invalid_request         → 缺少必填字段
invalid_api_key         → key 错了、没传或已吊销

报错清单与真实响应体

duration 越界

{"error":{"code":"unsupported_parameter","message":"duration 45 out of range [2, 30]"}}

Wan 3.0 接受 2 到 30 秒的整数。 出了这个区间就失败,两个方向都一样。要 1 秒返回的是同样的结构:

{"error":{"code":"unsupported_parameter","message":"duration 1 out of range [2, 30]"}}

这是升级之后最可能撞上的报错,原因有两个,方向相反:

  • 从 Wan 2.7 或 2.6 过来,你的代码大概会夹到 15 秒,因为那是它们的上限。这不会报错,只会悄悄把你卡在 Wan 3.0 一半的区间上。剩下变了什么,见 Wan 3.0 vs Wan 2.7 对比
  • 从 Seedance 2.5 过来,你的代码大概强制了 4 秒下限,因为那是 Seedance 的地板。在 Wan 3.0 上这让 2 秒和 3 秒的片段无缘无故变得够不着。

有一条规则容易漏:做续写传入视频时,阿里的 API 参考写明输入时长加输出时长的总和不能超过 30 秒。这个 30 是总预算,不是在你的输入之上再给的输出额度。

aspect_ratio 不支持

{"error":{"code":"unsupported_parameter","message":"aspect_ratio \"21:9\" not supported; allowed: [16:9 4:3 1:1 3:4 9:16 adaptive]"}}

Wan 3.0 没有 21:9。 报错很贴心地打印了完整的允许集合,值得仔细读,因为它和邻居们的差异是双向的:

画幅Wan 3.0Wan 2.7Seedance 2.5
21:9
16:9
4:3
1:1
3:4
9:16
adaptive

所以在 Wan 3.0 和 Seedance 2.5 之间路由的管线没法共用一个写死的 21:9。要么在 Wan 上渲 16:9 再裁,损失垂直分辨率;要么把宽银幕的任务发给 Seedance。反过来看,4:3 和 3:4 在 Wan 3.0 上能用而在 Wan 2.7 上不能,所以降级路径会断在升级路径不会断的地方。

resolution 不支持

{"error":{"code":"unsupported_parameter","message":"resolution \"4k\" not supported; allowed: [480p 720p 1080p]"}}

只有 480p、720p 和 1080p。 这一代里没有 4K,Seedance 2.5 同样封顶 1080p。如果 4K 的需求是真的,这两个模型上调什么参数都满足不了。目录里确实列出 4K 的是更老的 bytedance/seedance-2.0 旗舰款,每秒 $0.07,相关内容见 Seedance 2.0 与 Wan 的对比

注意 Wan 3.0 在你不传 resolution 时默认 1080p,Seedance 2.5 默认 720p。这个差异不会抛错,这正是它在并排测试里危险的地方。做对比时两边都把分辨率锁死。

model_not_found

{"error":{"code":"model_not_found","message":"model not found"}}

这个字符串在目录里不存在。 Ofox 上有效的 Wan 3.0 字符串:

  • alibaba/wan-3.0
  • alibaba/wan-3.0-prime
  • 带日期的别名 wan-3.0-20260824wan-3.0-prime-20260824

坑在于阿里自己的模型字符串是另一套。阿里云百炼上是 wan3.0-videowan3.0-video-primewan 后面没有连字符,还带 -video 后缀。直接把阿里文档里的模型名复制进网关调用,得到的就是这个报错。拿不准就查 GET /v1/models,它是「什么能调」的准绳。

invalid_request

{"error":{"code":"invalid_request","message":"prompt is required"}}

缺了必填字段。unsupported_parameter 不同,后者是说你传的值存在但不被允许。写重试逻辑时这个区别很重要:两种都不值得原样重试,但修法不同。缺字段是你的请求构造代码有 bug;值越界通常是配置或用户输入校验没兜住。

invalid_api_key

{"error":{"code":"invalid_api_key","message":"invalid API key"}}

key 错了、没传、被吊销,或者是别的账号的。 检查 Authorization 头是不是 Bearer <key>,以及 key 是不是从环境变量里读到了而不是静默为空。环境变量为空时报的是这个错,不是「缺 header」,这会把人引到错误的方向去查。

什么不算报错

视频生成是异步的。 创建成功返回一个任务,你去轮询它,或者传 callback_url 让它完成时通知你。pending 或 in-progress 状态不是失败,对它告警只会制造噪声,把真正的失败埋掉。只有终态失败和上面那些错误码值得叫人。视频 API 轮询指南讲了等待行为,以及合理的轮询间隔大概是多少。

一个能跑通的请求

对上你的报错之后,下面是这个模型上能通过所有校验的请求形态:

curl -X POST https://api.ofox.io/v1/videos \
  -H "Authorization: Bearer $OFOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "alibaba/wan-3.0",
    "prompt": "A paper boat drifting down a rain gutter, close on the water line",
    "duration": 5,
    "resolution": "1080p",
    "aspect_ratio": "16:9"
  }'

这里每个字段都在接受范围内:模型字符串存在,5 在 [2, 30] 里,1080p 在允许的分辨率集合里,16:9 在允许的画幅集合里。把其中一个改成越界的值就能拿到上面对应的报错,这是在你真正需要之前,快速确认自己的错误处理有没有写对的办法。

请求成功之后这个模型多少钱、一口价的每秒费率跟阿里按分辨率分档的定价怎么比,见 Wan 3.0 定价与接入指南

来源

本文每一段报错体都抓取自 2026 年 9 月 4 日对 Ofox /v1/videos 端点的真实请求。其他线路的报错文本,包括直连阿里云,用的是另一套外层结构和另一套错误码。

常见问题

Wan 3.0 为什么返回 duration out of range?
因为你要的片段长度不在 2 到 30 秒之间。原始响应是 {"error":{"code":"unsupported_parameter","message":"duration 45 out of range [2, 30]"}}。这是升级后最常见的问题:照着 Wan 2.7 写的代码会夹到 15 秒,照着 Seedance 写的代码会强制 4 秒下限,两个都对不上 Wan 3.0 的 2 到 30 秒区间。
为什么 aspect_ratio 21:9 在 Wan 3.0 上失败?
Wan 3.0 不支持它。API 返回 aspect_ratio "21:9" not supported; allowed: [16:9 4:3 1:1 3:4 9:16 adaptive]。Seedance 2.5 确实列出了 21:9,所以在两个模型之间切换的管线没法共用一个写死的 21:9。要么在 Wan 上出 16:9 再裁,要么把宽银幕的活派给 Seedance。
Wan 3.0 端点上的 model_not_found 是什么意思?
模型字符串在目录里不存在。响应是 {"error":{"code":"model_not_found","message":"model not found"}}。Ofox 上有效的字符串是 alibaba/wan-3.0 和 alibaba/wan-3.0-prime,以及带日期的别名 wan-3.0-20260824 和 wan-3.0-prime-20260824。注意连字符:阿里自己的字符串是 wan3.0-video,不是这个网关期待的写法。
Wan 3.0 为什么拒绝我的分辨率?
只接受 480p、720p 和 1080p。要 4k 会返回 resolution "4k" not supported; allowed: [480p 720p 1080p]。Wan 3.0 和 Seedance 2.5 都没有列出 4K,所以这一代里没有可以直接顶替的选项。
invalid_request 和 unsupported_parameter 有什么区别?
invalid_request 表示缺了必填项,比如 {"error":{"code":"invalid_request","message":"prompt is required"}}。unsupported_parameter 表示你传了模型不接受的值,比如 45 秒时长或 21:9 画幅。前者是字段缺失,后者是字段越界,修法不一样。
202 或 pending 状态是不是意味着失败了?
不是。视频生成是异步的:创建成功会返回一个任务让你去轮询,pending 状态只是渲染还没完成。把非终态当正常情况处理,只对终态失败和本文列出的错误码告警。