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 GuidesAnimated GIFs
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
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.
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
A GIF needs one field on top of a text-to-image request: outputFormat set to GIF. The sticker above came from this request.
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'
})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 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"
}
]'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{
"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"
}Response
[
{
"taskType": "imageInference",
"taskUUID": "7d2f4a91-3c6e-4b58-9a17-e05c2b8f6d34",
"imageUUID": "c4e81b6f-2a93-4d07-b5f2-8e1a7c39d062",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/c4e81b6f-2a93-4d07-b5f2-8e1a7c39d062.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
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.
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
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
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.
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.
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.
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
}
}
})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 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
}
}
}
]'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{
"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
}
}
}Response
[
{
"taskType": "imageInference",
"taskUUID": "2b9e6c14-8f3a-4d71-a5c0-6e4d1f7b92a8",
"imageUUID": "e6a03d58-71bc-4f29-8d46-b2c95e1f0a73",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/e6a03d58-71bc-4f29-8d46-b2c95e1f0a73.gif"
}
]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.
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.
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
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.
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.
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
}
}
})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 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
}
}
}
]'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{
"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
}
}
}Response
[
{
"taskType": "imageInference",
"taskUUID": "5f1c8e2a-9d47-4b36-b0e8-3a6c2d9f7154",
"imageUUID": "91d4b7e3-0c62-4a85-9f1e-7b3d5c8a2e60",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/91d4b7e3-0c62-4a85-9f1e-7b3d5c8a2e60.gif"
}
]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.
The file loops forever. The returned GIF is set to repeat indefinitely, and no setting changes the play count.
Tips
-
Ask for one action. The frames are spread across the whole motion, and a second action takes steps from the first.
-
Write the ending into the prompt. Say that the motion ends in the state it began in, and name that state.
-
Lock the camera. "Locked camera, no cuts, no zoom", followed by what stays still.
-
Multiply before you send.
frameCount×frameDurationis the loop length, 1.8 seconds at the defaults. -
Add frames for slow motion. A longer
frameDurationon its own turns a smooth move into visible steps. -
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.
-
Prompt the background the GIF will sit on. There is no transparent GIF, so match the color of its destination.