Nodes/BFL Flux 3 Video/BFL-Flux3-Video
ComfyUI Node

BFL-Flux3-Video

The only way to run FLUX 3 video from ComfyUI right now (and it costs API credits)

By AllenCraigBarnard·Created about a month ago·Updated about a month ago· 2
BFL-Flux3-Video
  • keyframe_1
  • keyframe_2
  • start_video
  • video
  • video_path
  • request_id
  • result_json
  • draft_cache_path
enable_this_nodetrue
promptexample prompt
modet2v
aspect_ratio16:9
duration5
resolutionhd
generate_audiotrue
safety_tolerance4
drafttrue
versionlatest
api_urlhttps://api.bfl.ai/v1/flux-3-video
poll_interval_seconds2.0
job_timeout_seconds1800
http_timeout_seconds120
filename_prefixflux3_video
draft_cache
api_key

Let's get the framing right first, because it changes everything about this node. FLUX 3 - Black Forest Labs' July 2026 multimodal model - does not have open weights you can download. FLUX 3 Video ships as early-access API plus private weights, and the open-weight Dev backbone is still a "coming soon" promise. So if you want FLUX 3 video inside ComfyUI today, this is basically the only game in town: a thin, honest wrapper that submits jobs to BFL's hosted API, polls them, and hands you back a native VIDEO.

BFLFlux3Video is that wrapper. The name is a slight lie - nothing runs locally. The node POSTs to https://api.bfl.ai/v1/flux-3-video with your key in the X-Key header, gets back a request ID and polling URL, sleeps on poll_interval_seconds (default 2s) until status is Ready, then downloads the finished MP4 into ComfyUI/output/bfl_flux3_video/ and wraps it as a native ComfyUI VIDEO via VideoFromFile. Image keyframes get PNG/base64-encoded, a start_video gets serialized to MP4/base64, and the whole thing respects ComfyUI's interrupt signal while it waits. It's a plumbing node, and plumbing is exactly what you want here - nothing to tune, just a pipe.

The inputs that matter

The one that decides everything is mode: t2v (prompt only), i2v (one or two keyframes), v2v (continue from an existing VIDEO), or draft_enhance (upgrade a saved draft). Then it's a short list:

  • prompt - the actual video description.
  • keyframe_1 / keyframe_2 - ComfyUI IMAGE inputs for i2v; one gives you an opening frame, two give you start and end frames.
  • start_video - the VIDEO you're continuing, for v2v.
  • duration - 5–20s for t2v/i2v, 5–15s for v2v (validated before you're billed).
  • aspect_ratio, resolution (hd/fhd), generate_audio (native audio is FLUX 3's party trick), safety_tolerance (0–4), draft.

Outputs: video (wire it straight into the next node), plus video_path, request_id, result_json for debugging, and draft_cache_path - the draft flow is worth its own paragraph.

The draft → enhance two-step

Generate with draft = true, and the node downloads BFL's draft_cache alongside the video. Wire draft_cache_path from that node into the draft_cache input of a second BFLFlux3Video set to mode = draft_enhance, and it re-renders your chosen draft at full quality. It's BFL's faster-preview-then-final loop, and the node automates both halves. Quirk: version is deliberately not sent in draft_enhance mode because BFL's schema rejects it there.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/AllenCraigBarnard/ComfyUI-BFL-Flux-3-video
pip install -r ComfyUI-BFL-Flux-3-video/requirements.txt

Then restart ComfyUI. Dependencies are just requests and Pillow - refreshingly light. Note the README's own clone command writes ComfyUI-BFL-Flux3-Video.git (stale name); the -Flux-3-video URL above is the real repo. One real requirement the README underplays: it's built on the newer comfy_api.latest extension API and a native VIDEO type, so an older ComfyUI build simply won't register it. If the node doesn't appear, update ComfyUI first.

The honest gotchas

  • You pay per run. Every execution submits a job and burns credits from dashboard.bfl.ai. The node is also flagged not_idempotent, so re-queueing re-bills even with identical inputs.
  • Never paste your key into the api_key field if you share workflows - it gets serialized into the workflow JSON. Set BFL_API_KEY as an environment variable instead.
  • HTTP 402 = out of credits. HTTP 422 = a mode/field mismatch (keyframe where v2v wants start_video, and so on). The node pre-validates most of this before submitting, which saves you from paying for mistakes.
  • enable_this_node = false is your kill switch for keeping multi-branch workflows from burning credits while you experiment.

BFL's API pricing and moderation terms were still settling at early access, so budget accordingly. But if you want FLUX 3 video inside ComfyUI before the weights open, this is the cleanest pipe around.

CategoryBFL/FLUX 3

Inputs (20)

NameTypeDefaultDescription
enable_this_nodeBOOLEANtrueEnable or disable this node. When false, no BFL API request is made and downstream outputs are silently blocked.
promptSTRINGexample promptFree-form text prompt describing the video.
modeCOMBOt2vt2v = prompt only; i2v = keyframe image(s); v2v = continue from start_video; draft_enhance = full-quality render from a prior draft_cache.
aspect_ratioCOMBO16:9Output aspect ratio.
durationCOMBO5Output duration. t2v/i2v: 5-20 seconds or auto. v2v: 5-15 seconds or auto.
resolutionCOMBOhdOutput resolution class.
generate_audioBOOLEANtrueGenerate synchronized audio with the video.
safety_toleranceINT40–4BFL safety tolerance from 0 through 4.
draftBOOLEANtrueGenerate a faster HD draft/preview when supported.
versionSTRINGlatestFLUX 3 version for t2v/i2v/v2v. Ignored for draft_enhance because BFL does not permit version in that request schema.
api_urlSTRINGhttps://api.bfl.ai/v1/flux-3-videoFLUX 3 video submission endpoint.
poll_interval_secondsFLOAT2.00.5–30Seconds between status polls.
job_timeout_secondsINT180030–14400Maximum time to wait for generation.
http_timeout_secondsINT12010–600Timeout for each individual HTTP request.
filename_prefixSTRINGflux3_videoPrefix used for downloaded files.
keyframe_1optIMAGEFirst keyframe for i2v.
keyframe_2optIMAGEOptional second/end keyframe for i2v.
start_videooptVIDEOExisting video for v2v continuation.
draft_cacheoptSTRINGRequired for draft_enhance. Accepts draft_cache_path from a previous draft run, a local path, URL, data URL, or raw base64.
api_keyoptSTRINGOptional BFL API key. If blank, reads BFL_API_KEY from the environment.

Outputs (5)

NameTypeDescription
videoVIDEO
video_pathSTRING
request_idSTRING
result_jsonSTRING
draft_cache_pathSTRING