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
- Voice cloning API: clone once in the app, speak via the API
Sume has no API route that creates a voice clone. You clone once in the app, then send the voi_ id to the text to speech API on every call.
- An OpenRouter-compatible video API: sume/auto or a pinned model
Sume's POST /v1/videos follows OpenRouter's video generation API field for field. Let sume/auto pick the model, or pin a catalog id like seedance-2.5.
- Image generation API with reference images: POST /v1/images
Send a prompt plus public HTTPS reference images to Sume's POST /v1/images. Pin a catalog model or send sume/auto; the catalog lists each model's limits.
- Video 1.0 and Image 1.0 are retiring soon: move to sume/auto
Sume Video 1.0 and Image 1.0 are retiring soon and already run as aliases for the Auto path. New integrations call /v1/videos or /v1/images with sume/auto.
Written by Sume