Introduction
Vidu Q3 Pro is the Pro tier of Vidu's Q3 video line, available as a single image-to-video endpoint. You send an opening frame in image_url and a brief in prompt, both required, and get back 1 to 16 whole seconds of 540p video with audio generated in the same pass. The frame settles subject, look and the shape of the output – there is no aspect ratio field, and the image's own ratio must fall between 1:4 and 4:1 – so the prompt only has to describe what moves.
Key features & highlights
One resolution, so length is the only size decision
resolution accepts a single value, 540p, and every clip comes back at that size. That leaves duration_seconds – any whole number from 1 to 16, default 5 – as the setting that changes both the length of the clip and the price, and the live estimate follows it as you move it.
Identity comes from the still
Subject, wardrobe, framing and output shape are settled by the image, not by the prompt. Two runs from the same frame differ in movement, not in who is on screen, which is what lets a series of clips from one still cut together. It also means the video request cannot rewrite anything that was approved in the image pass.
Write the motion, then set how much
movement_amplitude sets the overall amount of motion – auto by default, or small, medium, large – while the prompt says what moves and how. When a take moves too much or too little, keep seed and the frame fixed and reword only the movement – a smaller turn, a slower walk – so the difference you see comes from that one edit rather than from a fresh draw.
Request parameters
| Parameter | Required | Description |
|---|---|---|
image_url | Yes | Required. The opening frame: it fixes subject, look and the shape of the output. |
prompt | Yes | Required. Describe the movement, camera and sound after the frame; do not re-describe the image. at least 1 characters |
movement_amplitude | No | How much things in the frame move: |
duration_seconds | No | Whole seconds, 1 to 16. |
resolution | No | 540p. It is the only value this endpoint accepts, so every clip comes back at that size. |
generate_audio | No | On by default. Set it false for a silent clip. Default: |
bgm | No | Adds a background music bed that fits the scene’s mood. On by default; switch it off when the clip goes under your own music or should carry only the scene’s own sound. Default: |
seed | No | For controlled comparisons between two runs. |
Pricing
| Specification | Price |
|---|---|
| $0.054 / second |
Use cases
Reaction sets for one character
One costume frame becomes a wink, a wave, a head tilt and a turn – four requests with the same image and four different prompts. Because identity is fixed by the frame, the set cuts together without anyone drifting between clips.
Close, rhythmic action
The forge example stays tight on a smith's chest and forearms for six seconds, lit from below by the fire, with sparks bursting on each strike of the hammer. Repeated impacts are a useful check for this endpoint: the sparks have to land on the strikes and not between them.
Vertical deliverables
Export the still at 9:16 and the clip comes back vertical. In the underpass example the prompt carries only the walk toward the lens under the strip lights and a camera retreating at her pace; the vertical framing was decided in the image pass.
Uncensored scenes from your own frame
Your still animates as supplied instead of being softened, and because the image carries the content the result stays close to what was approved. Vidu Q3 Spicy in the same line is the LoRA-tuned, uncensored variant.
Prompt guide & pro tips
Export the still at the shape you need
The output follows the frame: a vertical clip starts from a vertical image, a square one from a square image, and the ratio has to stay between 1:4 and 4:1. Settle wardrobe, styling and composition in the image pass as well, because the video request will not change them.
Write only what moves
Keep the prompt to the beat, the camera and the sound, and do not re-describe the picture. The published example runs 8 seconds at 540p with generate_audio on, from a drawn stage frame; its whole brief is two sentences.
She lowers the microphone, tilts her head and winks at the crowd; glowsticks sway out of focus behind her. Slow dolly-in, haze catching the backlight, crowd roar swelling.
Eight seconds from one drawn stage frame. The prompt carries the wink, the dolly-in and the crowd roar; the costume and the line work come from the image.
Write the sound into the brief
generate_audio defaults to true and the track is produced with the picture, so name the sounds you want next to the action they belong to – the stage example asks for the crowd roar to swell as the camera moves in. Set the field to false when the cut goes under a mix you already have. Background music is a separate switch, bgm, on by default; turn it off when you only want the scene’s own sound.
Compare takes with a fixed seed
Keep the frame and seed fixed while you change one phrase of the prompt, so two runs differ only by that edit. The seed makes runs comparable; it does not guarantee identical frames. If the subject needs to look different, change the still rather than the prompt – on this endpoint the image, not the text, decides who is on screen.
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": "vidu/q3-pro/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"movement_amplitude": "auto",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "540p"
}
}'
# 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.







