fal.ai Vision
Ask a cloud vision model what's actually in your frame
- fal_backend
- image
- response
- usage
Somewhere in every serious image pipeline there's a "what is this?" step - describe a reference frame, check an outfit, catalogue a scene. StudioDeep's answer is the fal.ai Vision node, which takes an image from your graph and sends it to a hosted vision model for a text answer. It's the paid-cloud sibling of the pack's LLM-based nodes: instead of loading a vision model locally, you rent one for the duration of the call.
How it works
The node grabs the first image in the batch (image[0]), converts the ComfyUI tensor to a PNG data URL, and POSTs it to fal's openrouter/router/vision endpoint with your API key in an Authorization: Key ... header. A 120-second timeout keeps runaway requests from hanging your queue forever. On the way back you get two things: the model's response text, and a usage string - formatted JSON with the token counts, which is genuinely handy if you're watching your fal bill.
The inputs that matter
- fal_backend - the
FAL_BACKENDoutput from fal.ai Backend. This is the key slot; without it the node can't authenticate. - image - any
IMAGE. Only the first frame is sent, so feed a single image, not a video batch. - model - six hosted models to pick from:
google/gemini-2.5-flash,anthropic/claude-sonnet-4.6and4.5,openai/gpt-4o,qwen/qwen3-vl-235b-a22b-instruct, andx-ai/grok-4-fast. Default is Gemini Flash, which is the usual sweet spot of fast/cheap for description work. - prompt - what to ask. Defaults to "Describe this image in detail." Change it and you get directed analysis instead.
The optional ones: system_prompt (context before the question), reasoning (toggle - real chain-of-thought, slower and pricier), temperature (0–2, default 1.0), and max_tokens where 0 = no limit, per the author's own tooltip.
Outputs
response (STRING) is the text answer; usage (STRING) is JSON you can preview in a text node or parse for token accounting. Wire response into a String Passthrough to eyeball it, or straight into a prompt field.
Installing
ComfyUI Manager → search "StudioDeep", or:
cd ComfyUI/custom_nodes
git clone https://github.com/studiodeep-ai/comfyui-studiodeep StudioDeep
pip install -r StudioDeep/requirements.txt
Restart, then grab a fal.ai key from fal.ai/dashboard and drop it into fal.ai Backend. The pack pulls in requests as part of requirements.txt, so you're covered.
Troubleshooting
- HTTP 401 / 403 - your key is wrong or has no balance. Check the dashboard; fal is pay-as-you-go, and an empty wallet kills the call with an HTTP error that includes the body.
- Slow responses - you're hitting a 120s timeout ceiling on a huge image or a slow model (Grok-4-fast tends to think). If you're consistently timing out, shrink the image upstream or switch to Gemini Flash.
- "Describe this image" answers you don't want - that's the
promptfield, not a bug. If you need structured output, be explicit: "Return JSON with shot, lighting, and subject."
One honest caveat: this is the node you reach for when you want to pay for vision. If you're running a local model happily, this adds latency and cents for no gain.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| fal_backend | FAL_BACKEND | — | |
| image | IMAGE | — | |
| model | COMBO | 6 options: google/gemini-2.5-flash, anthropic/claude-sonnet-4.6, anthropic/claude-sonnet-4.5, openai/gpt-4o, qwen/qwen3-vl-235b-a22b-instruct, x-ai/grok-4-fast | |
| prompt | STRING | Describe this image in detail. | — |
| system_promptopt | STRING | — | |
| reasoningopt | BOOLEAN | false | — |
| temperatureopt | FLOAT | 1.000–2 | — |
| max_tokensopt | INT | 00–8192 | Maximum tokens to generate. 0 = no limit. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| response | STRING | — |
| usage | STRING | — |