Introduction
Seedance 2.0 Mini reference-to-video reconciles several authorised sources into one shot: images for who and what, clips for motion and pacing, audio for the beat the cut lands on. It takes no first frame.
Seedance 2.0 Mini is the smallest tier of ByteDance's Seedance 2.0 line. It publishes the same endpoints as Seedance 2.0 Fast and returns 4 to 15 second clips at 480p or 720p, with audio generated in the same pass.
Choose a Seedance 2.0 Mini mode by starting material
| Starting material | Mode |
|---|---|
| A script or scene description | Seedance 2.0 Mini Text to Video |
| An approved opening still | Seedance 2.0 Mini Image to Video |
| Separate appearance, motion or audio references | Seedance 2.0 Mini Reference to Video |
Key features & highlights
The same contract as Seedance 2.0 Fast
Mini publishes the same endpoints and the same fields as Seedance 2.0 Fast: adaptive framing plus six fixed ratios, 4 to 15 seconds or -1 for a length the model chooses, native audio and seed, with resolution capped at 720p. A pipeline written against Mini moves to Fast by changing the model id, not the request.
Built for volume
Mini is the tier to pick when throughput matters more than the extra quality of the larger Seedance 2.0 models. Every endpoint is asynchronous: send an Idempotency-Key with each request, store the task ids and let polling or callbacks resolve them. The key is honoured for 24 hours, so a retry after a dropped connection returns the original task.
Longer sequences with Video Extend
To go past fifteen seconds, send a finished clip to the video-extend endpoint: its final frame opens a new Seedance 2.0 Mini shot and you get one file back with both joined. Each step bills only the seconds it adds, and the joined result can be extended again.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required, and here it also does the casting. at least 1 characters |
reference_image_urls | No | Up to 9 images you are authorised to use, holding a character, a product, a style or a set. at most 9 items |
reference_video_urls | No | Up to 3 clips supplying motion, pacing or camera language. at most 3 items |
reference_audio_urls | No | Up to 3 audio files, 2 to 15 seconds each and 15 seconds together, each under 15 MB, giving the shot a sonic anchor — delivery, tempo, a musical phrase — that motion and cut poi… at most 3 items |
aspect_ratio | No | Output framing, adaptive by default: the clip takes its shape from the primary reference. |
resolution | No | Output resolution: 480p, or 720p by default. It selects a rate tier and will not sharpen low-resolution references. |
duration_seconds | No | Length of the finished clip in whole seconds, 4 to 15, default 5; -1 lets the model choose, with the estimate assuming 15 seconds. |
generate_audio | No | Whether a native soundtrack is rendered in sync with the picture. On by default; switching it off does not lower the rate in this tier. Default: |
enable_web_search | No | Off by default. Switched on, the model may search the web for information related to your prompt before it renders. 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.
| Specification | Price |
|---|---|
| $0.010969 / second |
| $0.023588 / second |
| $0.0246078 / second |
| $0.05292 / second |
| $0.036 / second |
| $0.072 / second |
Use cases
One reference set for a whole series
Three views of one man from the front, three-quarter and profile, plus a fourth image of his apron, can carry an entire series while only the prompt changes between requests. The published bakery example is built exactly that way.
Pacing borrowed from a clip
A reference clip can supply rhythm instead of content. One example matches an unhurried continuous push from a clip, stages it down an aisle from a reference image and lands the footsteps on the pulse of a reference track, eight seconds in 9:16.
A couple held steady across angles
Three stills of the same couple let a new shot find a third angle while faces and wardrobe stay the same, as in the park-bench example rendered at 480p.
Prompt guide & pro tips
Name each reference by position
The prompt is required and does the casting, because references are read in the order you send them. Write "References 1-3 are..." or use @Image1, @Image2 so that each asset has exactly one job.
Know the ceilings
Send up to 9 images, 3 clips and 3 audio tracks, with at least one image or clip in every request. Clips and audio run 2 to 15 seconds each and 15 seconds together, and the seconds of your reference clips are billed on top of the output.
Adapt the included example
The published example uses aspect_ratio 16:9, duration_seconds 6, generate_audio true and resolution 720p, with four images in reference_image_urls.
@Image1, @Image2 and @Image3 are the same man from front, three-quarter and profile; @Image4 is his apron. Put him behind the counter of a small bakery at opening time in that apron, sliding a tray into the case and glancing up as the door chimes. Warm ovens, flat morning light.
Three angles hold the face, the fourth image holds the costume, and the prompt says which is which. Keep that split when you cast your own character.
Need an exact first frame? Use image-to-video
This endpoint has no first- or last-frame field. When the opening picture must match a still exactly, send that still to image-to-video and describe only the motion.
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-mini/reference-to-video",
"input": {
"aspect_ratio": "adaptive",
"bitrate_mode": "standard",
"duration_seconds": 5,
"enable_web_search": false,
"generate_audio": true,
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"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.
















