Remove shadow from photo with AI: edit it or cut it out
To remove a shadow from a photo with AI, send the photo to an image-edit model, name the one shadow to remove, and list what stays. Prompts, cost, limits.

Yes, AI can remove a shadow from a photo: send the photo to an image-edit model as a reference, name the one shadow you want gone, such as the hard shadow to the left of the bottle, and say everything else stays. If the goal is a product on white or on a new backdrop, a background-removal cutout is the other route, because a shadow that lies on the background can be lost with it.
Below is how to do both with Sume's Image API and the RMBG 1.0 schema in the Sume API reference, served by the API reference docs, all read on 2026-09-29. The opposite job, putting a shadow back under a cut-out product, is in how to add a shadow to a product photo.
How do I remove a shadow from a photo with AI?
Host the photo at a public HTTPS URL and send it in input_references to POST /v1/images, on a model that takes references. ChatGPT Image 2.5 (openai/gpt-image-2.5) takes up to 16. Send aspect_ratio: "auto" so the result keeps the photo's shape; on edit calls, leaving the field out is not the same. Ask for two versions with n and keep the better one.
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": "Remove only the hard dark shadow to the left of the bottle. Continue the tabletop and its even lighting where the shadow was. Keep the bottle, its label, the soft contact shadow under it, and the framing exactly the same.",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/photos/bottle.jpg" } }
],
"aspect_ratio": "auto",
"n": 2
}'What should a shadow removal prompt say?
Name one shadow and say what fills its place. AI photo editing prompts covers the change-one-thing pattern; for shadows:
- Which shadow: where it falls and what casts it, such as “the shadow of my phone across the top of the page” or “the harsh shadow under the eyes of the statue”.
- What replaces it: the surface continuing, the paper staying white, the light evening out across the area.
- What stays: the subject, logos, labels, printed text, and any shadow you want to keep. A small contact shadow is what makes a product look like it stands on something.
- For documents and receipts, ask for the text to stay unchanged, then read it against the original: an edit redraws the page, and letters can change.
Can I remove the shadow by cutting the product out?
Yes, when the product is going onto white or a new background anyway. Sume RMBG 1.0 (POST /v1/rmbg-1.0/remove) takes one public HTTPS image_url and returns a PNG with alpha: the subject kept, the rest transparent. A shadow cast on the backdrop is not part of the product, so the cutout can lose it; the reference doesn't describe how shadows are treated, so check each file. It is listed at $0.0225 per image, plus a 5.5% agent fee by default, and the price does not vary by image size.
A product with no shadow at all on white can look pasted on. If it does, add a soft contact shadow back, as in the add-shadow post linked above, or skip the cutout and edit the original instead.
Will the rest of the photo stay the same?
Not pixel for pixel. An image-edit model returns a redrawn version of the whole photo, and Sume's terms say generated outputs may be inaccurate or unsuitable for a particular use, so compare each result with the original and keep the original file. ChatGPT Image 2.5 accepts an optional mask_url on edits, but the docs don't describe what the mask should contain, so name the shadow in the prompt instead.
How much does it cost to remove a shadow with AI?
A prompt edit is billed per completed image at the model's endpoint price, and a failed one is not billed. For a folder of photos, run one request per photo, as in batch photo editing.
| Rule | What the docs say |
|---|---|
| Billing | Completed generations billed in full; failed or cancelled ones are not billed |
| Price per model | The pricing line of GET /v1/images/models/{model_id}/endpoints; cost_usd × n is what you pay |
| Photo input | Public HTTPS URLs only; localhost, private-network, and non-HTTPS URLs are rejected |
| Text-only models | An input_references descriptor of {"min": 0, "max": 0} means the model rejects references |
| Versions per call | Up to 10 with n; per-model ceilings are lower |
| Result URLs | Sume-hosted and signed; download the files you keep |
Sources
Related posts
More in Models
- Seedance 2.5 aspect ratios: 9:16 vertical, 21:9 and the rest
Seedance 2.5 on Sume accepts 21:9, 16:9, 4:3, 1:1, 3:4 and 9:16. Set aspect_ratio explicitly; 3:2 is rejected. Ratios, errors and the price effect.
- Seedance 2.5 audio reference: how to send an audio clip
Seedance 2.5 accepts an audio clip as a reference, even without an image or video. The audio_url request on Sume, the vendor's file limits and what to expect.
- Seedance 2.5 image to video: first frame and last frame
Send a first_frame, or a first_frame and last_frame, with seedance-2.5 on Sume. Rules for frame_images, how it differs from input_references and what to set.
- Seedance 2.5 omni reference: how @image, @video and @audio tags work
Seedance 2.5 prompts point at references with tags such as @Image 1. Sume rewrites lowercase tags like @image1 to the casing the model expects. Examples.
Written by Sume