Bytedance Seedance V1.5 Pro Image To Video
Playground
Try it on WavespeedAI!Seedance 1.5 Pro Image-to-Video generates cinematic, live-action–leaning clips from a text prompt plus a first-frame image, preserving the image’s subject and composition while adding expressive motion and stable aesthetics. It supports 4–12s duration control (including Smart Duration), adaptive aspect ratio that follows the input image, and reproducible outputs via seeds—ideal for ad creatives and short-drama shots that need a strong visual anchor.
Features
ByteDance Seedance V1.5 Pro Image-to-Video
Seedance V1.5 Pro (Image-to-Video) turns a single reference image into a short video clip, using your prompt to guide motion, camera behavior, and overall style. It’s a practical choice when you want to “bring a keyframe to life” while keeping the original composition as an anchor.
This wrapper is best for short, shot-based generations: portraits with subtle motion, product shots, scenic pans, and cinematic beats where prompt-controlled camera and action matter.
Key capabilities
-
Image-conditioned motion generation Animates a still image into a coherent clip, aiming to preserve the subject and scene layout while introducing natural movement.
-
Prompt-controlled action and camera Handles prompts that describe what moves and how the camera behaves (e.g., “slow dolly-in,” “handheld feel,” “locked-off tripod shot”).
-
Flexible output framing Supports common aspect ratios for landscape, vertical, and square content, so you can target feeds, stories, and banners.
-
Quality / cost tuning via resolution and duration Lets you trade off speed, cost, and visual detail by adjusting resolution and clip length.
Parameters and how to use
- prompt: (required) The instruction describing what should happen in the video (action + camera + style).
- image: (required) The reference image that anchors composition, subject identity, and lighting.
- last_image: An optional ending frame to steer the final composition (if supported by your deployment).
- duration: Video length in seconds.
- resolution: Output resolution (commonly 480p / 720p / 1080p).
- aspect_ratio: Output aspect ratio (e.g., 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, or auto).
- camera_fixed: Whether to keep the camera position fixed (useful for “locked tripod” shots).
- seed: Random seed for reproducibility. Use a fixed seed when iterating.
- generate_audio: To decide whether to generate videos with audio.
Prompt
Keep prompts shot-focused and concrete. A reliable structure:
- Subject & setting — who/what, where, time of day
- Action — clear verbs (“turns,” “walks,” “waves,” “wind blows”)
- Camera — “locked-off,” “slow dolly-in,” “orbit,” “tilt up,” “handheld”
- Look — “cinematic,” “35mm film,” “soft rim light,” “high contrast,” “anime cel-shaded”
Example
“Close-up portrait in soft window light. The subject slowly turns toward camera and smiles. Subtle handheld feel, shallow depth of field, cinematic color grade, film grain.”
Tips
- Prefer one shot per prompt. If you need multiple beats, write them in order with short sentences.
- If you see unwanted camera drift, set
camera_fixed: trueand describe a locked-off camera in the prompt.
Media (Images)
- Upload a clear, high-quality JPG/PNG as
image. - If you use
last_image, choose an end frame with similar framing and lighting to reduce jumpy transitions.
Other parameters
-
duration Start short for iteration. Increase length only after motion and framing look right.
-
resolution Use
480pfor fast previews,720pfor a balance of detail and cost. -
aspect_ratio Match your target platform:
16:9for landscape and cinematic shots9:16for vertical shorts / stories1:1for square feeds4:3,3:4,21:9for specific layouts
-
generate_audio Turn it on to speci to generate audio or not.
-
seed Set a fixed seed to compare prompt changes more fairly. -1 means a random seed will be used.
After you finish configuring the parameters, click Run, preview the result, and iterate if needed.
Notes
- Match aspect ratios. If your input image is strongly vertical, pick a vertical
aspect_ratioto avoid awkward crops or stretched motion. - Reduce flicker with simpler motion. If you see temporal artifacts, lower the motion intensity in the prompt and keep the camera simpler (or set
camera_fixed). - Iterate cheaply. Start at
480p+ shorterduration, then scale up once the motion and framing are correct.
Related Models
- Seedance V1 Pro Fast (Image-to-Video) – Faster iterations with a strong speed/quality balance.
- Seedance V1 Pro I2V 720P – A stable 720p I2V option for consistent results at mid cost.
- Seedance V1 Pro I2V 480p – Lower-resolution I2V for rapid prototyping and budget runs.
- bytedance/seedance-upscaler – Upscale an existing clip when you like the motion but need higher fidelity.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/bytedance/seedance-v1.5-pro/image-to-video" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"duration": 5,
"resolution": "720p",
"generate_audio": true,
"camera_fixed": false,
"seed": -1
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| image | string | Yes | - | The positive prompt for the generation. | |
| last_image | string | No | - | - | The positive prompt for the generation. |
| aspect_ratio | string | No | - | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 | The aspect ratio of the generated media. |
| duration | integer | No | 5 | 4 ~ 12 | The duration of the generated media in seconds. |
| resolution | string | No | 720p | 720p, 480p | Video resolution. |
| generate_audio | boolean | No | true | - | Whether to generate audio. |
| camera_fixed | boolean | No | false | - | Whether to fix the camera position. |
| seed | integer | No | -1 | -1 ~ 2147483647 | The random seed to use for the generation. -1 means a random seed will be used. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |