REST API · Live

Open Source ESRGAN API

A production open source ESRGAN API that enlarges any photo 4× to 16× and returns a full-resolution PNG. One HTTP POST. No software to install. $0.009 per image — lower-priced than Let's Enhance ($0.068) and Upscale.media (~$0.052). 5,000 free credits (24-hour trial), no credit card.

$0.009 / image 2× to 16× scale 5,000 free credits (24-hour trial) No credit card 20 MB max input Transparency preserved
Get an API key (free) Quick start See pricing API docs

Quick start — open source ESRGAN API in one call

Sign up, copy your key from the dashboard, and POST your image. The endpoint queues the job and returns a generation_id; poll GET /v1/image/upscale/{id} until status=completed, then download the full-resolution PNG from output_url.

curl -X POST https://api.pixelapi.dev/v1/image/upscale \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F "scale=4"
# Response: {"id": "uuid", "status": "queued", "credits_used": 9}

# Poll until completed
curl https://api.pixelapi.dev/v1/image/upscale/UUID \
  -H "Authorization: Bearer YOUR_API_KEY"
# Response: {"generation_id": "uuid", "status": "completed", "output_url": "https://..."}
pip install pixelapi
---
from pixelapi import PixelAPI

client = PixelAPI(api_key="YOUR_API_KEY")
result = client.upscale(image="photo.jpg", scale=4)
result.save("photo_4x.png")  # full-resolution PNG
npm install pixelapi
---
import { PixelAPI } from "pixelapi";

const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
const result = await client.upscale({ image: "./photo.jpg", scale: 4 });
await result.save("photo_4x.png");  // full-resolution PNG
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;

$client = new Client(getenv("PIXELAPI_KEY"));
$result = $client->upscale(["image" => "photo.jpg", "scale" => 4]);
file_put_contents("photo_4x.png", $result->getBody());
gem install pixelapi
---
require "pixelapi"

client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
result = client.upscale(image: "photo.jpg", scale: 4)
File.binwrite("photo_4x.png", result.body)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"

client := pixelapi.New("YOUR_API_KEY")
result, err := client.Upscale("photo.jpg", pixelapi.UpscaleOptions{Scale: 4})
if err != nil { panic(err) }
result.Save("photo_4x.png")

Pricing — open source ESRGAN API vs rivals

PixelAPI's per-image price is set at half or below the cheapest comparable REST API rival. No annual commitment. No subscription required for pay-per-image access.

ProviderFree tierPer-image costAPI access
PixelAPI 5,000 credits (24-hour trial), no card $0.009 REST · 6 SDKs · batch · scale 2–16×
Let's Enhance10 credits on signup$0.068/image (Max annual) · $0.09 (Starter monthly)API via business plan (contact sales)
Upscale.media3 credits/month~$0.052/image (1200-credit bulk pack, INR pricing)API (request key from dashboard)
Topaz Gigapixel30-day trial$149/year subscription — local + cloud renders included; no per-image REST APIDesktop app only (Windows/Mac)
Vance.aiLimited freeSee vanceai.com/pricing — API credits are separate from web app creditsAPI plan (separate signup)

Pricing verified from each rival's public pricing page October 2026. PixelAPI per-image price follows our pricing principle: half or below the cheapest comparable REST API rival per-unit rate.

What you get back

Full-resolution PNG

Output is always a PNG at the upscaled resolution. Alpha channel (RGBA transparency) from the original is preserved at full output size — useful for product cutouts that need enlarging before compositing.

Scale 2× to 16×

Pass scale=4 for standard 4× enlargement, up to scale=16 for large-format print targets. Scales 5–16 chain two passes automatically from a single API call — no extra parameters needed.

Custom pixel dimensions

Supply target_width and target_height to get an exact pixel size. Choose fit_mode=stretch, pad_white, or pad_transparent for aspect-ratio handling. The API picks the appropriate scale internally.

Upscale + face restore in one call

POST to /v1/image/enhance to chain ESRGAN upscale with face restoration in a single API call — sharper facial features on portraits, old family photos, and ID-style images.

Common workflows using the ESRGAN API

The open source ESRGAN API is the resolution layer in these production pipelines. Each links to a setup guide:

Art print & wall décor

Upscale stock or catalog images to poster and large-format print resolution — 24×36" and beyond from a low-res source.

E-commerce hi-res

Bulk-upscale product images for Shopify, WooCommerce, and marketplace listings that require hi-res zoom assets.

Photography studios

Recover detail in cropped or compressed JPEGs before large-format printing or client delivery.

Fashion & apparel

Hi-res product shots for lookbooks, editorial spreads, and hi-DPI retina displays.

Real estate listings

Sharpen listing photos before syndicating to hi-DPI portal banners and print brochures.

Stock photo agencies

Upscale contributor uploads to meet minimum resolution requirements before editorial review.

Furniture catalogs

Hi-res enlargement of heavy product photography for print catalogs and large-format retail displays.

Social media & ads

Upscale thumbnails and ad creatives to meet each platform's hi-res asset requirements.

Event photography

Enlarge compressed event shots for large-format banner and exhibition print use.

More use-case guides: all upscaling workflows →

Integrations & SDKs

Shopify

Auto-upscale product images on upload via Shopify webhook + PixelAPI ESRGAN.

Zapier

No-code upscale trigger — connect any cloud storage to PixelAPI in minutes.

Make.com

Drag-and-drop ESRGAN upscale module in Make scenarios.

Webflow

CMS image auto-upscale for hi-DPI retina product detail pages.

BigCommerce

Catalog automation with the BigCommerce product API + ESRGAN upscale.

Magento

Adobe Commerce / Magento 2 plugin pattern for batch ESRGAN upscaling.

Comparison vs alternatives

vs Topaz Gigapixel

Topaz requires a desktop install ($149/year). PixelAPI is a pure REST endpoint — no software to install, works from any language, any platform.

vs Let's Enhance

$0.009 vs $0.068/image. Same ESRGAN-class upscale quality. No subscription required — pay per image.

vs Vance.ai

Transparent, predictable per-image REST pricing. No separate web-app and API credit pools to manage.

vs Upscale.media

$0.009 vs ~$0.052/image. Full REST API + 6 SDKs + batch. GST invoicing included for Indian businesses.

vs BigJPG

Production SLA, auto-refund on failure, and scale 2×–16× in one call. BigJPG caps at 8× with no public SLA.

vs Claid.ai

No custom enterprise quote needed. PixelAPI's per-image price is published and fixed at $0.009 — sign up and start today.

Rate limits & error handling

20 requests/minute on the free trial, 60 on Starter, 120 on Pro and 300 on Scale, plus 3/10/20/50 concurrent jobs in parallel respectively (see parallel processing docs). Exceeding the limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 2 s, doubling on each retry up to 30 s. The Python and Node SDKs handle this automatically.

# Python SDK — auto-retries 429 with exponential backoff
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)
result = client.upscale(image="photo.jpg", scale=4)  # auto-retries on 429

Failed jobs trigger an automatic, idempotent credit refund — you never pay for a broken result. You can safely retry the same generation_id via the poll endpoint; the refund logic prevents double-credit regardless of how many times you check.

Input limits: max 20 MB per image. Scale values outside 2–16 return HTTP 400. target_width and target_height must be supplied together (64–16,384 px each); supplying only one returns HTTP 400. Unsupported fit_mode values also return HTTP 400 with a descriptive message.

Frequently asked questions

What is the open source ESRGAN API endpoint?

POST to https://api.pixelapi.dev/v1/image/upscale with your API key in the Authorization: Bearer header. The endpoint returns a generation_id; poll GET /v1/image/upscale/{id} until status=completed and download the PNG from output_url. See the Quick Start section above for code examples in 6 languages.

How much does the ESRGAN API cost?

$0.009 per image — lower-priced than Let's Enhance ($0.068/image) and Upscale.media (~$0.052/image). New accounts get 5,000 free credits (24-hour trial) with no credit card required — enough to test on a full product catalog before paying anything.

What scale factors does the upscaler support?

The scale parameter accepts integers from 2 to 16. Scale 2–4 uses a single model pass. Scale 5–16 chains two passes automatically — no extra parameters. You can also skip the multiplier entirely and pass target_width + target_height for exact pixel output; the API picks the correct scale internally.

What image formats does the API accept?

JPEG, PNG, and WebP are accepted, up to 20 MB. Upload the file directly as multipart/form-data (the image field) or pass an image_url pointing to any publicly accessible image URL.

What format does the API return?

Always PNG. Transparency (RGBA) in the original image is preserved at the full upscaled resolution. The output_url in the completed response is a direct download link to the full-resolution PNG file.

Can I request an exact output pixel size?

Yes. Pass both target_width and target_height (they must be supplied together, 64–16,384 px). Choose fit_mode=stretch for an exact resize to those dimensions, pad_white to preserve aspect ratio with a white border, or pad_transparent for a transparent-padded PNG ready for compositing.

Is there a Python SDK?

Yes — pip install pixelapi. Official SDKs also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), Go (go get), and Java/Kotlin. All SDKs handle authentication, polling, retry-on-429, and binary file return automatically.

What are the rate limits?

20 requests/minute on the free trial, 60 on Starter, 120 on Pro and 300 on Scale, plus 3/10/20/50 concurrent jobs respectively. See parallel processing docs. Higher limits for batch pipelines — email support@pixelapi.dev with your expected volume.

Can I upscale photos with faces?

Yes. For general images the upscale endpoint handles faces alongside the rest of the scene. For portrait-focused workflows where face sharpness is the priority, use POST /v1/image/enhance — it chains ESRGAN upscale with a face restoration pass in a single call for noticeably sharper facial features.

What happens if my upscale job fails?

Credits are automatically refunded on failure — you never pay for a broken result. The refund is idempotent, so you can safely retry the same generation_id without risk of double charge.

How does the ESRGAN API compare to Topaz Gigapixel?

Topaz Gigapixel is a desktop application starting at $149/year with no public REST API — it requires a Windows or Mac install. PixelAPI is a pure REST endpoint usable from any language or CI pipeline, at $0.009 per image with no annual commitment and a 5,000-credit free trial.

Is there a bulk or batch processing option?

Yes. Pro and Scale plan users can run 20–50 concurrent jobs in parallel. The Python and Node SDKs include an async batch helper that manages the job queue automatically. For very large volumes, email support@pixelapi.dev with your expected throughput and we'll advise on concurrency settings.

Start free — 5,000 credits, no card Read full API docs Compare all plans