SEP 7, 2026
Long video and edit on Seedance 2.5
September 7, 2026
Two new modes are live on seedance-2.5 at POST /videos, on both the US and CA regions.
Long video raises the ceiling from 30 seconds to 180. Edit takes a video you already have and re-cuts it — same motion, same framing, new content.
This post runs both end to end on one stock clip. Every request below is the real one, every video is the real output, and every credit figure is what the account was actually charged.
Table of contents
The starting material
One stock clip of a woman dancing against a corrugated shutter. 21.3 seconds, 720x1280, 30fps — the player below shows it downscaled for the web. Nothing about it was generated. It is the fixed input both modes work from.
Upload it once and reuse the reference for both runs. Video uploads take the raw bytes with a matching Content-Type:
curl --location 'https://api.useapi.net/v1/dreamina/assets/CA:[email protected]' \
--header 'Authorization: Bearer user:1234-…' \
--header 'Content-Type: video/mp4' \
--data-binary '@girl-dancing-21s.mp4'
{
"assetRef": "CA:[email protected]:w720:h1280:s7279723:d21300-vid:v10762g50003dafirrvog65js2v7k7qg"
}
The d21300 in that reference is the duration in milliseconds. It matters — it is what the API uses to bill the job and to check the source against the edit mode’s 4-30 second window.
Run one: edit
Edit is selected by one new parameter, editVideoRef. Point it at an uploaded video and Seedance re-cuts that video rather than generating a fresh one.
We wanted a wardrobe change, so we generated the two garments as flat product shots on the Google Flow API — plain background, no mannequin, nothing for the model to confuse for context:
Both go up through POST /assets the same way, then ride along as ordinary omni references, mentioned in the prompt by @image1 and @image2:
curl --location 'https://api.useapi.net/v1/dreamina/videos' \
--header 'Authorization: Bearer user:1234-…' \
--form 'model="seedance-2.5"' \
--form 'resolution="480p"' \
--form 'editVideoRef="CA:[email protected]:w720:h1280:s7279723:d21300-vid:v10762…"' \
--form 'omni_1_imageRef="CA:[email protected]:w1024:h1024:s637405-uri:tos-…propeller-hat"' \
--form 'omni_2_imageRef="CA:[email protected]:w1024:h1024:s661090-uri:tos-…polkadot-shorts"' \
--form 'prompt="make her wear the rainbow striped propeller beanie from @image1 and the neon green polka dot shorts from @image2, keep her dancing exactly as she is and keep the background unchanged"'
There is no duration and no ratio in that request, and neither is accepted. The output inherits both from the source, which is the whole point of the mode — you are re-cutting a specific video, not describing a new one.
756 credits
Both garments transferred, and the dance is preserved move for move — sample the two clips at the same timestamps and she is in the same pose in both, against the same shutter, in the same light. That fidelity is what separates an edit from a generation that merely resembles the input.
It also did something we did not ask for: her orange crop top came back as a skin-toned band. The prompt named two garments and said to leave everything else alone, and the model changed a third. If a specific element must survive an edit, name it explicitly as something to keep.
Run two: long video
Long video needs no new parameter at all. A duration above 30 can only be served by that mode, so asking for the duration is asking for the mode:
{ "model": "seedance-2.5", "duration": 35, "prompt": "..." }
Anything from 31 to 180 seconds qualifies. Exactly 30 stays an ordinary generation, where it is valid and cheaper per second.
For this run the brief was a scene that could not fit in 15 seconds: relocate her, then bring in two dancers one at a time, then end on a group hug. Three more Flow images supply the cast and the location:
The source clip comes back as omni_1_videoRef, carrying her appearance and her actual dance rather than a description of one:
curl --location 'https://api.useapi.net/v1/dreamina/videos' \
--header 'Authorization: Bearer user:1234-…' \
--form 'model="seedance-2.5"' \
--form 'resolution="480p"' \
--form 'duration="35"' \
--form 'ratio="9:16"' \
--form 'omni_1_videoRef="CA:[email protected]:w720:h1280:s7279723:d21300-vid:v10762…"' \
--form 'omni_1_imageRef="CA:[email protected]:…robot-mascot"' \
--form 'omni_2_imageRef="CA:[email protected]:…flamingo-mascot"' \
--form 'omni_3_imageRef="CA:[email protected]:…theme-park"' \
--form 'prompt="A continuous 35-second shot on a sunny movie studio theme park street. Take the woman dancing in @video1 — her exact appearance, outfit and dance moves — and place her in the location shown in @image3: the middle of a colourful empty street with pastel building facades, festive bunting strung overhead, tall palm trees and a wooden rollercoaster rising behind her. She dances continuously throughout. She dances alone at first. Then @image1, the fuzzy teal robot mascot with the boxy head and orange sneakers, dances into frame from the left and starts dancing beside her. A few seconds later @image2, the pink flamingo mascot in yellow boots, dances into frame from the right and joins them. All three dance together in a row. At the end the two mascots close in on either side and the three of them come together in a big happy group hug, laughing, as the shot holds. Bright natural daylight, warm saturated colours, camera slowly pushing in throughout. One continuous take, no cuts."'
1,680 credits
Every beat landed in order: she starts alone far down an empty street, the robot arrives from the left, the flamingo from the right, and all three close into the hug as the camera finishes its push in. Her orange top survived this time, which the edit run did not manage.
Writing a long prompt as a sequence of timed beats rather than one description is what makes the length usable. Ask for 35 seconds of “a woman dancing” and you get a longer clip of the same thing.
What it costs
Billed seconds are the output duration plus every reference video attached, rounded down to a whole second. Both runs landed on the predicted figure exactly:
| Run | Billed seconds | Rate | Charged |
|---|---|---|---|
| Edit, 21.3s source at 480p | 21.3 output + 21.3 source = 42 | 18 | 756 |
| Long video, 35s from a 21.3s reference | 35 output + 21.3 reference = 56 | 30 | 1,680 |
Two things to plan around.
An edit bills its source twice — once as the input, once as the output — because the source is the output. A 21-second edit is charged for 42 billed seconds.
Long video is priced on its own scale, roughly 1.7x the ordinary rate at 480p on CA, and gets no reference-video discount. A full 180-second clip at 480p is around 5,400 credits before any reference is added.
Full per-region rates are in the cost calculator.
Notes from the two runs
Generation is slow at these lengths. The 21-second edit took 13 minutes 30 seconds, the 35-second long video 17 minutes 33. Use a replyUrl webhook rather than polling, and set generous timeouts.
Reference images work best as flat product or full-body shots on a plain background. The garments and both mascots were framed that way and transferred cleanly. The location reference was an ordinary wide photograph instead, and it carried across just as well, so the plain background matters for a subject you want lifted out, not for a scene you want matched.
Keep third-party property out of the prompt. Seedance refuses recognisable IP as fail_code 2053, and it judges the finished video several minutes in rather than the prompt text. A failed generation is not charged, but a branded theme park would still have cost the full generation time before telling us.
Name what must not change. The edit altered a garment the prompt never mentioned. Elements you need preserved should be stated as explicitly as the ones you want changed.
Both modes are live now on POST /videos for every useapi.net subscriber, on any Dreamina account in either region. See Setup Dreamina to connect one.
The clips above are re-encoded to a lower bitrate for the web. Resolution, duration and the generated audio are unchanged from what the API returned.