π¬ Flux 3 Video Upscale (API) *DRE
Upscale your Flux 3 clips to 4K without downloading anything
- video
- video
- metadata
The sibling to Flux3VideoDRE that answers "okay, but I want it sharper." It POSTs your clip to BFL's video upscale endpoint (/v1/flux-tools/video-upscale-v1), waits, and returns a bigger VIDEO plus metadata. No local upscaler, no VRAM hit, no model files - your GPU isn't touched for the heavy lifting. Everything about it is a hosted API call, and that's both the point and the limitation.
How it picks a target size
You pick target_resolution from 1080p, 2K, or 4K, and the node does the math: it measures the source's short side and derives upscale_factor = target_short / min(w, h), clamped between 1.5x and 3.0x, keeping your aspect ratio. So a 720p clip going to "4K" isn't a literal 4x blowup - it's whatever factor lands the short side at roughly 2160, capped at 3x. That's a sensible guard against asking a generative upscaler to invent more than it can.
Then there's the creativity switch, and this is the one to think about before you hit run:
- precise - preserves identity and stays sharp. Use it for faces, products, real people.
- creative (default) - invents detail. Great for generated footage, landscapes, textures; faces and products can drift.
This maps directly onto the upscaling knowledge base's core distinction: adding pixels vs. inventing detail. "Creative" is generative refinement and it will rewrite things. If your shot has a person's face in it and you pick creative, expect the face to come back different.
Inputs that matter
video- the clip to upscale, mp4, max 20s and 50MB. Orinput_video_urlinstead.input_video_url- an HTTP(S) URL to the source, and the clever bit: it takes precedence over thevideoinput, and the node only streams the moov atom of the URL to measure dimensions - no full download, no giant base64 blob. If your source is already hosted somewhere, this is the cheaper path.prompt- optional description of the clip that steers the enhanced detail, most useful in creative mode.safety_tolerance- 0 (strictest) to 4, default 2. Moderates the prompt and delivered frames.timeout_minutes- default 45. An upscale takes about as long as generating a video, and the same timeout warning applies: when it fires, only the node stops; the job keeps running server-side and still costs credits.
Outputs: video (VIDEO) and metadata (STRING).
Setup and the usual API caveats
Same as its sibling: BFL_API_KEY=bfl_... in .env (or the api_key input), pack installed via ComfyUI Manager or git clone https://github.com/DenRakEiw/DenRakEiw_Nodes + pip install -r requirements.txt + restart.
The costs and caveats are the cloud-video standard: metered, slow, your footage leaves the machine. One practical note from the upscaling playbook that applies regardless: a generative upscale of generated footage is usually safe, but don't point "creative" at archival or real-world video you need to stay faithful - that's what precise is for. And if all you need is more pixels on something already sharp, a free local ESRGAN-class upscaler is the cheaper answer; this node earns its keep when you want BFL's model to also add detail while it climbs.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | The clip to upscale (mp4). Max 20 s and 50 MB. Or use input_video_url instead. | |
| target_resolution | COMBO | 4K | Target resolution on the short side. The node measures the source and derives upscale_factor from it (factor = target_short / min(w, h), clamped to 1.5-3.0), keeping the source aspect ratio. 1080p is about 1920x1080, 2K about 2560x1440, 4K about 3840x2160, each at 16:9. |
| creativity | COMBO | creative | precise (0) preserves identity and stays sharp, for faces, products and real people. creative (1, default) invents detail, good for generated footage, landscapes and textures, but faces and products may drift. |
| input_video_urlopt | STRING | Alternative to the video input: an HTTP(S) URL to the source. It takes precedence over the video input and avoids base64 encoding a large clip. The node only streams the moov atom of the URL to measure the source dimensions, so there is no full download. | |
| promptopt | STRING | Optional description of the clip. It steers the enhanced detail, above all in creative mode. Leave empty for a neutral upscale. | |
| safety_toleranceopt | INT | 20β4 | 0 (strictest) to 4, default 2. Moderates the prompt and the delivered frames. |
| timeout_minutesopt | INT | 451β240 | How long the node waits for the result. An upscale can take about as long as generating a video. |
| api_keyopt | STRING | Leave empty to read it from .env |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | β |
| metadata | STRING | β |