Wan 2.2 i2v delivers ultra-fast Image-to-Video at 480p with support for custom LoRAs for tailored styles. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Chờ
$0.1cho mỗi lần chạy·~10 / $1
A teen girl sits in front of her phone camera, talking animatedly, adjusting lighting, and reacting to comments. Posters, fairy lights, and stuffed animals in the background. Natural movement, expressive face, realistic indoor vibe.
A father gently supports his young son on a small bike, running beside him along a suburban street. The child wobbles, then finds balance. Camera follows from low angle, capturing motion, joy, and growth. Natural daylight, lens flares, suburban realism.
An elderly man with white hair gestures animatedly as he tells a story to three young children sitting at his feet in a cozy living room. A fireplace crackles in the background. The children giggle and gasp. Close-ups on facial expressions, warm ambient glow.
A middle-aged woman jogs through early-morning city streets, earbuds in, sweat on her brow. Traffic lights blink in the distance. The sun begins to rise between tall buildings. Rhythmic pacing, lens flares, urban realism.
A young artist paints on a rooftop canvas as the sun sets behind city buildings. She mixes colors on a palette, brushes long strokes, and steps back to observe. The sky is orange-pink. Gentle wind moves her hair and clothes. Soft textures, solitary beauty.
A woman stands in a wide wheat field, eyes closed, her scarf fluttering violently in the wind. Camera orbits slowly, lens catching sun flare from behind. Grains sway rhythmically, birds rise in the distance, shadows move across the land with cloud drift. Soft ambient soundscapes enhance solitude.
A heavy industrial machine slowly powers up inside a dimly lit warehouse, red and green lights blink in sequence. Camera rotates around the central motor as it begins to spin, slight vibration in the frame. Steam vents release puffs periodically, metallic clanks echo off concrete walls.
Explosive action sequence, car exploding in downtown, shards of glass flying, fire and smoke, realistic physics, hero diving away from explosion, cinematic wide-angle, slow motion effect, ultra-realistic lighting, high dynamic range, photorealistic, intense atmosphere
Tense shootout scene, hero taking cover behind abandoned car, muzzle flashes illuminating night alley, rain-soaked environment, dramatic camera angle, realistic smoke and sparks, 8K ultra-detailed, photorealistic textures, dynamic composition, high intensity action
Epic helicopter chase over city, hero hanging from helicopter skid, motion blur, realistic clouds and wind effects, cinematic lighting, photorealistic textures, dynamic camera angle, intense action, high detail, dramatic composition
Wan 2.2 (Ultra-Fast 480p, with LoRA) is a high-speed multimodal video generation model. It delivers cinematic-quality results at ultra-fast inference speed, with support for up to 3 LoRAs per job for flexible style and character control.
Cinematic-level Aesthetic Control: Professional camera language, multi-dimensional control over lighting, color, and composition.
Large-scale Complex Motion: Smoothly restores natural motion, supports multi-subject dynamics, and enhances controllability.
Precise Semantic Compliance: Excels at complex scene understanding and multi-object generation, ensuring faithful creative intent.
LoRA Integration: Import up to 3 LoRAs per job for both high-noise and low-noise experts, with adjustable blending scale.
Resolution: 480p
Duration options: 5s or 8s
Input types:
Prompt
Image (First Frame)
Last Image (Last Frame)
LoRAs: up to 3 high-noise LoRAs + 3 low-noise LoRAs or just 3 LoRAs
Seed: reproducibility control
| Duration | Cost |
|---|---|
| 5 seconds | $0.10 |
| 8 seconds | $0.16 |
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/i2v-480p-lora-ultra-fast with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Wan 2.2 I2v 480p Lora Ultra Fast below.
set -euo pipefail
: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"duration": 5,
"seed": -1
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/i2v-480p-lora-ultra-fast" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d "$REQUEST_BODY")
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/i2v-480p-lora-ultra-fast";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"duration": 5,
"seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
`https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"duration": 5,
"seed": -1
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/i2v-480p-lora-ultra-fast", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout"}:
raise RuntimeError(result)
if status not in {"created", "processing"}:
raise RuntimeError(f"Unexpected status: {status}")
time.sleep(2)Wan 2.2 I2v 480p Lora Ultra Fast is a WaveSpeedAI model for AI inference, exposed as a REST API on WaveSpeedAI. Wan 2.2 i2v delivers ultra-fast Image-to-Video at 480p with support for custom LoRAs for tailored styles. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.
POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/wan-2.2-i2v-480p-lora-ultra-fast.
Wan 2.2 I2v 480p Lora Ultra Fast starts at $0.10 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.
Key inputs: `prompt`, `image`, `duration`, `seed`, `negative_prompt`, `high_noise_loras`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/wan-2.2-i2v-480p-lora-ultra-fast.
Median end-to-end generation time on WaveSpeedAI is around 34 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.
Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.