Nodes/ComfyUI-fal-API/Dreamina v3.1 Text-to-Image (fal)
ComfyUI Node

Dreamina v3.1 Text-to-Image (fal)

Running ByteDance's closed image model from ComfyUI

By gokayfem·Created 2 years ago·Updated a day ago· 203
Dreamina v3.1 Text-to-Image (fal)
    • IMAGE
    prompt
    image_sizesquare_hd
    num_images1
    sync_modefalse
    output_formatpng
    seed-1
    enhance_promptfalse

    Reach for this node when you want ByteDance's Dreamina model inside a ComfyUI graph and you don't have (or don't want to burn) a local GPU to get it. Dreamina is the image model behind ByteDance's consumer creation app, and like everything ByteDance actually charges for, it's API-only: there's no checkpoint you can download and load with a normal Load Checkpoint node. ByteDance's whole posture is that the products stay closed while the components (SDXL-Lightning, PuLID, Depth Anything) ship open - Dreamina sits firmly on the closed side, right next to the Seedream line. So if you want it in ComfyUI at all, a bridge like this one is the only door in.

    What it actually does

    This is not local generation, and getting that straight up front saves a lot of confusion. Nothing runs on your machine. The node bundles your prompt and settings, ships them to fal.ai, fal runs Dreamina on its servers, and hands you back a finished picture. Two consequences follow that you should decide you're okay with: your prompts leave your computer, and every click costs real money billed by fal. In exchange you get a strong closed model with zero VRAM, zero model downloads, and near-instant results.

    One small mercy on the cost side: the pack keeps a persistent result cache, so an identical call - same prompt, same settings, same seed - gets served from disk for free on the next run instead of billing you twice. Change anything and it's a fresh, paid generation.

    The inputs that matter

    Compared to a local sampler, this node is almost bare, and that's the point. There's no CFG, no steps, no sampler, no negative prompt, so don't go hunting for them. The handful you actually set:

    • prompt: plain natural language. This is a modern model, so write a sentence, not a tag soup.
    • image_size: an aspect-ratio preset - square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, or custom. Stick to the named presets; there are no separate width/height fields on this node for custom to size against.
    • num_images: 1 to 4 per run. A cheap way to roll several options at once - except you pay per image.
    • seed: leave at -1 for random; set a fixed number when you want to reproduce a result.
    • enhance_prompt: off by default; flip it on to let the service rewrite and expand your prompt. Handy for a terse prompt, but it will change your wording, so it can drift from what you meant.
    • output_format: png (default) or jpeg. Switch to jpeg if you're generating a lot and want smaller files.

    There's also a sync_mode toggle that changes how fal delivers the result; the default is fine and you can ignore it. The single output is an IMAGE. Wire it straight into a Save Image or Preview Image, or feed it downstream to an upscaler or any node that takes an image - it behaves like any other ComfyUI image from there.

    Installing it

    Easiest path: open ComfyUI Manager, search for ComfyUI-fal-API, install, restart. Manual path:

    cd ComfyUI/custom_nodes
    git clone https://github.com/gokayfem/ComfyUI-fal-API.git
    cd ComfyUI-fal-API
    pip install -r requirements.txt
    

    Then restart ComfyUI. There's no model file to place in models/; the real dependency is the fal-client Python package (pulled in by requirements.txt) and, more importantly, a fal API key. Get one from your fal dashboard, then either copy config.ini.example to config.ini inside the pack folder and paste your key under [API], or export FAL_KEY in your environment before launching ComfyUI. Without a key, the node loads but every generation fails.

    Where people get burned

    The number-one issue is the key: no FAL_KEY, no images. If ComfyUI Windows Portable throws an import error, install the client into its embedded interpreter directly with .\python_embeded\python.exe -m pip install fal-client.

    After that, the failures are mostly the model talking back. This pack surfaces fal's real error text instead of silently returning a blank, so read it - it usually names the exact problem. The common ones are content-policy refusals (some prompts simply won't be served), input validation, and quota or balance limits. And keep an eye on spend: because generations are billed per image and num_images can quadruple a single click, it's easy to run up a tab faster than you would locally. Set a fixed seed while you're dialing in a prompt so you're not paying to re-roll randomness you didn't mean to change.

    CategoryFAL/Image

    Inputs (7)

    NameTypeDefaultDescription
    promptSTRING
    image_sizeCOMBOsquare_hd7 options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, +1
    num_imagesoptINT11–4
    sync_modeoptBOOLEANfalse
    output_formatoptCOMBOpng2 options: jpeg, png
    seedoptINT-1-1–4294967295
    enhance_promptoptBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE