---
title: Subject consistency — GPT-Image-2.5 Flare | Runware Docs
url: https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency
description: "How to keep one product or character recognisable across new scenes with GPT-Image-2.5 Flare: how many reference images to send, and how to say what each one is for."
---
### [Introduction](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#introduction)

A catalogue needs one product photographed in a dozen situations, and a campaign needs one character across a dozen frames. Generating each one from a prompt gives you a dozen **near-misses**, each plausible on its own and none of them the same object twice.

Passing the thing itself as a reference changes the job from describing to matching. OpenAI's stated gain in 2.5 is that subjects come back **more recognisable**, with distinctive features carrying through into new settings, styles and compositions. Three photographs of one boot go in, and a scene it was never photographed in comes out.

![A two-tone olive and tan leather hiking boot with black lacing planted on a granite slab, worn by a hiker in dark technical trousers, with pine trees and a valley blurred behind](https://runware.ai/docs/assets/output-hero.vB_IIUo3_1kwjNt.jpg)

> **Prompt**: Photograph the exact hiking boot from the reference images being worn on a rocky trail, one boot planted on a granite slab with the ankle and lower calf of a hiker in dark technical trousers above it, pine trees and a valley falling away out of focus behind. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Low three-quarter shot at ground height, 35mm lens, warm late afternoon light from the left. Photoreal outdoor lifestyle photography.

**Front**:

![A two-tone olive and tan leather hiking boot photographed straight on from the front against a plain light grey background](https://runware.ai/docs/assets/ref-boot-front.D6g_RYqk_Z2wmNDw.jpg)

**Side**:

![The same hiking boot photographed from the side showing its lacing hardware and panel seams](https://runware.ai/docs/assets/ref-boot-side.Du7W7OXH_Z1hnjz1.jpg)

**Sole**:

![The same hiking boot tilted to show its black lug sole pattern](https://runware.ai/docs/assets/ref-boot-sole.U_EOf4OC_Z1d25XR.jpg)

The panel split, the lacing hardware and the lug pattern all came from the three references. The trail, the hiker and the light came from the prompt.

This guide covers the request, running one subject through several scenes, how many references to send, telling the model what each reference is for, and where identity slips.

### [The request](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#the-request)

The subject goes in `inputs.referenceImages` and the scene goes in `positivePrompt`. Up to **sixteen images** are accepted.

**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: 'Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot\'s two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette.',
  inputs: {
    referenceImages: [
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/2b5c8e1f-4a70-4d92-8163-7e0a5c9d2f48.jpg',
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/6f9a2d4b-8c15-4e37-b520-1a4d7e0f3c69.jpg',
      'https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3b6c8d-0f42-4a75-9138-4c7f1b5e8a20.jpg'
    ]
  },
  width: 1536,
  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": "Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette.",
            "inputs": {
                "referenceImages": [
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/2b5c8e1f-4a70-4d92-8163-7e0a5c9d2f48.jpg",
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/6f9a2d4b-8c15-4e37-b520-1a4d7e0f3c69.jpg",
                    "https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3b6c8d-0f42-4a75-9138-4c7f1b5e8a20.jpg"
                ]
            },
            "width": 1536,
            "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": "1d4e7a2b-5c93-4806-b17f-9e2a4c6d8b50",
      "model": "openai:gpt-image@2.5-flare",
      "positivePrompt": "Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette.",
      "inputs": {
        "referenceImages": [
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/2b5c8e1f-4a70-4d92-8163-7e0a5c9d2f48.jpg",
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/6f9a2d4b-8c15-4e37-b520-1a4d7e0f3c69.jpg",
          "https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3b6c8d-0f42-4a75-9138-4c7f1b5e8a20.jpg"
        ]
      },
      "width": 1536,
      "height": 1024
    }
  ]'
```

**CLI**:

```bash
runware run openai:gpt-image@2.5-flare \
  positivePrompt="Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette." \
  inputs.referenceImages.0=https://im.runware.ai/image/os/a14d18/ws/2/ii/2b5c8e1f-4a70-4d92-8163-7e0a5c9d2f48.jpg \
  inputs.referenceImages.1=https://im.runware.ai/image/os/a14d18/ws/2/ii/6f9a2d4b-8c15-4e37-b520-1a4d7e0f3c69.jpg \
  inputs.referenceImages.2=https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3b6c8d-0f42-4a75-9138-4c7f1b5e8a20.jpg \
  width=1536 \
  height=1024
```

**JSON**:

```json
{
  "taskType": "imageInference",
  "taskUUID": "1d4e7a2b-5c93-4806-b17f-9e2a4c6d8b50",
  "model": "openai:gpt-image@2.5-flare",
  "positivePrompt": "Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette.",
  "inputs": {
    "referenceImages": [
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/2b5c8e1f-4a70-4d92-8163-7e0a5c9d2f48.jpg",
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/6f9a2d4b-8c15-4e37-b520-1a4d7e0f3c69.jpg",
      "https://im.runware.ai/image/os/a14d18/ws/2/ii/9e3b6c8d-0f42-4a75-9138-4c7f1b5e8a20.jpg"
    ]
  },
  "width": 1536,
  "height": 1024
}
```

The instruction is doing two jobs at once, and both are needed. It **describes the new scene** the way any prompt would, and it **names the features that have to survive** the move. A prompt that only describes the scene invites the model to treat the references as inspiration.

### [One subject, several scenes](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#one-subject-several-scenes)

The production case is a set: the same object rendered for a listing, an editorial page and a retail mock-up, from one shoot. The same three references produced both frames below.

![An overhead flat-lay on pale birch of the olive and tan hiking boot on its side beside a rolled wool sock, a folded topographic map, a brass compass and a coil of climbing cord](https://runware.ai/docs/assets/output-scene-flatlay.DuEsjB6x_2eQaDk.jpg)

*Retail flat-lay*

> **Prompt**: Photograph the exact hiking boot from the reference images laid on its side on a pale birch surface as part of a flat-lay, next to a rolled wool sock, a folded topographic map, a brass compass and a length of climbing cord. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Top-down camera, 50mm lens, even diffuse daylight, every item squared to the frame. Photoreal outdoor retail flat-lay photography, warm neutral palette.

![The olive and tan hiking boot standing on a pale oak plinth in an outdoor clothing shop, with a wall of folded jackets blurred behind it](https://runware.ai/docs/assets/output-scene-retail.DCboK6u2_Z2133an.jpg)

*Retail display*

> **Prompt**: Photograph the exact hiking boot from the reference images standing on a pale oak display plinth in an outdoor clothing shop, a wall of folded technical jackets softly out of focus behind it. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. Eye-level three-quarter shot, 50mm lens, warm shop lighting from above, shallow depth of field. Photoreal retail interior photography.

Both prompts carry **the same preserve clause word for word**. Rewriting it each time is where sets drift, so keep it as one string in your code and concatenate it onto each scene description.

### [How many references to send](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#how-many-references-to-send)

One reference is enough to establish a subject. More references establish it **from angles the first one could not show**, which is what stops the model from inventing the parts it cannot see. The same scene prompt, run once with the front view alone and once with all three.

![The olive and tan hiking boot on a mossy log photographed front-on, the same angle as the reference, with the heel and sole edge not visible at all](https://runware.ai/docs/assets/output-one-ref.D4Ru2pe6_1LbHnt.jpg)

*One reference: the requested angle never arrives*

> **Prompt**: Photograph the exact hiking boot from the reference images on a mossy log in a forest clearing, seen from behind and slightly above so the heel and the sole edge are visible. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. 50mm lens, soft overcast light. Photoreal outdoor lifestyle photography.

![The same boot on the same mossy log seen from a rear three-quarter angle, its tan heel counter and the lug tread along the sole edge both visible](https://runware.ai/docs/assets/output-three-refs.DG4ZVvOY_1WVJ1E.jpg)

*Three references: the heel and the sole edge show up*

> **Prompt**: Photograph the exact hiking boot from the reference images on a mossy log in a forest clearing, seen from behind and slightly above so the heel and the sole edge are visible. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the references. 50mm lens, soft overcast light. Photoreal outdoor lifestyle photography.

Both prompts ask for the boot **seen from behind**, with the heel and the sole edge in view. Only one of them got it.

Given the front view alone, the model returned another front view. It did not invent a plausible-but-wrong heel, it **declined the angle** and fell back on the geometry it had been shown. Given the sole and side as well, the same prompt produced the rear three-quarter it asked for, tan heel counter and lug tread and all.

That failure mode is worth recognising because it is quiet. **A missing angle comes back as the wrong angle**, not as an error, so a batch can be full of subtly off-brief compositions that each look fine alone. Send the angles the target scene will show: a packshot set that only shoots front and side leaves the model nothing to build a sole from, and a character sheet that is all face leaves it nothing for the back of the head.

Past that point, more images stop helping. **Three to five is the working range** for one subject, and the sixteen-image ceiling is there for compositions built from several different subjects rather than for many views of one.

### [Telling the model what each reference is for](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#telling-the-model-what-each-reference-is-for)

References are not labelled, so a mixed set needs the prompt to sort them. Refer to each one **by what it contains**, not by its position in the array.

![The olive and tan hiking boot standing on the floorboards of a timber cabin beside a wood burner, with a rolled wool blanket on a bench behind it](https://runware.ai/docs/assets/output-combined.C_cZ8TNk_Z1hpDcv.jpg)

> **Prompt**: Photograph the exact hiking boot from the boot reference images standing on the floorboards of the cabin interior from the other reference image, beside the wood burner, with a rolled wool blanket on the bench behind it. Keep the boot's two-tone olive and tan leather panels, its black lacing hardware, its lace pattern and its lug sole exactly as they are in the boot references, and keep the cabin's timber walls, its floorboards and its window exactly as they are in the interior reference. Low three-quarter shot at floor height, 35mm lens, warm light from the window on the right. Photoreal interior lifestyle photography.

**Subject**:

![The hiking boot photographed from the side against a plain light grey background](https://runware.ai/docs/assets/ref-boot-side.Du7W7OXH_Z1hnjz1.jpg)

**Setting**:

![The interior of a timber cabin with a small wood burner, a bench under a window and wide floorboards](https://runware.ai/docs/assets/ref-setting-cabin.-dj5BUT__ZVfG3i.jpg)

"The boot reference images" and "the cabin interior from the other reference image" are how you keep two subjects apart. **Describe each reference in words the image would answer to**, and give each one its own preserve clause. Without that, the model averages them and puts a boot-coloured object in a cabin-coloured room.

> [!NOTE]
> Reference order carries no meaning you can rely on. Anything that depends on which image is which belongs in the prompt as a description, not as an assumption about the array.

### [Where identity slips](https://runware.ai/docs/models/openai-gpt-image-2-5-flare/guides/subject-consistency#where-identity-slips)

Three failure modes are worth recognising, because each has a different fix.

**A feature the references never showed** gets invented. The fix is another reference, not a longer prompt.

**A feature drifts under a new light.** A colour photographed in daylight and rendered under warm shop lighting reads differently, and the model is not always careful about which change is the lighting and which is the product. Naming the finish ("matte olive leather, not glossy") holds it better than naming the colour alone.

**The subject gets absorbed by the scene.** A very detailed scene description with a short preserve clause tilts the model toward the scene. Keep the preserve clause proportionate to the scene description, and put it after the scene rather than before it.

> [!WARNING]
> Identity matching is **similarity, not reproduction**. For anything that has to be exactly right rather than convincingly close, such as a logo, a serial number or legal copy on packaging, composite it afterwards rather than asking the model to carry it through.

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

1. **Send the angles the scene will show.** A view the references never contained is a view the model invents.
    
2. **Keep the preserve clause identical across a set.** One string in your code, concatenated onto every scene, is what makes a set look like a set.
    
3. **Name features, not just the object.** "Its two-tone panels and black lacing hardware" holds where "the boot" drifts.
    
4. **Describe each reference by its content** when you send more than one subject. Array position means nothing to the model.
    
5. **Balance the two halves.** A long scene description with a short preserve clause tips the result toward the scene.
    
6. **Three to five references per subject.** The sixteen-image ceiling is for multi-subject compositions, not for more views of the same thing.