madeAPI
Log in
Explore/Topaz Image Upscale
ImagePriced by input

Topaz Image Upscale

Topaz Image Upscale runs Topaz Labs’ precision upscaling models — the professional standard for enlargement — recovering real detail at 2× or 4× from a single input image, no prompt required.

View docsModel guide
// Node.js. Running this creates one paid generation.
import { randomUUID } from 'node:crypto';
const base = "https://www.made.app/api";
const headers = {
  Authorization: `Bearer ${process.env.MADE_API_KEY}`,
  'Content-Type': 'application/json',
};
const input = {
  "model": "topaz_upscale_image",
  "upscale_factor": 2,
  "medias": [
    {
      "value": "https://example.com/reference.jpg",
      "role": "image"
    }
  ]
};

async function api(path, body) {
  const response = await fetch(base + path, {
    method: body ? 'POST' : 'GET', headers,
    ...(body && { body: JSON.stringify(body) }),
  });
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

const { cost } = await api('/v1/cost', input);
console.log('Quoted cents:', cost.customerCostCents);
// Preserve this request ID when retrying a submission.
const requestId = randomUUID();
let job = await api('/v1/generations', {
  ...input, request_id: requestId,
  max_cost_cents: cost.customerCostCents,
});
console.log('Request:', job.id);
while (!['succeeded', 'failed', 'canceled'].includes(job.status)) {
  await new Promise(resolve => setTimeout(resolve, 3000));
  job = await api('/v1/generations/' + job.id);
}
if (job.status !== 'succeeded') throw new Error(JSON.stringify(job.error || job.status));
console.log(job.result.assets);

Input

10 MB maximum

Advanced settings
Sign in to generate

Uses your credits. See the exact price before generating.

Result

Example
Portrait upscaled to 2896×2172 with Topaz Image Upscale in Made
Portrait at 2×

Price

Priced by input. Add your reference media to get an exact quote. Check the exact cost for your settings before generating. Failed generations are refunded. Full price sheet.