GPT-Image-2.5 Flare

GPT-Image-2.5 Flare is OpenAI's fastest model for high-quality image generation and editing, delivering higher-quality images than GPT Image 2 at 50% lower latency. It improves natural lighting, texture detail, reference-subject preservation, localized editing, and consistency across iterative edits, while handling complex layouts and transparent backgrounds. It is designed for creator content, product experiences, visual search, rapid prototyping, and high-volume generation.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesQuality levels
How to set rendering effort on GPT-Image-2.5 Flare with settings.quality: what each level changes, what it costs, and which subjects are worth the top of the ladder.
Introduction
Flare is the fast model in the 2.5 family, and settings.quality is the dial that decides how much of that speed you spend. It sets how much rendering effort goes into a single image, and effort here means time on the wall and tokens on the bill in equal measure.
The ladder has six positions. Four came across from GPT Image 2, and 2.5 adds two above them.

A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.

A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.

A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.

A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.

A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.
Step through them. Each one is a different take of the same brief, because the model has no seed and returns a fresh composition every call. That is normal for generating, and it only bites when you sit two renders side by side and try to attribute a difference to the setting.
This guide covers what the setting changes, what it does not, what it costs, and how to pick a level per job rather than per project.
The request
The setting sits alongside the other model settings.
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'openai:gpt-image@2.5-flare',
positivePrompt: 'A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o\'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.',
settings: {
quality: 'high'
},
width: 1024,
height: 1024
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "openai:gpt-image@2.5-flare",
"positivePrompt": "A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.",
"settings": {
"quality": "high"
},
"width": 1024,
"height": 1024
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "imageInference",
"taskUUID": "6c3e9a1d-4b78-4a05-8e26-1d7a3c5f9b04",
"model": "openai:gpt-image@2.5-flare",
"positivePrompt": "A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.",
"settings": {
"quality": "high"
},
"width": 1024,
"height": 1024
}
]'runware run openai:gpt-image@2.5-flare \
positivePrompt="A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography." \
settings.quality=high \
width=1024 \
height=1024{
"taskType": "imageInference",
"taskUUID": "6c3e9a1d-4b78-4a05-8e26-1d7a3c5f9b04",
"model": "openai:gpt-image@2.5-flare",
"positivePrompt": "A product photograph of a stainless steel automatic wristwatch with a brushed case, a navy sunburst dial, applied silver hour markers, a date window at three o'clock and a woven navy fabric strap, lying face up and slightly angled on a matte grey stone surface. Soft directional studio light from the upper left picking out the brushed grain on the case. Close three-quarter shot, 90mm macro lens, the watch filling most of the frame. Photoreal e-commerce product photography.",
"settings": {
"quality": "high"
},
"width": 1024,
"height": 1024
}Response
[
{
"taskType": "imageInference",
"taskUUID": "6c3e9a1d-4b78-4a05-8e26-1d7a3c5f9b04",
"imageUUID": "2f7b0d4e-8c31-4956-a7e0-5b1c9f3d6a82",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/2f7b0d4e-8c31-4956-a7e0-5b1c9f3d6a82.jpg"
}
]auto is the default, and it lets the model pick a level from what the prompt appears to need. It is a reasonable starting point and a poor production setting, because a level you did not choose is a cost you cannot predict and a render you cannot reproduce across a batch.
What the setting changes
Effort goes into resolving detail, not into rethinking the picture. Three things move as you climb.
Fine texture resolves. Skin, woven fabric, brushed metal, foliage and paper grain are where the levels separate first, because each is a pattern the model can spend more or less effort reconstructing.
Small elements hold together. Anything occupying a small share of the frame gains most, such as the hardware on a garment or the markers on a watch dial.
Dense boundaries stay separate. A frame carrying many objects has many edges to resolve, and low is where they start blurring into each other.
Composition and subject do not move, because those come from the prompt. Running the same brief at max gives you a better rendered idea, not a better idea.
The clearest place to see it is skin. Below is the same portrait brief at the bottom and the top of the ladder.
Drag the handle across her cheek and hairline. Skin is the least forgiving subject on this dial, because a face is where a viewer notices smoothing without being able to name it. Fabric and foliage can carry a soft render, a portrait cannot.
The two are different takes, so ignore the pose and read the texture. Any single pair differs for reasons beyond the setting, and the pattern is what holds across a batch.
When the ladder does not pay
A simple subject on a plain background has little for the extra effort to work on. The two renders below are low and max of the same prompt.

A minimalist poster design, a single solid mustard yellow circle centred on a plain warm cream background, generous even margins, no text, no texture, flat print-ready graphic design.

A minimalist poster design, a single solid mustard yellow circle centred on a plain warm cream background, generous even margins, no text, no texture, flat print-ready graphic design.
Two flat shapes and a margin. The extra effort has nowhere to go, and the only reliable difference between the two files is what they cost. Flat illustration, solid-colour graphics and simple icon work all sit in this bracket, which makes them the obvious place to run low and stop thinking about it.
Cost and speed
Both scale with the level, and they scale together. Image output is billed per token, and a higher quality level spends more output tokens on the same image, so the level is the main lever you have over what a render costs. The current rates are on the model page.
Do not size a budget from a GPT Image 2 estimate. OpenAI's own note is that the token rates match GPT Image 2 while the GPT Image 2 calculator does not estimate 2.5 token consumption, so the price per token carries over and the token count does not. Measure a real batch at your chosen level before you commit to a number.
Choosing a level
Pick per job, and the decision usually falls out of two questions: is a person going to look closely at this, and is there detail in it worth looking at.
low is for the loop. Exploring compositions, checking a layout, generating options nobody outside the team will see. It is also the right permanent setting for flat graphics.
medium is the everyday default for work that ships but is not the hero: category tiles, thumbnails, social crops, anything that will be viewed small.
high is the production setting for photoreal work at full size, and the level to start from for anything a customer will zoom into.
xhigh and max are for the final render of an asset that has earned it. A packshot on a product page, a print-bound image, a campaign key visual. Running a whole batch here is usually waste, because most of a batch gets rejected on composition rather than on detail.
The pattern that follows is explore low, ship high. Iterate at low until the composition is right, then re-run the winning prompt once at the level the asset deserves. Iteration is where the calls are, and the final render is the only one that has to be worth looking at.
If the top of the ladder still is not holding your edits together across several passes, the level is not the constraint and the model might be. GPT-Image-2.5 Sunburst is the variant built for that case.
Tips
-
Set it explicitly.
autogives you a level you did not choose, which means a cost you cannot predict and a batch you cannot reproduce. -
Match the level to the detail. Fine texture and small elements pay for effort. Flat colour does not.
-
Explore at
low, ship athighor above. Most renders are rejected on composition, and composition is the one thing the ladder does not change. -
Keep the level fixed across a set. Mixed levels in one batch read as inconsistent processing rather than as a saving.
-
Measure the cost yourself. Token rates carry over from GPT Image 2 and token counts do not, so a batch at your level is the only number worth budgeting from.
-
Judge a level over a few renders. There is no
seed, so a single pair differs for reasons beyond the setting. The pattern shows up across a handful.

