Using TurboWan2.2 I2V A14B on Chutes
turbowani2v serves TurboDiffusion's 4-step distilled build of Wan2.2-I2V-A14B-720P: send one image plus a motion prompt, get an MP4 back from a single API call. Distillation plus sparse-linear attention makes it one of the fastest ways to animate a still image on Chutes.
Overview
The base model is Alibaba's Wan2.2 I2V-A14B, a video diffusion transformer with a Mixture-of-Experts design built around the denoising schedule: a high-noise expert handles early steps (layout and global motion) and a low-noise expert refines detail in late steps. Each expert is roughly 14B parameters, giving 27B total with 14B active per step, so capacity grows without extra per-step compute. Wan2.2 supports 480P and 720P and was trained on substantially more data than Wan2.1 (+65.6% images, +83.2% videos, per the model card).
TurboDiffusion (arXiv 2512.16093, "Accelerating Video Diffusion Models by 100-200 Times") accelerates this pair with two techniques: rCM score-regularized continuous-time consistency distillation, which compresses sampling to 4 steps, and SLA (Sparse-Linear Attention), a fine-tunable block-sparse attention with a linear branch. Both the derivative and the base model are Apache-2.0.
Model specifications
| Property | Value |
|---|---|
| Parameters | 27B total (two 14B experts), 14B active per denoising step |
| Architecture | Wan2.2 two-expert MoE video DiT + rCM distillation + SLA sparse-linear attention |
| Task | Image-to-video (source image + text motion prompt) |
| Sampling steps | 4 (distilled; chute default) |
| Checkpoint | TurboWan2.2-I2V-A14B-720P (high + low noise pair) |
| License | Apache-2.0 (checkpoint and base model) |
| Output | MP4 video, no audio |
| Release | December 2025 (TurboDiffusion HF repo) |
Quick start
This chute runs on its own host. POST a flat JSON body to /generate; the response body is the MP4 itself.
curl -X POST "https://vonkaiser-turbowani2v.chutes.ai/generate" \
-H "Authorization: Bearer $CHUTES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "the cat slowly turns its head toward the camera, waves rock the surfboard gently",
"image_b64": "'"$(base64 -i frame.png)"'",
"num_steps": 4,
"resolution": "480p",
"aspect_ratio": "16:9",
"seed": 42
}' \
--output output.mp4
import base64
import os
import requests
image_b64 = base64.b64encode(open("frame.png", "rb").read()).decode()
resp = requests.post(
"https://vonkaiser-turbowani2v.chutes.ai/generate",
headers={"Authorization": f"Bearer {os.environ['CHUTES_API_KEY']}"},
json={
"prompt": "steam rises from the coffee cup, camera pushes in slowly",
"image_b64": image_b64,
"num_steps": 4,
"resolution": "480p",
"aspect_ratio": "16:9",
"adaptive_resolution": True,
},
timeout=600,
)
resp.raise_for_status()
open("output.mp4", "wb").write(resp.content)
import { readFile, writeFile } from "node:fs/promises";
const imageB64 = (await readFile("frame.png")).toString("base64");
const resp = await fetch("https://vonkaiser-turbowani2v.chutes.ai/generate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CHUTES_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "leaves flutter in a light breeze, soft parallax as the camera drifts right",
image_b64: imageB64,
num_steps: 4,
resolution: "480p",
aspect_ratio: "16:9",
}),
});
await writeFile("output.mp4", Buffer.from(await resp.arrayBuffer()));
Parameters and tuning
The live endpoint documents prompt (default: a sample cat-on-surfboard prompt) and image_b64 (default: empty). Its example call also passes the tuning fields below with these values:
| Field | Example value | Effect |
|---|---|---|
| num_steps | 4 | Sampling steps; the model is distilled for 4, so leave it there |
| resolution | "480p" | Output resolution tier (checkpoint is the 720P variant) |
| aspect_ratio | "16:9" | Output frame shape |
| adaptive_resolution | true | Adapts output dimensions to the source image |
| seed | 42 | Fix for reproducible clips |
| ode | true | ODE sampling path |
| boundary | 0.9 | Switch point between the high-noise and low-noise expert |
| sla_topk | 0.1 | SLA sparse-attention top-k fraction |
| sigma_max | 200 | Initial noise level |
Prompting, per the chute's playground notes: short, physical motion descriptions work better than broad cinematic prompts. Say what moves and how the camera moves. And start from a clear source image; blurry or low-contrast inputs produce less stable motion.
What it's best at
This chute is built for speed: animating product shots into subtle motion loops, bringing illustrations or photos to life for social content, and high-volume I2V pipelines where the 4-step schedule keeps per-clip cost and latency low. It is also a good first pass for exploring motion ideas before spending on a slower, higher-step model.
It is not the tool for text-to-video without a source image (this deployment is I2V only), for maximum-fidelity cinematic renders (4-step distillation trades some fine detail for speed), or for clips that need audio: output is a silent MP4. For synchronized audio-video, use LTX 2.3 Video instead.
How Chutes serves this model
The chute runs the rCM-distilled high+low-noise checkpoint pair on a single RTX 6000 Pro, using the official SLA block-sparse Triton attention kernels with the proj_l linear branch. It is served on its own host (https://vonkaiser-turbowani2v.chutes.ai) with a flat JSON request body, and returns video/mp4 bytes directly. See the model page, llms.txt, and openapi.json.
FAQ
Is this text-to-video or image-to-video?
Image-to-video. You provide a source image as base64 in image_b64 plus a text prompt describing the motion. The model animates the image; TurboDiffusion also publishes separate T2V checkpoints, but this chute serves the I2V-A14B-720P model.
Why only 4 sampling steps?
The checkpoint is distilled with rCM (score-regularized continuous-time consistency), which trains the model to produce in 4 steps what the base Wan2.2 needs a full sampling schedule for. Combined with SLA sparse attention, the TurboDiffusion paper reports 100-200x end-to-end acceleration.
What resolution and aspect ratio can I generate?
The checkpoint is the 720P variant of Wan2.2 I2V-A14B (the base model supports 480P and 720P). The chute's example call uses resolution "480p" with aspect_ratio "16:9" and adaptive_resolution true, which adapts output dimensions to the source image.
How do I call it? Is there an OpenAI-compatible endpoint?
No, this is not an LLM gateway model. POST a flat JSON body to https://vonkaiser-turbowani2v.chutes.ai/generate with Authorization: Bearer $CHUTES_API_KEY. The response body is the MP4 file itself, so save the raw bytes (curl --output, response.content in Python).
Can I use the output commercially?
The TurboDiffusion checkpoint and the base Wan2.2-I2V-A14B are both Apache-2.0 licensed, which permits commercial use. Check your own content and input-image rights as usual.
How do I get consistent results across runs?
Pass a fixed seed integer in the request body (the endpoint example uses seed 42). Same seed, prompt, image, and settings reproduce the same clip.
Does the video include audio?
No. Output is a silent MP4. If you need synchronized audio, use a joint audio-video model such as LTX 2.3 on Chutes instead.