An archive, a product feed, or an old campaign can leave you with images that are too small for their next use. Real-ESRGAN enlarges the originals in a queue, so a collection can share one submission minimum.
Start with a real result.


Jack Delano, Farm Security Administration - Office of War Information, Library of Congress, LC-DIG-fsac-1a34687. Public domain. Library of Congress rights advisory: No known restrictions on publication. Original source.
The input above is a 480 × 280 crop of Jack Delano’s photograph. The worker returned a 1,920 × 1,120 WebP. This is cached output from the actual worker handler, run on a laptop CPU with the real weights on November 1, 2026. Looking at these files spends no GPU time.
Choose dimensions and format.
Set scale to 2 or 4. The number scales each side: a 1,000 × 1,000 original becomes 4,000 × 4,000 at 4×. The model accepts PNG, JPEG, or WebP up to 2 MP input and 25 MB.
Use output_format to choose PNG, JPEG, or WebP. PNG and WebP can keep transparency; JPEG places it on white. A hard-edged alpha channel may take a second pass at the same published fare.
Upload first, then submit the batch.
Follow the upload guide to request signed PUT links and upload the bytes. Workers accept your uploaded file IDs rather than fetching image URLs. Add one item per image, up to 2,000 items per batch.
Images bill by input megapixels, with at least one unit per successful image. Size max_units from the decoded image; a measured image above your limit fails without a charge. Here, an original up to 1 MP declares one unit.
{
"model": "real-esrgan",
"items": [
{
"file": "FILE_ID",
"params": {
"scale": 4,
"output_format": "webp"
},
"max_units": 1
}
]
}# Set YPAD_KEY to your API key. Save the JSON above as batch.json.
# Dry runs check the files and hold, and write nothing.
curl --fail-with-body "https://www.y-pad.com/v1/batches" \
-H "Authorization: Bearer $YPAD_KEY" \
-H "Content-Type: application/json" \
--data "$(jq '. + {dry_run: true}' batch.json)"
# Review held_micros and missing before sending this paid request.
# Keep this key and body unchanged when retrying this submission.
curl --fail-with-body "https://www.y-pad.com/v1/batches" \
-H "Authorization: Bearer $YPAD_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-library-001" \
--data @batch.jsonThe cURL example uses jq. Repeat the item object for the rest of your uploaded images and choose a new idempotency key for a different submission.
What does the collection cost?
Provisional fares. These are the published limited beta fares. Check the fare table before submitting work.
For images at 1 MP or under, the list fare is $0.0010 per image, with a $0.0075 minimum per submission. A lone job here costs more than on Replicate.
| Work | One batch, list fare | One submission per image |
|---|---|---|
| 20 images, each at 1 MP or under | $0.02$0.0075 minimum per submission. | $0.15$0.0075 minimum per submission. |
| 1,000 images, each at 1 MP or under | $1.00$0.0075 minimum per submission. | $7.50$0.0075 minimum per submission. |
A lone job here costs more than on Replicate. Our lone image costs $0.0075, with a $0.0075 minimum per submission. Replicate lists $0.002 per image; Runware lists about $0.0013 at 4x, varies with input and also costs less for a lone image. Competitor prices checked 2 Nov 2026.
Download and review before replacing originals.
Expect a cold start of 10 to 30 s, occasionally minutes. This is a queue: check the batch state instead of assuming a fixed completion time.
Poll the batch until settled_at is set. Read succeeded items one page at a time and download each output_url without adding your API key to the signed storage request. The download guide handles pagination and expired outputs.
Check a representative set at 100% zoom before using the whole collection. Keep your own copies: Deletion starts at 7 days and normally finishes within a further day.
Have a batch in mind?
Estimate its cost ↗

