GPT Image 2.5 icon set: one anchor icon, then reference it

Make a consistent icon set with GPT Image 2.5 on Sume: approve one anchor icon, pass it as input_references, change only the subject, and keep a style block.

5 min readSume
All posts

The way to get a consistent icon set from GPT Image 2.5 is to approve one anchor icon first, then pass that image as an input_references entry for every other icon, change only the subject line in the prompt, and keep an identical style block in each request. Asking for twelve different icons in one prompt gives you twelve loosely related drawings; the anchor makes them siblings.

This post lays out the loop on Sume's POST /v1/images, a style block you can adapt, and the settings that matter for icon work: size, transparency and quality. Parameter facts are from the Image API docs and OpenAPI reference, read 2026-10-03.

Why not one prompt for the whole set?

A single prompt describes a set of images, and every call draws a new one from it. Sume's seed field is not served, so there is no way to freeze the look by number. A reference image is the one served control that carries style across calls, and GPT Image 2.5 takes up to 16 of them.

There is also a cost angle. Completed generations are billed in full and failed ones are not billed, so ten rerolls to find a matching icon cost ten generations. Fix the style once, then each new icon should need one or two tries.

What goes in the style block?

Write the style block once and paste it unchanged above every subject line. Keep it concrete and short: shape language, line weight, palette, perspective, and what the background is.

Example: "Flat vector-style app icon, rounded square tile, 3 colours from this palette: deep blue, warm yellow, white. Thick uniform outline, no gradients, no shadow, centered subject with generous padding, plain background." The subject line then reads "Subject: a calendar page with a checkmark."

What does the loop look like?

Run the anchor at low cost, review it, and only then fan out.

Icon set workflow on Sume's Image API, read 2026-10-03.
StepRequestCheck
1. AnchorStyle block + first subject, no references, quality: "medium"Does the style match what you want? Regenerate until yes
2. SiblingsStyle block + new subject + anchor URL in input_referencesSame line weight, palette and padding
3. Fixesmask_url edit on one regionRest of the icon unchanged
4. FinalsRerun approved icons at quality: "high"Compare with the medium version

Which settings suit icons?

Use a square size. 1024x1024 is a valid custom size (multiples of 16, within the pixel range). Sume lists background: transparent for GPT Image 2.5, so ask for it explicitly rather than in words; check the PNG's alpha channel yourself, since some outputs that look transparent in a viewer are not. A flat key colour plus your own removal step is the fallback.

Do not ask for tiny icon sizes such as 64x64. The lower pixel bound for custom sizes is 655,360 pixels, so generate large and downscale in your own code.

{
  "model": "openai/gpt-image-2.5",
  "quality": "medium",
  "image_size": "1024x1024",
  "background": "transparent",
  "prompt": "<style block>\nSubject: a shopping bag with a heart. Same style as image 1; change only the subject.",
  "input_references": [
    { "type": "image_url", "image_url": { "url": "https://example.com/anchor-icon.png" } }
  ]
}

What drifts, and how do I handle it?

Expect some drift as the set grows, because each icon is generated fresh.

  • Always reference the anchor, not the previous icon; chained references accumulate errors.
  • Repeat the style block verbatim; paraphrasing it changes the look.
  • If an outline weight differs, fix that icon with a masked edit instead of regenerating it.
  • Review the whole set on one page at the size users will see it.

How do I check the finished set?

Put every icon on one contact sheet at the size users will see, and compare outline weight, corner radius, colour and padding side by side. Differences that are invisible one icon at a time show up immediately in a row. Reject outliers, and fix them with a masked edit when only one region is off, or regenerate from the anchor when the whole icon is off.

Keep the anchor URL and the style block in version control next to the set. When you add an icon next month, reuse both rather than starting a fresh look. Failed generations are not billed on Sume, so a rejected attempt costs nothing; a completed one is billed even if you discard it.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume