Introduction
Wan 2.1 LoRA Video to video redraws a clip you already have, keeping its motion and pacing, with up to three of your LoRA files loaded on Alibaba's open 14B video model. The result comes back at 480p or 720p in the shape of the source, without a content filter.
Choose a mode by starting material
| What you have | Mode |
|---|---|
| a written description | Wan 2.1 LoRA Text to video |
| a photo to animate | Wan 2.1 LoRA Image to video |
| a clip to restyle | Wan 2.1 LoRA Video to video |
| a still image instead of a clip | Wan 2.1 Image LoRA Text to image |
Key features & highlights
Motion kept, look changed
The result keeps the movement, the camera and the timing of your source clip, while wardrobe, setting, light and style follow the prompt. In our test a woman walking across a hotel room in a dark dress kept her walk and framing while her clothes changed to what the prompt described.
One strength control
strength 0.9, the default, redraws the clip; at 0.5 our source came back almost unchanged. Go between the two when you want to keep more of the original.
LoRAs on footage
Text-to-video LoRAs for Wan 2.1 apply here too. In our test an unfiltered LoRA got a Strong-level request through that the prompt alone could not.
Uncensored with custom weights
LoRAs are not reviewed and the output is not filtered.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required. Describe the whole result (subject, wardrobe, setting, light, style), not just the change. at least 1 characters |
negative_prompt | No | What to keep out of the clip, such as blur, extra fingers, text or watermarks. Optional, no effect on price. |
video_url | Yes | The source clip. Its motion and timing carry over; the result keeps its shape and is never longer than it. at least 1 characters |
resolution | No | 480p (the default) or 720p. 720p costs more per clip and takes longer; the shape follows the source. |
strength | No | How far to move from the source, 0.1 to 1, default 0.9. In our test 0.9 redrew the clip and 0.5 returned it almost unchanged. |
duration_seconds | No | 5 (the default) or 10. The result is never longer than the source, but 10 is billed at the 10-second rate, so use it only for sources of 10 seconds or more. |
loras | No | Up to three {path, scale} entries trained for Wan 2.1 14B; path is a public direct link to a .safetensors file, scale runs from 0 to 4 (1 by default). Default: |
guidance_scale | No | How strictly the clip follows the prompt, 0 to 20, default 5. Raising it while lowering steps gave us oversaturated, artefact-ridden frames. |
flow_shift | No | Flow-matching timestep shift, 1 to 10. Leave it out to use 3 at 480p and 5 at 720p; change it only when a LoRA author recommends a value. |
steps | No | Denoising steps, 1 to 40, default 30. Fewer steps are faster and softer. |
seed | No | Keeps runs comparable while you change one LoRA or one scale at a time. It does not promise an identical result. |
Pricing
Billed per clip by resolution and the 5 or 10 second choice, also when the source is shorter than 10 seconds. LoRAs and strength do not change the price.
| Resolution | Duration: 5 | Duration: 10 |
|---|---|---|
| $0.24 / request | $0.36 / request |
| $0.36 / request | $0.54 / request |
Use cases
Costume and period changes
Turn modern footage into a costume or period scene without reshooting: the actor's movement and the camera stay, the clothes and the set change.
A consistent cast across clips
Redraw every clip in a set with the same prompt and LoRA so the people and their clothes match from shot to shot. Expect photographic results: in our runs footage did not turn into illustration.
Platforms without a content filter
Restyle your own footage with unfiltered LoRAs. Everyone on screen must be an adult.
Prompt guide & pro tips
Describe the result
Write the whole scene as it should look, subject, wardrobe, setting and light, not only the change. The model redraws everything from your description and borrows the motion from the source.
Keep strength high
Below about 0.6 the source comes back nearly unchanged. Start at 0.9 and lower it only when too much of the original disappears.
Match the length
Pick 10 seconds only for sources of 10 seconds or more. Shorter sources come back at their own length but are billed at the 10-second rate.
Send a video
An image link in video_url is not rejected: it returns a one-frame clip that is still billed. Check the link before you send it.
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.1-lora/video-edit",
"input": {
"duration_seconds": 5,
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "480p",
"video_url": "https://example.com/reference.mp4"
}
}'
# 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.
























