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 KeyNot 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/jobsOutput formats
Request one of the formats below via the format parameter. The upscaled image is returned inline as base64 in the JSON envelope.
| Format | Pros & 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
| Parameter | Type | Description |
|---|---|---|
image_file | binary | Source image file (binary). If present, the other image source parameters must be empty. |
image_base64 | string | Source image as a base64-encoded string. Mutually exclusive with the other sources. |
image_url | string | Source image URL to fetch. Mutually exclusive with the other sources. |
scale | integer | Upscale factor: 2 (free) or 4 (2 credits). Default 2. |
face_enhance | boolean | Run face restoration on the result (default false). Counts as a 4× run (2 credits). |
format | string | Result format: png (default) or jpg. |
Request headers
| Header | Description |
|---|---|
X-Api-Key | Your API key (up_live_…). Also accepted as Authorization: Bearer …. |
Accept | application/json to receive base64 + dimensions instead of binary. |
Idempotency-Key | Optional. Retries with the same key return the original response and are never double-charged. |
Responses
| Code | Description |
|---|---|
202 | Upscale succeeded. JSON envelope with job_id and data (base64 image + dimensions). Response headers include X-Credits-Charged, X-Credits-Remaining, and rate-limit headers. |
400 | Invalid parameters or unprocessable input (no credits charged). Envelope: { "error": { "code", "message" } }. |
402 | Insufficient credits (no credits charged). |
401 | Authentication failed — missing or invalid API key (no credits charged). |
429 | Rate limit exceeded (no credits charged). Includes a Retry-After header. |
Response headers
| Header | Description |
|---|---|
X-Width / X-Height | Dimensions of the result image. |
X-Credits-Charged | Credits charged for this call. |
X-Credits-Remaining | Remaining wallet balance after the call. |
X-RateLimit-Remaining | Requests 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 }
}
}