跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt

Use this file to discover all available pages before exploring further.

wan2.7 接入测试报告

测试日期:2026-05-23 中转站:apiyi(https://api.apiyi.com) 验证模型:wan2.7-t2v / wan2.7-i2v / wan2.7-r2v 最终结论:3 个模型全部端到端跑通(创建 → 轮询 → 下载)。

1. 验证结果一览

模型task_id状态总耗时视频大小mp4
wan2.7-t2vc2e7570c-0af2-4eba-919f-3af3d1164a38completed114 s4.36 MBoutputs/t2v_native.mp4
wan2.7-i2vf8ca39a0-6f4b-4ec2-99bf-8b9649d946c4completed80 s6.12 MBoutputs/i2v_native.mp4
wan2.7-r2vacda59b4-3b10-4789-a5e5-edadae48adcbcompleted136 s5.46 MBoutputs/r2v_native.mp4
参数:resolution=720Pprompt_extend=truewatermark=true;t2v / r2v 各 5s,i2v 跟随音频 10s。

2. 关键发现:apiyi 暴露两套互不兼容的协议

apiyi 同时挂了两条路径,语义完全不同,只有第二条对 wan2.7 完整可用
路径协议风格wan2.7 i2v/r2v备注
/v1/videosOpenAI 风格扁平 schema(顶层 model+prompt+images[])❌ 不可用适配器不完整:audio_url 等字段被注册到 struct 但不会转发到上游,Aliyun 端报 [InvalidParameter] Field required: input.media
/wan/api/v1/services/aigc/video-generation/video-synthesisDashScope 原生(input.prompt+input.media[]+parameters)✅ 完整可用是真正的 Aliyun 透传,需要 X-DashScope-Async: enable
两条路径共用同一个轮询端点 GET /v1/tasks/{task_id},但任务详情结构不同:
  • /v1/videos 创建的任务:properties.input 是 JSON 字符串、properties.submit 回显 apiyi 实际发给上游的 body、有 properties.ratios 计费字段。
  • /wan/api/v1/... 创建的任务:result.data.input 是结构化对象、没有 properties.submit、没有 properties.ratios(看你 plan,可能有 quota 字段)。

3. 三个验证任务的完整请求/响应

3.1 wan2.7-t2v

请求 POST /wan/api/v1/services/aigc/video-generation/video-synthesis:
{
  "model": "wan2.7-t2v",
  "input": {
    "prompt": "黄昏海边的灯塔,镜头缓慢推进,海浪轻拍礁石,海鸟叫声,电影级光影,稳定运镜"
  },
  "parameters": {"resolution": "720P", "duration": 5, "prompt_extend": true, "watermark": true}
}
create 响应 (HTTP 200, 2.1s):
{"output":{"task_id":"c2e7570c-0af2-4eba-919f-3af3d1164a38","task_status":"PENDING"},"request_id":"a23b81b0-0c05-9972-a6c9-ee757400afdb"}
轮询状态序列:submitted(0s) → in_progress(12s, 30%) → completed(113s, 100%)

3.2 wan2.7-i2v

请求:
{
  "model": "wan2.7-i2v",
  "input": {
    "prompt": "一幅都市奇幻艺术的场景。一个充满动感的涂鸦艺术角色...",
    "media": [
      {"type": "first_frame",   "url": "https://help-static-aliyun-doc.aliyuncs.com/.../rap.png"},
      {"type": "driving_audio", "url": "https://help-static-aliyun-doc.aliyuncs.com/.../rap.mp3"}
    ]
  },
  "parameters": {"resolution": "720P", "duration": 10, "prompt_extend": true, "watermark": true}
}
create 响应 (HTTP 200, 2.4s):task_id=f8ca39a0-6f4b-4ec2-99bf-8b9649d946c4状态序列:submitted(0s, 10%) → in_progress(46s, 30%) → completed(79s, 100%)
⚠️ 这里的 prompt 是直接复刻了 prd.md 里原本”换个域名就报错”的官方 demo,确认在正确端点上完整跑通。

3.3 wan2.7-r2v

请求:
{
  "model": "wan2.7-r2v",
  "input": {
    "prompt": "一位身穿这件礼服的女孩在洒满夕阳的花园里缓步行走...",
    "media": [
      {"type": "reference_image", "url": "https://help-static-aliyun-doc.aliyuncs.com/.../wan2.7-videoedit-change-clothes.png"}
    ]
  },
  "parameters": {"resolution": "720P", "duration": 5, "prompt_extend": true, "watermark": true}
}
create 响应 (HTTP 200, 2.7s):task_id=acda59b4-3b10-4789-a5e5-edadae48adcb状态序列:submitted(0s) → in_progress(12s, 30%) → completed(135s, 100%)

4. 排错路径回顾(给后人留底)

最开始我们走的是 /v1/videos,因为 prd 里”能跑通的最小示例”就是它。但官方 i2v demo 直接换 host 报 prompt is required,我们做了一系列试探:
探针结果
prompt 提到顶层、保留 media[]apiyi 报”必须提供图片”——media 不是 OpenAI 风格里的字段名
input_reference / image_url / first_frame_url全部”必须提供图片”
用故意类型不匹配的 payload 反扒 apiyi 的 WanVideoRequest 结构体发现真正字段是 images []string + audio_url string + audio bool
images: [URL] + audio_url: URL 调用create 通过,但上游 Aliyun 报 [InvalidParameter] Field required: input.media —— apiyi 不会把 audio_url 转发给上游、也不会构造 input.media[] 包装
结论:/v1/videos 对 wan2.7 的 i2v / r2v 适配是半成品。最终通过 prd 里追加的 /wan/api/v1/... DashScope 透传端点完整解决。

5. 衍生发现 / 后续建议

  1. /wan/api/v1/... 透传端点对其他 wan 系列模型一致(wan2.7-videoedit / image-pro / 全部 wan2.6-*)。media[].type 取值看上游 Aliyun 文档:first_frame / last_frame / reference_image / driving_audio / video 等。
  2. 轮询端点 /v1/tasks/{task_id} 对两种创建方式都生效,且响应顶层结构一致(status / progress / result_url),可以无脑用。
  3. result_url 是 Aliyun OSS 签名直链,过期前(默认 24h)可以重复下载;不要带 Authorization,会被 OSS 拒。
  4. 错误信息有两种来源:apiyi 自己拒(返回 task_error / parse_request_failed,在 create 阶段)、上游 Aliyun 拒(返回 [InvalidParameter] ...,任务跑到一半 status=failed 才看得到)。看到 [...] 方括号前缀的就直接对照 Aliyun 官方文档。
  5. prompt_extend: true 推荐打开——3 个测试都开了,生成质量明显比短 prompt 好,代价就是稍微多几秒。

6. 落地物

  • wan2.7/wan_client.py —— 完整 Python 客户端(create/poll/download 三步全包),含 demo {t2v,i2v,r2v} 一键测试
  • wan2.7/README.md —— 初学者接入文档(curl + Python + 错误码表 + 常见坑)
  • wan2.7/outputs/{t2v,i2v,r2v}_native.mp4 —— 3 段验证视频
  • wan2.7/outputs/{t2v,i2v,r2v}_native.meta.json —— 完整请求/轮询/响应记录
  • wan2.7/outputs/_log.jsonl —— 所有运行的 append-only 汇总日志