Introduction
Wan 2.2 Image to video starts from a picture you supply and animates what happens next. Two inputs are required: an opening frame in JPEG, PNG or WebP of up to 10 MB, and a prompt of up to 5,000 characters that describes the motion. Each request returns one silent five-second clip at 480p, the default, or 720p.
Choose a Wan 2.2 mode by starting material
| What you have at the start | Mode | What the request needs |
|---|---|---|
| a written scene or script | Wan 2.2 Text to video | a prompt; 16:9 or 9:16 |
| a still you want to keep | Wan 2.2 Image to video | an image and a prompt; the frame sets the shape |
Key features & highlights
The frame carries the appearance
Subject, wardrobe, set and light direction all come from the opening image, so the prompt does not have to describe them again. That makes this mode the right one for material that has to match: in the serum-bottle example the frame fixes the label and silhouette, and the prompt asks only for a camera arc and moving light.
The shape comes from the image
There is no aspect-ratio setting on this endpoint. 16:9 and 9:16 are the safest proportions, because a frame in other proportions can come back resized and centre-cropped. Crop the image to the delivery shape before you upload it.
Fixed length, picture only
Every take is five seconds of video without sound, and neither length nor audio can be changed. With those fixed, motion is the only variable, which is why each published example asks for a single movement or a single cause and effect.
Prompt expansion changes more than the wording
Prompt expansion is off by default. Switching it on can change the look of the render, not only the text of the brief, so compare against a run with it off before you keep it. The chime-and-the-figure example leaves it off so that its sentence runs exactly as written.
Request parameters
| Parameter | Required | Description |
|---|---|---|
image_url | Yes | The opening frame: JPEG, PNG or WebP, up to 10 MB. Subject, wardrobe, set and light direction all come from it, so crop it first. at least 1 characters |
prompt | Yes | Required, up to 5,000 characters. What happens after the frame: one action and one camera behaviour. at least 1 characters · at most 5000 characters |
negative_prompt | No | What must not appear: a second person, captions, a prop the model keeps bringing back. Write a plain list rather than negated sentences. at most 500 characters |
resolution | No | 480p or 720p, default 480p. It is the only setting that changes the price. |
enable_prompt_expansion | No | Off by default. Turn it on for a one-line idea; leave it off when the prompt is already a precise action. Default: |
seed | No | 0 to 2147483647. Fix it when comparing 480p and 720p from the same frame; for a random draw, leave the field out rather than sending 0. |
Pricing
Each request returns one five-second clip.
| Specification | Price |
|---|---|
| $0.24 / request |
| $0.48 / request |
Use cases
Moving a product still
Send an approved packshot and ask for a camera move or a change in light while the product stays where it is. The serum-bottle example shows the pattern: the camera arcs a slow quarter turn around a dropper bottle, a soft band of window light slides across the glass, and the prompt states that the bottle itself does not move.
One performance beat from a portrait
The slip-dress example starts from a studio portrait and asks for a single piece of action: she shifts her weight, turns her shoulders toward the lens, takes two slow steps and holds the look. The camera is locked, the grey studio backdrop is left untouched, and the take is rendered at 720p.
Motion with a visible cause
In the chime-and-the-figure example a wind chime turns and a shape behind a gauze curtain shifts with it, the curtain's shadow travelling across the scene. Writing cause and effect into a short silent clip gives the movement a reason and keeps it from reading as a loop.
Prompt guide & pro tips
Prepare the frame before the prompt
Crop the image to 16:9 or 9:16 and check that it already shows the wardrobe, set and light you want, because the prompt is not the place to change them. Remove overlays or stray subjects you do not want animated, and keep the file within 10 MB.
Describe only what happens after the frame
State who or what moves, the direction and pace of that movement, and then the camera behaviour. Redescribing objects that are already visible spends characters without adding motion. A line that says what must stay still, such as the bottle that does not move, is worth including.
Draft at 480p, deliver at 720p
Resolution is the only setting that changes the price. Fix a seed between 0 and 2147483647 when you compare a 480p draft with its 720p rerender from the same frame. For a random draw, leave the seed out rather than sending 0.
Review the whole clip before you expand the action
Watch the opening, the largest movement and the final second. If a face, label or outline drifts, cut the number of simultaneous movements before you rewrite the prompt. When the next shot needs a different composition, start from a new frame instead of asking the motion to reach 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.2/image-to-video",
"input": {
"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.




























