Topaz Image Upscale API
The paid upscaling baseline, as a cloud call in your workflow
- image
- image
Topaz is the paid baseline of the upscaling world - the desktop software people benchmark open models against, and the thing the community keeps saying open nodes are finally displacing. Topaz Image Upscale API (Yogurt Nodes) is that same company's cloud API wrapped as a ComfyUI node: upload an image, wait for the cloud job, get an upscaled IMAGE tensor back. If you have a Topaz Labs API key and want their model quality inside a graph instead of as a separate desktop step, this is the node.
The honest context: Topaz's image upscalers are good, but they're not magic, and the free local ecosystem has caught up hard - the KB's own upscaling doc notes open approaches (SeedVR2, and even an NVIDIA RTX node whose author dropped his Topaz subscription over it) are the direction of travel in 2026. Where this node earns its place is the same place any cloud API does: no local VRAM, no model downloads, consistent results on anything you throw at it, and it runs on hardware that couldn't dream of local upscaling. It's a "paying subscriber wants it in-graph" tool, not a shortcut around the cost.
How it works
It uploads your image to the Topaz Image API as multipart form data and polls the async job until it finishes, with the same operational scaffolding as the pack's Magnific node - retry_count with backoff on 429/5xx, task_timeout, poll_interval, per-request timeout, and proxy_url. The model_type switch picks the endpoint: standard hits /enhance/async with the classic model names (Standard V2, Low Resolution V2, High Fidelity V2, Redefine, Recovery V2, Standard MAX), while generative hits /enhance-gen/async and unlocks the prompt/creativity/texture/detail family. Output dimensions come from output_width/output_height, or are computed from scale_factor when those are 0. -1 defaults on the tuning fields (sharpen, denoise, fix_compression, face enhancement, etc.) simply omit that field from the request so the API uses its own default - a clever way to keep the node future-proof.
The inputs that matter
image- the batch to upscale.api_key- required; empty still fires the request and returns the API's own auth error.model_type- standard vs. generative; this decides which model names and which params apply.model_name- the actual upscaler (Standard V2 is the safe default).scale_factor/output_width/output_height- size control; set explicit pixels to lock dimensions instead of scaling.
One output: image - the upscaled tensor batch, ready for the rest of your graph.
Installing it
It ships in 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". You'll also need a Topaz Labs API key - a paid account.
Where people get burned
Same financial trap as any paid API node: every run costs credits, and auto-re-running workflows will drain a balance faster than you'd expect. Gate the upscale behind a point in the graph where it only fires once. Second, don't fight the -1 convention - the tuning fields are deliberately set to "omit" by default, so if you change one, you've opted that image into Topaz's full auto-pipeline; that's usually fine, just know it. And if you're choosing between this and the open local upscalers, remember the actual quality gap has narrowed a lot - this is a convenience purchase, not a quality necessity.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input IMAGE batch to upscale. | |
| api_key | STRING | Topaz API key. Empty value still sends the request and lets the API return its own auth error. | |
| base_url | STRING | Topaz Image API base URL. Empty uses https://api.topazlabs.com/image/v1. | |
| model_type | COMBO | standard | standard uses /enhance/async; generative uses /enhance-gen/async. |
| model_name | STRING | Standard V2 | Official Topaz model name, such as Standard V2, Low Resolution V2, High Fidelity V2, Redefine, Recovery V2, or Standard MAX. |
| scale_factor | FLOAT | 2.00.1–16 | Used to compute official output_width/output_height when those fields are 0. |
| output_width | INT | 00–32000 | Official output_width. 0 computes width from scale_factor. |
| output_height | INT | 00–32000 | Official output_height. 0 computes height from scale_factor unless only output_width is set. |
| crop_to_fill | BOOLEAN | false | Official crop_to_fill parameter. |
| output_format | COMBO | png | Official output_format parameter. |
| face_enhancement | COMBO | auto | Official face_enhancement parameter. auto omits the field. |
| face_enhancement_strength | FLOAT | -1.00-1–1 | Official face_enhancement_strength, -1 omits the field. |
| face_enhancement_creativity | FLOAT | -1.00-1–1 | Official face_enhancement_creativity, -1 omits the field. |
| subject_detection | COMBO | auto | Official subject_detection parameter. auto omits the field. |
| sharpen | FLOAT | -1.00-1–1 | Official sharpen parameter, -1 omits the field. |
| denoise | FLOAT | -1.00-1–1 | Official denoise parameter, -1 omits the field. |
| fix_compression | FLOAT | -1.00-1–1 | Official fix_compression parameter, -1 omits the field. |
| strength | FLOAT | -1.00-1–1 | Official strength parameter for applicable models, -1 omits the field. |
| prompt | STRING | Official prompt parameter for applicable generative models. | |
| autoprompt | COMBO | auto | Official autoprompt parameter. auto omits the field. |
| creativity | INT | -1-1–6 | Official creativity parameter for applicable models, -1 omits the field. |
| texture | INT | -1-1–5 | Official texture parameter for applicable models, -1 omits the field. |
| detail | FLOAT | -1.00-1–1 | Official detail parameter for applicable models, -1 omits the field. |
| 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 Topaz form-data fields as JSON. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |