Nodes/ComfyUI Seedance/VOSR2 4K 图片超分
ComfyUI Node

VOSR2 4K 图片超分

The '4K upscaler' that lives in the cloud — VOSR2_Image_Upscale from ComfyUI_Seedance

By T8mars·Created 2 months ago·Updated 3 days ago· 31
VOSR2 4K 图片超分
  • input_image
  • api_config
  • image
  • image_url
  • task_id
  • response
skip_errorfalse
seed0

The name reads like a checkpoint you download and shove into a models folder. It isn't. VOSR2_Image_Upscale - labeled "VOSR2 4K 图片超分" in the UI - is an API wrapper inside the big ComfyUI_Seedance pack. It uploads exactly one image to the api.seedance.nz gateway, waits for a server-side model, and hands you a 4K image back in your graph. No weights, no VRAM, no denoise or scale-factor slider. Connect an image, get a 4K.

Why you'd reach for it

Upscaling is really three different jobs - adding pixels, inventing detail, and keeping frames consistent over time. The local answer to the "detail" job is usually SeedVR2; for cheap pixels it's Real-ESRGAN. This node is neither, and it isn't trying to be. It's a managed, fixed-output upsample: send one image, receive 4K, end of story.

So when does a cloud upscaler make sense? When you don't have the card to run a diffusion upscaler at the size you need, when you already bought into this pack for its video models and want one less local dependency, or when you want a no-setup 4K pass over a draft. If you run SeedVR2 happily on a 6GB card, you probably don't need this - the KB's rule of thumb applies: an API node is the right tool for a model you can't run locally, and the wrong default for one you can. Just know what you're trading: your image leaves the machine, and every call costs credit on the reseller's meter.

How it works

The mechanism is simple and entirely remote. The node encodes your image to PNG, uploads it to the gateway, then submits POST /v1/image/generations with model=vosr2-image-upscale and a one-item images array. It polls until the task finishes, downloads the result, and converts it to a standard ComfyUI IMAGE tensor. The whole flow shows up as a progress bar, same as a local node would.

One rule is enforced in code and worth knowing: exactly one image. Feed it a batched tensor and it refuses with a clear error rather than guessing. This trips up people coming from Load Images with several frames selected - those come in as a batch and get rejected.

The inputs and outputs that matter

There aren't many, which is the point of the node:

  • input_image (required) - the single source image. This is the only thing that really matters.
  • api_config - optional. Connect a Seedance API Config node (base URL plus your key); otherwise it falls back to the SEEDANCE_API_KEY environment variable or a local config/.env.
  • skip_error - when on, a failure returns a placeholder error image instead of stopping the workflow. Useful if this sits inside a bigger batch.
  • seed - cache-only. It isn't sent to the model, so randomizing it changes nothing about the upscaled output; it just controls ComfyUI's cache reuse.

Outputs are image (the 4K result - wire it to Preview Image or Save Image), plus image_url (the temporary result link), task_id, and response (the full JSON) for logging and debugging.

Installing it

This node is one node among dozens in the ComfyUI_Seedance pack, so you install the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ../.. && python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt

Then restart ComfyUI. Easier: ComfyUI Manager → search "ComfyUI Seedance" or seedance → install. There are no model files to download at all - the only Python dependency is requests. Grab an API token at api.seedance.nz/console and either drop a Seedance API Config node into the workflow or set SEEDANCE_API_KEY.

Common issues

  • "must connect exactly one image, not a batch" - you fed it more than one frame. Route a single image through, or use the concurrent image submit node if you actually want many.
  • Missing API key errors - connect the config node, set the env var, or create config/.env in the pack folder.
  • SSL certificate errors on Windows portable installs - a known annoyance with the pack. Update requests and certifi in ComfyUI's Python, or point SEEDANCE_CA_BUNDLE at your CA bundle.
  • The result link expired - the gateway's URLs are temporary. Save the image output to disk promptly, not next week.
  • Per-call cost surprises - this is a metered reseller API, not a local model. A batch of fifty images is fifty billed calls.

It's a zero-setup 4K pass for people who'd rather pay than babysit VRAM. That's the honest pitch, and the honest limit: one image in, one fixed size out, no creative control. If that's the gap in your workflow, this fills it cleanly.

CategorySeedance

Inputs (4)

NameTypeDefaultDescription
input_imageIMAGEExactly one source image. The result is a 4K image. | 必须连接且只能提交一张源图片,结果为 4K 图片。
api_configoptSEEDANCE_CONFIGConnect Seedance API Config; otherwise SEEDANCE_API_KEY is used.
skip_erroroptBOOLEANfalseOn failure return a placeholder error image instead of stopping the workflow. | 失败时输出占位错误图片而不中断工作流。
seedoptINT00–18446744073709550000ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。

Outputs (4)

NameTypeDescription
imageIMAGE
image_urlSTRING
task_idSTRING
responseSTRING