GPT Image 2.5 Flare vs Sunburst: which model to call

Verified against OpenAI documentation on 2026-09-09

ChatGPT Images 2.5 shipped two API models on the same day. gpt-image-2.5-flare is the fast default and gpt-image-2.5-sunburst is the editing precision option. This page covers what actually differs between them, what costs exactly the same, and how to route requests between the two.

What actually differs

OpenAI released both models on the same day, from the same generation. They share endpoints, quality settings, token prices, and supported inputs. That makes the choice narrower than a normal model comparison. You are not trading money against quality. You are trading wall clock time against editing precision.

Flare is the default model. OpenAI positions it for everyday generation and cuts latency against Images 2.0. External evaluations found it returning images several times faster than GPT Image 2. That speed changes what you can build on top of it. A Flare call fits inside a request a user is actively waiting on. It also survives large batches without clogging your queue.

Sunburst is the slower model. OpenAI positions it for editing precision. It is the one to reach for when the instruction is specific and the result has to land on the first attempt. Nothing about it is cheaper or more expensive per token. You pay in latency and you get back fidelity to the edit you asked for.

Both models inherit the same generation level improvements over Images 2.0. Lighting reads more naturally. Textures carry more detail. Subjects from a reference photo survive an edit better than they used to. Instruction following holds up across several editing turns instead of drifting after the second one. None of that is exclusive to either model.

Safety scores separate them slightly. Sunburst records the lowest unsafe generation rate of the three models measured. Flare sits between Sunburst and the Images 2.0 baseline. Both improve on that baseline. If your product serves user submitted prompts, this row of the table below deserves a look before you finalize a moderation budget.

The practical consequence is that most teams end up calling both. Flare handles drafts, thumbnails, variations, and anything a person watches load. Sunburst handles the final pass that a client will inspect closely. Routing on that boundary costs you one conditional in application code and no change to your billing model.

One thing neither model changes is your review process. Both still produce images that need a human eye before publication. Text inside images, hands, product logos, and legal marks all remain worth checking. Faster generation moves that check earlier, it does not remove it.

Flare and Sunburst side by side

Dimensiongpt-image-2.5-flaregpt-image-2.5-sunburst
Best forDefault generation, high volume, interactive flowsEditing precision, final passes, client facing output
Latency vs Images 2.0Up to 50% lowerSlower than Flare by design
External speed checks2 to 4 times faster than GPT Image 2Not published
Text input$5 per 1M tokens, cached $1.25$5 per 1M tokens, cached $1.25
Image input$8 per 1M tokens, cached $2$8 per 1M tokens, cached $2
Image output$30 per 1M tokens$30 per 1M tokens
Quality settingslow, medium, high, xhigh, max, autolow, medium, high, xhigh, max, auto
EndpointsPOST /v1/images/generations, POST /v1/images/editsPOST /v1/images/generations, POST /v1/images/edits
Input and outputText and image in, image outText and image in, image out
Dated snapshotgpt-image-2.5-flare-2026-09-08gpt-image-2.5-sunburst-2026-09-08
Unsafe generation rate1.41%1.09%

Both models were released 2026-09-08. Unsafe generation rates are measured against an Images 2.0 baseline of 1.64%.

What we measured, and why it settles nothing

RunFlareSunburst
129s26s
227s25s
333s26s
Median29s26s

Our own runs on 2026-09-09 through Kie.ai, an aggregator that resells the OpenAI models. Same prompt, high quality, 1024 square, three runs each, sequential. Wall clock as the provider reported it.

Reading our own numbers honestly

Those figures put Sunburst slightly ahead, which is the opposite of what OpenAI describes and the opposite of what we saw in an earlier pair of one-off calls, where Flare returned in 15 seconds against Sunburst at 29. The spread across three identical Flare runs was six seconds, wider than the gap between the two models.

The explanation is the route rather than the models. An aggregator holds requests in its own queue, and that queue moves with whatever else is running on it. It sits between you and the model, and at these timescales it is the larger term. Our numbers measure the queue.

So we are not going to publish a latency verdict from them. OpenAI states Flare is up to 50 percent faster than the previous generation, and that claim is about the model called directly. If latency decides your architecture, measure it on your own key, at your own concurrency, at the size and quality you actually ship. Anyone quoting a clean two-way split from a hosted endpoint is quoting their queue.

The one thing the runs do establish is that both models work, both hold quoted text, and neither is slow enough to rule out an interactive interface. Every image in our prompt library came out of these same endpoints.

Reference images, and a trap worth knowing about

Both models take reference images. Through the OpenAI API you post the file itself to the edits endpoint and the model works from it. Through an aggregator you pass a URL, and that is where the trap is.

Aggregators do not agree on what to call the field, and one of them disagrees with itself. On the host we use, the GPT Image models read `input_urls` while most of its other models read `image_urls`. Sending the wrong name does not fail. The request is accepted, the credits are charged, and the job runs as if no reference had been supplied, returning something with no relation to the image you sent.

We got this wrong ourselves first. Seven plausible spellings all behaved that way, and a run that should have changed one field on a supplied boarding pass invented a different airline instead. With the right name, the same request preserved the airline, the route, the flight number, the gate, the stub and the barcode, and changed only the seat.

The lesson generalises past one vendor. Verify rather than trust the parameter list: send a reference carrying one unmistakable detail, ask for one small change, and check the detail survived. If it did not, that provider is generating from your prompt and ignoring your image, whatever its documentation says, and nothing in the response will tell you.

Rate limits by tier

TierTokens per minuteImages per minute
Tier 1100K5
Tier 2250K20
Tier 3800K50
Tier 43M150
Tier 58M250

Tokens per minute and images per minute. These limits apply to the GPT Image 2.5 models on the OpenAI API.

Third party per image reference prices

Quality1024x7683840x2160
low$0.00402Not published
medium$0.00903Not published
high$0.03612$0.10008
xhigh$0.0642Not published
max$0.14445$0.40026

Prices published by fal.ai for gpt-image-2.5-sunburst, read on 2026-09-09. These are fal.ai prices, not OpenAI prices. OpenAI publishes token rates only. Longer prompts cost more than the figures below.

When Sunburst earns its extra time

Three jobs justify the wait. Product photography, packaging typography, and multi turn local edits. All three share one trait. A small region of the image decides whether the whole output is usable.

Product photography is the clearest case. The buyer cares about the product, not the backdrop. A drink can has to keep its shape. A shoe has to keep its stitching. A watch face has to keep its markers. Sunburst is the model built for that kind of preservation, and a reshoot costs far more than the extra seconds per request.

Packaging typography is the second case. Text inside a generated image is where these models historically fall apart. If your brief includes a label, a carton, a menu, or a shop sign, the letters carry the meaning of the whole picture. Generate those on Sunburst. Then check them by eye anyway, because no image model guarantees correct text.

Multi turn local edits are the third case. You send an image, ask for one change, then ask for another change on the result. Every turn is a chance for the model to redraw something you never mentioned. The 2.5 generation improved instruction following across turns, and Sunburst is the model to spend that improvement on. A four turn edit chain on the fast model can quietly undo your first three instructions.

The inverse rule is just as useful. If nobody inspects the output closely, Flare is the right call. Mood boards, layout placeholders, blog headers, internal decks, and social variants do not need the slower model. Neither do the fifty runs you make while tuning a prompt. Tune on Flare, ship the final on whichever model your comparison favors.

A last heuristic for the undecided. If you cannot describe what would make you reject an image, you do not need Sunburst. Precision only pays when you hold a precise standard. Teams that route everything to the slower model usually discover they added latency without changing a single approval decision.

Routing between the two in production

Treat the model id as configuration, never as a literal buried inside a helper function. One environment variable plus one per job override gives you everything you need. You can move a whole workload to the other model without shipping code, and you can test the change on a slice of traffic before committing to it.

Default to Flare and make Sunburst opt in. Opt in beats opt out here, because the slower model raises your latency budget quietly. A team that defaults to precision often ships a sluggish product and never traces the cause. A team that defaults to speed hears complaints only from the jobs that genuinely needed precision, which is exactly the signal you want.

Log the model id next to every generated asset. When a client rejects an image six weeks later, you want to know which model produced it, at which quality tier, and from which prompt. Image work gets reviewed by humans on a slow loop, so that trace matters more here than it does for text generation.

Plan retries deliberately. Falling back from Sunburst to Flare after a timeout is sensible for a draft and wrong for a final asset. Decide which jobs may downgrade silently and which must fail loudly instead. That decision belongs in your queue configuration, not in an exception handler somebody wrote at midnight under pressure.

Switching models with curl

Both models accept the same request body on the same endpoint. Changing model is changing one string.

curl https://api.openai.com/v1/images/generations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "A ceramic mug on a linen tablecloth, soft window light",
    "quality": "high"
  }'

# Same call, precision editing model.
# Replace one value:
#   "model": "gpt-image-2.5-sunburst"
#
# In production, pin the dated snapshot instead:
#   "model": "gpt-image-2.5-flare-2026-09-08"
#   "model": "gpt-image-2.5-sunburst-2026-09-08"

Switching models in Node

Keep the model id in configuration so a routing change never requires a code deploy.

import OpenAI from 'openai';

const client = new OpenAI();

// Pin snapshots in production so a default change cannot alter your output.
const FAST = 'gpt-image-2.5-flare-2026-09-08';
const PRECISE = 'gpt-image-2.5-sunburst-2026-09-08';

async function generate({ prompt, finalPass = false, quality = 'high' }) {
  const result = await client.images.generate({
    model: finalPass ? PRECISE : FAST,
    prompt,
    quality,
  });

  return result.data[0].b64_json;
}

// Draft on the fast model.
const draft = await generate({ prompt: 'A ceramic mug on linen, soft window light' });

// Final pass on the precision model. Only the model string changed.
const shot = await generate({
  prompt: 'A ceramic mug on linen, soft window light',
  finalPass: true,
  quality: 'max',
});

Three misconceptions to clear up

Three claims about these two models circulate widely. All three are wrong, and each one leads to a bad production decision.

The first is that Sunburst costs more. It does not. Text input, image input, and image output bill at the same rates on both models. Those rates also match GPT Image 2, so moving up a generation adds nothing to your unit economics. Your bill moves when you change the quality setting or the output size, because both change how many image tokens a single request produces. The model name is not a cost lever.

The second is that Sunburst is a higher resolution model. It is not. Both models expose the same six quality settings and serve the same two endpoints. Detail comes from the quality tier and the size you request, not from which sibling you called. If your output looks soft on Flare, raise the quality tier before you switch models. Switching for sharpness is a category error and it will cost you latency without fixing anything.

The third is that Flare is GPT Image 2 under a new label. It is not. Flare belongs to the 2.5 generation. It runs faster than Images 2.0, it records a lower unsafe generation rate, and it carries the same lighting, texture, and reference preservation improvements the release introduced. Treating it as a rename means you will skip a migration that costs one string and delivers real gains.

A fourth confusion is worth heading off before it reaches your planning documents. Microsoft ships a model called MAI-Image-2.5. Different vendor, different product, coincidental version number. Search results blend the two constantly and so do secondhand summaries. Check the vendor before you copy any price, limit, or benchmark figure into a spreadsheet.

Frequently asked questions

Which model should I call by default?

Call gpt-image-2.5-flare. It is the default for good reason. It handles everyday generation, it returns images faster than Images 2.0, and it bills at the same token rates as Sunburst. Move a request to gpt-image-2.5-sunburst only when an edit has to land precisely, such as product shots, packaging text, or a chain of local edits applied to one image.

Does Sunburst cost more than Flare?

No. Text input, image input, and image output bill at identical rates on both models. Those rates also match GPT Image 2, so the upgrade adds nothing to your unit economics. What moves your bill is the quality setting and the output size, because both change how many image tokens the model produces for a single request.

Can I switch models per request?

Yes. The model is one string in the request body, and both models accept the same parameters on the same two endpoints. You can route per request based on whether the job is a draft or a final pass. Keep the value in configuration or in a per job field so changing the routing rule never requires a deploy.

Should I pin the dated snapshot?

In production, yes. Pin gpt-image-2.5-flare-2026-09-08 or gpt-image-2.5-sunburst-2026-09-08 so a future default change cannot alter your output overnight. Keep the unpinned alias in staging so you see new behavior before customers do. Snapshot pinning matters more for image models than for text models, because visual style drift is very hard to catch in automated tests.

Is Sunburst a higher resolution model?

No. Both models expose the same six quality settings, from low through auto. Detail comes from the quality tier and the size you request, not from the model name. If output looks soft on Flare, raise the quality tier first. Move to Sunburst only when the real problem is edit precision rather than pixel count.

Do both models support image editing?

Yes. Both serve the image generation endpoint and the image editing endpoint. Both accept text and images as input and return images only. Sunburst is not a separate editing API. It is a second model on the same surface, tuned so that edit instructions land more precisely, at the cost of extra time per request.

Were these the anonymous evaluation checkpoints people spotted before launch?

Community posts before launch linked anonymous arena checkpoints named mona lisa 1 and luna lisa alpha to this release. Treat that purely as pre launch speculation. OpenAI never published either name as an official identifier, and neither string works in an API call. The only names to write into your code are the two model ids and their dated snapshots.

Is MAI-Image-2.5 the same thing?

No. MAI-Image-2.5 is a Microsoft model. It shares a version number with ChatGPT Images 2.5 and nothing else. Search engines blend results for the two, and so do secondhand blog posts. Before you copy a price, a rate limit, or a benchmark into a planning document, confirm which vendor published it. The two are not interchangeable.

Keep reading

Sources