Three real clips, three reference patterns, and the exact fields for vertical short-form output

seedance-2.5/reference-to-video builds a new clip from footage you already have instead of a blank prompt: point it at one reference video and it keeps that clip's camera moves, pacing, and motion while you swap in a different subject, restyle the look, or layer in a reference soundtrack. For short-form work, that's the difference between reshooting a TikTok or Reels concept from scratch and remixing one good take into several. Below are three real clips generated this way — full prompts included — plus the exact fields that matter for vertical, short-duration output.
Three things line up well with TikTok/Reels production:
aspect_ratio: "9:16" is a real, settable field, not a crop applied after the fact — the model renders vertical directly.reference_video_urls carries the camera choreography. If you already have one take with the pacing, cuts, and framing you want, you don't need to re-block a shot to try a different subject or style.duration is capped at 30 seconds and tied to how much reference video you feed in — this model is built for clips, not long-form output.The source reference was a trail-shoe commercial. The prompt kept the shot progression and swapped the product entirely:
Use @video1 strictly as the reference for shot progression, product rotation, camera paths, pacing, macro close-ups, and lighting transitions. Replace the shoe completely with the perfume bottle from @image1. Preserve the bottle's exact silhouette, amber glass color, cap proportions, label placement, and premium material appearance in every shot. Present it as a luxury fragrance commercial on a dark obsidian pedestal, with warm amber rim light, controlled reflections, fine atmospheric mist, and precise macro detail. Follow the visual rhythm and camera choreography of @video1 while keeping one consistent perfume bottle throughout. Do not transfer shoe laces, soles, fabric textures, or shoe-shaped geometry into the bottle. Do not invent extra products, readable brand text, logos, hands, or people.
@video1 and @image1 are reference tokens inside the prompt text — they tell the model which uploaded file supplies which role. Here @video1 (the shoe clip, passed via reference_video_urls) supplies motion and camera; @image1 (the perfume bottle, passed via reference_image_urls) supplies the subject identity. The negative instructions at the end ("do not transfer shoe laces...") matter as much as the positive description — reference-to-video will pull in stray details from the source clip unless you explicitly rule them out. This one rendered at 480p, 9:16, 4 seconds, with synchronized audio the model generated natively (no separate audio reference was supplied for this clip).
This one uses only reference_video_urls — no image or audio reference — to carry motion into a completely different visual style:
Use @video1 as the sole visual reference. Preserve the corgi's recognizable markings, running cadence, stride timing, body orientation, forward momentum, and the low side-tracking camera movement. Reimagine the entire scene as a handcrafted stop-motion film made from felt, wool, miniature grass, and painted paper scenery. Keep the warm sunset backlight and continuous chase rhythm, with subtle handmade texture and natural depth of field. Maintain one coherent corgi throughout the shot, anatomically stable legs, smooth forward motion, and a continuous camera path. Do not introduce additional animals, text, logos, abrupt cuts, or unrelated objects.
This is the cheapest pattern to reason about: one reference video, one clear instruction for what to keep (cadence, camera path) versus what to change (every surface, material, and lighting choice). It's a good default when the goal is a style flip on existing footage rather than a subject swap.
The most demanding pattern layers all three reference types and asks the model to sync the output to the audio's timing:
Use @video1 for the artisan's hand movements, workshop action, camera choreography, macro framing, and the progression from raw material to the final reveal. Replace the original glass object with the crystal fox sculpture from @image1. Preserve the fox's translucent faceted geometry, pointed ears, curled tail, crystalline color, and elegant proportions throughout the sequence. Show the artisan carefully shaping the crystal fox in a warm glass workshop, with realistic tools, glowing furnace light, controlled reflections, and physically plausible hands. Use @audio1 as both the soundtrack and timing guide. Synchronize the furnace flare with the opening low pulse, important tool contacts with glass chime accents, and the final crystal-fox reveal with the last shimmering swell. Keep the fox an inanimate glass sculpture rather than turning it into a living animal. Maintain one coherent workshop, one consistent sculpture, and smooth temporal continuity. Do not add text, logos, extra sculptures, deformed hands, or unrelated scene changes.
@audio1 (passed via reference_audio_urls) is used here as an explicit timing track — the prompt tells the model which visual beat should land on which point in the audio, rather than just asking for "music." That level of instruction is what makes the sync legible instead of approximate.
reference_video_urls (required, array) — at least one public video URL. This is what supplies motion, camera path, and pacing. All three examples above use exactly one.reference_image_urls (optional, array) — swaps a subject in while keeping the reference video's motion, as in example 1.reference_audio_urls (optional, array) — reference audio for voice, sound character, or explicit timing sync, as in example 3.duration — integer, 4 to 30 seconds. All three examples above used the 4-second minimum, which is enough for a single short beat; combined reference video length caps how long a duration you can realistically ask for.resolution — "480p" or "720p".aspect_ratio — one of 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. For TikTok/Reels, set this to "9:16" directly — no separate crop step needed, as example 1 shows.The schema is strict: fields outside this list (seed, ratio, image_urls, audio_urls) get rejected before generation starts. For the full request/response shape and error handling, see the reference-to-video API guide.
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer sk-<your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5/reference-to-video",
"input": {
"prompt": "Use @video1 for camera path and pacing only. Replace the subject with the product from @image1, keep lighting and framing consistent with the source.",
"reference_video_urls": ["https://your-cdn.example.com/reference-clip.mp4"],
"reference_image_urls": ["https://your-cdn.example.com/subject-ref.jpg"],
"duration": 4,
"resolution": "720p",
"aspect_ratio": "9:16"
}
}'
This returns a taskId immediately; poll GET /v1/tasks/{taskId} until status is "success" and download from output[0].url before it expires. Full auth setup is in the quickstart docs, and the model's parameter reference is in the Seedance 2.5 docs page.
Pricing is a flat $0.2714 per output second at 720p — there's no separate, cheaper rate for 480p in the current pricing data, so budget by duration, not by resolution choice. A 4-second clip, like all three examples above, costs about $1.09. If you're testing several subject-swap or style variants of the same reference video for a short-form batch, that per-clip cost adds up fast — keep test duration at the 4-second floor while you iterate on the prompt, then extend duration only once the reference setup is dialed in.
Do I need a reference video, or can I start from a reference image alone?
reference_video_urls is required — at least one video URL. reference_image_urls and reference_audio_urls are additive layers, not substitutes.
Can I get true 9:16 output without cropping?
Yes — set aspect_ratio: "9:16" on the request, as in example 1 above. It's a real enum value on this model, not locked to the source clip's ratio.
Does audio come from reference_audio_urls, or is it generated?
Both are possible. Example 3 above uses an explicit @audio1 reference to drive timing; example 1's audio was generated natively without a separate audio reference. If you need specific timing sync to an existing track, supply it via reference_audio_urls and reference it explicitly in the prompt.
How long can the reference video be?
Combined reference video input is capped at 30 seconds, and output duration tops out at 30 seconds too — this model is built for short clips, not long-form footage.
Does using more reference inputs (video + image + audio) cost more? No — pricing is a flat $0.2714/output-second regardless of how many reference files you attach.
If you're building a short-form pipeline around this, the reference-to-video API guide covers the full request lifecycle including callbacks and error handling, and the model page has a live playground to test a reference clip before you script it.