选择 Wan 3 模式
modelrush/wan3-spicy、modelrush/wan3-pro-spicy、modelrush/wan3-prime-spicy 与 modelrush/wan3-prime-pro-spicy 共用一个异步接口,并提供三种模式:| 模式 | 必需素材 | 适用场景 |
|---|---|---|
text-to-video | 无 | 根据 Prompt 生成视频 |
image-to-video | first_frame;last_frame 可选 | 单图动画或首尾帧插值 |
reference-to-video | 至少一个参考素材数组 | 用图片、视频与音频保持主体、动作或声音 |
Wan 3 的 Prompt 最长 20,000 字符,时长为 2–30 秒的固定整数;省略时默认 5 秒,不支持
-1。按指定或默认时长计费。支持自适应/固定画幅、原生音频;提示词扩展仅适用于 Prime 档。标准版和 Prime Spicy 支持 480P、720P、1080P;Pro 和 Prime Pro Spicy 支持 1080P、2K、4K。Prime 档以更高的每秒价格换取更快的生成速度。提交文生视频任务
bashcurl https://api.modelrush.ai/v1/videos/generations \-H "Authorization: Bearer $MODELRUSH_API_KEY" \-H "Content-Type: application/json" \-d '{"model":"modelrush/wan3-spicy","mode":"text-to-video","prompt":"一只月球狐狸在发光的区域之间追踪请求","duration":5,"resolution":"1080P","ratio":"16:9","audio":true}'
图生视频把
mode 改为 image-to-video,并添加 first_frame 与可选的 last_frame。参考生视频把 mode 改为 reference-to-video,最多可传 10 个 reference_images、5 个 reference_videos 和 5 个 reference_audios。参考视频至少需要每秒 16 帧,总时长不能超过 15 秒;参考视频与生成视频的合计时长不能超过 30 秒。参考音频总时长不能超过 15 秒。接口返回 202、generation ID 和 queued 状态。使用 Wan 2.7 Video Edit 编辑视频
modelrush/wan2.7-videoedit 编辑一个源视频。media 中须且只能有一个 {"type":"video"}(MP4 或 MOV,2–10 秒,每边 240–4,096 像素,宽高比 1:8 至 8:1,不超过 100 MB),另可附最多 4 个 reference_image(JPEG、PNG、BMP 或 WebP,每边 240–8,000 像素,1:8 至 8:1,不超过 20 MB)。省略 duration 或传 0 表示保持源视频时长;2–10 从开头截取输出,不会延长源视频。按输入视频秒数加输出视频秒数计费,精确到毫秒。5.02 秒的源视频按原长编辑,计费 5.02 + 5.02 = 10.04 秒;按每秒 $0.110 计为 $1.1044,冻结金额向上取整到分,即 $1.11。网关在创建任务前实测源视频,并在
202 响应的 billing 中返回估算。结算优先使用服务商回报的秒数,缺失时使用已授权的估算(在预测结果的 billing 中标记为 usage_source: "estimated"),且不超过冻结金额;秒数更少时释放差额。通过 Webhook 接收完成结果(推荐)
调用
POST /webhooks/endpoints 注册公开 HTTPS Endpoint。异步任务完成后,ModelRush 会立即推送已签名的 prediction.succeeded 或 prediction.failed 事件。请验签并按 Event ID 去重,详见 Webhook。Webhook 投递延迟时,再用轮询作为恢复手段:
bashcurl https://api.modelrush.ai/v1/videos/generations/GENERATION_ID \-H "Authorization: Bearer $MODELRUSH_API_KEY"
使用有限次数的退避轮询,直到视频接口返回 completed 或 failed;成功时读取 video_url。24 小时后,已完成任务仍返回 completed,但 video_url 为 null、output_expired 为 true。统一 Prediction 接口使用 succeeded 和 outputs。详见异步任务。
Spicy 模型 API 说明
打开模型页查看请求参数与当前价格。四个 Wan 3 落地页都在 Playground 下方提供开发者 API 区域。通过 GET /v1/models 获取当前参数结构及密钥可访问的模型;GET /api/model-pricing 在未认证时返回公开价格;携带有效 Bearer API Key 时返回该账户实际适用的价格。
| 模型与 API 说明 | 模型 ID | 接口 |
|---|---|---|
| Wan 3 Spicy | modelrush/wan3-spicy | POST /v1/videos/generations |
| Wan 3 Pro Spicy | modelrush/wan3-pro-spicy | POST /v1/videos/generations |
| Wan 3 Prime Spicy | modelrush/wan3-prime-spicy | POST /v1/videos/generations |
| Wan 3 Prime Pro Spicy | modelrush/wan3-prime-pro-spicy | POST /v1/videos/generations |
| Wan 2.7 I2V Spicy | modelrush/wan2.7-i2v-spicy | POST /v1/videos/generations |
| Wan 2.2 I2V Spicy | modelrush/wan2.2-i2v-spicy | POST /v1/videos/generations |
| Wan Animate Spicy | modelrush/wan-animate | POST /v1/videos/generations |
| FlashVSR Spicy | modelrush/flashvsr | POST /v1/videos/generations |
GET /v1/videos/generations/:id 的终态为 completed 或 failed,成功时返回 video_url;统一 GET /v1/predictions/:id 则使用 succeeded 和 outputs。请按实际 poll_url 的契约处理。Wan 3 的参考视频与生成视频合计不能超过 30 秒;Wan 3 Spicy 四档均接受 prompt_extend(布尔值,默认 true),以各模型 schema 为准。LoRA 支持三组可选权重数组、480P/720P 和 5/8 秒。Wan Animate、FlashVSR 携带源素材调用视频生成接口。FlashVSR 的 duration 必须等于输入视频时长四舍五入到整秒(最少 1 秒),否则在扣费前返回 video_duration_mismatch(无法读取视频时返回 video_duration_unverified)。
所有 Spicy 模型要求账户完成成人访问确认,API Key 也必须允许对应模型和能力。密钥只保存在服务端,支持 Idempotency-Key 的接口在同一次提交重试时复用该值。Wan Animate 还须遵守视频文档的签名估价与 x-request-id 要求。
Wan Animate:先确认带签名的估价,再提交
新的 modelrush/wan-animate 请求不再填写 duration。服务器读取参考视频的真实时长,须大于 0 且不超过 30 秒。输出跟随参考视频长度,5/8 秒不是输出时长控制。估价会读取参考视频和当前价格,不启动生成,也不预留余额。提交前先确认 billing.maximum_charge_cents(按本次任务向上取整到美分)。客户最终扣费不会超过这个确认上限,未用预留会退回可用余额。估价有效期为 10 分钟。账户、素材访问和凭证要求仍然适用。
公开 API:先 POST https://api.modelrush.ai/v1/videos/generations/quote,再 POST https://api.modelrush.ai/v1/videos/generations。Authorization: Bearer 使用允许本模型的服务端 API Key。Agent 运行环境:先 POST https://modelrush.ai/api/agent/v1/videos/generations/quote,再 POST https://modelrush.ai/api/agent/v1/videos/generations。使用带 media:write 权限的 Agent 凭证,并保持 Agent run 有效,不使用公开 API Key。估价不收生成费,但不免除 Agent 订阅或其他服务条件。
- 创建一个 UUID,并在提交前将它和完整 JSON 正文保存下来。正文包含 model、image、video、mode(animate 或 replace)、resolution(480P 或 720P),以及需要的 prompt/seed/region。不填写 duration。
- 将正文发到对应估价地址,带 Content-Type: application/json 和 x-request-id: UUID。成功的 HTTP 200 响应包含 quote_token、request_id、expires_at 和 billing。核对 request_id 一致,再展示费用上限供确认。
- 将同一正文和 x-request-id 发到同一路线的生成地址。增加 x-modelrush-video-edit-quote: quote_token。保持同一账户、适用的 Agent run、区域、素材字节和设置。Idempotency-Key 不能代替 UUID 或签名,改变它也不能让同一份估价批准多个任务。
- 保存返回的 id 和 poll_url,按返回地址的凭证要求轮询。视频状态地址使用 completed/failed,统一 prediction 地址使用 succeeded/failed。不要通过再提交一个任务查看进度。
UUID 或签名缺失/无效:HTTP 400 video_edit_quote_required。估价过期、素材或设置改变、价格改变:HTTP 409 video_edit_quote_changed。不要自动接受新的费用上限。收到明确的估价拒绝后,用同一 UUID 和正文重新取估价,展示后再次确认。若从未尝试提交且估价过期,先刷新估价再提交。超时、响应丢失或不确定的 5xx:保留原 UUID、正文和签名,原样重试一次生成请求以找回结果。已受理的匹配请求会先找回旧任务,再检查估价过期或素材,因此结果不明时不要替换过期签名。仍不确定就停止,用请求编号调查,不能换 UUID 绕过。HTTP 409 idempotency_conflict 表示编号已用于不同请求,应停止。估价签名须保密,不记录真实凭证。
变更前已经受理的请求,可用原 Idempotency-Key 和保存的原正文找回,包括旧 duration 值。系统返回现有任务,不再预留或扣费。这只兼容已受理且内容匹配的旧任务,不允许新请求不带签名,也不允许改正文或换 UUID。若没有已受理任务的证据,应使用新的签名估价流程。
下载可运行的 Node.js 示例。公开路线在服务端设置 MODELRUSH_API_KEY,Agent 路线设置 MODELRUSH_AGENT_TOKEN。状态文件含私有估价签名,不加入 Git。quote 命令不会提交生成。确认后才把 MAX_CENTS 替换为显示的整数美分。submit/recover 可能预留余额并启动收费任务,每次只发送一个请求,不自动重试。refresh 保持同一 UUID 和正文,仍需重新确认,只用于首次提交前或明确收到 video_edit_quote_changed 后。
shcurl --fail --output wan-animate-quoted-request.mjs https://modelrush.ai/examples/wan-animate-quoted-request.mjscat > wan-animate-body.json <<'JSON'{"model":"modelrush/wan-animate","image":"https://YOUR_HOST/character.png","video":"https://YOUR_HOST/reference.mp4","mode":"animate","resolution":"480P"}JSONnode wan-animate-quoted-request.mjs quote wan-animate-state.json wan-animate-body.json publicnode wan-animate-quoted-request.mjs submit wan-animate-state.json MAX_CENTS# recover: same saved UUID, body and token; no new task IDnode wan-animate-quoted-request.mjs recover wan-animate-state.json MAX_CENTS# refresh: review the returned maximum again before submitnode wan-animate-quoted-request.mjs refresh wan-animate-state.json# Agent: use a separate state file and MODELRUSH_AGENT_TOKENnode wan-animate-quoted-request.mjs quote wan-animate-agent-state.json wan-animate-body.json agent