Nodes/comfyui-megapotato/MegaPotato Upscale (API)
ComfyUI Node

MegaPotato Upscale (API)

A ×8 upscaler with no model, no VRAM and a bill

By MegaPotato-AI·Created 10 days ago·Updated 5 days ago· 1
MegaPotato Upscale (API)
  • image
  • image
  • job_id
  • cost_chips
◄upscale4►
◄api_key_override►
◄timeout_minutes15►
◄rerun0►

MegaPotatoUpscale - "MegaPotato Upscale (API)" in the menu - wraps a commercial cloud upscaler. IMAGE in, upload to megapotato.app, their GPUs do the work, IMAGE out at ×1, ×2, ×4 or ×8. No checkpoint, no VAE, no VRAM beyond holding the returned tensor.

The KB splits upscaling in two: adding pixels (ESRGAN, Lanczos - free, instant, can't hallucinate) and inventing detail (SUPIR, SeedVR2, Qwen-Edit - the rung that wants 12–16GB). This node deletes the hardware requirement from the second rung and bills you per photo instead.

Caveat: the pack is new. The repo dates from October 2026 with a single star, and "#1 of 18 upscalers in our 2026 benchmark" is the vendor's own benchmark with its own judges. Might be true. Isn't independent.

What actually happens when you queue it

Four HTTP calls per image. A free price quote first, so the chip cost is printed before anything leaves your machine. Then the PNG to POST /v1/upscale, then 55-second long-polls that drive ComfyUI's progress bar and a status line, then the download.

The clever part is the idempotency key: a hash of the image bytes, the factor and rerun. Same photo at the same factor is never charged twice - inside the 90-day result window you get the earlier job back and cost_chips returns 0. Retries on a rate limit or a 5xx reuse that same key, so a flaky connection can't double-bill you.

One encoding detail that will surprise you eventually: alpha is composited onto white, same as the API does server-side. Upscale a sticker and you get a white background, not transparency.

The inputs that matter

Two are required. image is the picture - wire a LoadImage in. A batch becomes one API job per image, up to 4 in parallel, and you pay for all of them.

upscale is an enum of "1", "2", "4", "8", defaulting to 4. The underrated choice is 1: enhance without resizing, for a photo that's the right size but soft. The rest is arithmetic against a hard ceiling - output caps at 16,400 px per side, so ×8 needs 2050 px or less in, ×4 needs 4100 or less. The node checks that plus the 6000 px / 20 MP input limit before uploading.

Of the optional three, rerun is the one you'll touch: leave it at 0, bump it only for a fresh, paid second opinion on the same photo. timeout_minutes defaults to 15 - a warm ×8 of a 1 MP photo is about 45 seconds, a cold queue adds 2–3 minutes. api_key_override exists and the author tells you not to use it: whatever you type there lands in the workflow JSON and the PNG metadata.

Out pops image (the upscaled batch, ready for SaveImage or a face pass), job_id (server-side ids, comma-separated) and cost_chips (0 when a cached result was reused).

Install

ComfyUI Manager, search MegaPotato. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/MegaPotato-AI/comfyui-megapotato

Restart. No model downloads, no build step, nothing to pip install - requirements.txt lists requests, Pillow and numpy, all already in ComfyUI.

The key is the real setup step:

export MEGAPOTATO_API_KEY=mp_live_...      # then start ComfyUI from this shell

On Windows use $env:MEGAPOTATO_API_KEY="mp_live_..." in PowerShell, or drop the key in custom_nodes/comfyui-megapotato/megapotato_api_key.txt (git-ignored) - more reliable there, since an exported variable only reaches ComfyUI if you launch it from that same shell. Lookup order: override field, then environment, then file.

Where people get burned

The errors are unusually good and each one points at the fix:

  • "No MegaPotato API key" - the variable isn't visible to the process. Restart ComfyUI from the shell where you exported it.
  • 401, 402 or 429 - bad key, no credits, or the account's daily spend cap (resets 00:00 UTC). Chips are held at submit and refunded if a job fails.
  • Timeout - the job didn't stop; it's still running on their side. Re-queue the same image at the same factor and the cached result comes back free. Bumping rerun mid-debug is what turns a free retry into a paid one.
  • OOM after a ×8 - 2,000 px to 16,000 px is roughly a 3 GB float tensor. Upscale and save in one queue, not alongside a loaded checkpoint.

Should you reach for it

Not as your default. With the VRAM, SeedVR2 at FP16 is free and is what the community settled on for detail; a 4x ESRGAN model handles pixel-doubling for nothing. This earns its place in the gaps: a 6GB laptop and a 24 MP print, two hundred family photos you don't want to babysit, a ×8 you'd otherwise rent a GPU hour for. It prints the price before uploading, which is more than most API nodes bother with.

Categoryimage/upscaling

Inputs (5)

NameTypeDefaultDescription
imageIMAGEThe photo(s) to upscale. A batch becomes one API job per image.
upscaleCOMBO4Scale factor. 1 enhances without resizing. Limits: input up to 6000 px per side; output up to 16 400 px per side (x8 needs an input of 2050 px or less). An x8 result can be a multi-GB tensor in RAM.
api_key_overrideoptSTRINGLeave empty and set the MEGAPOTATO_API_KEY environment variable instead: a key typed here is saved into the workflow JSON and PNG metadata.
timeout_minutesoptINT153–120Give up waiting after this long. Allow an extra 2-3 min when capacity is being brought online; a warm x8 of a 1 MP photo takes about 45 s.
rerunoptINT00–1000000The same photo at the same factor is never charged twice (the earlier result is returned). Change this number to force a fresh, paid run.

Outputs (3)

NameTypeDescription
imageIMAGEThe upscaled image(s).
job_idSTRINGMegaPotato job id(s), comma-separated for a batch.
cost_chipsINTChips charged for this run (0 when an earlier result was reused).