Ad still from a packshot: tell GPT Image 2.5 what must not move
Turn a product packshot into an ad still with GPT Image 2.5 by listing what must not move: shape, colour, label text. A Sume request and a checklist.

To make an ad still from a product packshot with GPT Image 2.5, send the packshot as a reference and write two lists in the prompt: what changes (background, light, props) and what must not move (shape, colour, label text, proportions). fal's guide recommends exactly this split: describe the change clearly and list the elements that must not move, so the model does not decide the scope on its own.
Sources: fal's How To Use GPT Image 2.5 and OpenAI's Image prompting, both read on 2026-10-02, and Sume's Image API page.
Why is the packshot the right input?
A packshot is a clean image of the product alone, so the model has one subject to keep and nothing else to confuse it with. The generation then has to invent only the setting. On Sume, ChatGPT Image 2.5 (Flare, openai/gpt-image-2.5, and Sunburst, openai/gpt-image-2.5-sunburst) takes up to 16 references, so you can add a second image for the scene when you want it. For a ready-made set of channel shapes from one packshot, see one packshot, many assets.
What goes in the must-not-move list?
Name the things a buyer would notice if they changed. The table pairs each with a sentence you can paste.
| Element | Constraint line |
|---|---|
| Shape | Keep the bottle shape and proportions exactly as in Image 1. |
| Colour | Keep the product colour exactly; do not recolour. |
| Label text | Keep the label text and logo exactly as in Image 1. |
| Scale | Keep the product the same size relative to the frame. |
| Change | Place it on a marble counter, soft morning window light. |
What does the request look like?
One reference, one change list, one constraint list. quality defaults to high when omitted; set it explicitly if you want the choice visible in your code. Both edges of a custom image_size must be multiples of 16, and 1080x1350 is not valid because 1350 is not one, so use a named preset or a size such as 1088x1360 and crop afterwards.
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": "Image 1 is the product packshot. Change: place the bottle on a marble counter with soft morning window light and a folded linen cloth. Must not move: the bottle shape and proportions, the product colour, the label text and logo, and the size of the bottle in the frame.",
"quality": "high",
"aspect_ratio": "auto",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/packshot.png"}}
]
}'How do I check the result before it ships?
Zoom to the label. fal's guide says that for text that has to be legible you should lock the copy early and compare small type at medium and high quality; OpenAI's guide says to check spelling and legibility in the output. If the label changed, restate the constraint and run one more pass. Each completed pass is billed, so fix the list rather than retry the same one.
Sume does not detect a changed logo for you, and ad platforms have their own rules for AI-edited product images. Check the destination's policy before publishing.
- Send the packshot as the first reference.
- Write change and must-not-move as separate lists.
- Inspect label text at full size.
- Run one more pass only after changing the prompt.
How many variants should I make?
Change one scene element at a time (surface, light, props) and keep the must-not-move list word for word, so that differences between stills come from the scene and not from drift in the product. If you generate several stills in a batch, run the same label check on each, because a label that survives one render can change in the next.
Reference images also count toward cost: Sume's docs describe input image tokens at $8 per million, so a packshot at high resolution adds a small amount to every pass. Keep the packshot at a sensible size rather than the camera original.
Sources
- Image API
- Image prompting (OpenAI, read 2026-10-02)
- [How To Use GPT Image 2.5: Prompts & Workflows [2026] (fal, read 2026-10-02)](https://fal.ai/learn/tools/how-to-use-gpt-image-2-5)
Related posts
More in Use cases
- GPT Image 2.5 drafts at low quality, then a final: cost and steps
fal lists GPT Image 2.5 at $0.00588 low and $0.05268 high for 1024 squares. Draft four options at low, pick one, then redo it at high. Sume steps and the catch.
- Keep the same face in a GPT Image 2.5 edit: the prompt block to use
To keep a person recognisable in a GPT Image 2.5 edit, send the photo as a reference and spell out what must not change. The exact wording and a Sume call.
- Halloween product teaser: a 15-second vertical clip from one still
Make a 15-second Halloween teaser for a product with Seedance 2.5 on Sume: first-frame still, 9:16 at 720p, native audio, and how to read the price first.
- Halloween narrator voiceover with spooky music for a video
Make a Halloween story video audio track: a slow narrator from Sume TTS, an instrumental horror bed from the music router, mixed with ducking in Timeline 1.0.
Written by Sume