Image Upscaler · Upscale
8K costs the same as 2K, so think about which you're asking for
- image_url
- images
- task id
Which upscale are you actually doing?
The KB's upscaling essay makes the point better than any node doc can: "upscale" covers three unrelated jobs, and most arguments about it are two people doing different ones. Job one is more pixels - the detail is already there, you need it bigger, and an ESRGAN model or Lanczos does it instantly and can't invent anything. Job two is more detail - the image is soft or small and you want a model to invent plausible structure that was never there. That's generation, and it will rewrite faces.
This node is job two. One image in, $0.012 per image, out at a 2K, 4K or 8K pixel budget with the framing and aspect ratio untouched.
At that price it's cheaper than the electricity argument for running a local restorer on most jobs, and it's a fair bit less faff than wiring SeedVR2, FlashVSR or a tile-ControlNet stack - though the local ones give you far more control, which is the whole reason people still run them.
How it works
The image is uploaded, spicyapi/image-upscaler-v1/upscale returns an enlarged copy, and you get a ComfyUI IMAGE plus a task id. There's no prompt and no denoise knob. You're choosing a pixel budget, not a scale factor: about 4 megapixels for 2k, 17 for 4k, 67 for 8k, aspect ratio preserved.
The one setting that matters
resolution - 2k, 4k or 8k, default 4k. All three tiers cost the same $0.012, which changes the decision from "what can I afford" to "what do I actually want". Two consequences:
- Output above the source's pixel count is invented. A 1024×1024 source at
8kgets 67 megapixels of generated detail, and generated faces drift - this is the same trap the local docs warn about with every generative rung. If your image has a face you care about, do the upscale first and give the face its own pass afterwards. - A tier below the source scales it down. The tooltip says it plainly and people still miss it: put a 6000-pixel-wide image through
2kand you get a smaller image back. Check the source resolution before you pick.
output_format - jpeg, png or webp, default jpeg. png is lossless but several times larger; at 8K that's a genuinely large file, so use jpeg or webp unless the image is a final master.
Outputs: images (IMAGE), task id (STRING).
Install
Manager → search SpicyAPI, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart. No pip install and no model downloads - the pack declares zero dependencies and the upscaling runs on SpicyAPI's servers, so an old laptop is fine. Python 3.10+ and a ComfyUI with the V3 node API. Key in Settings > SpicyAPI (or SPICY_API_KEY), restart once so the node list comes from your account, and set Max cost per run - 12 cents a shot is cheap per image and easy to spend twenty times by accident.
Where it bites
- Contrast lift and skin. The known weakness of every generative restorer, internet-famous on the local side as "human to lizard upscaler". Give faces their own detail pass rather than trusting one pass.
- It's not a repair tool. Damaged, compressed, heavy-noise sources are a different job; this won't fix them the way SUPIR-style restoration will.
- 30-odd megapixels of upload. Very large inputs hit the 10 MiB upload ceiling - the pack re-encodes as high-quality JPEG to fit, and tells you to scale down if it still can't.
- Batch pricing adds up. The node's badge shows the rate per image before the run; a 20-image batch is a quarter, and the same 20 with a randomised retry loop is a dollar.
- Your image leaves the machine. Structural to the pack, worth remembering for client work.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | The image to enlarge. Its framing and aspect ratio are kept; only the resolution goes up. | |
| resolution | COMBO | 4K | Output size tier: a pixel budget of about 4 (2k), 17 (4k) or 67 (8k) megapixels, with the aspect ratio kept. A tier below the source's pixel count scales the image down. All three tiers cost the same. |
| output_format | COMBO | JPEG | File type of the returned image. png is lossless but several times larger than jpeg. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |