Introduction
Seedance 2.0 Reference-to-Video creates a new video using supplied images, clips or audio as creative guidance. Choose it when the subject, setting and movement come from different materials, rather than from one fixed opening frame.
ByteDance introduced the model in its February 12, 2026 launch article. Its multimodal reference capability lets a brief assign different jobs to different assets. On this endpoint, provide a prompt and at least an image or video reference; audio can supplement that visual material.
Choose the starting point for your Seedance 2.0 sequence
| Starting material | Mode |
|---|---|
| A script or scene description | Seedance 2.0 Text to Video |
| An approved opening still | Seedance 2.0 Image to Video |
| Separate appearance, motion or audio references | Seedance 2.0 Reference to Video |
Key features & highlights
Multimodal creative direction
Seedance 2.0 brings text, images, video and audio into one creative process. References can guide a character's appearance, a scene's composition, movement, camera language or sound, rather than serving only as pictures to animate.
Complex motion and interaction
The model is designed to handle sequences involving several subjects, connected actions and interaction with the environment. Its motion modeling covers both larger movements and smaller details such as gestures, facial expressions and moving fabric.
Audio and video generated together
Speech, environmental sound, effects and music can be generated alongside the picture. This joint approach lets sound participate in the scene's rhythm instead of being treated solely as a separate editing step.
Storytelling and camera control
Natural-language direction can describe a sequence of shots, changes in viewpoint and the progression of a performance. The model family also supports video editing and continuation; those operations require a compatible video-input workflow, not text-only or first-frame generation.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required, and here it also does the casting. |
reference_image_urls | No | Up to 9 reference images, used to hold a character, a style or a set. Two or three angles of the same character usually work better than a stack of near-identical frames. at most 9 items |
reference_video_urls | No | Up to 3 reference clips, each 2 to 15 seconds long and no more than 15 seconds combined, supplying motion, pacing or camera language. at most 3 items |
reference_audio_urls | No | Up to 3 reference audio files, each 2 to 15 seconds long and no more than 15 seconds combined, giving the model a sonic anchor — delivery, tempo, a musical phrase — that the mot… at most 3 items |
aspect_ratio | No | Defaults to |
resolution | No | 480p, 720p, 1080p or 4k, default 720p, and it feeds the billed quantity directly. It sets the output tier only and will not sharpen low-resolution references. |
duration_seconds | No | 4 to 15 seconds, default 5, or -1 to let the model pick the length (the estimate assumes the 15-second maximum; the charge follows the delivered length). |
generate_audio | No | On by default. Produces a native soundtrack synchronized to the picture. Default: |
seed | No | Integer seed; omit it and each run draws its own. Fix it with everything else held constant to judge what a prompt edit actually changed. |
return_last_frame | No | Also returns the clip’s final frame as a separate image next to the video. Send it to image-to-video as the next opening frame to chain shots without exporting a still yourself. Default: |
bitrate_mode | No | Encoding bitrate of the delivered file: |
watermark | No | Adds the model’s own visible "AI generated" watermark to the video. Off by default; switch it on when the place you publish requires AI-made footage to be labelled. Default: |
Pricing
Reference clips add to the billed seconds. Because we cannot measure your clips before the job runs, we hold funds for the 15-second maximum up front and release the unused portion the moment the job settles — you are only ever charged for the seconds actually used.
| Resolution | With video: Yes | With video: No |
|---|---|---|
| $0.0431 / second | $0.07 / second |
| $0.0928 / second | $0.152 / second |
| $0.2284 / second | $0.374 / second |
| $0.778 / second | $0.778 / second |
Use cases
Place a character in a new setting
Use an authorized character image and a separate location reference. Describe one action connecting them, then check the subject's appearance, relative scale and contact with the environment.
Borrow a camera move for a different subject
Provide a motion clip and a subject image. Specify that only the camera movement should carry over, not the original clip's people or background. Review framing and movement separately from appearance.
Build a scene around a visual and sound brief
Combine a workshop image with an authorized sound reference and a written action. Check that the audio supports the scene rather than replacing its intended mood or introducing an unwanted speaker.
Prompt guide & pro tips
How to assign roles to Seedance 2.0 references
Start by saying what to borrow from each asset. A reference can supply a subject, setting, camera movement or sound; it should not have to supply all of them at once.
- Put the subject image and location image in
reference_image_urls. - Put the camera reference in
reference_video_urls. - Match the prompt labels to upload order:
image 1,image 2,video 1. - Define a stable name for the subject, then describe the shots.
This example uses a courier portrait, a courtyard image and a camera-movement clip:
Define the person in the orange jacket in image 1 as the Courier.
Use image 2 for the courtyard and morning light.
Borrow only the slow sideways camera track from video 1, not its people or location.
Shot 1: Medium shot. The Courier walks through the courtyard carrying a small parcel.
Shot 2: The Courier stops beside the wooden door and knocks twice.
Shot 3: Close-up. The Courier looks toward the opening door and gives a small smile.
Keep the Courier's jacket and parcel consistent.
Sound: footsteps, two knocks and quiet courtyard ambience. No music or captions.
Keep character references unambiguous
If appearance drifts, separate the face reference from the full-body or clothing reference and say which supplies which detail. Reuse the same subject name throughout the prompt. Avoid putting several views of the same person into a collage that could be interpreted as several people.
Choose assets by role rather than filling every upload slot. Remove redundant references or resolve competing styles before adding more material.
Distinguish referencing from editing
“Borrow the camera movement from video 1” asks for a new scene. “Edit video 1” asks to modify that footage. Use the wording that matches the intended operation; do not mix editing or extension instructions into a new-scene reference brief.
Plan the shots, then the sound
Use numbered shots rather than exact timestamps for Seedance 2.0. If adding an audio reference, identify whether it supplies voice, ambience or musical character, and keep a visual reference in the request: this endpoint does not accept an audio-only brief.
Content boundaries
Seedance 2.0 · Reference-to-Video — Uncensored. SpicyAPI adds no platform-side content filter. Model restrictions still apply, and results are not guaranteed. You are responsible for complying with our content policy.
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": "bytedance/seedance-2.0/reference-to-video",
"input": {
"aspect_ratio": "adaptive",
"bitrate_mode": "standard",
"duration_seconds": 5,
"generate_audio": true,
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p",
"reference_image_urls": [
"https://example.com/reference.png"
]
}
}'
# 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.
















