Recolor a product with a swatch reference and mask on GPT Image 2.5
BFL's FLUX 3 Image lists recolor, replace and move edits by bounding box. On Sume, a recolor job takes a swatch reference and a mask_url on GPT Image 2.5.

BFL's FLUX 3 Image documentation lists three edit operations: recolor, replace and move, targeted with bounding boxes written as [y0, x0, y1, x1] on a 0 to 1000 scale. A catalog request for a recolor is common in product work: same product, new color.
Sume does not list FLUX 3 and does not take bounding boxes. Its region control is mask_url, accepted only on ChatGPT Image 2.5 (both variants), with up to 16 references.
Mapping the job
| Job part | BFL FLUX 3 Image | Sume on GPT Image 2.5 |
|---|---|---|
| Target region | Bounding box, 0 to 1000 | mask_url image |
| Source image | Reference image | First entry in input_references |
| New color | Element description | Swatch as second reference plus prompt wording |
| Max references | 10 | 16 |
A request
OpenAI's guide says the image to edit and the mask must be the same format and size, and the mask needs an alpha channel, so export it at the source dimensions.
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":"Recolor only the masked jacket to the swatch color in the second image; keep fabric texture and shadows","quality":"high","mask_url":"https://example.com/jacket-mask.png","input_references":[{"type":"image_url","image_url":{"url":"https://example.com/jacket.png"}},{"type":"image_url","image_url":{"url":"https://example.com/swatch.png"}}]}'
Limits of the swap
A mask restricts the region but a model can still shift tone nearby. Check edges and shadows on the first few outputs, and rerun with a tighter mask if the color bleeds. Converting a bounding box to a mask is a few lines of Pillow: scale 0 to 1000 to pixel coordinates and fill the rectangle.
How this was checked
Vendor facts come from the pages listed in the sources, read on 2026-10-05. Sume facts come from the Image API docs and the catalog code on main on the same date. Catalogs and limits change, so read the descriptors from GET /v1/images/models before you pin a number in production code.
Sources
Related posts
More in Use cases
- Redact names from a transcript and the audio: STT words, then split
Sume STT returns word timings with a type field. Find the names you list, blank them in text, and cut the same spans from the audio for $0.01.
- Reels ad disclaimer: keep the bottom 40% clear at 1080x1920
Meta says to leave the bottom 40% of a Reels ad free of text and logos when it carries a disclaimer. Pixel math and where to burn captions with Sume.
- Reels ads ban GIFs, face effects and licensed music: AI clip preflight
Meta's Reels ad spec says no licensed music, face or camera effects, GIFs or product tags. A five-point preflight for an AI-made 9:16 clip before upload.
- Reels and Shorts both name 3 minutes: one 180-second master
Instagram does not recommend Reels over 3 minutes to new audiences, and Shorts run up to 3 minutes. Build one 180-second master in Timeline 1.0 for both.
Written by Sume