Topaz Labs Wonder 4

Wonder 4 is Topaz Labs' all-purpose generative model for image enhancement and upscaling. It treats each region of an image separately, combining denoising, deblurring, compression artifact removal, face recovery, and upscaling in one pass with no settings to tune. It suits photo restoration, cleanup of degraded or compressed images, and enhancement at the original size or enlarged up to six times, with output up to 256 megapixels.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesEnhancing at the original resolution
How to clean up an image with Topaz Wonder 4 without enlarging it: what a factor of 1 returns, when to pick it over 2, and how it fits fixed-size listings.
Introduction
Plenty of images are already big enough and still not usable. A conference photo shot in a dim auditorium has the pixels for a full-width banner, but it is covered in sensor noise. Setting upscaleFactor to 1 runs Wonder 4's full enhancement and returns the image at its original width and height.
At page width the change reads as a cleaner frame. A 100% crop of the speaker shows what the noise was hiding:


The colored grain across her face is gone, and instead of smoothing it into plastic the model brings back skin texture and the detail in her eyes. Her fingers and the clicker in her hand have clean edges again.
The request
Only upscaleFactor changes from an ordinary upscale:
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'topazlabs:wonder@4',
upscaleFactor: 1,
inputs: {
image: 'https://im.runware.ai/image/os/a14d18/ws/2/ii/2a7c5e9f-4b1d-4e8a-a3c6-6d9f2b5e8a41.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "topazlabs:wonder@4",
"upscaleFactor": 1,
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/2a7c5e9f-4b1d-4e8a-a3c6-6d9f2b5e8a41.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "upscale",
"taskUUID": "9e2b6d41-3a8f-4c7e-b5d2-1f7a9c3e6b08",
"model": "topazlabs:wonder@4",
"upscaleFactor": 1,
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/2a7c5e9f-4b1d-4e8a-a3c6-6d9f2b5e8a41.jpg"
}
}
]'runware run topazlabs:wonder@4 \
upscaleFactor=1 \
inputs.image=https://im.runware.ai/image/os/a14d18/ws/2/ii/2a7c5e9f-4b1d-4e8a-a3c6-6d9f2b5e8a41.jpg{
"taskType": "upscale",
"taskUUID": "9e2b6d41-3a8f-4c7e-b5d2-1f7a9c3e6b08",
"model": "topazlabs:wonder@4",
"upscaleFactor": 1,
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/2a7c5e9f-4b1d-4e8a-a3c6-6d9f2b5e8a41.jpg"
}
}Response
[
{
"taskType": "upscale",
"taskUUID": "9e2b6d41-3a8f-4c7e-b5d2-1f7a9c3e6b08",
"imageUUID": "e4a1c8d3-7f2b-4d6e-9a5c-0b3f7e1d4c62",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/e4a1c8d3-7f2b-4d6e-9a5c-0b3f7e1d4c62.jpg"
}
]The result has exactly the width and height of the source, so it drops into the same layout slot or asset record the original came from. Everything else works as described in upscaling images: one image in inputs.image and no settings, with the model deciding what each region needs.
Factor 1 or factor 2
A factor of 1 never adds pixels, so it cannot raise the resolution of a small image. Reach for it when the size is already settled:
- The size is already the one you deliver. Camera files and 4K frames rarely need to get bigger, and enlarging them only produces a heavier file you would downscale again. A marketplace listing or a storefront template that expects one exact size takes the enhanced image as it is.
- The source is larger than 64 megapixels. A factor of 2 tops out at 64 MP of input, so above that a factor of 1 is the only one Wonder 4 accepts. It takes sources up to 256 megapixels and 32,000 pixels on the longest side. The full table is in upscaling images.
As soon as the deliverable is larger than the source, switch to 2 or more, and the same request enlarges the image while it cleans it up.
Fixed-size listings
Marketplaces and storefront templates often require one exact image size, and supplier photos tend to arrive recompressed several times on the way. This drill shot is already the 2048 × 2048 the listing wants, but the compression has smeared the fine texture on the chuck and the grip:
The crops come from the same 2048 × 2048 frame, which is what the listing will show when a shopper zooms in:


The knurling on the chuck comes back as a crisp diamond pattern instead of a haloed blur, while the image keeps the exact dimensions the listing was built for.
Tips
-
Use 1 when the size is already right. Enlarging a frame you will scale back down adds cost and processing time for nothing.
-
Enhance before the final export. Run the cleanup on the best copy you have, then let your platform resize or compress it, so the restored detail is the starting point rather than another casualty of recompression.
-
Check very large files against the limit. A factor of 1 takes up to 256 megapixels and 32,000 pixels on the longest side. Anything bigger is rejected, so downscale it first.
-
Compare at 100%. Source and result share the same size, so at page width they can look alike. Open both at native resolution, or crop the same region from each, to judge what changed.



