π€ Leon Pruna Image Upscale API
Generative upscaling without downloading a model
- image
- image
- image_url
- seed
Before you reach for this node, figure out which of the three upscaling jobs you actually have. If your image is already sharp and you just need more pixels, a free ESRGAN or Lanczos pass locally is the right answer - faster, free, and it can't invent anything. This Leon_Pruna_Image_Upscale_Node is for the second job: generative upscaling, where a model adds plausible detail that wasn't there before. It calls Pruna's p-image-upscale model through the pack's HyprLab base, so all that detail generation happens on someone else's GPU and lands in your graph as a normal image.
That's the trade in one sentence: you give up local control (and per-call money) in exchange for zero VRAM and zero model management. If you're on a 6GB card and want 4K output from a small render, that trade can be very attractive.
How it works
Same plumbing as every API node in the pack - POST to https://api.hyprlab.io/v1/images/generations with a Bearer token, retry with exponential backoff (up to five attempts), decode the response into an RGBA tensor. The p-image-upscale payload takes your image, an upscale_mode, and either a target or factor value. Two ways to specify the size, and the node requires one of them to be used by the API:
upscale_mode=target- upscale to a fixed multiplier.targetof 4 = 4Γ upscale.upscale_mode=factor- same idea, different field. Setfactorto 2 for 2Γ.
Both target and factor accept 1β8. The extra knobs, enhance_details and enhance_realism, are booleans you can stack - they toggle detail- and realism-enhancement passes in the API.
Inputs that matter
imageorimage_url- the source. Feed either a ComfyUIIMAGEtensor (e.g. from a previous generation orLoadImage) or a hosted URL string. The code raises aValueErrorif you provide neither. And don't wire both: the base class explicitly refuses "provide either an image tensor or an image URL, not both."upscale_mode/target/factor- pick your mode and set the matching value; the unused one is ignored.enhance_details/enhance_realism- the two toggles that actually change the character of the output.
Outputs are the pack standard: image, image_url, seed.
Installing
ComfyUI Manager (search Leon) or clone:
cd ComfyUI/custom_nodes/
git clone https://github.com/l3ony2k/comfyui-leon-nodes comfyui-leon-nodes
pip install -r requirements.txt
Restart, paste a HyprLab key. No downloads, no VRAM pressure - the whole upscale happens remotely.
Common issues
The "no input" error is the one beginners hit first: you must give it image or image_url, and the failure message tells you exactly that. After that, the generative-upscaling caveat from the wider community applies: a generative upscaler will rewrite faces and small details, so if you upscale a portrait, don't be surprised the identity drifts - the KB's upscaling guide flags this as design, not a bug. And because each call is paid, upscale the smallest source that still carries the detail you want; a 4Γ target on a tiny soft image is money spent inventing content, not recovering it.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| upscale_mode | COMBO | target | Upscale by exact target multiplier or factor (1-8) |
| target | INT | 41β8 | Target value (used if upscale_mode is 'target') |
| factor | INT | 21β8 | Factor value (used if upscale_mode is 'factor') |
| enhance_details | BOOLEAN | false | Enhance details in the upscaled image |
| enhance_realism | BOOLEAN | false | Enhance realism in the upscaled image |
| output_format | COMBO | png | Format of the output image |
| seed | INT | 00β18446744073709550000 | Random seed for reproducible results |
| api_url | STRING | https://api.hyprlab.io/v1/images/generations | API URL |
| api_key | STRING | YOUR_API_KEY_HERE | Your HyprLab/Pruna API key |
| response_format | COMBO | url | How the response data should be formatted |
| imageopt | IMAGE | Single input image | |
| image_urlopt | STRING | Hosted image URL |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| image_url | STRING | β |
| seed | INT | β |