Magnific Image Upscale API
The paid upscaler, wired straight into your graph
- image
- image
Magnific is the commercial upscaler that open-source projects like SUPIR and clarity-upscaler have been positioning against for years - the expensive subscription that "just works" and makes everything look borderline photoreal. If you already pay for a Magnific API key, this node drops that service into a ComfyUI workflow: you feed it an image, it calls the Magnific cloud API, waits for the job to finish, and hands back an upscaled IMAGE tensor like any other node. Zero VRAM used, zero local models, and the output feeds straight into the rest of your graph.
That last part is the whole point. People have been running Magnific as a separate web step and stitching results back in manually for ages. This node makes the upscale a first-class graph operation - final hero shot straight out of the sampler, upscaled in the cloud, then composited, sharpened, or saved without leaving ComfyUI. The community's running joke about Magnific is the price (threads about "how do I mimic Magnific for free" show up every few months, and the answer is always SUPIR or SeedVR2), so the honest framing is: this is for people who've already decided the subscription is worth it and want it in-graph.
How it works
The node submits your image as base64 to the Magnific API and polls until the job completes - it's async, not a single blocking call. There are two modes. creative hits /v1/ai/image-upscaler and takes the generative params: scale_factor (2x/4x/8x/16x), optimized_for (portraits, landscapes, 3D renders, and friends), an optional prompt, and the creativity / hdr / resemblance / fractality sliders plus engine. precision hits the precision endpoint and instead takes sharpen, smart_grain, and ultra_detail. It handles the boring operational stuff too: retries on 429s and 5xx with backoff (retry_count), a task_timeout for the whole job (900s default), a poll_interval (3s), per-request timeout, and optional proxy_url. The extra field accepts arbitrary JSON for newly released API fields like webhook_url.
The inputs that matter
image- the batch to upscale.api_key- required, though an empty value still fires the request and lets the API return its own auth error.mode- creative vs. precision. This determines which whole set of sliders is meaningful, so pick it first.scale_factor/optimized_for- the two you'll tune most in creative mode.timeout/task_timeout- upscale jobs take real time; leave the defaults until a job actually times out.
One output: image - the upscaled batch, tensor-ready.
Installing it
It's part of ComfyUI-YogurtNodes. Install via ComfyUI Manager (search "ComfyUI-YogurtNodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt
Restart ComfyUI; it's under "Yogurt Nodes". The only "model download" here is money - you need a Magnific API key, which is a paid subscription.
Where people get burned
The expensive trap: every run costs you API credits, and a workflow that re-runs on every queue item will quietly burn through a budget. Consider gating it so you only upscale when needed. Second, mode confusion - setting creative-style sliders in precision mode (or vice versa) does nothing, because the other mode's fields simply aren't sent. And third, patience: default task_timeout is 15 minutes and high-scale creative jobs can genuinely take a while, so don't mistake a slow job for a hang. If you don't already have a Magnific key, the free local answers (SeedVR2, SUPIR) are the smarter first stop - this node is a convenience for paying subscribers, not a way around the cost.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input IMAGE batch to upscale. | |
| api_key | STRING | Magnific API key. Empty value still sends the request and lets the API return its own auth error. | |
| base_url | STRING | Magnific API base URL. Empty uses https://api.magnific.com. | |
| mode | COMBO | creative | creative uses /v1/ai/image-upscaler; precision uses /v1/ai/image-upscaler-precision. |
| scale_factor | COMBO | 2x | Official creative upscale scale_factor parameter. |
| optimized_for | COMBO | standard | Official creative optimized_for parameter. |
| prompt | STRING | Official creative prompt parameter. | |
| creativity | INT | 0-10–10 | Official creative creativity parameter. |
| hdr | INT | 0-10–10 | Official creative hdr parameter. |
| resemblance | INT | 0-10–10 | Official creative resemblance parameter. |
| fractality | INT | 0-10–10 | Official creative fractality parameter. |
| engine | COMBO | automatic | Official creative engine parameter. |
| sharpen | INT | 500–100 | Official precision sharpen parameter. |
| smart_grain | INT | 70–100 | Official precision smart_grain parameter. |
| ultra_detail | INT | 300–100 | Official precision ultra_detail parameter. |
| filter_nsfw | BOOLEAN | false | Official filter_nsfw parameter. |
| timeout | INT | 601–3600 | Per HTTP request timeout in seconds. |
| task_timeout | INT | 9001–86400 | Maximum time to wait for each API task in seconds. |
| poll_interval | FLOAT | 3.00.1–60 | Seconds between task status polls. |
| retry_count | INT | 31–10 | Retry attempts for retryable HTTP failures, including 429. |
| proxy_url | STRING | Optional proxy URL. | |
| extraopt | STRING | {} | Extra official or newly released Magnific JSON fields, such as webhook_url. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |