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.

4 min readSume
All posts

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_references to a model that edits from references, with aspect_ratio: "auto" so the result keeps the photo's shape. Leaving the field out is not the same as sending auto.
  • Ask for n: 4 and 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.

From Image API and the GET /v1/images/models catalog in current code, read 2026-09-28.
Model idKeeps the photo's shape with `"auto"`Reference imagesImages per call
openai/gpt-image-2.5Yes16Up to 4
openai/gpt-image-2Yes10Up to 4
google/nano-banana-2Yes10Up to 4
google/nano-banana-proYes10Up to 4
bytedance-seed/seedream-5-liteNo: pick a ratio from its list10Up to 4
bytedance-seed/seedream-4.5No: pick a ratio from its list101, 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: 4 is four images. A failed or cancelled generation is not billed, and usage.cost in the response is the USD amount billed.
  • A request still running after 30 seconds returns 202 with 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

All Use cases posts

Written by Sume