
Most "Seedance prompt" posts show a single line like "a cat on a skateboard, cinematic" and a thumbnail. That's not a prompt you can actually reuse — you have no idea what made the shot work. Below are three complete, copy-pasteable prompts for seedance-2.0@ext, each run through hiapi's /v1/tasks API and shown next to the real 6-second clip it produced. Every prompt is written second-by-second so the model gets explicit camera and action beats instead of a vague mood word.
seedance-2.0@ext (the "ext" route of Seedance 2.0) takes a duration field between 4 and 15 seconds, but it doesn't automatically invent a story arc for you — it fills the time with whatever your prompt implies. A prompt that only says "a skateboarder at sunset, cinematic, 4k" leaves the model to guess when anything happens. Splitting the duration into explicit second ranges ("During seconds 0 to 2... During seconds 2 to 4...") gives the model a beginning, a turn, and an ending beat — which is what actually produces a shot with pacing instead of one continuous blur.
The three recipes below follow the same pattern: subject + setting → beat 1 (0-2s) → beat 2 (2-4s) → beat 3 (4-6s) → lighting/physics constraints → native audio cue. All three ran at "aspect_ratio": "16:9", "resolution": "720p", "duration": 6, "generate_audio": true.
{
"model": "seedance-2.0@ext",
"input": {
"prompt": "One continuous six-second cinematic product commercial shot, no cuts. A matte black wireless earbud case sits centered on a wet obsidian stone slab under a single overhead softbox light. During seconds 0 to 2, the camera holds a slow, stabilized push-in as a thin mist drifts across the frame and a faint blue rim light traces the case's edges. During seconds 2 to 4, the lid lifts open on its hinge in one smooth mechanical motion, releasing a soft warm glow from inside and revealing the two earbuds nested in their charging slots. During seconds 4 to 6, the camera arcs slightly right and tilts down to a low three-quarter angle as a shallow depth-of-field pulls focus from the case to the brand logo etched on the lid, ending on a still frame. Photoreal studio lighting, high-contrast reflections on the wet stone, subtle lens flare from the rim light, no text overlays, no human hands in frame. Native audio: a soft mechanical click when the lid opens, a low ambient studio hum underneath, silence otherwise.",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6,
"generate_audio": true
}
}
Why it works: the beat structure maps directly to a three-act product ad — establish (push-in), reveal (lid opens), sell (focus pull to logo) — so the model has a concrete mechanical action (hinge opening) to animate instead of an abstract "reveal the product" instruction. Naming the exact light source (single overhead softbox) and surface (wet obsidian stone) also keeps the reflections and rim light consistent instead of drifting.
{
"model": "seedance-2.0@ext",
"input": {
"prompt": "One continuous six-second tracking shot, no cuts. A skateboarder in a gray hoodie rides down a sunlit concrete embankment in an empty skatepark at golden hour. During seconds 0 to 2, the camera tracks alongside at hip height, matching the skater's speed as they carve toward a raised ledge, long shadows stretching across the concrete. During seconds 2 to 4, the skater ollies onto the ledge and grinds along its edge; the camera pans slightly to keep the board's trucks in frame as motion blur builds on the wheels. During seconds 4 to 6, the skater pops off the end of the ledge and lands rolling away from camera as the shot holds and lets them ride out of frame toward the horizon. Natural sunlight, dust particles catching backlight, realistic skin and fabric physics, no slow motion. Native audio: wheels rolling on concrete, the metallic scrape of the grind, a light gust of wind.",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6,
"generate_audio": true
}
}
Why it works: "tracking shot" plus an explicit camera height ("hip height") locks the camera to a physically plausible rig move instead of letting it float. Calling out the exact trick (ollie onto the ledge, grind, pop off) rather than "does a trick" avoids the model defaulting to a generic skid, and specifying "no slow motion" stops it from padding the 6 seconds with an unwanted speed ramp.
{
"model": "seedance-2.0@ext",
"input": {
"prompt": "One continuous six-second aerial establishing shot, no cuts. A drone glides low over a dense pine forest blanketed in ground fog just after sunrise, distant granite peaks catching the first orange light. During seconds 0 to 2, the camera moves forward at a steady low altitude, skimming just above the fog layer as treetops pass beneath. During seconds 2 to 4, the drone gradually climbs and tilts up, revealing the full mountain range silhouetted against a pale gradient sky. During seconds 4 to 6, the camera slows to a near-static hover as sunlight breaks through a gap in the clouds, casting a single visible sun-ray shaft across the valley. Cinematic color grade, cool shadows and warm highlights, light atmospheric haze, no camera shake. Native audio: soft wind at altitude, distant birdsong fading in near the end.",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6,
"generate_audio": true
}
}
Why it works: the climb-and-tilt in the middle beat converts a flat flyover into a reveal (fog layer → full mountain range), which is the difference between "drone footage" and an establishing shot with a payoff. Naming the light event ("sunlight breaks through a gap in the clouds") gives the model a specific moment to land the final beat on instead of ending arbitrarily mid-motion.
Swap the subject, setting, and beats — keep the second-by-second structure and the trailing native-audio line, since that's what gives the model both pacing and consistent sound design instead of silence or random foley. Submit and poll like this:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0@ext",
"input": {
"prompt": "<your second-by-second prompt>",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 6,
"generate_audio": true
}
}'
curl -s https://api.hiapi.ai/v1/tasks/$TASK_ID -H "Authorization: Bearer $HIAPI_KEY"
# poll until "status":"success", then download output[0].url before its expireAt
Full parameter reference: Create Task. Model details and the full resolution/duration schema: seedance-2.0-ext on hiapi.
Per the live pricing page, seedance-2.0@ext bills per output second: $0.149/s at 720p, $0.373/s at 1080p, $0.662/s at 2k, $0.467/s at 4k. Each 6-second 720p clip above cost $0.894; the three clips together cost $2.682. Going to 1080p roughly 2.5x's the per-second rate, so it's worth prototyping beats at 720p before committing a longer render to a higher resolution.
Note that seedance-2.0@ext is text-to-video only on both its routes — despite pricing pages sometimes listing image-to-video-style tiers, fields like image_urls or first_frame_image are rejected by the schema. Everything above works from text prompts alone.
Does seedance-2.0@ext support image-to-video?
No. Both the default and @ext routes of Seedance 2.0 are text-to-video only — image/reference-frame fields are rejected by the input schema as of this writing.
What's the difference between seedance-2.0 and seedance-2.0@ext?
@ext is a separate route on the same model with its own resolution tiers (720p/1080p/2k/4k) and duration range (4-15s), priced per-second rather than flat per-clip. See the seedance-2.0-ext model page for the full schema.
Can I get longer than 6 seconds?
Yes, duration accepts any integer from 4 to 15. Longer durations need more explicit beats in the prompt — a 12-second clip with only two beats tends to let the model pad the extra seconds with drift rather than new action.
Why did my aspect_ratio request get rejected?
aspect_ratio is a required field on seedance-2.0@ext with no default — omitting it returns a 400. Valid values are 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, and adaptive.
Does generate_audio: true add real synced sound, or generic background music?
It generates native ambient audio tied to the actions in the prompt (mechanical clicks, wheels on concrete, wind) rather than a music track — which is why describing the expected sound explicitly in the prompt, as the three recipes above do, produces more relevant audio than leaving it to guess.
Ready to try your own recipe? Submit a prompt against seedance-2.0@ext via Create Task and iterate on the second-by-second beats until the pacing matches what you're picturing.
Key Takeaways