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.

5 min readSume
All posts

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.

Constraint lines for a packshot edit (pattern from fal and OpenAI guidance, read 2026-10-02)
ElementConstraint line
ShapeKeep the bottle shape and proportions exactly as in Image 1.
ColourKeep the product colour exactly; do not recolour.
Label textKeep the label text and logo exactly as in Image 1.
ScaleKeep the product the same size relative to the frame.
ChangePlace 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

Related posts

More in Use cases

All Use cases posts

Written by Sume