Introduction
Wan 2.2 Spicy LoRA Video extend continues an existing clip from its final frame for another 5 or 8 seconds at 480p or 720p. It accepts the same three LoRA lists as image-to-video, so the weights that styled the first pass can be attached again to the next segment. They are not inherited from the source clip and have to be sent on every call.
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
The style carries over because you repeat the weights
A LoRA attached on the first pass does not travel inside the rendered clip. Send the same links at the same strengths on every extension and the look is carried into each segment instead of being rebuilt; change a weight or its strength between passes and the render treatment shifts at the seam. Every extension is still a fresh generation, so small rendering shifts can creep in and each join deserves a look.
The output includes the source footage
The returned video starts with the clip you supplied and then continues it, so it runs longer than the seconds you requested. Trim the source portion before splicing the new material onto your original edit, otherwise the source seconds play twice.
Length built one segment at a time
Each call adds exactly five or eight seconds. A longer scene is built by feeding each approved segment back in as the next source, which means every segment can be reviewed and rejected before the next one is paid for. Keep the resolution of the source clip: switching between 480p and 720p partway through a chain shows at the join.
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 |
video_url | Yes | The clip to continue. The extension starts from its final frame, so a source that ends on a settled pose joins much more cleanly. at least 1 characters |
prompt | Yes | Required. Describe the next beat only — the subject and the look are already carried forward from the source clip. |
loras | No | Up to three LoRAs, and they belong here as well as on the first pass. Repeat the same URLs and strengths, or the style shifts at the join. at most 3 items |
duration_seconds | No | Exactly 5 or 8 seconds of new material. Anything else is rejected rather than rounded. |
resolution | No | 480p or 720p, default 480p. Match the source clip unless you want the change to be visible at the seam. |
seed | No | 0 to 2147483647. Fix it while you try several next beats from one source clip. |
Pricing
| Specification | Price |
|---|---|
| $0.038 / second |
| $0.076 / second |
Use cases
Continue a LoRA-styled clip for eight more seconds
The published extend-the-stack example takes the 720p clip made on image-to-video with three stacked LoRAs and asks for eight more seconds: she turns away from the light and the satin falls off the other shoulder. The prompt covers only the new movement, which starts out of a hold, and the same LoRA set is attached again rather than inherited.
Test the seam with no LoRA at all
The tail-rise-continue example extends a 720p clip by five seconds without any LoRA, to show the join on its own terms: she rises off her knees, a plush tail sweeps a slow arc across the rug and she turns fully to camera. Deep crimson lamplight and film grain have to cross the seam unchanged, which makes it a useful baseline before you judge whether a LoRA is causing a shift.
End a sequence on a hold that can still be extended
The closing-hold example asks for eight seconds with a locked camera and seed 640022: she stops at the top of the stairs, looks back toward the crypt and holds still as the candles steady behind her. Finishing on a settled pose gives the edit a clean ending and keeps a further extension possible, because extensions join most cleanly from a still final frame.
Prompt guide & pro tips
Write only the next beat
The subject and the look already come from the source clip, so the prompt describes what happens next. Watch the source to its last frame and start from that exact state. “Continuing the same unbroken take: she rises up from her knees...” works because it names the pose the clip ended on and asks for one continuous move with no cut.
Send a direct file link, and keep LoRA links short
video_url must point at the video file itself. A page that plays the video returns HTML instead, no duration can be read from it and the call fails; uploading the file is the most reliable option. On this endpoint every LoRA path, in all three lists, can be at most 500 characters, and many presigned links run longer, so check the length or use a shorter link.
Hold the variables while you compare next beats
Fix seed (0 to 2147483647) while you try several next beats from one source clip, so the differences you see come from the prompt. Match resolution to the source clip unless the change is meant to show at the seam, and keep duration_seconds at 5 or 8; any other value is rejected rather than rounded. If identity or direction jumps at the join, simplify the beat and retry before extending further.
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/video-extend",
"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.




























