usely.tools

Upscale images automatically with 1 API call

Integrate image upscaling into your app or workflow. POST an image, get a bigger, sharper image back — metered by credits, undercutting the big names on price.

Get API Key

Not a developer? Use the web app instead — no code required.

Easy to integrate

A simple HTTP interface with sensible options:

Source images
Direct upload (image_file), a URL (image_url), or a base64 string (image_base64).
Result images
Binary image file by default, or JSON-encoded data (base64 + dimensions) with Accept: application/json.
Output resolution
Up to 32 megapixels. Requires an image with a clear foreground (people, products, animals, cars, graphics…).

Get started

Create an API key in your dashboard, top up credits, then send your first request. A 2× upscale is free; 4× or face restore costs 2 credits — failed calls are never charged. Authenticate with X-Api-Key: up_live_ (or Authorization: Bearer up_live_).

Sample code

The only request you need:

curl -H "X-Api-Key: up_live_..." \
  -H "Accept: application/json" \
  -F "image_file=@/path/to/file.jpg" \
  -F "scale=4" \
  https://usely.tools/api/v1/upscale/jobs

Output formats

Request one of the formats below via the format parameter. The upscaled image is returned inline as base64 in the JSON envelope.

FormatPros & cons
png+ Lossless · + Best for graphics and text · − Larger file size (default)
jpg+ Smallest file size · + Ideal for photos · − Lossy compression

Use PNG for crisp lines and screenshots; JPG for photographic results where file size matters.

API Reference

POST /api/v1/upscale/jobs

Upscales a JPG / PNG / WebP image. File size up to 12 MB; input resolution up to 32 megapixels. Image source: file upload (binary or base64) or download from URL. Requires an API key in the X-Api-Key header (or a Bearer token in Authorization). Returns 202 with the result inline.

Request body — multipart/form-data or application/json

ParameterTypeDescription
image_filebinarySource image file (binary). If present, the other image source parameters must be empty.
image_base64stringSource image as a base64-encoded string. Mutually exclusive with the other sources.
image_urlstringSource image URL to fetch. Mutually exclusive with the other sources.
scaleintegerUpscale factor: 2 (free) or 4 (2 credits). Default 2.
face_enhancebooleanRun face restoration on the result (default false). Counts as a 4× run (2 credits).
formatstringResult format: png (default) or jpg.

Request headers

HeaderDescription
X-Api-KeyYour API key (up_live_). Also accepted as Authorization: Bearer ….
Acceptapplication/json to receive base64 + dimensions instead of binary.
Idempotency-KeyOptional. Retries with the same key return the original response and are never double-charged.

Responses

CodeDescription
202Upscale succeeded. JSON envelope with job_id and data (base64 image + dimensions). Response headers include X-Credits-Charged, X-Credits-Remaining, and rate-limit headers.
400Invalid parameters or unprocessable input (no credits charged). Envelope: { "error": { "code", "message" } }.
402Insufficient credits (no credits charged).
401Authentication failed — missing or invalid API key (no credits charged).
429Rate limit exceeded (no credits charged). Includes a Retry-After header.

Response headers

HeaderDescription
X-Width / X-HeightDimensions of the result image.
X-Credits-ChargedCredits charged for this call.
X-Credits-RemainingRemaining wallet balance after the call.
X-RateLimit-RemainingRequests remaining in the current window.

Account endpoint

GET /api/v1/account

Fetch the current credit balance for the authenticated key. Balance changes may lag a few seconds; to track locally, read this once and then adjust using the X-Credits-Charged header returned by each upscale.

{
  "data": {
    "credits": { "balance": 200 }
  }
}