Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 3 Keyframes to Video · $0.17-0.29/s
ComfyUI Node

arkennemasis fal · Flux 3 Keyframes to Video · $0.17-0.29/s

FLUX 3 with frame-level control

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 3 Keyframes to Video · $0.17-0.29/s
    • video
    • video_path
    • seed
    • info
    ◄prompt►
    ◄aspect_ratioauto►
    ◄resolution720p►
    ◄duration5►
    ◄generate_audiotrue►
    ◄safety_tolerance2►
    ◄keyframes[{"frame_index": 0, "image_url": "https://storage.googleapis.com/falserverless/example_inputs/veo31-flf2v-input-1.jpeg"}, {"frame_index": 120, "image_url": "https://storage.googleapis.com/falserverless/example_inputs/veo31-flf2v-input-2.jpeg"}]►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    First/last frame gives you two anchors. Keyframes gives you up to ten, each pinned to a specific frame index - which is the closest thing a hosted video model gets to a storyboard you can actually direct. Character turns here, picks up the object there, lands in this pose at the end. You're not prompting motion any more, you're placing it.

    ArkFal_blackforestlabs_flux_3_keyframes_to_video is FLUX 3 Video's keyframe endpoint on fal: $0.17/s at 720p, $0.29/s at 1080p, synchronized audio included. FLUX 3 shipped as early access with private weights, so fal is where it runs.

    What you set

    • keyframes - required, and it's a JSON box. A list of objects, each an {image_url, frame_index} pair. Up to 10 keyframes with unique frame_index values. The box comes pre-filled with fal's own two-keyframe example so you can see the shape; replace the example URLs with your own image URLs. Frame indices are positions in the output timeline, so 0 is the first frame and the spacing between them is what sets the pace.
    • duration - defaults to 5, and an explicit duration is required exactly because the model has to validate those frame positions against the clip length. A keyframe at index 120 in a 5-second clip is a contradiction; the node wants to know how long the timeline is before it starts placing things.
    • prompt - the connective tissue: what happens between the anchors.
    • resolution - 720p (default) or 1080p.
    • generate_audio - on by default, no extra cost.
    • aspect_ratio - auto, or forced.
    • safety_tolerance - 0 to 4, default 2.

    The shared optional set: max_cost_usd (default $20, checked before upload; 0 disables), reuse_identical_run (on by default), extra_json, max_concurrent.

    Outputs: video, video_path, seed, info.

    The honest catch with the JSON box

    Where do the image URLs come from? You're pasting links, not connecting IMAGE sockets. In practice you generate your keyframes, save them, host them somewhere fal can read - or use your own fal uploads - and paste the URLs into the JSON. That's friction, and it's not this pack's fault; it's fal's schema for the endpoint.

    The pragmatic workflow most people land on: build the whole shot as stills first (this pack has image nodes that can do the editing passes), host them, then fill in the JSON. Since reuse_identical_run defaults to on, once you've paid for a good render, re-running the same graph gives it back to you from disk instead of billing again - which makes the URL gymnastics a one-time cost per shot.

    The draft option

    ArkFal_blackforestlabs_flux_3_keyframes_to_video_draft does the same thing at $0.06/s and returns a draft cache for draft_enhance to finish. With keyframe shots this matters more than usual: you're likely to re-place anchors two or three times before the pacing feels right, and pacing is exactly the thing you can judge from a 720p draft.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hishamahmer/comfyui-arkennemasis
    

    Restart, or install through ComfyUI Manager by searching arkennemasis. Then:

    FAL_KEY=your-key-from-fal.ai/dashboard/keys
    

    in the .env next to run_nvidia_gpu.bat (portable) or in your ComfyUI folder. No key widget on the node - by design, so a key never gets baked into a workflow you share.

    Practical notes

    The cost estimate reads the duration box and the resolution box, so with both set explicitly the badge in the title is a number you can budget against. Ten seconds at 1080p is $2.90 - set max_cost_usd to something like $6 and let the node stop you rather than letting a typo in the duration box get expensive.

    Files land in output/fal/blackforestlabs_flux-3_keyframes-to-video/, every request is logged to output/fal/_requests.jsonl, and a run interrupted by a ComfyUI restart is recoverable free through fal Recover Result with its request id.

    Categoryarkennemasis/fal/Video/Flux

    Inputs (11)

    NameTypeDefaultDescription
    promptSTRINGThe text prompt describing the video you want to generate.
    aspect_ratioCOMBOautoAspect ratio of the generated video. `auto` lets the model choose.
    resolutionCOMBO720pResolution of the generated video.
    durationCOMBO5Duration of the generated video in seconds. An explicit duration is required to validate keyframe positions.
    generate_audioBOOLEANtrueWhether to generate audio for the video.
    safety_toleranceINT20–4The safety tolerance level for the generated video. 0 is the strictest and 4 is the most permissive.
    keyframesSTRING[{"frame_index": 0, "image_url": "https://storage.googleapis.com/falserverless/example_inputs/veo31-flf2v-input-1.jpeg"}, {"frame_index": 120, "image_url": "https://storage.googleapis.com/falserverless/example_inputs/veo31-flf2v-input-2.jpeg"}]Keyframe images pinned to frame positions in the generated video. Up to 10 keyframes with unique `frame_index` values. JSON. Required.
    max_cost_usdoptFLOAT20.00–100000Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap.
    reuse_identical_runoptBOOLEANtrueIf these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings.
    extra_jsonoptSTRINGAdvanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally.
    max_concurrentoptINT11–32How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed.

    Outputs (4)

    NameTypeDescription
    videoVIDEO—
    video_pathSTRING—
    seedINT—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.