Skip to main content

Short Answer

Seedance 2.5 has no dedicated “reference-to-video” switch. As soon as content contains a reference video, the model reads the intent of your prompt to decide whether the task is reference-to-video, video editing, or video extension:
  • The prompt changes the source video (add, remove, modify, replace, keep something unchanged) → video editing
  • The prompt continues the source video forwards or backwards (extend, continue) → video extension
  • The prompt only borrows a character, motion, or style from the assets to shoot a new clipreference-to-video
Once a task is classified as editing, ratio must be adaptive and duration must be -1. Passing a specific aspect ratio or duration returns a 400, usually mentioning TaskTypeConstraint.
This page applies to Seedance 2.5 (doubao-seedance-2-5-260628) only. The Seedance 2.0 family has no video editing or video extension tasks, so the issue does not arise there.

The Core Difference: Does the Asset End Up in the Output?

A quick test: can you still see the source video itself in the output? If yes, it is editing (or extension). If only its “feel” carries over, it is reference-to-video. Video extension is similar to editing: the aspect ratio is locked to the source video, but you can still set the duration.

How the Model Decides

The decision takes two steps: first the asset role, then the prompt.
The trigger-word list is not exhaustive. The model judges meaning, not exact words. Phrases such as “keep everything in the video unchanged”, “upscale video 1 to HD”, or “keep the outfits the same” are not on the list, but they all describe processing the original footage, so they can be classified as video editing too.
A request with reference images but no reference video is never classified as editing or extension. You only need to watch for this when a reference_video is present.

A Real Case

This request wanted to “upscale a video” while also setting 4:3 and 15 seconds:
It was rejected immediately with a 400:
“Upscale” plus “keep unchanged” means working on the original footage, so the model classified it as editing, and editing tasks do not accept a custom aspect ratio or duration. Since this request really is an edit, the correct fix is:
After the change, the output follows the source video’s aspect ratio and duration.

Can a Parameter Force Reference-to-Video?

No. In 2.5, omni_reference_task_type accepts only three values: There is no “reference-to-video” value. And edit / extend only validate earlier; they do not force the task type. If the declared type differs from what the model infers from the prompt, the task still fails with InvalidParameter.TaskTypeMismatch. In short, the prompt decides the task type. Parameters can only go along with it.

Three Reliable Approaches

The general-purpose setup recommended in the provider docs. Whenever reference assets are present, send the following. No matter which subtask the model picks, the request will not fail on parameter constraints.
The trade-off: when the task is classified as reference-to-video, the model chooses the duration (10 seconds or more in our tests), and the cost varies with it. Not recommended for cost-sensitive workloads.

When the Error Appears

The two errors need different fixes: for TaskTypeConstraint, change the parameters; for TaskTypeMismatch, change the prompt (or set omni_reference_task_type back to auto).

Cost Notes

  • A video-editing output is as long as the source video, not as long as you wanted. A 25-second source is billed at roughly 25 seconds.
  • For tasks with a reference video, the input video’s frames are also converted into billable tokens. Longer, higher-resolution sources cost more.
  • With duration: -1 on a reference-to-video task, the model picks the length, which may be longer than expected.
Checking the source video’s length before submitting avoids most surprises. To verify the actual charge of a task, see How do I look up a Seedance video’s real cost by task_id?.

Video Generation API

Task types vs. parameter constraints, full request parameters

Seedance 2.0 / 2.5 Overview

Differences between 2.5 and 2.0, full editing and extension usage