Seedance 2.5 Now Live | Try in Video Generator →

clarity-ai/

Clarity Pro Upscaler is a photorealistic image upscaler from Clarity AI with identity preservation, creative detail control, and up to 16x scaling. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

upscaler
Input

Idle

$0.03per run·~33 / $1

ExamplesView all

Related Models

README

Clarity AI Pro Upscaler

Clarity AI Pro Upscaler upscales images with Clarity AI while exposing a simple target_megapixels control for predictable output sizing. The backend prepares the input and selects the appropriate upstream scaling settings so the final image lands close to the requested megapixel target.

Why Choose This?

  • Predictable output sizing Set the desired output directly with target_megapixels for easier delivery planning and cost control.

  • Simple enhancement workflow Upload an image, choose the target megapixels, optionally adjust creativity, and generate the result.

  • Flexible restoration strength Use creativity to balance stricter source preservation against stronger generated detail.

  • Reliable output delivery Generated images are rehosted to the WaveSpeed CDN for fast preview and download.

  • Modern Clarity AI pipeline Powered by the latest Clarity AI workflow with RunPod-backed execution.

Parameters

ParameterRequiredDescription
imageYesInput image URL or uploaded image.
target_megapixelsNoRequested output size in megapixels. Use 4 MP for quick tests, 8–16 MP for high-quality web or print assets, and larger values for large-format delivery.
creativityNoNegative values stay closer to the source, while positive values add more generated detail.

How to Use

  1. Upload your image — paste a URL or upload the source image.
  2. Choose target megapixels — select the output size that matches your delivery needs.
  3. Adjust creativity (optional) — lower values keep the result stricter to the source, while higher values add more generated detail.
  4. Submit — run the model and download the upscaled image.

Quick Sizing Guide

  • 4 MP — fast testing and lightweight output
  • 8–16 MP — high-quality web, e-commerce, and standard print assets
  • 25 MP+ — large-format delivery and premium output needs

Pricing

Pricing is based on the requested target_megapixels.

  • Rate: $0.03 per target megapixel

Example Costs

Target MegapixelsCost
4 MP$0.12
8 MP$0.24
16 MP$0.48
64 MP$1.92

Billing Rules

  • Pricing scales linearly with target_megapixels
  • Each additional megapixel adds $0.03
  • creativity does not affect pricing

Best Use Cases

  • Photo enhancement — improve resolution while preserving structure and natural detail
  • E-commerce assets — prepare sharper product images for listings, ads, and catalogs
  • Creative delivery — generate larger outputs for campaigns, presentations, and design workflows
  • Print preparation — produce higher-resolution assets for brochures, posters, and other print use
  • AI image cleanup — refine generated images into cleaner, more usable high-resolution outputs

Pro Tips

  • Start with a smaller megapixel target first, then increase only when you need a larger final output.
  • Keep creativity lower when identity, structure, or product accuracy matters most.
  • Increase creativity gradually if you want stronger generated texture or sharper enhancement.
  • Use the cleanest source image available for better detail recovery.

Notes

  • The backend may resize the input before calling Clarity AI so the upstream output stays close to the requested target_megapixels.
  • Clean, high-quality inputs generally produce the best results.
  • Output size is controlled by the requested megapixel target rather than a fixed resolution tier.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Pro Upscaler API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/clarity-ai/pro-upscaler with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Pro Upscaler below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "target_megapixels": 4,
    "creativity": 0
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/clarity-ai/pro-upscaler" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/clarity-ai/pro-upscaler";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "target_megapixels": 4,
        "creativity": 0
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "target_megapixels": 4,
    "creativity": 0
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/clarity-ai/pro-upscaler", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Pro Upscaler API — Frequently asked questions

What is the Pro Upscaler API?

Pro Upscaler is a Clarity model for upscaling, exposed as a REST API on WaveSpeedAI. Clarity Pro Upscaler is a photorealistic image upscaler from Clarity AI with identity preservation, creative detail control, and up to 16x scaling. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Pro Upscaler API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/clarity-ai/clarity-ai-pro-upscaler.

How much does Pro Upscaler cost per run?

Pro Upscaler starts at $0.030 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Pro Upscaler accept?

Key inputs: `image`, `creativity`, `target_megapixels`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/clarity-ai/clarity-ai-pro-upscaler.

How long does Pro Upscaler take to generate?

Median end-to-end generation time on WaveSpeedAI is around 32 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Pro Upscaler outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Clarity). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Pro Upscaler | AI Image Upscaler API on WaveSpeedAI