OpenRouter
OpenRouter is the one aggregator key that can hold almost the whole of Brut: every text model (planning and Marcel — chat, ambient narration, acting), the full Nano Banana image family, GPT Image 2, and the video models — Kling 3.0, Veo 3.1 / Fast / Lite, Seedance 2.0. Only the upscalers stay outside (they aren't resold anywhere, by design). Like every route, it adds no models to the menu and is always visible: routed nodes show ⇄ runs via OpenRouter, and Marcel's composer says so too.
If you want the simplest possible seat: one OpenRouter key is a working studio. Native keys added later always take their models back automatically, usually at slightly better prices.
Text — planning and Marcel
Every text model in Brut's catalog runs at pass-through provider list rates — the same per-token prices as the native APIs (OpenRouter's revenue is a ~5.5% fee when you buy credits, not a token markup). Vision-grounded planning works, the GPT-5.6 reasoning dial rides along, and Anthropic prompt caching passes through — Marcel's long system context caches exactly as on a native Anthropic key (write premiums and 0.1× reads verified live), so routed conversations cost the same as native ones.
Images — native knobs, no compromises
The Nano Banana family runs with Brut's own menus — the real 512/1K/2K/4K sizes and the full aspect list, unlike fal's preset system — which is why OpenRouter sits first in those models' route order. Approximate inpaint masks work (the Gemini convention, verified live). Billing is pass-through per image (~$0.069 measured for Nano Banana 2 at 1K, essentially the native token price), and every image job records its exact billed amount on the ledger.
Two OpenRouter-specific limits worth knowing:
- Requests cap at ~52 MB, and a full-resolution PNG render can eat that alone once base64-encoded. When an image stack wouldn't fit, Brut transcodes the largest PNG inputs to full-resolution JPEG (q95) for that request only — never downscaled, never touching your files, logged in the engine console. If even that can't fit, the run fails loudly; export the source smaller or use a native key.
- Heavy 4K image jobs can be slow. OpenRouter's image endpoint is synchronous, and its queue sometimes stalls on large 4K multi-image jobs (measured in the field: a 4K edit that takes ~55 s on a native Gemini key can exceed Brut's 570 s route timeout entirely — that's on their end, not yours). If you hit the timeout: retry, pick a smaller size, or use the native key — which is the first-class lane anyway and takes over automatically the moment it's configured.
The one exception: GPT Image 2 via OpenRouter has no size or aspect control (quality only) — so for that model fal and Replicate outrank it. It still works ($0.005 measured at low quality), just without sizing.
Video — the whole set, with billing truth
Kling 3.0 (std/pro), Veo 3.1 / Fast / Lite (OpenRouter is the first route Lite has ever had), and Seedance 2.0 — image-to-video with end frames, text-to-video, reference images. Per-second rates (2026-07-22): Kling std $0.084 / pro $0.112 (audio +$0.042–0.056), Veo 3.1 $0.20 (audio doubles it), Fast $0.08–0.10, Lite $0.03–0.05; Seedance bills per video token. Where a surcharge can't be estimated up front the node says so — and it matters less than usual here, because OpenRouter reports the exact billed cost on every job, which lands on the ledger row verbatim (a 4s Lite clip billed $0.12 = 4 × $0.03, verified live to the cent).
Get a key
Create a key at openrouter.ai/keys (sk-or-…), buy a few
dollars of credits, and paste it into ⚙ Settings → OpenRouter (or set OPENROUTER_API_KEY).
The fine print
- Your native key always wins. Add a Gemini/OpenAI/Kling/… key later and those models bill direct again automatically.
- A fal.ai key can also run text (fal resells the same router) — but fal's text lane takes no images and no reasoning dial, so OpenRouter outranks it when both keys exist.
- Marcel routes here and only here: his lanes stream, and OpenRouter is the one aggregator whose wire supports Brut's streaming + tool-call + prompt-cache contract.
- Kling's 4K master tier and Seedance's Smart Length aren't on OpenRouter; for video, fal outranks OpenRouter when both keys exist (fal's Kling rates run cheaper). Missing knobs always fail loud, never silently.
- Every routed call — text, image, or video — lands in the spend ledger with provider-reported figures (token counts, cache activity, billed cost), marked "via openrouter".