- Durable Job Inbox: every async submit is journaled to the shared
sqlite store and survives ComfyUI restarts; the Fal Job Inbox node
lists pending/collected jobs and outputs the newest pending
request_id/endpoint for one-wire recovery via Result by Request ID.
- Provenance: Fal Save Media from URL writes a <file>.fal.json sidecar
and embeds a fal_provenance PNG text chunk (preserving existing text
chunks and ICC profiles), returning the request_id as a second output;
new Fal Provenance from File node reads saved files back into
endpoint_id + request_id for free re-materialization.
- First web extension (web/ + /fal_api server routes): per-node cost
pills rendered above every priced fal node (live estimates on
free-typed endpoint fields), a fal sidebar tab with session spend,
account balance and a job list with copy/cancel, and in-canvas
endpoint search with price labels. All features degrade silently on
older frontends; routes are exception-guarded and cached.
Review fixes: PNG provenance embed preserves source text chunks and ICC
profile; jobs route limit clamped.
15 new tests (91 total).
* feat: v2.1.0 — fal platform utilities (async fan-out, cost tools, recovery)
Six new nodes under FAL/Platform, built on fal's queue/request-id/pricing
primitives:
- Fal Submit + Fal Collect: queue jobs without blocking and collect
results later — N generations run in parallel inside one graph
- Fal Result by Request ID: re-fetch any past generation from fal's
queue without re-generating or re-billing
- Fal Cost Estimator: per-run cost report parsed from registry pricing
before anything is queued
- Fal Session Costs: in-memory ledger of every fal call this session
(endpoint, duration, request id, est. cost) with running total
- Fal Save Media from URL: persist expiring CDN results into the
ComfyUI output directory
Core: utils/pricing.py (pricing-text parser + registry lookup),
utils/ledger.py (thread-safe session ledger), api.py gains submit_only,
result_from_request_id, request-id capture via on_enqueue, and
automatic ledger recording; any_endpoint helpers extracted for reuse.
16 new tests (61 total).
* feat: v2.2.0 — persistent result cache, spend guard, URL passthrough
Three fal-platform features on top of the 2.1 platform pack:
- Persistent result cache (sqlite, [cache] config): identical fal calls
are served free from disk across ComfyUI restarts; uploads are
deduplicated by content hash so identical inputs upload once. Bypass
per node via force_rerun. Cache hits are never blocked by the spend
guard and never recorded as spend.
- Spend Guard + billing ([spend_guard] config): preflight refuses to
submit once the session's estimated spend reaches session_budget_usd
or the account balance (fal Billing API) falls below min_balance_usd.
New Fal Account Balance node; ledger reconciliation against the
aggregated usage API (fal exposes no per-request billed amounts).
- fal-CDN URL passthrough: every dynamic node's media inputs gain
optional *_direct_url twins (URL sent directly, no download/re-upload;
1,405 twins across 992 nodes) and image-kind nodes output image_urls
alongside IMAGE — fal→fal chains with zero local I/O.
Review fixes: path traversal blocked in FalSaveMediaURL (confined to the
output dir, atomic O_EXCL filename claim), FalAnyEndpoint force_rerun now
bypasses the cache, cache lookup ordered before spend-guard preflight,
result recovery no longer counts as new session spend.
14 new tests (76 total).
Auto-generated nodes for the entire live fal catalog (1,391 models →
1,482 total nodes) built at startup from a committed registry, plus a
full rewrite of the core layer. All 87 v1 node keys, inputs and outputs
are preserved — existing workflows load and run unchanged.
New:
- data/fal_registry.json + scripts/build_registry.py: distills fal's
catalog and per-endpoint OpenAPI schemas into a deterministic registry
- nodes/dynamic/: schema→node factory (typed widgets, tooltips, pricing
in node help, IMAGE/VIDEO/AUDIO auto-upload, native VIDEO/AUDIO
outputs, seed -1=random, force_rerun), plus a generic Fal Any Endpoint
node for arbitrary endpoints
- nodes/utils/: rewritten core — FalApiError surfacing fal's real error
payloads, queue progress logs, ComfyUI cancel support, retries and
timeouts everywhere, parallel uploads/downloads, structured logging
- tests/ (45 tests incl. a legacy-key snapshot lock), CI lint+test
workflow, weekly registry-refresh workflow that opens a PR on changes
- README regenerated from the registry (scripts/build_readme.py)
Fixed:
- GPTImage2 / GPTImage2Edit were defined but never registered
- Topaz video upscale sent a nonexistent API field (desired_increase)
- SeedVR video upscaler had its error handling commented out + wrong
model label; ProRes enum value mismatch translated at argument level
- 10x `is ""` comparisons, bare excepts, missing HTTP timeouts,
temp-file leaks, fps=0 crash in LoadVideoURL, duplicate enum entry
- opencv-python & friends missing from pyproject (Registry installs)
- API failures now raise visible errors instead of silently returning
blank images or "Error:" strings that downstream nodes tried to load
BREAKING (behavioral only): failed API calls raise instead of returning
blank/black images or error strings. Node signatures are unchanged.
Add 7 new node classes covering 12 fal.ai endpoints:
Kling V3 (4 nodes):
- V3 Standard/Pro unified T2V/I2V with 3-15s duration, native audio, end frame control
- V3 Standard/Pro Motion Control for character animation via motion transfer
Kling O3 (2 nodes):
- O3 Standard/Pro unified T2V/I2V with 3-15s duration and native audio
Nano Banana 2 (1 node):
- Unified T2I/Edit with multi-resolution (0.5K-4K), web search grounding, and seed support
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Add new video generation nodes and URL loader
- Added Kling v2.1 Pro and v2.5 Turbo Pro image-to-video nodes
- Added Sora 2 Pro image-to-video node
- Added Veo 3.1 and Veo 3.1 Fast first-last-frame-to-video nodes
- Added FalVideoURLLoader for converting video URLs to VideoHelperSuite-compatible IMAGE tensors
- FalVideoURLLoader includes automatic FPS detection with override option
* Update VLM and LLM nodes to OpenRouter API
- Migrated VLM node to openrouter/router/vision endpoint
- Migrated LLM node to openrouter/router endpoint
- Updated to latest model versions (Gemini 2.5, Claude Sonnet 4.5, GPT-4.1, etc.)
- Added multi-image support for VLM node
- Added temperature, max_tokens, and reasoning parameters
- Added custom model name support for both nodes
- Added reasoning output for LLM node
- Disabled streaming for consistent response handling
* Update README.md
* Removed redundant node that i created by accident
* Fix Veo 3.1 endpoint routing with conditional logic
- Added conditional routing to Veo 3.1 Standard node
- Added conditional routing to Veo 3.1 Fast node
- When last_frame is not provided, routes to image-to-video endpoints
- When last_frame is provided, routes to first-last-frame-to-video endpoints
- All parameters (duration, aspect_ratio, resolution, audio) work with both modes
* add nano banana pro
* Update README with Nano Banana Pro node
* change nano banana image input to accept batch tensor (14 images) and add example workflow
* Add Kling v2.6 Pro unified T2V/I2V node
* Add Wan 2.6 and GPT-Image 1.5 nodes
Video nodes:
- Wan 2.6 Video Generation: Unified T2V/I2V with conditional routing
- Wan 2.6 Reference-to-Video: Subject consistency with up to 3 reference videos
Image nodes:
- GPT-Image 1.5: High-fidelity text-to-image generation
- GPT-Image 1.5 Edit: Batch image editing (up to 16 images) with optional mask
---------
Co-authored-by: ShadowxShinigamI <shadowshingami123@gmail.com>
Co-authored-by: ShadoWxShinigamI <116374738+ShadoWxShinigamI@users.noreply.github.com>
* Made vace_mask_video argument optional in DYWanFun22Node
* Add nodes for Kling Omni endpoints: KlingO1ImageToVideoNode, KlingO1ReferenceToVideoNode, KlingO1VideoToVideoEditNode, and KlingO1VideoToVideoReferenceNode
* Added option to submit multiple requests asynchronously and get a list of results back
---------
Co-authored-by: Caitlyn Clabaugh <caitlyn.clabaugh.-nd@disney.com>
* Add Seedance Pro node with start/end frame support
* Wan 22 VACE Fun a14b (#3)
Added node for wan-22-vace-fun-a14b endpoints (depth, pose, etc.) with multi-control support
Simplified uploade of ref_images in Wan22VACEFun14bNode using fal utils
Limit Wan 2.2 VACE Fun 14b to pose and depth because will need aditional inputs for outpainting, inpainting, and reframe
* DY Custom Wan Fun 22 Node (#4)
Add custom DY Wan 2.2 Fun endpoint for complex video-to-video
Standardized default seed to be -1 and only set seed if not -1
Added optional mask video for DYWanFun22Node
* Dy Wan Upscaler (#5)
* Updated DYWanFun22Node to always set control strengths.
* Added custom DYWanUpscalerNode.
* Added node for Qwen Image Edit Plus with LoRAs support (#6)
* Updated README
---------
Co-authored-by: Caitlyn Clabaugh <caitlyn.clabaugh.-nd@disney.com>
* Add new video generation nodes and URL loader
- Added Kling v2.1 Pro and v2.5 Turbo Pro image-to-video nodes
- Added Sora 2 Pro image-to-video node
- Added Veo 3.1 and Veo 3.1 Fast first-last-frame-to-video nodes
- Added FalVideoURLLoader for converting video URLs to VideoHelperSuite-compatible IMAGE tensors
- FalVideoURLLoader includes automatic FPS detection with override option
* Update VLM and LLM nodes to OpenRouter API
- Migrated VLM node to openrouter/router/vision endpoint
- Migrated LLM node to openrouter/router endpoint
- Updated to latest model versions (Gemini 2.5, Claude Sonnet 4.5, GPT-4.1, etc.)
- Added multi-image support for VLM node
- Added temperature, max_tokens, and reasoning parameters
- Added custom model name support for both nodes
- Added reasoning output for LLM node
- Disabled streaming for consistent response handling
* Update README.md
* Removed redundant node that i created by accident
* Fix Veo 3.1 endpoint routing with conditional logic
- Added conditional routing to Veo 3.1 Standard node
- Added conditional routing to Veo 3.1 Fast node
- When last_frame is not provided, routes to image-to-video endpoints
- When last_frame is provided, routes to first-last-frame-to-video endpoints
- All parameters (duration, aspect_ratio, resolution, audio) work with both modes
* add nano banana pro
* Update README with Nano Banana Pro node
* change nano banana image input to accept batch tensor (14 images) and add example workflow
---------
Co-authored-by: ShadowxShinigamI <shadowshingami123@gmail.com>
* Feature: Added prepare_images to make handling of batch images cleaner and easier for nodes.
Feature: Added images input to Nano Banana Edit (fal) so that a user isn't just stuck with only 4 image inputs. Had to do it this way to not break current user workflows.
* Feature: Added Infinity Start Text To Video Node.
Feature: Added Pixverse Swap Node.
* Add new video generation nodes and URL loader
- Added Kling v2.1 Pro and v2.5 Turbo Pro image-to-video nodes
- Added Sora 2 Pro image-to-video node
- Added Veo 3.1 and Veo 3.1 Fast first-last-frame-to-video nodes
- Added FalVideoURLLoader for converting video URLs to VideoHelperSuite-compatible IMAGE tensors
- FalVideoURLLoader includes automatic FPS detection with override option
* Update VLM and LLM nodes to OpenRouter API
- Migrated VLM node to openrouter/router/vision endpoint
- Migrated LLM node to openrouter/router endpoint
- Updated to latest model versions (Gemini 2.5, Claude Sonnet 4.5, GPT-4.1, etc.)
- Added multi-image support for VLM node
- Added temperature, max_tokens, and reasoning parameters
- Added custom model name support for both nodes
- Added reasoning output for LLM node
- Disabled streaming for consistent response handling
* Update README.md
* Removed redundant node that i created by accident
* Fix Veo 3.1 endpoint routing with conditional logic
- Added conditional routing to Veo 3.1 Standard node
- Added conditional routing to Veo 3.1 Fast node
- When last_frame is not provided, routes to image-to-video endpoints
- When last_frame is provided, routes to first-last-frame-to-video endpoints
- All parameters (duration, aspect_ratio, resolution, audio) work with both modes
---------
Co-authored-by: ShadowxShinigamI <shadowshingami123@gmail.com>
* Feature: Added Bria Video Increase Resolution, Wan 2.2 Animate Replace , and Upload File nodes.
Feature: Added Bria Video Increase Resolution example workflow.
Chore: Added optional input_video_url to Wan VACE Video Edit
* Feature: Seedvr Upscale Video node added
* Feature: Added Topaz Upscale Video
* Chore: Added new video and upscale nodes
* Feature: Added Krea Wan 14b Video-to-Video and Wan 2.2 14b Animate: Move Character nodes.
* Bug: Removed wrong resolution values from Animate Move
* Feature: Added Flux v1 Fill Node and workflow example
* Bug: Fixed incorrect Seedvr Upscale Video upscale_mode value.
* Feature: Added Wan VACE Video Edit Node
Featuire: Added upload_file to aid in uploading data that isn't just images.
* Chore: Added Wan VACE return value label
* Chore: Added Wan VACE to README
- Added QwenImageEdit class to nodes/image_node.py
- Supports image editing with text prompts using fal-ai/qwen-image-edit endpoint
- Features flexible image sizing, inference control, and acceleration options
- Includes safety checker, output format selection, and seed control
- Added to NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS
- Follows existing code patterns for consistency and error handling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>