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.

5 min readSume
All posts

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.

Who chooses the GPT Image 2.5 variant (read 2026-10-04)
SurfaceWho picks Flare or SunburstNote
ChatGPTThe app (Flare by default, Sunburst on complex prompts)Per OpenAI's announcement
OpenAI APIYou name the modelPer OpenAI's announcement
Sume, explicit idYou name the modelopenai/gpt-image-2.5 or -sunburst
Sume, sume/autoSume chooses a family and never discloses itDocs 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 n above 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

All Models posts

Written by Sume