Topaz Upscaler (API)
The node that ships your image to Topaz's servers
- image
- IMAGE
This node does not upscale anything on your machine. It uploads your image to Topaz Labs' servers, waits for their AI to finish, and downloads the result. Zero VRAM, zero model downloads, and a per-image cost - which is the whole trade you're signing up for.
Topaz is the paid baseline the open-source upscaling world keeps benchmarking against, and this node is the official-ish way to tap it from inside a ComfyUI graph. If you already pay for Topaz credits or a Video AI subscription with API access, this is the cleanest path to their models without leaving the workflow editor. The flip side: an open node chains NVIDIA's RTX enhancement modes at a few GB of VRAM and its author reports dropping a Topaz subscription entirely. SeedVR2 runs locally and invents better detail on low-res sources. This node is for when you specifically want Topaz's enhance/denoise/sharpen on top of a render and you're happy to pay per job to skip the VRAM and install pain.
How it works
Under the hood it's a small async API client. It converts your IMAGE tensor to a PIL image, writes a temp file in your chosen output_format, and POSTs it as multipart form-data to https://api.topazlabs.com/image/v1/<mode>/async with your key in the X-API-Key header. That returns a process_id; the node polls /status/<id> every 5 seconds until the job is completed (or failed), then grabs a presigned URL from /download/<id> and pulls the bytes back into a fresh ComfyUI tensor. All of this needs an internet connection, a valid key, and paid credits - the README lists them as requirements, and they're the real ones.
One mechanism detail worth knowing: the mode-to-endpoint mapping is smarter than it looks. Models like Redefine, Recovery V2, Standard MAX, and Wonder route to the /enhance-gen/async (or /sharpen-gen/async) generative endpoints; GAN models like Standard V2, CGI, and Lens Blur V2 use the plain ones. The node picks the path for you based on which model you chose.
The inputs that matter
mode-enhance,sharpen,denoise,restore, orlighting. Pick this first; it decides which endpoint and which model list is relevant.model- 22 options pooled from all modes, so the node will happily hand you an enhance model while you're in denoise mode. It does not validate the combo - that's on you.Standard V2(enhance) is the sensible default.scale_multiplier- 1.0 to 4.0. Above 1.0 it upscales by that factor. Set it to 1.0 and the optionaloutput_width/output_heighttake over for manual sizing (only sent for enhance).api_key- leave blank and the node falls back to theTOPAZ_API_KEYenvironment variable; a pasted widget value overrides it. Missing both throwsAPI Key Missing.
Optional extras worth knowing: face_enhancement (default on, enhance mode only), denoise_strength/sharpen_strength/strength (all 0–1), and output_format (jpeg/png/tiff). Output is a single IMAGE tensor - wire it straight into a SaveImage.
Installing it
ComfyUI Manager, search "Topaz Upscaler", or:
cd ComfyUI/custom_nodes
git clone https://github.com/comrender/ComfyUI-Topaz-Upscaler
then restart ComfyUI. There are no model files and no heavy dependencies - requirements.txt is just requests, Pillow, numpy, torch, all of which ComfyUI already ships. The real dependency is the key: export TOPAZ_API_KEY="your_key_here" on Linux/macOS, $env:TOPAZ_API_KEY="..." in PowerShell.
Where people get burned
The README advertises batch support - the code doesn't implement it. process() only ever reads image[0], so feed a batch and only the first frame comes back. It's a one-image node; don't plan around it for video. Also remember that the README is the author's claim; the source is what runs.
Other real failure modes: a wrong model/mode combo errors out server-side or does nothing useful; JPEG output is lossy, so choose PNG/TIFF if quality matters; and every job you kick off spends credits even if it times out on your end (the timeout_seconds default of 300 just gives up polling - Topaz may still be processing). If a job fails, the node raises with Topaz's error message, which is usually enough to see whether it's a bad key, a bad combo, or a dead credit balance.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| api_key | STRING | — | |
| mode | COMBO | enhance | 5 options: enhance, sharpen, denoise, restore, lighting |
| model | COMBO | Standard V2 | 22 options: Extreme, Text Refine, CGI, White Balance, Strong, Super Focus V2, +16 |
| scale_multiplier | FLOAT | 1.01–4 | — |
| output_widthopt | INT | 00–32000 | — |
| output_heightopt | INT | 00–32000 | — |
| crop_to_fillopt | BOOLEAN | false | — |
| output_formatopt | COMBO | jpeg | 3 options: jpeg, png, tiff |
| face_enhancementopt | BOOLEAN | true | — |
| denoise_strengthopt | FLOAT | 0.500–1 | — |
| sharpen_strengthopt | FLOAT | 0.500–1 | — |
| strengthopt | FLOAT | 0.500–1 | — |
| timeout_secondsopt | INT | 30060–1800 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |