Restore old photos with AI: repair damage, then upscale
To restore an old photo with AI, send the scan with a prompt listing the damage to fix, then upscale it up to 4x. Compare the result with the scan.

To restore an old photo with AI, scan the print and send the scan to an image model as a reference, with a prompt that lists the damage to fix and what must stay: "Remove the scratches, dust spots, and the crease; restore the faded contrast; keep the faces, clothing, and background unchanged." If you need a bigger print, upscale the repaired image by up to 4×. The model redraws the photo rather than patching it, so compare the result with the scan and keep the original.
Both steps run on Sume's API: the repair is a POST /v1/images request, and the enlargement is an Image Upscale 1.0 job. Facts come from the Image API docs and the OpenAPI document behind the Sume API reference, read on 2026-09-28.
How do I restore an old photo with AI, step by step?
- Scan the print flat, or photograph it straight on without glare, with the whole photo in the frame.
- Put the scan at a public HTTPS URL. Localhost, private-network, and non-HTTPS URLs are rejected before submission.
- Send it in
input_referencesto a model that edits from references, with the damage list inpromptandaspect_ratio: "auto", so the repaired photo keeps the scan's shape. Leaving the field out is not the same as sendingauto. - Ask for several versions with
n(up to 4 on Nano Banana Pro today), and keep the one closest to the original. - For a bigger print, download the repaired image, host it at a public HTTPS URL, and send it to the upscaler (below).
- Compare the result with the scan face by face, and keep both files.
curl -X POST "https://api.sume.com/v1/images" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/nano-banana-pro",
"prompt": "Restore this old photo: remove the scratches, dust spots and the diagonal crease, repair the torn corner, and restore the faded contrast. Keep the faces, expressions, clothing, background and black-and-white tones unchanged. Do not add color.",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/scan-1948.jpg" } }
],
"aspect_ratio": "auto",
"n": 4
}'What should a photo restoration prompt say?
Name the damage you can see, then what must not change:
- The damage: scratches, dust spots, cracks, a crease, a torn corner, stains, water marks, fading, or a yellow cast.
- What stays: faces, expressions, clothing, the background, and the framing.
- What not to add: "do not add color" for a black-and-white print, "don't smooth the skin", "keep the film grain". Adding color is its own job.
- Missing pieces: say what was there if you know, such as "the torn corner showed more of the brick wall".
How do I make the restored photo bigger?
Send the repaired image to Image Upscale 1.0 as a public HTTPS image_url, with an upscale_factor of up to 4. The table compares the two steps; AI image upscaler API covers the upscale request in full, and AI image for print shows how many pixels a print size needs. API pricing describes the upscale as reserved at about 16 megapixels of generative output, so check the enlarged file against the scan too.
| Repair the damage | Enlarge the result | |
|---|---|---|
| Endpoint | POST /v1/images | POST /v1/image-upscale-1.0/upscale |
| Your image goes in | input_references: public HTTPS URLs | image_url: one public HTTPS URL |
| Main settings | prompt, aspect_ratio: "auto", and n up to 4 | upscale_factor from 1 to 4 (default 2); output_format png (default) or jpg |
| What comes back | The images within 30 seconds (200), or a job to poll (202); result URLs are signed | A job with Sume-owned polling URLs; async is the default mode |
| Price | Per completed image, at the model's price in GET /v1/images/models/{model_id}/endpoints | $0.20 per image, plus a 5.5% agent fee by default |
Will the restored photo look exactly like the original?
No. The edit generates a new picture from the scan and your prompt, so faces, expressions, and small details can change, and badly damaged areas are filled in with the model's guess. Put each result next to the scan and check every face before you print or share it. Keep the original scan: the restored file is a new image, not a repaired print.
What are the limits?
- Each completed image is billed, so
n: 4is four images. A failed or cancelled generation is not billed, andusage.costin the response is the USD amount billed. - The upscaler takes one image per job, and its factor stops at 4.
- Result URLs from the repair step are Sume-hosted and signed, so download the versions you keep.
- To make the restored photo move, see can AI animate old photos.
Sources
Related posts
More in Use cases
- Royalty-free music for YouTube Shorts: what YouTube allows
Use YouTube's Shorts Audio Library or the royalty-free YouTube Audio Library, which YouTube says won't get a Content ID claim. Other music is on you.
- Sales enablement video: short talk-track clips made with AI
A sales enablement video teaches reps one talk track: a pitch, an objection, a release. Make each a short AI avatar clip and re-render it when it goes stale.
- Script to video AI: turn a finished script into a video
Script to video AI voices your script and cuts a clip to each line. To keep every word, voice it with TTS and cut to its sentence timings.
- Security awareness training video: short clips made with AI
A security awareness training video teaches staff one security habit per clip. Make each topic a short captioned AI avatar clip and refresh only what changed.
Written by Sume