---
title: Animated GIFs — GPT-Image-2.6 Flare | Runware Docs
url: https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs
description: "How to generate looping animated GIFs with GPT-Image-2.6 Flare: prompting for motion, setting frame count and timing with settings.gif, and sizing the frames."
---
### [Introduction](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#introduction)

GPT-Image-2.6 Flare can return **a short looping animation instead of a still image**. Set `outputFormat` to `GIF` and the model draws a sequence of frames from your prompt and hands them back as one animated GIF file. That covers **small looping assets** such as a chat sticker, a loading state, a product spin or a sale banner.

[Watch video](https://runware.ai/docs/assets/output-hero.BopKAZwx.mp4)

*A prompt and no other settings: 9 frames at 0.2 seconds, 512 × 512*

> **Prompt**: Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders.

Every clip on this page is the returned GIF **converted to MP4 so the page can play it**. Your request gets the GIF file itself.

This guide covers prompting for motion, setting the frame count and the frame duration with `settings.gif`, sizing the frames, and the limits of GIF output.

### [The request](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#the-request)

A GIF needs **one field on top of a text-to-image request**: `outputFormat` set to `GIF`. The sticker above came from this request.

**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.6-flare',
  positivePrompt: 'Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders.',
  outputFormat: 'GIF'
})
```

**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.6-flare",
            "positivePrompt": "Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders.",
            "outputFormat": "GIF"
        })

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": "7d2f4a91-3c6e-4b58-9a17-e05c2b8f6d34",
      "model": "openai:gpt-image@2.6-flare",
      "positivePrompt": "Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders.",
      "outputFormat": "GIF"
    }
  ]'
```

**CLI**:

```bash
runware run openai:gpt-image@2.6-flare \
  positivePrompt="Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders." \
  outputFormat=GIF
```

**JSON**:

```json
{
  "taskType": "imageInference",
  "taskUUID": "7d2f4a91-3c6e-4b58-9a17-e05c2b8f6d34",
  "model": "openai:gpt-image@2.6-flare",
  "positivePrompt": "Create a short, seamlessly looping animated sticker for a messaging app. Subject: the mascot of a grocery delivery app, a round, friendly orange fox with a cream belly, big dark eyes and a small green delivery cap, standing upright and facing the viewer, shown full body and centered on a plain white background. One focused action only: the fox raises its right paw, waves it once from side to side with a happy blink, then lowers it again. The motion ends in precisely the same pose as the opening frame, paw down and eyes open, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat 2D cartoon illustration with bold clean outlines, flat colors and soft cel shading, readable at small sticker size. No text, logos or borders.",
  "outputFormat": "GIF"
}
```

Left at their defaults, the frames come back at **512 × 512**, and there are **9 of them, shown for 0.2 seconds each**, which makes a 1.8-second loop. The response `imageURL` ends in `.gif`. Frame count and timing go in `settings.gif`, and a request that sends it with any other `outputFormat` is rejected.

### [Prompting for motion](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#prompting-for-motion)

An animated prompt describes the scene the way a still prompt does, then adds **what moves and how the motion ends**. The spinner below is built from the parts that keep a loop clean.

**[Format]** Create a short, seamlessly looping animated loading indicator for a mobile app, **[Subject]** a circular progress spinner centered on a plain off-white background, a thin light gray ring with a thick rounded arc in vivid indigo covering about a quarter of the ring, **[Action]** One focused action only: the indigo arc travels clockwise around the ring through exactly one complete revolution at a steady speed, **[Loop]** The motion ends with the arc at precisely the same position as the opening frame, so the last frame transitions invisibly back to the first, **[Camera]** Locked camera, no cuts, no zoom, the ring and the background never move, **[Style]** Flat vector UI style, crisp edges, no shadows, no gradients, **[Exclusions]** No text, numbers, logos or other interface elements

[Watch video](https://runware.ai/docs/assets/output-spinner.BFDQvHZc.mp4)

*9 frames at 0.2 seconds, one revolution per loop*

> **Prompt**: Create a short, seamlessly looping animated loading indicator for a mobile app. Subject: a circular progress spinner centered on a plain off-white background, a thin light gray ring with a thick rounded arc in vivid indigo covering about a quarter of the ring. One focused action only: the indigo arc travels clockwise around the ring through exactly one complete revolution at a steady speed. The motion ends with the arc at precisely the same position as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the ring and the background never move. Flat vector UI style, crisp edges, no shadows, no gradients. No text, numbers, logos or other interface elements.

The frames are spread across the whole motion, so **a second action takes steps away from the first**. Ask for one, the way the spinner prompt does with "One focused action only".

A GIF plays its last frame and goes straight back to its first, so **a motion that stops anywhere else jumps on every repeat**. Name the end state in the prompt: the arc ends at the position it started from, and the sticker's fox ends paw down with its eyes open.

Write "Locked camera, no cuts, no zoom" and then **name what stays still**, here the ring and the background, so the rest of the image holds from frame to frame and the motion stays on the subject.

Motion that returns on its own is the easiest to loop: a rotation, a wave, a blink or a pulse.

### [Timing the animation](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#timing-the-animation)

`settings.gif` holds two fields, and **their product is the length of the loop**: `frameCount` frames, each shown for `frameDuration` seconds. **Frame count decides how finely the motion is divided**, and frame duration decides how fast it plays.

#### [Number of frames](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#number-of-frames)

`frameCount` takes 2 to 16 and defaults to 9. Both clips below turn the same watch through **one revolution in 1.2 seconds**, one with 4 frames held for 0.3 seconds each and one with 12 frames held for 0.1 seconds each.

[Watch video](https://runware.ai/docs/assets/output-frames-4.zlsmkBe7.mp4)

*4 frames at 0.3 seconds*

> **Prompt**: Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.

[Watch video](https://runware.ai/docs/assets/output-frames-12.Dhtyug0k.mp4)

*12 frames at 0.1 seconds*

> **Prompt**: Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.

Four frames can show only four views of a full turn, here the front, a three-quarter view, the side and the back, so the watch **jumps from view to view**. Twelve fill in the angles between them, and the turn reads as rotation.

Use **more frames for continuous motion** and fewer for an animation made of distinct states, where 2 frames are enough for a blink. A higher count also lowers the largest frame you can ask for, covered in [Frame sizes](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#frame-sizes).

**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.6-flare',
  positivePrompt: 'Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.',
  outputFormat: 'GIF',
  settings: {
    gif: {
      frameCount: 12,
      frameDuration: 0.1
    }
  }
})
```

**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.6-flare",
            "positivePrompt": "Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.",
            "outputFormat": "GIF",
            "settings": {
                "gif": {
                    "frameCount": 12,
                    "frameDuration": 0.1
                }
            }
        })

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": "2b9e6c14-8f3a-4d71-a5c0-6e4d1f7b92a8",
      "model": "openai:gpt-image@2.6-flare",
      "positivePrompt": "Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.",
      "outputFormat": "GIF",
      "settings": {
        "gif": {
          "frameCount": 12,
          "frameDuration": 0.1
        }
      }
    }
  ]'
```

**CLI**:

```bash
runware run openai:gpt-image@2.6-flare \
  positivePrompt="Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels." \
  outputFormat=GIF \
  settings.gif.frameCount=12 \
  settings.gif.frameDuration=0.1
```

**JSON**:

```json
{
  "taskType": "imageInference",
  "taskUUID": "2b9e6c14-8f3a-4d71-a5c0-6e4d1f7b92a8",
  "model": "openai:gpt-image@2.6-flare",
  "positivePrompt": "Create a short, seamlessly looping animated product spin for an online store listing. Subject: a smartwatch with a rounded square black aluminum case, a dark screen showing a minimal watch face with two white hands and no numbers, and a sage green silicone sport band, mounted upright on a small display stand on a round white turntable against a plain light gray studio background. One focused action only: the turntable turns the watch through exactly one complete revolution at a steady speed, showing the front, the side with the crown, the back and the other side in turn. The motion ends at precisely the same orientation as the opening frame, watch face toward the viewer, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the background and lighting never move. Photoreal e-commerce product photography, soft even studio lighting, a soft contact shadow under the turntable. No text, logos or labels.",
  "outputFormat": "GIF",
  "settings": {
    "gif": {
      "frameCount": 12,
      "frameDuration": 0.1
    }
  }
}
```

#### [Seconds per frame](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#seconds-per-frame)

`frameDuration` sets **how long each frame stays on screen**, from 0.02 to 655.35 seconds in steps of 0.01, and defaults to 0.2. The file carries the exact value you send. Below, the spinner prompt from the previous section runs at its default 9 frames, once at 0.08 seconds per frame and once at 0.3.

[Watch video](https://runware.ai/docs/assets/output-duration-fast.CqkhU_ZH.mp4)

*0.08 seconds per frame, a 0.72-second loop*

> **Prompt**: Create a short, seamlessly looping animated loading indicator for a mobile app. Subject: a circular progress spinner centered on a plain off-white background, a thin light gray ring with a thick rounded arc in vivid indigo covering about a quarter of the ring. One focused action only: the indigo arc travels clockwise around the ring through exactly one complete revolution at a steady speed. The motion ends with the arc at precisely the same position as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the ring and the background never move. Flat vector UI style, crisp edges, no shadows, no gradients. No text, numbers, logos or other interface elements.

[Watch video](https://runware.ai/docs/assets/output-duration-slow.DmcRcjaV.mp4)

*0.3 seconds per frame, a 2.7-second loop*

> **Prompt**: Create a short, seamlessly looping animated loading indicator for a mobile app. Subject: a circular progress spinner centered on a plain off-white background, a thin light gray ring with a thick rounded arc in vivid indigo covering about a quarter of the ring. One focused action only: the indigo arc travels clockwise around the ring through exactly one complete revolution at a steady speed. The motion ends with the arc at precisely the same position as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, the ring and the background never move. Flat vector UI style, crisp edges, no shadows, no gradients. No text, numbers, logos or other interface elements.

The frame count is the same on both sides, so the slow spinner holds each of its 9 positions long enough to see, and the arc **steps around the ring instead of gliding**. For motion that is both slow and smooth, **add frames as well as time** by raising `frameCount` along with `frameDuration`.

### [Frame sizes](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#frame-sizes)

Leave `width` and `height` out and each frame comes back at **512 × 512**. To set a size, keep each side at **960 or less**, in multiples of 16 and at a ratio between 1:3 and 3:1, with an area per frame inside the band for your frame count:

| Frame count | Sheet | Area per frame | Largest square |
| --- | --- | --- | --- |
| 2 to 8 | 4 × 2 or 2 × 4 | 81,920 to 1,036,800 px | 960 × 960 |
| 9, or left out | 3 × 3 | 72,818 to 921,600 px | 960 × 960 |
| 10 to 12 | 4 × 3, 3 × 4 or 4 × 4 | 40,960 to 691,200 px | 816 × 816 |
| 13 to 16 | 4 × 4 | 40,960 to 518,400 px | 720 × 720 |

The band comes from how the animation is made. **Every frame is drawn onto one sheet**, a grid such as 3 × 3 for 9 frames, and that sheet has the still-image budget of 655,360 to 8,294,400 pixels, so more frames split it into smaller cells.

A size outside the band is rejected. **A 960 × 320 strip fits every band**: the banner below is 307,200 pixels per frame, so any frame count works at that size.

[Watch video](https://runware.ai/docs/assets/output-banner.yrpwoBn-.mp4)

*960 × 320, 9 frames at 0.12 seconds*

> **Prompt**: Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word "SALE" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people.

**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.6-flare',
  positivePrompt: 'Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word "SALE" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people.',
  outputFormat: 'GIF',
  width: 960,
  height: 320,
  settings: {
    gif: {
      frameCount: 9,
      frameDuration: 0.12
    }
  }
})
```

**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.6-flare",
            "positivePrompt": "Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word \"SALE\" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people.",
            "outputFormat": "GIF",
            "width": 960,
            "height": 320,
            "settings": {
                "gif": {
                    "frameCount": 9,
                    "frameDuration": 0.12
                }
            }
        })

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": "5f1c8e2a-9d47-4b36-b0e8-3a6c2d9f7154",
      "model": "openai:gpt-image@2.6-flare",
      "positivePrompt": "Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word \"SALE\" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people.",
      "outputFormat": "GIF",
      "width": 960,
      "height": 320,
      "settings": {
        "gif": {
          "frameCount": 9,
          "frameDuration": 0.12
        }
      }
    }
  ]'
```

**CLI**:

```bash
runware run openai:gpt-image@2.6-flare \
  positivePrompt="Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word \"SALE\" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people." \
  outputFormat=GIF \
  width=960 \
  height=320 \
  settings.gif.frameCount=9 \
  settings.gif.frameDuration=0.12
```

**JSON**:

```json
{
  "taskType": "imageInference",
  "taskUUID": "5f1c8e2a-9d47-4b36-b0e8-3a6c2d9f7154",
  "model": "openai:gpt-image@2.6-flare",
  "positivePrompt": "Create a short, seamlessly looping animated web banner for an online store, announcing its seasonal sale, in a wide format. Subject: a deep red rounded badge centered on a warm cream background, with the single word \"SALE\" in heavy rounded white uppercase letters. One focused action only: the badge flashes, its letters switching from white to bright yellow and back while a soft glow around the badge brightens and fades. The word keeps exactly the same size, position and spelling in every frame. The motion ends in precisely the same state as the opening frame, so the last frame transitions invisibly back to the first. Locked camera, no cuts, no zoom, nothing else moving. Flat vector graphic style, crisp clean edges, high contrast, readable at small banner size. No other text, no logos, no people.",
  "outputFormat": "GIF",
  "width": 960,
  "height": 320,
  "settings": {
    "gif": {
      "frameCount": 9,
      "frameDuration": 0.12
    }
  }
}
```

### [Limits](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#limits)

**GIF output is text-to-image only.** A GIF request that carries `inputs.referenceImages` is rejected, and that also rules out a mask or a markup image, since both need a reference.

**A GIF has no transparency.** `settings.background` set to `transparent` needs `PNG` or `WEBP`, so every GIF comes back with a solid background. **Prompt the color of the surface it will sit on**, such as the white of a chat thread, and the edge of the frame disappears into it. For a cut-out with an alpha channel, generate a still as shown in [Transparent backgrounds](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/transparent-backgrounds).

**The file loops forever.** The returned GIF is set to repeat indefinitely, and no setting changes the play count.

### [Tips](https://runware.ai/docs/models/openai-gpt-image-2-6-flare/guides/animated-gifs#tips)

1. **Ask for one action.** The frames are spread across the whole motion, and a second action takes steps from the first.
    
2. **Write the ending into the prompt.** Say that the motion ends in the state it began in, and name that state.
    
3. **Lock the camera.** "Locked camera, no cuts, no zoom", followed by what stays still.
    
4. **Multiply before you send.** `frameCount` × `frameDuration` is the loop length, 1.8 seconds at the defaults.
    
5. **Add frames for slow motion.** A longer `frameDuration` on its own turns a smooth move into visible steps.
    
6. **Check the size against the frame count.** A 960 × 320 strip fits every band, while a square above 720 × 720 is rejected at 13 frames or more.
    
7. **Prompt the background the GIF will sit on.** There is no transparent GIF, so match the color of its destination.