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.
- 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.
- Recast a video longer than 30 seconds: trim, recast, rejoin
H3 Max Recast takes 5 to 30 seconds of source. For a 90 second video on Sume, probe it, trim ranges, recast each at 768p, then plan the join. Cost math inside.
- Review a creator clip's transcript before reusing it as a paid ad
Get a creator clip's transcript for $0.01 per audio minute with video inspect, then flag risky claims with your own word list before the clip becomes an ad.
Written by Sume