How to colorize a black and white photo with AI
AI can colorize a black-and-white photo: send the scan as a reference with a colorize prompt. The colors are the model's guess, so keep the original.

AI can colorize a black and white photo: send a scan of the photo to an image model that edits from reference images, with a prompt such as "Colorize this black-and-white photo with natural, realistic colors; keep every person, pose, and object exactly as they are." The colors are the model's guess, not a record of the real ones, and the model redraws the whole picture, so compare the faces with the scan and keep the original.
On Sume, that is one POST /v1/images request with the scan in input_references, the pattern Sume's docs use to turn a photo into a watercolor. Photo to painting AI covers artistic restyles. The facts below come from the Image API docs, the Sume API reference, and the model catalog that GET /v1/images/models serves, read on 2026-09-28.
How do I colorize a black and white photo with AI?
- Scan the print flat, or photograph it straight on without glare, and crop off the border.
- 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, withaspect_ratio: "auto"so the result keeps the photo's shape. Leaving the field out is not the same as sendingauto. - Ask for
n: 4and compare the four versions with the scan. - Download the version you keep: result URLs are Sume-hosted and signed.
curl -X POST "https://api.sume.com/v1/images" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2.5",
"prompt": "Colorize this black-and-white photo with natural, realistic colors. Keep every person, face, pose, and object exactly as they are, and keep the film grain. The woman wears a dark green dress; the car is cream.",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/scan-1952.jpg" } }
],
"aspect_ratio": "auto",
"n": 4
}'What should a colorization prompt say?
Ask for color and nothing else, then give the model everything you know:
- The task and the constraint: "colorize this black-and-white photo; keep every person, face, pose, and object exactly as they are".
- The colors you know: "her dress was dark green, the front door was red, the car was cream".
- The time and place, as context for clothes and buildings: "a small-town main street in the 1950s".
- The strength: "natural, slightly muted colors" and "keep the film grain", if you want it to still look like an old print.
Are AI colors historically accurate?
No. A black-and-white photo records how light or dark each part of the scene was, not its hue, so the model infers every color from what things look like. The result can look plausible and still be wrong. Put the colors you know into the prompt, check skin tones and faces against the scan, and label the image as colorized when you share it.
Which AI models can colorize a photo?
Only models that edit from reference images can take the scan. A model whose input_references range is {"min": 0, "max": 0} is text-to-image only and rejects it. These models edit from references today; bytedance-seed/seedream-5-lite and bytedance-seed/seedream-4.5 don't list auto, so give them the ratio from their list that is nearest your photo.
| Model id | Keeps the photo's shape with `"auto"` | Reference images | Images per call |
|---|---|---|---|
openai/gpt-image-2.5 | Yes | 16 | Up to 4 |
openai/gpt-image-2 | Yes | 10 | Up to 4 |
google/nano-banana-2 | Yes | 10 | Up to 4 |
google/nano-banana-pro | Yes | 10 | Up to 4 |
bytedance-seed/seedream-5-lite | No: pick a ratio from its list | 10 | Up to 4 |
bytedance-seed/seedream-4.5 | No: pick a ratio from its list | 10 | 1, whatever n says (current code) |
What are the limits?
- The model redraws the whole picture, so faces, hands, and small lettering can change. Keep the original scan.
- 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. - A request still running after 30 seconds returns
202with a job to poll instead of the images. - To repair scratches and tears too, see restore old photos with AI. To make the photo move, see can AI animate old photos.
Sources
Related posts
More in Use cases
- Convert video to SCORM: wrap an MP4 in a SCORM package
A video isn't SCORM by itself. To convert it, put the MP4 in a ZIP with an imsmanifest.xml, as a static asset or inside a page that reports completion.
- Corporate talking head video with AI: CEO and team updates
Make a corporate talking head video with AI: script the message, pick a presenter, render it in 16:9 or 9:16, and host the file where staff sign in.
- Creatify alternatives: link, image or script to video ad
Creatify alternatives compared on what they start from (a product link, product images, or a script) and whether batches run over an API. Dated table.
- Customer onboarding video: one short clip per setup step
A customer onboarding video walks a new customer through one step of getting started. Render one short AI avatar clip per step from your backend.
Written by Sume