Inside Seedance 2.5's Reference System: How Image, Video and Audio References Actually Work
Seedance 2.5’s reference system is one of its most powerful and least understood features. Most people either ignore references entirely or dump files in and hope. The community cases in EvoLink’s open guide show a third way: references as a deliberate crew, each file with a job. The point isn’t to max out slots — it’s to give the model exactly the anchors it needs.
Note up front: Seedance 2.5 is pre-release and provider-mediated. The limits and behavior below reflect the expected design; verify support with your provider before you build on them. This is an independent guide — EvoLink is our recommended provider, and we are not affiliated with ByteDance.
The real reference budget
References are split by type, and each type has its own per-request ceiling:
| Type | Request field | Expected max per request |
|---|---|---|
| Image | image_urls | up to 30 |
| Video | video_urls | up to 10 |
| Audio | audio_urls | up to 10 |
These are separate budgets, not one combined pool — spending image slots doesn’t reduce how many video or audio references you can attach. In practice most shots use far fewer than the ceiling; the headroom exists so multi-character, multi-constraint work stops being a compromise.
How references enter the prompt
References aren’t a side channel — they’re cited inline. Prompts write markers like «image_1_1» exactly where that file’s content should govern:
“…the camera steadily follows a man in a black coat (refer to «image_1_1»)…”
This is the crucial mental shift: you don’t describe the coat, the face, the location — you point at them. Words carry the direction; files carry the nouns. Prompts get shorter and outputs get more consistent at the same time. Video and audio references work the same way, using matching «video_x_y» and «audio_x_y» markers.
How to spend each budget
Across multi-reference cases, allocation follows a clear economy. Think per type:
| Job | Type | Typical count | What it locks |
|---|---|---|---|
| Character identity | image | 2–3 per character | Face, wardrobe, proportions across the whole take |
| Location & set | image | 2–4 | Environment, architecture, dressing |
| Palette & grade | image | 1–2 | Color world, lighting mood |
| Camera grammar | video | 1–2 clips | The move itself — a short clip beats a paragraph |
| Rhythm | audio | 1 file | Pacing, beat structure, cut timing |
Notice what image references add up to for a two-character narrative scene: identity alone can eat 4–6 of the 30 image slots. That headroom is exactly what earlier, tighter budgets couldn’t offer — you can keep product, palette and mascot honest from opening gag to packshot, or carry multilingual signage so on-screen text renders as language rather than alphabet soup, all without trading one anchor for another. And because video and audio ride separate budgets, adding a camera clip or a rhythm track never costs you an image slot.
The workflow that keeps it debuggable
The mistake that burns time is loading all references at once. When a many-file generation goes wrong, every file is a suspect. A layered sequence keeps failures diagnosable, and it matches what we’ve found generating for this site:
- Prompt-only drafts first at a launch resolution (480p or 720p) until composition and motion are right
- Add image identity references and confirm characters hold
- Add the camera-move video clip and confirm the move transfers
- Add audio last — rhythm is the finishing layer, not the foundation
One layer per run means every failure has one suspect. Draft at a low resolution and short duration first, then commit references once the shot is working — Seedance 2.5 supports an expected duration range of roughly 4–30 seconds, and native audio is generated in a single pass at no extra charge.
Reference quality rules
From comparing inputs to outputs:
- Multiple angles beat one perfect shot. Two or three views of a character locks identity far better than a single hero image — and with up to 30 image slots, you have room for them.
- Clean references transfer clean. A camera-move clip with its own busy subject bleeds content, not just movement; the best reference clips are notably plain.
- Don’t re-describe what you reference. Contradictions between the file and prose about the file resolve unpredictably — cite the marker and stop talking.
Try the economy yourself
Read how each marker is placed in the prompt library, then rebuild a two-character version of your own shot: say 6 image slots for identity, 3 for location, 1 for palette, plus 1 camera video clip and 1 audio track. That’s well inside every budget, with plenty of headroom on all three types. Set it up in the playground to preview before you roll, and if you’re driving this from code, the reference fields (image_urls, video_urls, audio_urls) take plain URLs — see the API guide for the request shape and the seedance-2.5-reference-to-video model id (pre-release, configurable).