Introduction
What this endpoint does
It runs one Topaz Labs model on one photo. The denoise presets strip grain, high-ISO noise and compression speckle; the sharpen presets recover soft focus, camera shake and lens blur. The output has the same width and height as the input.
Inputs that matter
image_url takes a JPEG, PNG or WebP of up to 24 megapixels, either uploaded or as a public link. preset picks the model and defaults to denoise_normal. output_format is jpeg (default) or png.
What you get back
One image per request, delivered from platform storage once the asynchronous task finishes. Pictures over 24 megapixels are refused at submission with invalid_request.
| Field | Value |
|---|---|
| Input | Image |
| Output | Image |
| Endpoint | Image edit |
| Presets | 3 denoise strengths, 8 sharpen models |
| Prompt | None |
| Billing | Flat per image |
Key features & highlights
A dim bar shot, speckle removed and the face intact
We buried a 2048×1152 candle-lit portrait under heavy colour noise and ran Denoise Normal. The speckle across the sweater and the dark wine shelves was gone, while the eyes, the hoop earring and the bokeh lights stayed where they were. Freckles came back fainter than in the clean original.
Film-like grain lifted off a café portrait
A 1024×1536 WebP with fine monochrome grain over skin, hair and a knit sweater went through Denoise Strong in about 25 seconds. The grain disappeared, curls kept their strands and the sweater kept its stitch pattern; the skin came out a touch smoother.
Sharpen Standard pulls a soft face back into focus
A portrait we blurred on purpose came back with readable eyes, eyebrows and stubble after 14 seconds. Detail like this is rebuilt by the model, so check the result at full size before you rely on it.
Request parameters
| Parameter | Required | Description |
|---|---|---|
image_url | Yes | The photo to clean up: a JPEG, PNG or WebP upload or a public link, at most 24 megapixels (6000×4000 fits). Larger images are refused at submission without a charge. at least 1 characters |
preset | No | Which Topaz model runs. |
output_format | No | jpeg (default) or png. png avoids another round of lossy compression and makes a larger file. |
Pricing
$0.12 / image
Each finished image is charged the same flat amount whichever of the eleven presets or two output formats you choose; a failed or refused request costs nothing.
Use cases
Night and indoor phone shots
High-ISO pictures from concerts, restaurants or a dark living room turn blotchy. Denoise Normal is the starting point; step up to Strong when the shadows are still speckled.
Grain on AI-generated images
Some image models leave a fine grain or a repeating texture over skin and flat backgrounds. One Denoise pass gives a cleaner base before you upscale, crop or print.
Shots that are almost in focus
A slightly missed focus, a bit of hand shake or a soft lens. Sharpen Standard handles the mild cases, Motion Blur and Lens Blur target those two problems, and Portrait or Wildlife are tuned for skin and fur.
Prompt guide & pro tips
Check the size
Send a JPEG, PNG or WebP of up to 24 megapixels, as an upload or a public link. Larger files are refused at submission, so scale them down first.
Choose one preset
Use a denoise_ preset when the problem is grain or speckle and a sharpen_ preset when it is blur. One request runs one preset; for both, run Denoise first and send its result to Sharpen.
Poll and compare
Create the task, poll until it finishes and download the file from platform storage. Compare it with the source at 100% zoom around eyes, hair and fine texture.
Introduction
Topaz Denoise & Sharpen gives you two Topaz Labs model families through one endpoint. Denoise removes noise and grain while trying to keep real detail; Sharpen brings back clarity lost to focus errors, movement or a soft lens. You pick the model with preset; there is no prompt.
Request
{
"image_url": "https://example.com/night-shot.jpg",
"preset": "denoise_normal",
"output_format": "jpeg"
}
Presets
| preset | Use it for |
|---|---|
denoise_normal | Everyday low-light or compression noise (default) |
denoise_strong | Very dark or high-ISO shots; keeps more detail than Extreme |
denoise_extreme | Severely degraded or heavily compressed images |
sharpen_standard | Mild softness or slight shake; the usual starting point |
sharpen_strong | Badly missed focus |
sharpen_natural | Gentle sharpening that keeps organic texture |
sharpen_portrait | Faces and skin |
sharpen_wildlife | Fur, feathers and other natural detail |
sharpen_refocus | Fine detail in a slightly defocused picture |
sharpen_motion_blur | Blur from camera or subject movement |
sharpen_lens_blur | Defocus and lens softness |
Our tests
A 2048×1152 candle-lit portrait with heavy added colour noise came back clean after about 19 seconds on denoise_normal; eyes, earrings and the bokeh lights held up, freckles faded. A 1024×1536 café portrait with fine grain, sent as WebP, lost the grain on denoise_strong in about 25 seconds while the curls and the knit pattern stayed. A deliberately blurred 1100×900 portrait regained eyes and stubble on sharpen_standard in 14 seconds. All three came back at their input size.
Limits
Inputs are capped at 24 megapixels (6000×4000 fits); larger images are refused before anything is charged. Denoise and Sharpen are separate requests, so chain them if a picture needs both. Sharpening reconstructs detail, so inspect faces and text at full size.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "topaz/denoise-sharpen/edit",
"input": {
"image_url": "https://example.com/reference.png",
"output_format": "jpeg",
"preset": "denoise_normal"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.





