VOSR2 4K 图片超分
The '4K upscaler' that lives in the cloud — VOSR2_Image_Upscale from ComfyUI_Seedance
- input_image
- api_config
- image
- image_url
- task_id
- response
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 Confignode (base URL plus your key); otherwise it falls back to theSEEDANCE_API_KEYenvironment variable or a localconfig/.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/.envin the pack folder. - SSL certificate errors on Windows portable installs - a known annoyance with the pack. Update
requestsandcertifiin ComfyUI's Python, or pointSEEDANCE_CA_BUNDLEat your CA bundle. - The result link expired - the gateway's URLs are temporary. Save the
imageoutput 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| input_image | IMAGE | Exactly one source image. The result is a 4K image. | 必须连接且只能提交一张源图片,结果为 4K 图片。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | On failure return a placeholder error image instead of stopping the workflow. | 失败时输出占位错误图片而不中断工作流。 |
| seedopt | INT | 00–18446744073709550000 | ComfyUI 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)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |