Provisional fares. Beta pricing. Your fare is fixed when you submit a batch. View pricing details

Y-PAD
← All field notes

Field notes / Images

From small originals to a larger image library.

A real before-and-after with Real-ESRGAN, the batch API, and the cost of upscaling a catalog.

View setup and code

Beta access required. Request access to run this workflow.

Original photograph of a steam locomotive on railway tracks Input
The same steam locomotive photograph after 4× Real-ESRGAN upscaling 4× output
Real-ESRGAN

Locomotive in a railroad yard, near Chicago, Ill. 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 ↗. Real worker output on CPU; cached for this guide.

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.

Locomotive in a railroad yard, near Chicago, Ill., input
Original input
Locomotive in a railroad yard, near Chicago, Ill., Real-ESRGAN output · 4×
Real-ESRGAN output · 4×

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.

The number on the engine is the model’s guess: the input is too small to read it. Enlarged detail can look convincing without being faithful. Keep the original and check important text, logos, and fine texture.

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.

batch.json · replace FILE_ID with your uploaded file ID
{
  "model": "real-esrgan",
  "items": [
    {
      "file": "FILE_ID",
      "params": {
        "scale": 4,
        "output_format": "webp"
      },
      "max_units": 1
    }
  ]
}
cURL · dry run, then submit the same body
# 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.json

The 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.

WorkOne batch, list fareOne 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 ↗

Join the private beta

We're opening API keys in small groups. Leave your email and we'll send yours when your place comes up.

We use your email only to contact you about the beta. See the privacy policy.