Product photo on a white background: one image edit call on Sume
Turn a messy product photo into a clean white-background shot with one POST /v1/images edit. Which model, which fields, and what to check before you publish.

Send the product photo as an input_references URL, ask for a pure white seamless background with the product unchanged, and set aspect_ratio to auto so the framing follows your photo. On GPT Image 2.5 you can also set background to opaque, which the docs list for that model only (Image API docs). One call returns a hosted URL you can drop into a store listing.
The risk is not the background but the product: edit models can nudge logos, label text and proportions. Always compare the result against the original before publishing.
Which fields matter?
From the Sume docs, read 2026-10-01.
| Field | Use | Note |
|---|---|---|
input_references | The product photo URL | Public HTTPS, up to 16 on GPT Image 2.5 |
aspect_ratio | auto | Docs advise auto on edits |
background | opaque or transparent | ChatGPT Image 2.5 only |
quality | high for listing images | Default is high when omitted |
What is the call?
A single edit:
import os
import requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.post("https://api.sume.com/v1/images", headers=H, timeout=60,
json={"model": "openai/gpt-image-2.5", "quality": "high",
"aspect_ratio": "auto", "background": "opaque",
"prompt": "Place this exact product on a pure white seamless "
"background with a soft contact shadow. Do not change "
"the product, its shape, colours or label text.",
"input_references": [{"type": "image_url",
"image_url": {"url": os.environ["PRODUCT_URL"]}}]})
print(r.status_code)
if r.status_code == 200:
print(r.json()["data"][0]["url"], r.json()["usage"]["cost"])What if I need a transparent cut-out?
Set background to transparent and ask for PNG or WebP output, since JPEG has no alpha. Check the edge on a dark backdrop; soft shadows and hair-like edges are where cut-outs fail. For a mask you draw yourself, GPT Image 2.5 also accepts a public HTTPS mask_url.
Checklist before you publish
Open the original and the result side by side at full size. Check the label text letter by letter, the product outline, and any logo. Look for a second shadow or a floor line that the model added.
If the product changed, rerun with a tighter instruction and a higher quality, or try another edit model from the catalog (GET /v1/images/models). Keep the original photo; the edit is a derived file.
Limits
Marketplace rules differ on pure white, so check your marketplace's own image page for exact requirements; I did not verify any here. The model may add a shadow or change lighting. Other models in the list ignore background, and a field a model does not list returns 400 unsupported_parameter.
Sources
Related posts
More in Use cases
- Re-roll one shot in a stitched film without redoing the rest
Regenerate a single bad shot, swap its source_url in the Timeline 1.0 video array, and re-render the cut for $0.10 per output minute. The other shots stay.
- Just sold video: put a SOLD plate over a listing tour clip
Make a just-sold video from an existing listing tour: overlay a SOLD plate PNG with Timeline compose, keep the original audio, one $0.02 job.
- Listing photos to a narrated tour video with TTS and Timeline
Turn ten listing photos into a 45-second narrated tour: write the script, get word timestamps from TTS, then render stills on a Timeline spine for about $0.15.
- Real estate walkthrough with no voiceover: burn room labels
A silent listing walkthrough has no speech to caption, so Sume's caption job needs cues. Burn room names, price and address at set times with video-captions.
Written by Sume