The 2.1 endpoint lives under google/ rather than fal-ai/, but takes the same
arguments as 2.0, so the node subclasses it and changes only the endpoint and
the name failures are reported under - an error naming the wrong model sends
anyone debugging it to the wrong place.
Driving the node from code to check each widget turned up two bugs in the 2.0
node it inherits from, both fixed there so both nodes get them:
* prepare_arguments raised KeyError when thinking_level was not passed.
kwargs.get() returns None, None != "none" is true, and the body then
indexed a key that was not there. ComfyUI always sends the widget, so this
only ever surfaced when the node was called from code.
* seed was declared "INT" with default None - the only node in the package
that did. The widget renders that as 0, 0 is not None, so every run went
out pinned to seed 0 while the user believed the seed was unset. It is now
-1 for random, the convention every other node here uses, and a saved
workflow keeps whatever value it already had.
All fifteen widgets were exercised against the live endpoint: one image at 2K
with thinking_level high came back 2880x1440 in 26s, two images at 16:9 with a
fixed seed 1376x768 in 15s, and safety_tolerance, limit_generations,
enable_web_search and sync_mode were each accepted.
The price is recorded as unverified. 2.0 is $0.08 per image, but 2.1 was not
measured and the ledger should not assume the rate carried over.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>