Upscale

Beta

Twice the size.Still sharp.

Drop an image and get it back larger, with the detail drawn in rather than stretched. No model to pick and no prompt to write. Mynth chooses the model and keeps it current.

Free for 5 images a day at 2×, no account needed. Sign in for 4× and high effort without a limit, from $0.03 an image on your balance.

The call

One image in, a larger one out

What this page runs is one API call, and it is the same call for you. Upscaling is in beta: the request is settled, and the models behind each effort may change.

POST /image/upscale
One public http or https image URL, a size and an effort. No model and no prompt. Creates an image.upscale task and returns 201 with a taskId.
size
2x or 4x. The result can be at most 4096×4096 pixels, so 2× takes images up to about 4.2 MP and 4× up to about 1 MP. A larger one fails before any work and costs nothing.
effort
low is fast and sharp, for product shots, generated images and anything already clean. high rebuilds fine detail — small text, skin, fur, leaves — on soft or damaged input.
$0.03 / $0.15
Per image, on low and high effort, whatever the size. Reserved when the task is created and charged when it succeeds. A failed task costs nothing.
Results
One image with its real size and format. It stays on the Mynth CDN for seven days, or goes straight to your own storage with a destination.
Waiting
Poll the task, or listen for task.image.upscale.completed. The create response carries a pat_ token, so a browser can poll the one task without your key. This page does exactly that.

Mynth

One API for AI media

Upscale is one tool among the rest, on the same key, balance and tasks.

Every model
Image and video generation, edits, rating, alt text and review, behind one key and one balance. Browse the models.
One payload
The same request shape whichever model runs it, so switching is one string. How it works.
Pay per result
No plan and no seats. A balance you top up, and a price for every call. See pricing.

SDK

From TypeScript

Pass a URL or a file. A file is uploaded first, and the call waits for the upscale.

TypeScript

import Mynth from "@mynthio/sdk";
import { openAsBlob } from "node:fs";

const mynth = new Mynth(); // reads MYNTH_API_KEY

const upscaled = await mynth.image.upscale({
  file: await openAsBlob("./product.jpg"), // or url: "https://…"
  size: "2x",
  effort: "low",
});

upscaled.image.url; // https://cdn.mynth.io/images/img_….jpg
upscaled.image.size; // "2048x1536"

upscaleAsync returns the task instead, to poll yourself or hand to a browser. See the TypeScript SDK.

API

Or over plain HTTP

Create the task, then read the result once its status leaves pending.

REST

curl https://api.mynth.io/image/upscale \
  -H "Authorization: Bearer $MYNTH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://cdn.example.com/product.jpg","size":"2x","effort":"low"}'

# { "data": { "taskId": "tsk_…", "estimatedCost": "0.03",
#             "access": { "publicAccessToken": "pat_…" } } }

curl https://api.mynth.io/tasks/tsk_…/result \
  -H "Authorization: Bearer $MYNTH_API_KEY"

Upscale images has every field, and Poll for results the waiting loop.