---
title: Quality levels — GPT-Image-2.5 Flare | Runware Docs
url: https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels
description: "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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#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**.

**low**:

![A stainless steel automatic wristwatch with a navy sunburst dial on a grey stone surface, shot at a three-quarter angle](https://runware.ai/docs/assets/output-ladder-low.vApjgP7-_zhf21.jpg)

> **Prompt**: 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.

**medium**:

![A different take on the same brief, the watch turned further towards the camera](https://runware.ai/docs/assets/output-ladder-medium.DMza2hC4_Z1fhg8P.jpg)

> **Prompt**: 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.

**high**:

![Another take, the watch shot from a higher angle with the strap running to the lower left](https://runware.ai/docs/assets/output-ladder-high.BFsJ1iMr_1R5iTw.jpg)

> **Prompt**: 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.

**xhigh**:

![Another take, the watch flatter to the frame with the crown to the right](https://runware.ai/docs/assets/output-ladder-xhigh.ZXHgdUNX_Z2m76pa.jpg)

> **Prompt**: 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.

**max**:

![A final take, the watch angled with its strap crossing the upper right of the frame](https://runware.ai/docs/assets/output-ladder-max.DbC53cZE_ZBXreW.jpg)

> **Prompt**: 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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#the-request)

The setting sits alongside the other model settings.

**TypeScript**:

```typescript
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
})
```

**Python**:

```python
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**:

```bash
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
    }
  ]'
```

**CLI**:

```bash
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
```

**JSON**:

```json
{
  "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
}
```

`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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#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.

**low**:

![A head-and-shoulders beauty portrait of a woman with freckled skin and dark curly hair against a warm grey backdrop, her skin rendered smoothly and her hairline soft](https://runware.ai/docs/assets/output-portrait-low.Dta4LRkH_M3z4B.jpg)

**max**:

![The same portrait brief rendered at the top of the ladder, with pores, freckles and individual flyaway hairs along the hairline resolved](https://runware.ai/docs/assets/output-portrait-max.B6S5FYa__uKwMM.jpg)

> **Prompt**: A beauty brand portrait of a woman in her thirties with freckled skin and dark curly hair worn loose, photographed head-on against a soft warm grey backdrop, natural makeup, bare shoulders, clear catchlights in both eyes. One large softbox from the front left with gentle falloff to the right. Close head-and-shoulders crop, 85mm lens, shallow depth of field. Photoreal beauty photography, natural skin texture with visible pores, fine flyaway hairs along the hairline.

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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#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 flat minimalist poster with a solid mustard yellow circle centred on a warm cream background](https://runware.ai/docs/assets/output-simple-low.Bcf5uSnq_Z2emTB3.jpg)

*low*

> **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.

![The same flat poster of a mustard yellow circle on cream, visually indistinguishable from the lower quality render](https://runware.ai/docs/assets/output-simple-max.-AWAApR3_2pUse7.jpg)

*max*

> **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.

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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare).

> [!WARNING]
> 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](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#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.

> [!NOTE]
> 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](https://runware.ai/docs/models/openai-gpt-image-2-5-sunburst/guides/precision-editing) is the variant built for that case.

### [Tips](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/quality-levels#tips)

1. **Set it explicitly.** `auto` gives you a level you did not choose, which means a cost you cannot predict and a batch you cannot reproduce.
    
2. **Match the level to the detail.** Fine texture and small elements pay for effort. Flat colour does not.
    
3. **Explore at `low`, ship at `high` or above.** Most renders are rejected on composition, and composition is the one thing the ladder does not change.
    
4. **Keep the level fixed across a set.** Mixed levels in one batch read as inconsistent processing rather than as a saving.
    
5. **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.
    
6. **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.