Nodes/ComfyUI Assistant Node/PVL SeeDream 4.5 (fal.ai)
ComfyUI Node

PVL SeeDream 4.5 (fal.ai)

ByteDance's SeeDream 4.5, without the ByteDance account

By pvlprk·Created about a year ago·Updated 8 months ago· 1
PVL SeeDream 4.5 (fal.ai)
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • IMAGE
prompt
image_sizecustom
width2048
height2048
num_images1
max_images1
seed-1
enable_safety_checkerfalse
sync_modefalse
retries2
timeout_sec60
debug_logfalse

SeeDream is ByteDance's flagship image model line, and like every flagship ByteDance ships, it's closed - API-only, no weights, no local runs, no exceptions. This node is the back door into the 4.5 generation via fal.ai's hosted endpoints: fal-ai/bytedance/seedream/v4.5/text-to-image when you give it just a prompt, and fal-ai/bytedance/seedream/v4.5/edit the moment you connect any of the optional image inputs.

It's one of the more interesting nodes in this pack because it switches endpoints on you based on what you plug in. Connect image_1 and it becomes an image editor; leave them all empty and it's a text-to-image node. Same node, two behaviors.

How it works

The logic is in the code: if any image input is connected, it sends the prompt plus your images (as base64 data URIs in image_urls) to the edit endpoint; otherwise it hits the text-to-image endpoint. That's it - the heavy model does the rest on fal's side.

The image_size selector is a nice touch. It maps the friendly presets to SeeDream's internal enums: 1:1 → square_hd, 3:4 → portrait_4_3, and so on, plus auto_2K / auto_4K passthroughs and custom which defers to your width / height fields. The source notes that SeeDream really wants widths and heights between 1920 and 4096, though the node lets you go lower.

The inputs that matter

  • prompt - the whole job description.
  • image_size, width, height - presets or custom dimensions. Remember the 1920–4096 sweet spot; you're generating at 2K+ here, which is the point of a flagship API model.
  • num_images and max_images - both default to 1, both cap at 8. max_images is the API's hard ceiling; num_images is how many you actually ask for.
  • seed - -1 for random.
  • retries, timeout_sec, debug_log - this node is one of the few in the pack that exposes its own retry and timeout tuning. If your batches keep dying on transient fal errors, bump retries (default 2) and timeout_sec (default 60).
  • The eight optional image_1image_8 inputs - connect at least one and you're editing, not generating.

One output: IMAGE.

Installing it

Same pack, same drill:

cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes

Restart, export FAL_KEY="...", done. No downloads, no ByteDance account needed - fal handles the API access, you just pay them.

Common issues

Two things catch people. First, the endpoint switch: if you connect an image input by accident - say a stale wire from a previous layout - your "text-to-image" silently becomes an edit, and results look like the model is fighting your prompt. Disconnect all image inputs for pure generation. Second, enable_safety_checker defaults to off here, the opposite of the Qwen node in this same pack - if you're getting more content through than you expected, that's why, and it's a reminder that what the API allows is not the same as what you can publish. Costs are per generation at 2K–4K resolution, so this node is the priciest in the pack to run carelessly. Start at 1:1 with num_images at 1 and scale from there.

CategoryPVL_tools_FAL

Inputs (20)

NameTypeDefaultDescription
promptSTRING
image_sizeCOMBOcustom8 options: 1:1, 3:4, 9:16, 4:3, 16:9, auto_2K, +2
widthINT2048512–4096
heightINT2048512–4096
num_imagesINT11–8
max_imagesINT11–8
seedINT-1-1–4294967295
enable_safety_checkerBOOLEANfalse
sync_modeBOOLEANfalse
retriesINT20–10
timeout_secINT605–600
debug_logBOOLEANfalse
image_1optIMAGE
image_2optIMAGE
image_3optIMAGE
image_4optIMAGE
image_5optIMAGE
image_6optIMAGE
image_7optIMAGE
image_8optIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE