Introduction
Wan 2.6 Image to video starts from the frame you send in image_url and returns exactly 5, 10 or 15 seconds at 720p or 1080p, with sound. The frame fixes the subject, wardrobe, set, light direction and the proportions of the clip. The prompt is optional and holds up to 1,500 characters: one action for a single take, or numbered shots for a multi-shot edit.
Choose a Wan 2.6 mode by starting material
| What you have at the start | Mode |
|---|---|
| a written scene or script | Wan 2.6 Text to video |
| an approved opening image | Wan 2.6 Image to video |
| separate visual, motion, or sound references | Wan 2.6 Reference to video |
Key features & highlights
The frame decides shape and appearance
There is no aspect ratio field: the clip keeps the proportions of the image you send, so a 9:16 delivery starts with a 9:16 crop. The frame can be JPEG, PNG without transparency, BMP or WEBP, 240 to 8,000 pixels on each side and no larger than 20 MB. Everything visible in it is already decided, which leaves the prompt free to describe motion.
Coverage cut from one frame
With shot_type set to multi, the model can cut between angles while keeping the look of the opening frame, so a fifteen-second clip can carry an establishing view, a detail and a payoff instead of one drifting camera move. A multi request always runs with prompt expansion on. Keep single for product turns, talking heads and anything that must stay continuous, because multi breaks continuity by design.
Sound generated or supplied
The clip returns with audio generated in the same pass as the picture. To make speech or musical beats land where you expect, send audio_url: WAV or MP3, 3 to 30 seconds, up to 15 MB. A longer track is cut to the clip length; with a shorter one, the rest of the clip is silent.
Request parameters
| Parameter | Required | Description |
|---|---|---|
image_url | Yes | The opening frame. Subject, wardrobe, set, light direction and the clip's proportions all come from it, so crop it first. |
prompt | No | Optional. One action for a single take, or numbered shots for a multi-shot edit. at least 1 characters · at most 1500 characters |
negative_prompt | No | What must not appear: a second person, captions, a prop the frame keeps bringing back. Up to 500 characters. at most 500 characters |
resolution | No | 720p or 1080p, default 720p. It sets the per-second rate and how long the task takes. |
duration_seconds | No | Exactly 5, 10 or 15. Multi-shot edits need the longer lengths to breathe. |
audio_url | No | A voice line or music cue for the clip to follow, so speech and beats land where you expect. WAV or MP3, 3 to 30 seconds, up to 15 MB. |
shot_type | No | single keeps one continuous take; multi lets the model cut between shots, which suits short stories but breaks continuity. |
enable_prompt_expansion | No | Off by default. Turning it on helps a one-line idea grow into a shot list for multi; leave it off when your prompt is already precise. Default: |
seed | No | 0 to 2147483647. Fix it when comparing single against multi from the same frame. |
Pricing
| Specification | Price |
|---|---|
| $0.09 / second |
| $0.135 / second |
Use cases
A product macro that must not jump
The serum example animates a still of a dropper bottle for five seconds at 1080p with a fixed seed. A single drop falls from the dropper tip, rings spread across the liquid and the light band on the glass brightens slightly, all under locked macro framing with a soft chime of glass. It stays a single take because a product shot should not cut between angles.
A short interior story from one still
The evening apartment example runs 15 seconds at 720p with shot_type set to multi and prompt expansion on. One interior frame supplies three shots: the lamp flickers as city lights blink on outside, a folded blanket slides off the armchair, and the front door swings open to spill hallway light across the floorboards, under quiet room tone and distant traffic.
A character frame speaking your own line
Pair a character still with a recorded voice line in audio_url so the speech lands where you expect rather than as generic motion. Talking heads belong on single, and the full length is worth checking: when the track is shorter than the clip, the remainder plays silent.
Prompt guide & pro tips
Prepare the frame before writing a word
Crop to the delivery shape and make sure the frame already shows the wardrobe, set and light you want, because no prompt rescues a wrong first frame. Remove captions or a second subject you do not want animated, and use negative_prompt, up to 500 characters, for anything the frame keeps bringing back, such as a prop or on-screen text.
Describe motion, not what is already visible
For a single take, write one action and one camera move. The serum prompt names the drop, the rings, the change in the light band, the framing and one sound, and says nothing about the shape of the bottle or its label, because the frame already carries them.
A single drop falls from the dropper tip into the bottle and sends slow rings across the liquid surface; the light band on the glass brightens a little. Locked macro framing, soft chime of glass.
Plan a multi-shot edit
Write numbered shots, each with its own framing, and pick 10 or 15 seconds so the cuts have room. Choosing multi switches enable_prompt_expansion on for that request. For a single take it stays off by default, which sends a precise prompt exactly as written.
Compare single and multi from the same frame
Fix seed, which accepts 0 to 2147483647, keep the frame and the prompt unchanged, and run the request once as single and once as multi to see which serves the shot. Resolution sets the per-second rate and how long the task takes, so settle the wording at 720p before rendering at 1080p. A fixed seed steadies the comparison without promising a frame-identical rerun.
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.6/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"resolution": "720p",
"shot_type": "single"
}
}'
# 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.




























