Introduction
Wan 3.0 Prime Image to video animates an opening frame for 2 to 30 seconds on the Prime render, with the same fields as Wan 3.0 Image to video. image_url is required and becomes the exact first frame; the prompt is optional and only needs to describe motion; last_image_url optionally fixes the final frame. Resolution is 480p, 720p or 1080p with 720p as the default, and audio is generated with the picture unless you set generate_audio to false.
Choose a Wan 3.0 Prime mode by starting material
| What you have at the start | Mode |
|---|---|
| a written scene or script | Wan 3.0 Prime Text to video |
| an approved opening image | Wan 3.0 Prime Image to video |
| separate visual, motion, or sound references | Wan 3.0 Prime Reference to video |
Key features & highlights
Set and wardrobe from the still, action from the prompt
Since the frame supplies the look, the whole request can go on action and sound. The sauna example opens on a still that already holds the set and the wardrobe; its prompt covers a ladle of water hitting hot stones, a burst of steam, the back of a wrist drawn across the collarbone, and an audio line naming the hiss, cedar creaking and slow breathing.
A fixed ending makes long changes safe
last_image_url makes the clip end exactly on a supplied image. The dance-floor example opens on an empty floor and ends on a supplied frame of a full room, 10 seconds at 1080p in 3:4 with audio off, so the model invents how the room fills rather than what it fills up to.
The frame's own shape by default
Leave aspect_ratio out and the clip keeps the opening frame's shape; a conflicting value crops. Source images can be JPEG, PNG without transparency, BMP or WEBP, 240 to 8000 pixels per side, up to 20 MB and no wider than 8:1. The closing frame follows the same file limits.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | No | Optional: without it the model animates the opening frame on its own. When you write one, describe the shot: subject, one action, one camera move, then light and sound. at least 1 characters |
image_url | Yes | The opening frame, used exactly as the first frame, and the real quality ceiling of the shot. |
last_image_url | No | Optional, and only together with |
aspect_ratio | No | 16:9, 9:16, 1:1, 4:3, 3:4 or adaptive, which lets the model choose. Omit it to inherit the opening frame's shape; a conflicting value crops. |
enable_thinking | No | Has the model think through the brief and any reference material before generating. It helps with dense documents, web pages and complex reference images, and makes the run slower. Default: |
resolution | No | 480p, 720p or 1080p. Defaults to 720p. |
duration_seconds | No | Any whole number from 2 to 30, or -1 for smart duration, where the model picks the length: the 30-second maximum is held up front and the charge settles on the length actually d… |
generate_audio | No | On by default. The clip comes back with sound already locked to the picture. Default: |
enable_prompt_expansion | No | Off by default. When on, the prompt is rewritten before generation, which helps thin briefs and fights you on detailed ones. Default: |
seed | No | 0 to 2147483647. Hold it steady to compare one changed field at a time; drop it for variety. |
Pricing
| Specification | Price |
|---|---|
| $0.0612 / second |
| $0.126 / second |
| $0.252 / second |
Use cases
Fast action from a still
The beach example starts from a rider on horseback and asks for the canter to open into a gallop, sand and shallow water thrown up behind the hooves, and a fast tracking move alongside as she passes into a low sun. At that speed the opening frame stops helping, so the prompt carries the physics: what is thrown, in which direction, and how the camera keeps up.
One gesture with a pinned close
The masquerade example pins both ends — a supplied first and last frame of the same woman on the same marble staircase — and describes the entrance between them: she lifts away her gold mask, gathers her gown and walks down a few steps toward the camera while the masked guests raise their glasses. Because the closing still was made from the opening one, the gown, the chandelier and the crowd stay where they were. It runs 5 seconds at 720p with sound.
Prompt guide & pro tips
Approve the landing frame as a still first
When the ending matters, make the last frame before you render, from the same set and crop as the first. Approving it as a still is far cheaper than iterating on a long middle, and it turns the prompt's job into describing a transition rather than inventing a destination.
Write sound as a list of sources
The sauna prompt ends with an "Audio:" line naming each source. That is more reliable than a mood word, and it ties each sound to the action that causes it. Set generate_audio to false, as the dance-floor example does, when the clip will be scored in the edit.
Settle short, then lengthen
Run the motion at 5 seconds with a fixed seed, then extend. Longer clips drift more in identity and geometry, and fast limb crossings at 30 seconds are where artefacts appear first. Keep enable_prompt_expansion at its default false so a precise motion brief is not rewritten before generation.
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-3.0-prime/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": "720p"
}
}'
# 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.



























