GPT-Image-2.6 Flare

GPT-Image-2.6 Flare is OpenAI's fast image model for generation and editing in interactive workflows. Besides raster images, it generates SVG graphics and animated GIFs from text, and it edits images from marks drawn over them, like a circle around the object to change. A thinking level sets how much it plans before rendering, separate from rendering quality.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesQuality and thinking level
How to set the two effort controls on GPT-Image-2.6 Flare: settings.thinkingLevel to plan a layout, settings.quality to render it, and when to lower each one.
Introduction
Flare has two effort controls, and they work on different stages of the same image. settings.thinkingLevel sets how much the model plans the composition before it renders anything: where each element goes and how the parts relate to each other. settings.quality sets how much rendering effort goes into drawing that plan.

A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled "AURA 200", a mid-size white cylinder with a pale oak base labeled "AURA 400", and a tall charcoal tower labeled "AURA 600". Below the photos, a table with five rows labeled on the left "Room size", "Filter", "Noise", "App control" and "Price". Room size reads "250 sq ft", "450 sq ft" and "800 sq ft". Filter reads "HEPA", "HEPA + carbon" and "HEPA + carbon". Noise reads "24 dB", "22 dB" and "20 dB". App control shows a gray dash, a green check mark and a green check mark. Price reads "$149", "$229" and "$349". The middle column has a thin teal outline and a small teal "BEST SELLER" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text.
The chart needs both. Planning puts every value in its row and column and keeps the highlight on the middle product. Rendering finishes the three product photos that head the columns.
This guide covers the request, the thinking level on a dense layout, quality on photoreal detail, lowering the thinking level for focused edits, and what each control does to cost and latency.
The request
Both controls sit in settings, and each one can be set without the other.
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.6-flare',
positivePrompt: 'A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled "AURA 200", a mid-size white cylinder with a pale oak base labeled "AURA 400", and a tall charcoal tower labeled "AURA 600". Below the photos, a table with five rows labeled on the left "Room size", "Filter", "Noise", "App control" and "Price". Room size reads "250 sq ft", "450 sq ft" and "800 sq ft". Filter reads "HEPA", "HEPA + carbon" and "HEPA + carbon". Noise reads "24 dB", "22 dB" and "20 dB". App control shows a gray dash, a green check mark and a green check mark. Price reads "$149", "$229" and "$349". The middle column has a thin teal outline and a small teal "BEST SELLER" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text.',
settings: {
thinkingLevel: 'high',
quality: 'high'
},
width: 1536,
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.6-flare",
"positivePrompt": "A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled \"AURA 200\", a mid-size white cylinder with a pale oak base labeled \"AURA 400\", and a tall charcoal tower labeled \"AURA 600\". Below the photos, a table with five rows labeled on the left \"Room size\", \"Filter\", \"Noise\", \"App control\" and \"Price\". Room size reads \"250 sq ft\", \"450 sq ft\" and \"800 sq ft\". Filter reads \"HEPA\", \"HEPA + carbon\" and \"HEPA + carbon\". Noise reads \"24 dB\", \"22 dB\" and \"20 dB\". App control shows a gray dash, a green check mark and a green check mark. Price reads \"$149\", \"$229\" and \"$349\". The middle column has a thin teal outline and a small teal \"BEST SELLER\" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text.",
"settings": {
"thinkingLevel": "high",
"quality": "high"
},
"width": 1536,
"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": "7d2e4a91-3c58-4b6f-9e17-a5c08b3d2f64",
"model": "openai:gpt-image@2.6-flare",
"positivePrompt": "A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled \"AURA 200\", a mid-size white cylinder with a pale oak base labeled \"AURA 400\", and a tall charcoal tower labeled \"AURA 600\". Below the photos, a table with five rows labeled on the left \"Room size\", \"Filter\", \"Noise\", \"App control\" and \"Price\". Room size reads \"250 sq ft\", \"450 sq ft\" and \"800 sq ft\". Filter reads \"HEPA\", \"HEPA + carbon\" and \"HEPA + carbon\". Noise reads \"24 dB\", \"22 dB\" and \"20 dB\". App control shows a gray dash, a green check mark and a green check mark. Price reads \"$149\", \"$229\" and \"$349\". The middle column has a thin teal outline and a small teal \"BEST SELLER\" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text.",
"settings": {
"thinkingLevel": "high",
"quality": "high"
},
"width": 1536,
"height": 1024
}
]'runware run openai:gpt-image@2.6-flare \
positivePrompt="A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled \"AURA 200\", a mid-size white cylinder with a pale oak base labeled \"AURA 400\", and a tall charcoal tower labeled \"AURA 600\". Below the photos, a table with five rows labeled on the left \"Room size\", \"Filter\", \"Noise\", \"App control\" and \"Price\". Room size reads \"250 sq ft\", \"450 sq ft\" and \"800 sq ft\". Filter reads \"HEPA\", \"HEPA + carbon\" and \"HEPA + carbon\". Noise reads \"24 dB\", \"22 dB\" and \"20 dB\". App control shows a gray dash, a green check mark and a green check mark. Price reads \"\$149\", \"\$229\" and \"\$349\". The middle column has a thin teal outline and a small teal \"BEST SELLER\" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text." \
settings.thinkingLevel=high \
settings.quality=high \
width=1536 \
height=1024{
"taskType": "imageInference",
"taskUUID": "7d2e4a91-3c58-4b6f-9e17-a5c08b3d2f64",
"model": "openai:gpt-image@2.6-flare",
"positivePrompt": "A product comparison chart for an online home appliance store, landscape layout on a clean white background. Three columns, each topped by a photoreal product photo of an air purifier on a soft gray studio backdrop: a compact white cylinder labeled \"AURA 200\", a mid-size white cylinder with a pale oak base labeled \"AURA 400\", and a tall charcoal tower labeled \"AURA 600\". Below the photos, a table with five rows labeled on the left \"Room size\", \"Filter\", \"Noise\", \"App control\" and \"Price\". Room size reads \"250 sq ft\", \"450 sq ft\" and \"800 sq ft\". Filter reads \"HEPA\", \"HEPA + carbon\" and \"HEPA + carbon\". Noise reads \"24 dB\", \"22 dB\" and \"20 dB\". App control shows a gray dash, a green check mark and a green check mark. Price reads \"$149\", \"$229\" and \"$349\". The middle column has a thin teal outline and a small teal \"BEST SELLER\" tab above it. Crisp legible sans-serif typography, thin light gray row dividers, generous spacing, no other text.",
"settings": {
"thinkingLevel": "high",
"quality": "high"
},
"width": 1536,
"height": 1024
}Response
[
{
"taskType": "imageInference",
"taskUUID": "7d2e4a91-3c58-4b6f-9e17-a5c08b3d2f64",
"imageUUID": "e4b19c7a-5d26-4f83-a0e1-3c7d9b5f2a18",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/e4b19c7a-5d26-4f83-a0e1-3c7d9b5f2a18.jpg"
}
]| Setting | Controls | Values | Default |
|---|---|---|---|
settings.thinkingLevel | Planning before rendering | low, medium, high | high |
settings.quality | Rendering effort | auto, low, medium, high, xhigh, max | auto |
A request that sends neither runs at the top thinking level and leaves quality to the model. OpenAI's own documentation calls the thinking level complexity, so that is the name to look for in their material.
auto lets the model pick the rendering level, which is fine while you test a prompt. For batch work, set quality explicitly. Quality drives the output tokens of each image, and auto takes that choice out of your hands.
Planning a dense layout
The thinking level matters most where elements depend on each other: numbered stops that match a key, values that line up across columns, icons that agree with a legend, labels that point at one part of a diagram. OpenAI recommends the higher levels for dense text, complex layouts and relationships between objects.
Both itineraries below were rendered at quality: "high", so the planning is the only setting that differs.

A travel itinerary infographic for a five-day trip to Lisbon, designed as a portrait trip summary screen for a travel app. At the top, the title "LISBON IN 5 DAYS" and below it "May 12 to 16". The upper half is a flat stylized map of the city along the river, with five terracotta circular pins numbered 1 to 5, joined in order by a dotted navy route line. The lower half is a vertical timeline of five day cards. Each card starts with its day number in a terracotta circle like the pins, then a start time, a place name and a small transport icon: card 1 "9:00" "Alfama and the castle" with a walking icon, card 2 "10:00" "Belém and the river" with a tram icon, card 3 "8:30" "Day trip to Sintra" with a train icon, card 4 "18:00" "Bairro Alto food tour" with a walking icon, card 5 "11:00" "Cascais coast" with a train icon. At the bottom, a legend row with the three icons labeled "Walk", "Tram" and "Train". Flat vector style, navy text on a warm sand background, terracotta accents, crisp legible sans-serif typography, no other text.

A travel itinerary infographic for a five-day trip to Lisbon, designed as a portrait trip summary screen for a travel app. At the top, the title "LISBON IN 5 DAYS" and below it "May 12 to 16". The upper half is a flat stylized map of the city along the river, with five terracotta circular pins numbered 1 to 5, joined in order by a dotted navy route line. The lower half is a vertical timeline of five day cards. Each card starts with its day number in a terracotta circle like the pins, then a start time, a place name and a small transport icon: card 1 "9:00" "Alfama and the castle" with a walking icon, card 2 "10:00" "Belém and the river" with a tram icon, card 3 "8:30" "Day trip to Sintra" with a train icon, card 4 "18:00" "Bairro Alto food tour" with a walking icon, card 5 "11:00" "Cascais coast" with a train icon. At the bottom, a legend row with the three icons labeled "Walk", "Tram" and "Train". Flat vector style, navy text on a warm sand background, terracotta accents, crisp legible sans-serif typography, no other text.
Read the cards against the map and the legend. Both levels kept the links on this brief: each numbered pin has a day card with the same number, every time and place is the one the prompt quoted, and each transport icon matches the legend.
Flare has no seed, so every render is a new take on the prompt. Judge a pair like this on structure rather than on where the river landed, and judge a level over a few renders rather than one.
high is the default, and it is the level OpenAI recommends for anything a reader has to follow: infographics, comparison tables, menus and dashboards. Lowering it can shorten the wait. Before you keep a lower level in production, check the links between elements across a few renders of your own brief.
Rendering detail
quality works on the finish of what was planned, and it sets the output tokens of every render. OpenAI suggests low for quick drafts and comparing the higher levels for final assets, weighing detail against latency and cost.
Both packshots below were planned at thinkingLevel: "high" and rendered at quality: "low" and quality: "high". The loupe on each sits over the leaves.

An e-commerce product photograph of a calathea ornata houseplant in a speckled cream stoneware pot, standing on a plain warm white seamless backdrop. Deep green oval leaves marked with fine pale pink pinstripes running from the midrib to the leaf edge, the purple underside visible on two leaves, a top dressing of bark chips over the soil. Soft diffused studio light from the upper left, a gentle shadow to the right of the pot. Straight-on shot at pot height, 85mm lens, the plant centered with plain backdrop on both sides. Photoreal plant shop product photography, natural color, no text.

An e-commerce product photograph of a calathea ornata houseplant in a speckled cream stoneware pot, standing on a plain warm white seamless backdrop. Deep green oval leaves marked with fine pale pink pinstripes running from the midrib to the leaf edge, the purple underside visible on two leaves, a top dressing of bark chips over the soil. Soft diffused studio light from the upper left, a gentle shadow to the right of the pot. Straight-on shot at pot height, 85mm lens, the plant centered with plain backdrop on both sides. Photoreal plant shop product photography, natural color, no text.
On this packshot low already resolves the fine texture. The pink pinstripes are separate thin lines from the midrib to the edge of each leaf in both renders, and the glaze carries the same individual flecks. A single product on a plain backdrop leaves the extra effort little to work on, so compare a low render with a higher level on your own subject before you pay for the higher one.
A higher level does not improve the framing or the styling, which come from the prompt. Fix those first, then raise the level.
Focused edits
An edit turns the guidance around. OpenAI recommends a lower thinking level for focused edits, such as changing a background or a sign, and notes that a higher level can introduce changes you did not ask for. The source already holds the composition, so a change to one element has little for planning to add.
The source below was generated with Flare. The edit changes only the poster in the left window, at thinkingLevel: "low".
Drag the handle across the window. The poster now reads "SUMMER SALE" over "20% OFF", and the rest of the shop front is unchanged: the fascia lettering, the bicycles, the reflections on the glass and the bike rack at the curb.
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.6-flare',
positivePrompt: 'Change only the poster in the left window so it reads "SUMMER SALE" in bold black text with "20% OFF" below it in red, printed on the same white paper at the same size and position. Keep everything else exactly as it is: the green shop front, the "CITY CYCLES" lettering, the glass door, the bicycles in the windows, the reflections on the glass, the sidewalk, the bike rack, the lighting and the framing.',
inputs: {
referenceImages: [
'https://assets.runware.ai/guides/openai-gpt-image-2-6-flare/quality-and-thinking-level/source-edit.jpg'
]
},
settings: {
thinkingLevel: 'low',
quality: 'high'
},
width: 1536,
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.6-flare",
"positivePrompt": "Change only the poster in the left window so it reads \"SUMMER SALE\" in bold black text with \"20% OFF\" below it in red, printed on the same white paper at the same size and position. Keep everything else exactly as it is: the green shop front, the \"CITY CYCLES\" lettering, the glass door, the bicycles in the windows, the reflections on the glass, the sidewalk, the bike rack, the lighting and the framing.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/openai-gpt-image-2-6-flare/quality-and-thinking-level/source-edit.jpg"
]
},
"settings": {
"thinkingLevel": "low",
"quality": "high"
},
"width": 1536,
"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": "2a9f5c3e-81d4-4e7b-b6a2-0f4c8d1e9b73",
"model": "openai:gpt-image@2.6-flare",
"positivePrompt": "Change only the poster in the left window so it reads \"SUMMER SALE\" in bold black text with \"20% OFF\" below it in red, printed on the same white paper at the same size and position. Keep everything else exactly as it is: the green shop front, the \"CITY CYCLES\" lettering, the glass door, the bicycles in the windows, the reflections on the glass, the sidewalk, the bike rack, the lighting and the framing.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/openai-gpt-image-2-6-flare/quality-and-thinking-level/source-edit.jpg"
]
},
"settings": {
"thinkingLevel": "low",
"quality": "high"
},
"width": 1536,
"height": 1024
}
]'runware run openai:gpt-image@2.6-flare \
positivePrompt="Change only the poster in the left window so it reads \"SUMMER SALE\" in bold black text with \"20% OFF\" below it in red, printed on the same white paper at the same size and position. Keep everything else exactly as it is: the green shop front, the \"CITY CYCLES\" lettering, the glass door, the bicycles in the windows, the reflections on the glass, the sidewalk, the bike rack, the lighting and the framing." \
inputs.referenceImages.0=https://assets.runware.ai/guides/openai-gpt-image-2-6-flare/quality-and-thinking-level/source-edit.jpg \
settings.thinkingLevel=low \
settings.quality=high \
width=1536 \
height=1024{
"taskType": "imageInference",
"taskUUID": "2a9f5c3e-81d4-4e7b-b6a2-0f4c8d1e9b73",
"model": "openai:gpt-image@2.6-flare",
"positivePrompt": "Change only the poster in the left window so it reads \"SUMMER SALE\" in bold black text with \"20% OFF\" below it in red, printed on the same white paper at the same size and position. Keep everything else exactly as it is: the green shop front, the \"CITY CYCLES\" lettering, the glass door, the bicycles in the windows, the reflections on the glass, the sidewalk, the bike rack, the lighting and the framing.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/openai-gpt-image-2-6-flare/quality-and-thinking-level/source-edit.jpg"
]
},
"settings": {
"thinkingLevel": "low",
"quality": "high"
},
"width": 1536,
"height": 1024
}Response
[
{
"taskType": "imageInference",
"taskUUID": "2a9f5c3e-81d4-4e7b-b6a2-0f4c8d1e9b73",
"imageUUID": "b8c3e1f5-6a47-4d92-8e05-1d3f7a9c4b26",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/b8c3e1f5-6a47-4d92-8e05-1d3f7a9c4b26.jpg"
}
]Keep quality at the source's level. The edit returns a whole new image, so the quality setting applies to every part of it and not only to the poster. Writing the instruction itself is covered in editing images.
Cost and latency
Flare bills per token, with separate rates for text input, image input and image output, listed on the model page. Quality and size set the output tokens of a render, so a higher level or a larger frame costs more for the same prompt. An edit also pays for its source as image input.
The thinking level has no separate fee, according to OpenAI. What a higher level can add is latency.
Token counts depend on the prompt and the image, so measure before you budget: run a few requests at the level and size you plan to use and read what each one cost.
Choosing the levels
| Job | Thinking level | Quality |
|---|---|---|
| Infographics, tables, menus, dashboards | high | high |
| Product shots on a plain backdrop | high | low first, then compare higher levels |
| Drafts and options | the final's level | low |
| Focused edits | low | the source's level |
Draft at quality: "low" and keep thinkingLevel where the final will run. The thinking level shapes the layout, so a draft planned at a different level shows you a layout the final will not get. With no seed, the final is a new take on the prompt you settled on rather than a sharper copy of the draft, so the prompt is what carries over from drafting.
Tips
-
Leave
thinkingLevelathighfor anything with structure. Tables and numbered keys depend on planning, and the default is already the top level. -
Drop it to
lowfor edits that change one element. OpenAI recommends it for focused changes, and a higher level can alter parts of the source you meant to keep. -
Set
qualityexplicitly in production.autohands the level, and with it the output tokens you pay for, to the model. -
Compare before you raise quality. On a product shot against a plain backdrop,
lowheld the same fine texture ashigh. -
Match the source's quality on edits. The returned image is rendered whole at the level you send.
-
Judge a level over several renders. There is no
seed, so a single pair differs for reasons beyond the setting.

