alibaba/wan-2.2-spicy/image-to-video
alibaba/wan-2.2-spicy/image-to-video
Turn a first frame and optional last frame into coherent motion video with 5/8-second, 480p/720p output and intelligent prompt expansion.
Examples
Parameters
| Name | Type | Default | Constraints | Description |
|---|---|---|---|---|
| image *Input Image | image_upload | — | image/* · 0–1 items | Image URL used as the visual source for the request. |
| last_imageLast Frame | image_upload | — | image/* · 0–1 items | Optional final-frame image URL used to guide how the video ends. |
| prompt *Prompt | textarea | — | ≤ 5000 chars | Describes the desired subject, action, composition, camera movement, lighting, and style. |
| durationDuration | select | 5 | 5 | 8 | Selects the output video duration in seconds. |
| resolutionResolution | select | 480p | 480p | 720p | Selects the output resolution or provider generation mode. Higher settings may take longer to process. |
| prompt_extendPrompt Extend | boolean | true | — | Automatically expands short prompts with additional visual detail before generation. |
| seedSeed | number | — | ≥ 0 · step 1 | Optional random seed for reproducible results; leave empty to use a random seed. |
Output fields
| Field | Type | Description |
|---|---|---|
| videos | array<string> | Generated video URL(s). |
API
Call this model through one unified REST API. Get a key on the API Keys page.
cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/alibaba/wan-2.2-spicy/image-to-video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"image": [
"https://assets-public.namifusion.com/marketplace/images/2026-06-12/638e1ee18ac7.jpeg"
],
"prompt": "Animate the subject with natural motion, a slow cinematic camera push-in, soft wind, stable anatomy, and consistent lighting.",
"duration": 5,
"resolution": "480p",
"prompt_extend": true
}
}'
# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
-H "Authorization: Bearer YOUR_API_KEY"Python
import time, requests
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1) Submit
resp = requests.post(
"https://www.namifusion.com/api/v1/marketplace/run/alibaba/wan-2.2-spicy/image-to-video",
headers=HEADERS,
json={
"input": {
"image": [
"https://assets-public.namifusion.com/marketplace/images/2026-06-12/638e1ee18ac7.jpeg"
],
"prompt": "Animate the subject with natural motion, a slow cinematic camera push-in, soft wind, stable anatomy, and consistent lighting.",
"duration": 5,
"resolution": "480p",
"prompt_extend": True
}
},
)
resp.raise_for_status() # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()
# 2) Poll until a terminal state (completed / failed / cancelled).
# This model is allowed up to 300s server-side.
deadline = time.time() + 360
while task.get("status") not in ("completed", "failed", "cancelled"):
if time.time() > deadline:
raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
time.sleep(3)
poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
poll.raise_for_status()
task = poll.json()
print(task["status"], task.get("output"))JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };
// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/alibaba/wan-2.2-spicy/image-to-video", {
method: "POST",
headers: { ...HEADERS, "Content-Type": "application/json" },
body: JSON.stringify({
"input": {
"image": [
"https://assets-public.namifusion.com/marketplace/images/2026-06-12/638e1ee18ac7.jpeg"
],
"prompt": "Animate the subject with natural motion, a slow cinematic camera push-in, soft wind, stable anatomy, and consistent lighting.",
"duration": 5,
"resolution": "480p",
"prompt_extend": true
}
}),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();
// 2) Poll until a terminal state (completed / failed / cancelled).
// This model is allowed up to 300s server-side.
const deadline = Date.now() + 360 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
await new Promise((r) => setTimeout(r, 3000));
const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
task = await poll.json();
}
console.log(task.status, task.output);Documentation
alibaba/wan-2.2-spicy/image-to-video
Animate a still image into a controlled 5- or 8-second video with optional end-frame guidance.
Wan 2.2 Spicy Image-to-Video turns a source image and text prompt into a short video while preserving the subject and overall visual identity of the input. It supports two practical resolution tiers, optional last-frame control, prompt expansion, and a reproducible seed, making it suitable for both quick previews and polished content production.
Key Features
- Image-led motion generation: Uses the input image as the visual anchor and adds subject, camera, and environmental motion.
- Optional final-frame guidance: Supply
last_imagewhen the clip needs to converge toward a specific ending composition. - Two duration choices: Generate either 5-second or 8-second clips.
- 480p and 720p output: Balance turnaround time, detail, and credit usage for each job.
- Prompt expansion: Automatically enrich short prompts before generation when
prompt_extendis enabled. - Seed control: Reuse a seed when you need comparable variations from the same input.
Technical Specifications
| Item | Details |
|---|---|
| Task | Image-to-video generation |
| Required input | image, prompt |
| Optional input | last_image, seed |
| Resolution | 480p (default), 720p |
| Duration | 5 seconds (default), 8 seconds |
| Prompt expansion | Supported and enabled by default |
| Output | Generated video URL |
Sample Prompts
Animate the subject with natural breathing and subtle head movement, slow cinematic camera push-in, soft wind, stable anatomy, warm evening light.The product remains centered while the camera makes a gentle orbit; reflections move naturally across the surface, premium studio lighting.Clouds drift behind the character, fabric moves in a light breeze, shallow depth of field, smooth and coherent motion.
Pricing
| Resolution | 5 seconds | 8 seconds |
|---|---|---|
| 480p | 10 credits | 16 credits |
| 720p | 20 credits | 32 credits |
Prompt expansion adds 0.1 credit per request when enabled. These values reproduce the existing Marketplace pricing configuration; this documentation update does not alter pricing.
Best Use Cases
- Social clips built from portraits, illustrations, or campaign artwork.
- Product motion shots for ads, storefronts, and presentation material.
- Storyboard and concept-art animation for creative review.
- First-frame and last-frame transitions that need a defined visual destination.
Best Practices
Use a sharp image with one clearly framed subject. Describe subject motion, camera behavior, lighting, and atmosphere separately. Keep requested motion physically plausible, and use a last frame only when its subject, framing, and style are compatible with the first image.
Related models
xAI Grok Imagine Video v1.5 Image to Video
Animate one input image with a text prompt into a 1-15 second video at 480p or 720p.
vidu/q3/image-to-video-spicy
Vidu Q3 Image-to-Video Spicy generates unlimited high-quality videos from images with smooth animations and diverse motion, optimized for scalable content generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Vidu Q3 Image To Video
Vidu Q3 Image-to-Video turns text prompts into high-quality videos with exceptional visual fidelity and diverse motion. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

MiniMax H3 Spicy Image to Video
Animate a first-frame image with optional prompt and last-frame guidance. Supports 480p, 540p, 768p and 1080p video, with durations from 3 to 15 seconds.
MiniMax H3 Image to Video
MiniMax H3 Image to Video animates a first-frame image into a coherent 2K video, with natural-language motion instructions and optional last-frame control for consistent motion, scene continuity, and cinematic video generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
ltx-2.5/image-to-video
LTX 2.5 Image-to-Video animates a first-frame image into high-fidelity synchronized audio-video content, with optional last-frame guidance and 720P / 1080P / 2K / 4K output for cinematic videos, social content, ads, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
ai/ltx-2.3-spicy/image-to-video-lora
LTX 2.3 Spicy LoRA Image to Video API turns a reference image and prompt into expressive AI videos using selectable LoRA presets, optional LoRA strength overrides, duration, and resolution controls. Run fast REST inference on MaaS with no cold starts and affordable pricing.
ai/ltx-2.3-spicy/image-to-video
LTX 2.3 Spicy Image-to-Video API generates expressive AI videos from a reference image and prompt. Choose style presets, duration, and resolution with fast REST inference, no cold starts, and affordable pricing on MaaS.