BRUT DOCS getbrut.app ↗

Video nodes

Where stills become motion. Brut treats video like the expensive thing it is — every clip is quoted and confirmed before a cent is spent.

Image → Video

The footer of every video node reads the clip's size, duration and frame rate (1920 × 1080 · 5.0 s · 24 fps) at the bottom left, on the output pin's row.

Animate a single image into a clip. Wire an image into the node, pick a provider and model, set duration/resolution and (where supported) audio and an end frame, and run.

Pick the model and duration, read the estimate, run, and the clip plays on the node
Providers: **Kling** (REST and subscription), **Google Veo**, **Gemini Omni**, and **Seedance** — see [Providers](/docs/providers/index.html). Some models do text-to-video too. The node shows a **cost estimate before you run**, from each model's published prices.

Clip length follows the model: Kling and Veo offer a few fixed durations, Gemini Omni 3–10 s, Seedance 2.5 anything from 4 to 30 s (or smart, where the model picks). Some models tie the two selects together: on Google Veo, 1080p and 4K render at 8 s only and reference images need 8 s, so the picks that cannot go together grey out in place with the reason, and a ⚠ line under the selects says what to change; where the provider's endpoint takes no audio switch (Veo on your Google key), the audio box shows ticked and greyed (the rules). On models whose clip must keep the start frame's aspect ratio (Seedance 2.5), the aspect select disappears while a start frame is wired and the node says so. With nothing on the image inlet the run is text-to-video and the aspect select is back, since that run takes a ratio of your choice.

Ratio: follow the input. The aspect menu's first entry follows the start frame: the clip runs at the provider's ratio nearest to the wired image's (a 2048 × 1143 still runs at 16:9, a portrait one at 9:16), so the clip keeps the frame you composed instead of being stretched or banded to a fixed ratio. Steady camera asks the model for one smooth, stabilized move with no shake and no drift, as Film Shots does for every clip.

Running a finished node again replays its clip, free. Want another take of the same shot? The title bar's ↻ re-roll generates a fresh one (billed again, at the same estimate); the previous clip stays in the node's 🕘 history, pinnable.

Draft mode (Seedance 2.5)

Tick Draft take and the node renders a 480p draft, billed like any 480p clip. When the draft is the shot you want, ⬆ Render final 1080p re-renders the same shot at 1080p from the draft: BytePlus reuses the prompt, the frames, the references, the duration, the seed and the audio, nothing is re-sent, and the final is billed like any 1080p clip, after the usual confirm with its price. The final then replaces the draft on the node and on every wire (the footer line reads 1920 × 1080), while the draft stays in the node's 🕘 history. A re-roll or a changed prompt starts a new draft, and the old final stays in the ledger like every paid file. A draft can be finalized for seven days; the node's line says until when. Explore at 480p, pay 1080p only for keepers. Draft mode needs your own BytePlus key: a node running through another service such as OpenRouter shows no Draft box.

Last frame (Seedance). Seedance returns every clip's final frame as an image, at the clip's exact size, and Brut keeps it beside the clip. ⏭ Last frame → Image In under the result drops it on the canvas as an Image In: wire it into the next Image → Video's start frame and the shot continues where this one ended. When a final was rendered from a draft, the button gives the final's last frame.

The trust line (Seedance). BytePlus refuses a wired picture that looks like a real person unless one of its own models made it on your key. Brut checks where each wired picture came from, the start frame, the end frame and each reference, and says in green which ones carry that trust, with the day the 30-day window closes: made on your BytePlus key: start frame, references 1, 2. A picture counts when it is a Seedream text-to-image result or a Seedance clip's last frame. When the same set also holds pictures Seedance will refuse a face in (a Seedream edit, a picture from another model), an amber line names them, so a refusal is visible before the run. A picture with no line either way is one Brut cannot trace (an upload, a Conform cut): that is no verdict. A node fed only by other makers' pictures shows no line at all.

When a video model runs through another service (the "⇄ runs via …" chip — e.g. Kling v3 on your OpenRouter key), the node shows only the knobs that service actually accepts: settings it doesn't carry (like the aspect-ratio select or the negative prompt on OpenRouter's Kling) disappear rather than fail the run. The clip's aspect still follows the start frame you wire in. Add the native key to get the full control set back.

Reference images

Some models accept extra reference images alongside the start frame — a character, a product, a style plate — and keep them consistent in the clip. When the selected model supports them, the node grows a references inlet and its info line says so ("✓ takes reference images (up to N)"); models that don't say that too, so you never guess. A Reference Board plugs straight in — its numbered tiles (or the whole curated pool) wire onto the inlet.

Current support: Seedance 2.5 (up to 30, addressed as @Image1… in the prompt), Gemini Omni Flash, Kling o1 / 3.0 Omni (subscription, up to 6), Seedance 2.0, Veo 3.1 / 3.1 Fast (up to 3). Wiring references into a model that can't take them fails with a clear message — Brut never silently drops an image you wired.

Film Shots — the cinema batch executor

Film Shots takes a shot plan (from the Director / Storyboard) and shoots the whole sequence.

Prompts written for the model you picked. Before a clip is shot, Film Shots adapts the Director's prompt to the video model you picked, automatically (one cheap text call per clip, cents, in the ledger). There is nothing to set: the table marks adapted rows with ✦ (hover one to read the Director's text), and the confirmation says how many were adapted. A clip whose adaptation fails is flagged on its row and in the confirmation, and goes out with the Director's text.

Its defining feature is the cost guard:

Every clip priced in the table, one itemized confirmation, nothing spends before your OK
Nothing is generated until you confirm the total. Other branches keep running while it waits.

Like Image → Video, a model reached through another service (the "⇄ runs via …" chip) shows only the knobs that service accepts — the quote table and the clips both use exactly what will be sent, and the film's aspect rides each clip's start frame.

Clip Board

The review board for Film Shots — video tiles, ✓ / ✗ / ↻ per clip, and a plug per tile to route one clip onward. The video equivalent of the Shot Board.

Tiles show a still poster of each clip (in the clip's own aspect ratio) and stay feather-light — press ▶ on a tile to play it; one clip plays at a time, and 🔍 opens it full-screen — ←/→ screens the whole board clip by clip. The /row select goes up to 15, so a whole reel can sit in one row.

Sequence — local assembly, free

Wire your curated clips into a Sequence node and it assembles them into one mp4 on your machine — cuts or chained crossfades, scaled and padded to a common size. It's free, and an unchanged assembly replays at once.

Two clips cut together with a crossfade and played in Preview: local ffmpeg on your machine, no cost
- Nothing to install: the video tool ships inside Brut. - The film **follows the first clip's orientation** — a pool of vertical 9:16 clips assembles into a vertical reel, not a pillarboxed landscape frame. The Quality select sets the short side (1080p vertical = 1080 wide). - **Clip audio is kept.** Clips with native sound (Veo, Seedance, Kling with audio on) carry it into the film, in sync even beside silent clips; crossfades fade the audio too. A pool with no sound anywhere produces a clean video-only file.

The full flow

The video nodes are the back half of the Cinema Sessions: Storyboard → Film Shots → Clip Board → Sequence → Preview. Read that walkthrough to see them working together.