ChatGPT picks Flare or Sunburst for you; the API does not
In ChatGPT, Flare handles standard use and Sunburst takes complex prompts. In the API you choose. How to build that rule on Sume, where sume/auto uses Flare.

OpenAI's announcement says ChatGPT routes to Flare for standard use and escalates to Sunburst for complex prompts, while API users must name the model they want. Sume works the same way: you pass openai/gpt-image-2.5 (Flare) or openai/gpt-image-2.5-sunburst, and sume/auto uses Flare. If you want ChatGPT-like behaviour, write the escalation rule yourself.
What each surface does
The announcement, dated 2026-09-08, describes Flare as the lighter, faster model and Sunburst as the precision model for detailed creative work with longer generation times. In the ChatGPT app the choice is made for you. In the API it is a parameter, and the Image API docs say Flare and Sunburst share the same capabilities and the same Fal token rates.
| Surface | Who picks Flare or Sunburst | Note |
|---|---|---|
| ChatGPT | The app (Flare by default, Sunburst on complex prompts) | Per OpenAI's announcement |
| OpenAI API | You name the model | Per OpenAI's announcement |
| Sume, explicit id | You name the model | openai/gpt-image-2.5 or -sunburst |
| Sume, sume/auto | Sume chooses a family and never discloses it | Docs say Auto continues to use Flare |
A rule you can write down
Escalation is a policy, not a model feature. Keep it small and testable, and log which branch ran so you can check the extra spend is paying off. The signals below are our suggestions, not something OpenAI or Sume prescribes.
- Edits that must leave most of the image untouched, or use a
mask_url: Sunburst. - More than 4 references or text-heavy layouts: Sunburst.
- First drafts, variations, anything with
nabove 1: Flare. - A retry after a failed check: same model, new take. Change model only if the failure repeats.
In code
The router below is deliberately plain. It returns an id you can log, and the request body is the same for either model, which is why the swap is cheap.
def pick_model(refs: int, has_mask: bool, text_heavy: bool) -> str:
if has_mask or refs > 4 or text_heavy:
return "openai/gpt-image-2.5-sunburst"
return "openai/gpt-image-2.5"
body = {
"model": pick_model(refs=2, has_mask=False, text_heavy=True),
"prompt": "A storefront sign that reads FRESH BREAD",
"quality": "high",
}
print(body["model"])What stays the same
OpenAI describes Sunburst as having longer generation times, so budget for polling; see Jobs and results. The Image API docs say both variants use the same token rates, so the choice mainly changes time and detail.
Sources
Related posts
More in Models
- Choose an AI video model by the asset you already have: Sume ids
Photo, two frames, product shots, a voice track, a driving clip or a finished video: which Sume video id fits each starting asset, from the catalog rows.
- Swap the gift in a Christmas clip with Gemini Omni Flash edit
Gemini Omni Flash 1.1 on Sume edits a 3 to 10 second clip by prompt, so one approved Christmas ad can become three gift variants without a reshoot.
- Does Lyria 3.5 audio carry a SynthID watermark?
Yes: Google's Gemini API music docs say Lyria audio carries a SynthID watermark. The Sume docs I read do not describe watermarking either way.
- Eleven v4 stacked tags: direct emotion without them
ElevenLabs v4 adds stackable expression tags and 10-second cloning. Sume's docs list no clone route; here is how to direct a voice via tts_create.
Written by Sume