Introduction
Wan 2.2 Spicy LoRA Image to video turns one opening frame and a prompt into a 5- or 8-second clip at 480p or 720p, with up to three of your own LoRA files loaded from links you host. The image fixes the subject, wardrobe, set and aspect ratio; the prompt directs the motion and the camera; the LoRAs carry the rendering style.
Choose a Wan 2.2 Spicy LoRA mode by starting material
| What you have at the start | Mode |
|---|---|
| an opening image to animate | Wan 2.2 Spicy LoRA Image to video |
| a finished clip to continue from its last frame | Wan 2.2 Spicy LoRA Video extend |
Key features & highlights
Three LoRA lists, each aimed at a different stage
The main list applies its LoRAs to the whole generation. Two further lists, up to three entries each, act on one stage only: the high-noise stage decides composition and motion, so a camera or movement style belongs there, while the low-noise stage resolves detail and texture, which suits line art, grain or a rendering treatment. Every entry is a direct download link plus a strength from 0 to 4 that defaults to 1.
A styled opening frame gives the LoRAs less to invent
The clip starts from the image you send, and its aspect ratio comes from that image, since there is no separate aspect-ratio field. A plate that is already painted, drawn or airbrushed in the target look lets a LoRA hold that style through the motion; asked to invent the style from a neutral photograph, it has far more to fight.
Weights stay on your hosting, and nothing is screened
Each LoRA file is fetched from the URL you supply for the run and nothing is stored, so private weights can sit behind a signed link. Nothing in the request declares content and no LoRA is inspected; the rights to the files, their training data and the opening frame are yours to hold.
Request parameters
| Parameter | Required | Description |
|---|---|---|
low_noise_loras | No | Up to three LoRAs applied only in the low-noise stage, where detail and texture resolve. The right place for line art, grain or a rendering treatment. at most 3 items |
high_noise_loras | No | Up to three LoRAs applied only in the high-noise stage, where composition and motion are decided. The right place for a camera or movement style. at most 3 items |
image_url | Yes | The opening frame. Subject, wardrobe, set and the clip's aspect ratio come from it; a plate already in the target style gives the LoRAs far less to fight. at least 1 characters |
prompt | Yes | Required. Describe motion and camera. |
loras | No | Up to three LoRAs. Each entry needs a direct download URL for the LoRA file; strength is optional and defaults to 1. at most 3 items |
duration_seconds | No | Exactly 5 or 8. Anything else is a validation error, not a rounded clip. |
resolution | No | 480p or 720p, default 480p. Sweep LoRA strength at 480p and re-render only the winner at 720p. |
seed | No | 0 to 2147483647. Hold it fixed while sweeping a LoRA's scale, otherwise you are reading noise. |
Pricing
| Specification | Price |
|---|---|
| $0.024 / second |
| $0.048 / second |
Use cases
Animate a painted character plate in its own style
The published candlelit-crypt example sends a dark fantasy illustration of an elven sorceress on a stone throne at 480p for five seconds with a fixed seed of 771408: candle flames sway, she lifts her hand and turns toward camera, embers drift upward. It runs with no LoRA attached, so it shows what the base model does with an already-styled plate. Add a painterly LoRA to the main list when that look has to hold across a whole set of clips made from one character plate.
Find the LoRA strength before committing to 720p
Keep the plate, prompt and seed fixed, then run one LoRA at strengths from 0.5 to 1.5 across four clips at 480p. Past roughly 1.5 the style usually starts consuming the subject instead of styling it. Re-render only the winning strength at 720p; resolution and duration are the two settings that change the quote.
Open a scene that video-extend will continue
Generate the first five or eight seconds here, then hand the finished clip to the video-extend endpoint. Extensions join most cleanly from a settled pose, so end the brief on a held position. Write down the exact LoRA URLs and strengths so the next pass can repeat them.
Prompt guide & pro tips
Spend the prompt on motion, not on the style
Describe what moves, in what order, and how the camera behaves. The crypt brief is a working model: “The candle flames gutter and sway across the crypt as she lifts her hand from the armrest, turns her head toward camera … Slow push-in, deep crimson and obsidian”. Naming the style in the prompt as well as loading a LoRA for it tends to double the effect rather than reinforce it, so leave the look to the weights and the plate.
Add LoRAs one at a time
Three LoRAs in one list blend rather than layer. When you stack style, fabric and lighting weights, the fabric LoRA and the lighting LoRA compete for the same highlights, so keep the action to a single turn and let the surfaces carry the effect. A LoRA that should shape only the movement goes in high_noise_loras; one meant only for texture goes in low_noise_loras. Add the second and third weights only after the first behaves at the strength you chose.
Check the hard limits before you submit
image_url and prompt are required. duration_seconds accepts exactly 5 or 8; any other value is a validation error, not a rounded clip. There is no closing-frame field (Wan 2.2 Spicy publishes one) and no prompt expansion switch. Watermarks and burned-in text in the opening frame carry straight through to the output, so clean the plate first. The airbrush-pool-hold example runs with no LoRA and makes a baseline your LoRA results have to beat.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-2.2-spicy-lora/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "480p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.




























