npx skills add ...
npx skills add genmedia-labs/skills --skill seedance-2-5-reference-to-video
Generate reference-guided 1080p video with ByteDance Seedance 2.5 Reference to Video on RunComfy via the `runcomfy` CLI. Feed up to 9 reference images, 1-3 reference video clips, and 3 reference audio files into one call and get a 4-30 second 1080p clip with native synchronized audio, identity and style locked to your references. Documents the full input schema (images / videos / audios / aspect_ratio / duration / generate_audio), the counted-seconds billing model ($0.53 per second of reference video duration plus output duration), the 480p draft-then-deliver workflow, and when to route to Seedance 2.5 text-to-video, image-to-video, or Seedance 2.0 Pro instead. Calls `runcomfy run bytedance/seedance-2.5/reference-to-video/1080p`. Triggers on "seedance 2.5", "seedance 2.5 reference to video", "reference to video", "reference-to-video", "seedance 1080p", "ByteDance Seedance 2.5", "consistent character video", "style-locked video", or any explicit ask to generate video from reference images and clips.
npx skills add genmedia-labs/skills --skill seedance-2-5-reference-to-video
Reference-guided 1080p video from ByteDance. Hand it the images that must stay stable, a short clip that carries the camera motion, and a prompt that directs the action — it returns a delivery-resolution 1080p clip with synchronized audio.
runcomfy.com · Seedance 2.5 Reference to Video 1080p · 480p draft tier · CLI docs
Seedance 2.5 Reference to Video's distinct property is reference-conditioned generation at delivery resolution: identity, product geometry, and art direction come from your reference stack rather than from prose, and the output lands at 1080p so you are not upscaling a draft. RunComfy positions it for consistent character finals, product reference films, and style-locked brand clips.
| You want | Use |
|---|---|
| Same character / product across many shots, at final resolution | Seedance 2.5 Reference to Video 1080p |
| Camera move and rhythm copied from an existing clip | Seedance 2.5 Reference to Video 1080p (videos) |
| Brand style locked by a moodboard, not described in prose | Seedance 2.5 Reference to Video 1080p (images) |
| Cheap iteration on which references actually work | Seedance 2.5 Reference to Video 480p |
| No references at all — prompt only | Seedance 2.5 Text to Video 1080p |
| Animate exactly one still | Seedance 2.5 Image to Video 1080p |
| The older 2.0 generation (4-15s, 480p/720p) | Seedance 2.0 Pro — see seedance-v2 |
If the user said "Seedance 2.5" or "reference to video" explicitly, route here.
npm i -g @runcomfy/cli (or npx -y @runcomfy/cli)runcomfy login opens a browser device-code flowRUNCOMFY_TOKEN=<token> instead of runcomfy loginCLI deep dive: runcomfy-cli skill.
bytedance/seedance-2.5/reference-to-video/1080p| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
prompt | string | yes | — | Scene description that uses the references as cues. Chinese roughly 500 chars or English roughly 1000 words recommended. |
videos | array (video URIs) | no | — | 0-3 reference clips for camera motion and rhythm. MP4/MOV, roughly 2-15 s each. Optional in practice — see below. |
images | array (image URIs) | no | — | 0-9 reference images for identity, look, style, environment. JPEG/PNG/WebP/BMP/TIFF/GIF. |
audios | array (audio URIs) | no | — | 0-3 reference audio for mood and pacing. WAV/MP3, roughly 2-15 s, under 15 MB. |
aspect_ratio | enum | no | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive. |
duration | int | no | 5 | 4-30 seconds, 1-second steps. |
generate_audio | bool | no | true | Native synchronized speech, SFX, and music in the same pass. |
Output resolution is fixed at 1080p — there is no resolution field on this endpoint.
videos is optional, despite what the schema says. The published input schema lists videos as required with a 1-item minimum, but the endpoint accepts and completes a prompt-plus-images body with no videos key at all. Send reference clips when you want camera motion and rhythm copied from an existing plate; omit them when your references are stills. Omitting them also drops the reference duration out of the billing: counted seconds fall back to output duration alone, so a 5 s clip costs $2.65 instead of $5.30.
Parameter names changed from 2.0. Seedance 2.0 Pro used image_url / video_url / audio_url. Seedance 2.5 uses images / videos / audios. Copying a 2.0 body verbatim produces a schema error (exit 65).
Billing is $0.53 per counted video second, where counted seconds = reference video duration + output duration. Image and audio references are not billed as duration.
| Job | Counted seconds | Cost |
|---|---|---|
| 5 s output, no reference clip | 5 | $2.65 |
| 5 s output, one 5 s reference clip | 10 | $5.30 |
| 10 s output, one 6 s reference clip | 16 | $8.48 |
| 10 s output, three 10 s reference clips | 40 | $21.20 |
Two consequences worth acting on: trim reference clips before uploading (a 15 s reference costs the same as 15 s of output), and use the 480p tier for reference selection — it bills $0.12 per counted second with reference videos, $0.20 per second of generated video without them.
Minimum viable call — prompt plus one reference clip:
Consistent character final — identity from stills, motion from a clip:
Full reference stack — add "audios": ["https://your-cdn.example/bed-8s.mp3"] to the body above to hand the model a pacing and mood reference, and set "generate_audio": true (the default) to get speech, SFX, and music in the same pass.
The CLI submits the request, polls status, fetches the result, and downloads *.runcomfy.net / *.runcomfy.com URLs into --output-dir. Ctrl-C cancels the remote request before exit.
Let references anchor, let the prompt direct. Anything that must stay stable — face, wardrobe, product geometry, brand palette — belongs in images. Anything that evolves — action, camera, lighting change, mood — belongs in prompt. Describing a face in prose while also supplying a face reference produces drift, not reinforcement.
Reference videos carry camera and rhythm, not content. A 4 s handheld-follow plate teaches the model the move. Don't expect it to transfer the subject; that's what images is for.
Keep reference media short. Roughly 2-15 s per clip and per audio file, audio under 15 MB. Long clips are rejected and, on this endpoint, also inflate the bill.
Name every sound source when generate_audio is on: who speaks, what makes each noise, what the ambience is. "Quiet street ambience, distant traffic, no music" beats "good audio".
Use negative instructions. "No text, no watermark" is the pattern RunComfy's own example prompt uses, and it works. Add "no camera shake", "no extra people" as needed.
Match aspect ratios. Reference media in a different aspect from aspect_ratio invites crops. Use adaptive when your references disagree and you don't care about the exact frame.
Anti-patterns:
image_url / video_url — wrong field names.RunComfy's guidance for this model family is to validate the reference stack at low resolution and reuse the winning combination at delivery resolution. The two endpoints take the same parameters.
bytedance/seedance-2.5/reference-to-video/480p at duration: 5..../reference-to-video/1080p, raising duration only once the beat is right.At $0.12 per counted second on 480p versus $0.53 on 1080p, five drafts cost roughly what one 1080p final costs.
| Use case | Why this endpoint |
|---|---|
| Consistent character finals | Up to 9 identity references hold the face and wardrobe across shots |
| Product reference films | Geometry comes from stills; the turntable move comes from a plate |
| Style-locked brand clips | A moodboard in images beats a paragraph of style adjectives |
| Previz that survives to delivery | 1080p native output, no upscale step |
| Dialogue and ambience in one pass | generate_audio produces synchronized speech, SFX, and music |
seedance-2.5/text-to-video/1080p, billed $0.88 per second of generated video.seedance-2.5/image-to-video/1080p, also $0.88 per second, takes a single image.ai-avatar-video. Past 30 s → video-extend.| code | meaning |
|---|---|
| 0 | success |
| 64 | bad CLI args |
| 65 | bad input JSON / schema mismatch (2.0 field names, out-of-range duration, bad aspect_ratio) |
| 69 | upstream 5xx |
| 75 | retryable: timeout / 429 |
| 77 | not signed in or token rejected |
Full reference: docs.runcomfy.com/cli/troubleshooting.
The skill builds a JSON body matching the schema above and runs runcomfy run bytedance/seedance-2.5/reference-to-video/1080p. The CLI POSTs to https://model-api.runcomfy.net/v1/models/bytedance/seedance-2.5/reference-to-video/1080p, polls request status, fetches the result, and downloads any .runcomfy.net / .runcomfy.com output URL into --output-dir.
npm i -g @runcomfy/cli or npx -y @runcomfy/cli. Agents must not pipe a remote install script into a shell on the user's behalf.runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600. In CI set RUNCOMFY_TOKEN. Never echo the token into prompts, logs, or generated files.--input. The CLI does not shell-expand prompt content, so prompt text is not a shell-injection surface.model-api.runcomfy.net for submission and *.runcomfy.net / *.runcomfy.com for downloads. No telemetry, no callbacks.allowed-tools: Bash(runcomfy *). The skill never instructs the agent to run anything but runcomfy <subcommand>; the install line is one-time operator setup, not a per-call agent command.seedance-v2 — the Seedance 2.0 Pro generation (4-15 s, 480p/720p, image_url field names)ai-video-generation — router across the whole video catalogimage-to-video · video-extend · runcomfy-cliruncomfy run bytedance/seedance-2.5/reference-to-video/1080p \
--input '{
"prompt": "The woman from the reference images walks toward camera and stops, glancing off-frame. Handheld follow, soft overcast light, quiet street ambience. No text, no watermark.",
"images": [
"https://your-cdn.example/hero-front.jpg",
"https://your-cdn.example/hero-profile.jpg",
"https://your-cdn.example/wardrobe.jpg"
],
"videos": ["https://your-cdn.example/handheld-follow-4s.mp4"],
"duration": 8,
"aspect_ratio": "9:16"
}' \
--output-dir ./out