arkennemasis fal · Flux 3 First Last Frame to Video Draft · $0.06/s
Check the transition for 6 cents a second before you pay for it
- start_image
- end_image
- video
- video_path
- draft_cache_path
- info
The first/last frame idea is great until you actually try it, at which point you discover the obvious: whether a transition reads depends entirely on how the model fills the gap. Sometimes your two frames imply a camera move. Sometimes they imply a dissolve that looks like a glitch. You can't tell from a still, and finding out at $0.29 per second of 1080p is an expensive way to learn.
ArkFal_blackforestlabs_flux_3_first_last_frame_to_video_draft is the same two-frame interpolation at $0.06 per second, and it hands back a reusable draft cache so the full-quality pass is a finish rather than a fresh roll.
What you set
start_imageandend_image- both required. The two frames the motion has to cross.prompt- what happens in between. Same prompt you'd use on the full node; the enhance preserves the draft's decisions rather than re-planning.duration- whole seconds, 5 through 20, default 5. Noauto: the model must know how long it has to land on the end frame, so "however long it takes" isn't an option it can take. This is also the cost dial.generate_audio- on by default. Draft audio is free, so you can hear whether the ambience is right before paying for the 1080p version.aspect_ratio-auto, unless your frames and your target disagree.safety_tolerance- 0 strictest to 4 most permissive, default 2.
There's no resolution box, because drafts are 720p-class - that's the deal that makes them cheap.
Optional and shared with the rest of the fal nodes: max_cost_usd (default $20; the check happens before upload, so a too-tight cap costs nothing but a failed run), reuse_identical_run (default on - identical inputs return the saved file instead of billing again), extra_json, max_concurrent.
Outputs: video, video_path, draft_cache_path, info.
The one thing to get right: the cache handoff
draft_cache_path is a local file path. The enhance node takes draft_cache_url - a URL or data URI - and passes it to fal verbatim, so a path from your disk is useless there. The URL is in the draft node's info output (it carries fal's whole answer, including the draft_cache file), and it's also written to output/fal/_requests.jsonl. Copy it from there.
Keep that URL until the finished clip exists. A draft cache you've lost is just a preview.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Then restart ComfyUI, or use ComfyUI Manager and search arkennemasis. The key goes in .env:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
- in the folder with
run_nvidia_gpu.bat, or yourComfyUIfolder. There's deliberately no key field on the node, so a key can't end up inside a workflow file you share. Nothing gets downloaded: FLUX 3 runs on fal or it doesn't run, which is why this pack wraps it instead of shipping it.
Notes
Draft long enough to judge the motion. Five seconds is the default and it's not always enough time to see whether the interpolation works - a transition that looks fine over 5 seconds can fall apart over 15, and vice versa. The price here is low enough that testing two durations costs less than a coffee.
Results land in output/fal/blackforestlabs_flux-3_first-last-frame-to-video_draft/ and show on the node itself. Rate limits and server drops are retried automatically with backoff, ComfyUI's Cancel cancels the job on fal, and if your session dies mid-render the work is recoverable by request id from the log.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt describing the draft video. | |
| aspect_ratio | COMBO | auto | Aspect ratio of the generated draft. `auto` lets the model choose. |
| duration | COMBO | 5 | Draft duration in whole seconds from 5 through 20. An explicit duration pins the two images to the video boundaries. |
| generate_audio | BOOLEAN | true | Whether to generate audio for the draft video. |
| safety_tolerance | INT | 20–4 | The safety tolerance level for the generated video. 0 is the strictest and 4 is the most permissive. |
| start_image | IMAGE | URL or data URI of the image used as the first frame of the draft. | |
| end_image | IMAGE | URL or data URI of the image used as the last frame of the draft. | |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety 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_runopt | BOOLEAN | true | If 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_jsonopt | STRING | Advanced: 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_concurrentopt | INT | 11–32 | How 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)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| draft_cache_path | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |