Wan 2.1 i2v 480p Ultra-Fast enables unlimited image-to-video generation at 480p for fast, reliable video creation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Inactivo
$0.125por ejecución·~80 / $10
A girl stands in a lively 17th-century market. She holds a red tomato, looks gently into the camera and smiles briefly. Then, she glances at the tomato in her hand, slowly sets it back into the basket, turns around gracefully, and walks away with her back to the camera. The market around her is rich with colorful vegetables, meats hanging above, and bustling townsfolk. Golden-hour painterly lighting, subtle facial expressions, smooth cinematic motion, ultra-realistic detail, Vermeer-inspired style
a girl in a field of wildflowers, wearing a white dress, sunlight filtering through trees, looking up with a smile, dreamy and peaceful
a girl taking a selfie in snowfall, fluffy hat and coat, smiling with flushed cheeks, snow-covered street behind her
a woman sitting at a wooden desk reading a book, light from a table lamp, casual clothing, relaxed atmosphere, bookshelves in the background
A young man casually checking his phone while walking slowly along a neon-lit city street at dusk. The lights flicker gently as passing cars reflect on the wet pavement. A soft breeze ruffles his hair and clothes, and the camera slowly zooms in with a shallow depth of field.
A woman in a retro red dress sits gracefully by a sunlit window, her eyes gently following the dust particles dancing in the warm light. As she slowly turns her head to look outside, the lace curtains flutter slightly. The camera tilts from a side angle to a gentle front focus, capturing the timeless serenity of the moment.
The woman slightly turns her head, a gentle breeze rustles her dress, city traffic flows smoothly below. Cinematic lighting, soft focus, depth of field, natural color grading, subtle lens flares. Photorealistic, 8K video, film grain, blockbuster movie shot, realistic reflections. Slow dolly zoom out, subtle pan left.
Gears slowly turn, steam hisses from pipes, small clockwork mechanisms whir, the inventor adjusts a dial. Sepia tones, brass and copper textures, intricate mechanical details, warm glow from oil lamps, cogwheel overlays. Steampunk aesthetic, Victorian era, clockworkpunk, retrofuturism, industrial design, intricate machinery focus. Detailed close-up shots of mechanisms, slow pan across the workshop, slight tilt-shift effect.
A child rides a paper boat through a river of stars, cosmic waves, surreal lighting, soft camera pan
A woman photographer sets up her tripod in a wide open countryside at sunrise. The grass sways gently. She adjusts the focus ring on her camera and smiles in satisfaction. Birds sing in the distance. The camera follows her movements with a soft handheld feel.
A girl in a sundress walks barefoot along the beach as small waves touch her feet. Her dress moves in the wind as she walks calmly into the sunset.
Wan 2.1 Image-to-Video 480p Ultra Fast is a lightning-fast image-to-video generation model optimized for speed and efficiency. Transform static images into dynamic videos in seconds — perfect for rapid iteration, previews, and high-volume processing.
| Parameter | Required | Description |
|---|---|---|
| image | Yes | Source image to animate (upload or public URL). |
| prompt | Yes | Text description of desired motion and style. |
| negative_prompt | No | Elements to avoid in the output. |
| size | No | Output resolution (default: 832×480). |
| num_inference_steps | No | Quality/speed trade-off (default: 30). |
| duration | No | Video length: 5 or 10 seconds (default: 5). |
| guidance_scale | No | Prompt adherence strength (default: 5). |
| flow_shift | No | Motion flow control (default: 3). |
| seed | No | Set for reproducibility; -1 for random. |
| Duration | Price |
|---|---|
| 5 seconds | $0.125 |
| 10 seconds | $0.1875 |
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.1/i2v-480p-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.1 I2v 480p 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",
"size": "832*480",
"num_inference_steps": 30,
"duration": 5,
"guidance_scale": 5,
"flow_shift": 3,
"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.1/i2v-480p-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.1/i2v-480p-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",
"size": "832*480",
"num_inference_steps": 30,
"duration": 5,
"guidance_scale": 5,
"flow_shift": 3,
"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",
"size": "832*480",
"num_inference_steps": 30,
"duration": 5,
"guidance_scale": 5,
"flow_shift": 3,
"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.1/i2v-480p-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.1 I2v 480p Ultra Fast is a WaveSpeedAI model for video generation from images, exposed as a REST API on WaveSpeedAI. Wan 2.1 i2v 480p Ultra-Fast enables unlimited image-to-video generation at 480p for fast, reliable video creation. 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.1-i2v-480p-ultra-fast.
Wan 2.1 I2v 480p Ultra Fast starts at $0.13 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`, `size`, `seed`, `guidance_scale`. 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.1-i2v-480p-ultra-fast.
Median end-to-end generation time on WaveSpeedAI is around 78 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.