Team Ai
Apppublic

wavespeed/wan2.2

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
20likes
index.html204 linesDownload Raw Back to root
1<!doctype html>2<html lang="en">3<head>4	<meta charset="utf-8" />5	<meta name="viewport" content="width=device-width, initial-scale=1" />6	<title>Wan 2.2 — open large-scale video generative models</title>7	<meta name="description" content="Reference for Wan 2.2, the open video generation model family from Alibaba&#x27;s Tongyi Lab: architecture, released checkpoints, and hosted API usage." />8	<link rel="canonical" href="https://wavespeed.ai/collections/wan-2-2?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" />9 10	<meta property="og:type" content="website" />11	<meta property="og:title" content="Wan 2.2 — open large-scale video generative models" />12	<meta property="og:description" content="Reference for Wan 2.2, the open video generation model family from Alibaba&#x27;s Tongyi Lab: architecture, released checkpoints, and hosted API usage." />13	<meta property="og:url" content="https://wavespeed.ai/collections/wan-2-2" />14	<meta name="twitter:card" content="summary_large_image" />15 16	<link rel="stylesheet" href="style.css" />17</head>18<body>19	<header class="site-header">20		<div class="wrap">21			<a class="brand" href="https://wavespeed.ai?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">22				<span class="brand-mark" aria-hidden="true"></span>23				<span>WaveSpeed AI</span>24			</a>25			<nav class="header-nav">26				<a class="jump opt" href="#architecture">Architecture</a>27				<a class="jump opt" href="#checkpoints">Checkpoints</a>28				<a class="jump" href="#run">Run it</a>29				<a class="jump" href="#resources">Resources</a>30				<a href="https://wavespeed.ai/collections/wan-2-2?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">wavespeed.ai &#8599;</a>31			</nav>32		</div>33	</header>34 35	<main class="wrap">36		<div class="hero">37			<p class="eyebrow">Alibaba · Tongyi Lab</p>38			<h1>Wan 2.2</h1>39			<p class="lede">An open family of large-scale video generative models covering text-to-video, image-to-video and a compact hybrid text/image-to-video checkpoint. Weights are published on Hugging Face under Apache-2.0.</p>40			<ul class="meta">41				<li><b>Developer</b> Alibaba Tongyi Lab</li>42				<li><b>Task</b> text-to-video · image-to-video</li>43				<li><b>License</b> Apache-2.0</li>44				<li><b>Released</b> July 2025</li>45			</ul>46		</div>47 48		<section id="architecture">49			<h2>What changed in 2.2</h2>50			<p class="section-note">Wan 2.2 revises the 2.1 architecture in three places. The claims below are the authors' own, taken from the model cards and technical report.</p>51			<div class="grid">52				<div class="card">53					<h3>Mixture-of-experts denoiser</h3>54					<p>The denoising trajectory is split across specialised expert models rather than one monolithic network, which raises total parameter count without a matching rise in per-step inference cost.</p>55				</div>56				<div class="card">57					<h3>Curated aesthetic supervision</h3>58					<p>Training data carries explicit labels for lighting, composition, contrast and colour tone, so cinematographic attributes can be steered from the prompt instead of emerging by chance.</p>59				</div>60				<div class="card">61					<h3>Larger motion corpus</h3>62					<p>The authors report training on 65.6% more images and 83.2% more video than Wan 2.1, aimed primarily at motion fidelity and prompt adherence.</p>63				</div>64				<div class="card">65					<h3>High-compression VAE</h3>66					<p>The TI2V-5B checkpoint pairs with a Wan2.2-VAE at a 16×16×4 compression ratio, which is what makes 720p/24fps generation practical at that model size.</p>67				</div>68			</div>69		</section>70		<section id="checkpoints">71			<h2>Released checkpoints</h2>72			<p class="section-note">All weights are on the Hugging Face Hub under the Wan-AI organisation.</p>73			<div class="table-scroll">74				<table>75					<thead><tr><th>Checkpoint</th><th>Task</th><th>Params</th><th>Weights</th></tr></thead>76					<tbody>77						<tr><td><code>Wan2.2-T2V-A14B</code></td><td>Text-to-video</td><td>14B (MoE)</td><td><a href="https://huggingface.co/Wan-AI/Wan2.2-T2V-A14B" target="_blank" rel="noopener">base</a> · <a href="https://huggingface.co/Wan-AI/Wan2.2-T2V-A14B-Diffusers" target="_blank" rel="noopener">diffusers</a></td></tr>78						<tr><td><code>Wan2.2-I2V-A14B</code></td><td>Image-to-video</td><td>14B (MoE)</td><td><a href="https://huggingface.co/Wan-AI/Wan2.2-I2V-A14B" target="_blank" rel="noopener">base</a> · <a href="https://huggingface.co/Wan-AI/Wan2.2-I2V-A14B-Diffusers" target="_blank" rel="noopener">diffusers</a></td></tr>79						<tr><td><code>Wan2.2-TI2V-5B</code></td><td>Text + image-to-video, 720p/24fps</td><td>5B</td><td><a href="https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B" target="_blank" rel="noopener">base</a> · <a href="https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B-Diffusers" target="_blank" rel="noopener">diffusers</a></td></tr>80					</tbody>81				</table>82			</div>83		</section>84		<section id="run">85			<h2>Run it</h2>86			<p class="section-note">If you would rather not provision GPUs, the same checkpoints are served as a hosted endpoint. Available variants: <code>wan-2.2/t2v-480p</code>, <code>t2v-720p</code>, <code>i2v-480p</code> and <code>i2v-720p</code>.</p>87			<div class="code">88				<div class="code-tabs" role="tablist">89					<button type="button" role="tab" aria-selected="true" data-panel="run-0">cURL</button>90					<button type="button" role="tab" aria-selected="false" data-panel="run-1">Python</button>91					<button type="button" role="tab" aria-selected="false" data-panel="run-2">JavaScript</button>92				</div>93				<pre id="run-0" role="tabpanel"><code># 1. submit the job94curl -X POST &quot;https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/t2v-480p&quot; \95  -H &quot;Authorization: Bearer $WAVESPEED_API_KEY&quot; \96  -H &quot;Content-Type: application/json&quot; \97  -d &#x27;{98        &quot;prompt&quot;: &quot;A paper boat drifting down a rain-slicked gutter at dusk, shallow depth of field, warm street lights&quot;,99        &quot;duration&quot;: 5,100        &quot;enable_sync_mode&quot;: false101    }&#x27;102 103# -&gt; {&quot;code&quot;: 200, &quot;data&quot;: {&quot;id&quot;: &quot;&lt;request-id&gt;&quot;, &quot;status&quot;: &quot;created&quot;, ...}}104 105# 2. poll until status is &quot;completed&quot;106curl &quot;https://api.wavespeed.ai/api/v3/predictions/&lt;request-id&gt;/result&quot; \107  -H &quot;Authorization: Bearer $WAVESPEED_API_KEY&quot;108 109# -&gt; {&quot;code&quot;: 200, &quot;data&quot;: {&quot;status&quot;: &quot;completed&quot;, &quot;outputs&quot;: [&quot;https://...&quot;]}}</code></pre>110				<pre id="run-1" role="tabpanel" hidden><code>import os, time, requests111 112API = &quot;https://api.wavespeed.ai/api/v3&quot;113KEY = os.environ[&quot;WAVESPEED_API_KEY&quot;]114HEADERS = {&quot;Authorization&quot;: f&quot;Bearer {KEY}&quot;}115 116# submit117res = requests.post(118    f&quot;{API}/wavespeed-ai/wan-2.2/t2v-480p&quot;,119    headers={**HEADERS, &quot;Content-Type&quot;: &quot;application/json&quot;},120    json={121      &quot;prompt&quot;: &quot;A paper boat drifting down a rain-slicked gutter at dusk, shallow depth of field, warm street lights&quot;,122      &quot;duration&quot;: 5,123      &quot;enable_sync_mode&quot;: false124    },125    timeout=30,126)127res.raise_for_status()128request_id = res.json()[&quot;data&quot;][&quot;id&quot;]129 130# poll131while True:132    data = requests.get(133        f&quot;{API}/predictions/{request_id}/result&quot;,134        headers=HEADERS,135        timeout=30,136    ).json()[&quot;data&quot;]137 138    if data[&quot;status&quot;] == &quot;completed&quot;:139        print(data[&quot;outputs&quot;][0])140        break141    if data[&quot;status&quot;] == &quot;failed&quot;:142        raise RuntimeError(data.get(&quot;error&quot;, &quot;generation failed&quot;))143    time.sleep(1.5)</code></pre>144				<pre id="run-2" role="tabpanel" hidden><code>const API = &quot;https://api.wavespeed.ai/api/v3&quot;;145const KEY = process.env.WAVESPEED_API_KEY;146const headers = { Authorization: `Bearer ${KEY}` };147 148// submit149const submit = await fetch(`${API}/wavespeed-ai/wan-2.2/t2v-480p`, {150  method: &quot;POST&quot;,151  headers: { ...headers, &quot;Content-Type&quot;: &quot;application/json&quot; },152  body: JSON.stringify({153      &quot;prompt&quot;: &quot;A paper boat drifting down a rain-slicked gutter at dusk, shallow depth of field, warm street lights&quot;,154      &quot;duration&quot;: 5,155      &quot;enable_sync_mode&quot;: false156    }),157});158const { data: { id } } = await submit.json();159 160// poll161for (;;) {162  const res = await fetch(`${API}/predictions/${id}/result`, { headers });163  const { data } = await res.json();164 165  if (data.status === &quot;completed&quot;) {166    console.log(data.outputs[0]);167    break;168  }169  if (data.status === &quot;failed&quot;) throw new Error(data.error ?? &quot;generation failed&quot;);170  await new Promise((r) =&gt; setTimeout(r, 1500));171}</code></pre>172			</div>173			<div class="callout"><p>Requests are asynchronous: <code>POST</code> returns a request id, then you poll <code>/predictions/&lt;id&gt;/result</code> until <code>status</code> is <code>completed</code>. Set <code>enable_sync_mode: true</code> to have the call block and return outputs directly.</p><p>API keys are created in the <a href="https://wavespeed.ai/dashboard?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">WaveSpeed dashboard</a>.</p></div>174			<div class="btn-row">175				<a class="btn" href="https://wavespeed.ai/collections/wan-2-2?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">Open Wan 2.2 on WaveSpeed</a>176				<a class="btn secondary" href="https://wavespeed.ai/docs?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">API reference</a>177			</div>178		</section>179		<section id="resources">180			<h2>Resources</h2>181			<ul class="links">182				<li><a href="https://huggingface.co/Wan-AI" target="_blank" rel="noopener"><span>Wan-AI on Hugging Face</span><span class="host">huggingface.co</span></a></li>183				<li><a href="https://github.com/Wan-Video/Wan2.2" target="_blank" rel="noopener"><span>Wan2.2 on GitHub</span><span class="host">github.com</span></a></li>184				<li><a href="https://wavespeed.ai/collections/wan-2-2?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener"><span>Hosted endpoints</span><span class="host">wavespeed.ai</span></a></li>185				<li><a href="https://wavespeed.ai/docs?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener"><span>WaveSpeed API docs</span><span class="host">wavespeed.ai</span></a></li>186			</ul>187		</section>188	</main>189 190	<footer class="site-footer">191		<div class="wrap">192			<p>This page is a model reference maintained by WaveSpeed AI. The model itself is developed and released by its respective authors; trademarks belong to them. WaveSpeed AI provides hosted inference for it.</p>193			<div class="footer-links">194				<a href="https://wavespeed.ai?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">WaveSpeed AI</a>195				<a href="https://wavespeed.ai/docs?utm_source=huggingface&amp;utm_medium=space&amp;utm_campaign=wan2_2" target="_blank" rel="noopener">Docs</a>196				<a href="https://huggingface.co/wavespeed" target="_blank" rel="noopener">Hugging Face</a>197			</div>198		</div>199	</footer>200 201	<script src="tabs.js"></script>202</body>203</html>204