Skip to content

The Edge of the Cyber World See the latest

Apps

GPT Image 2.5 API Setup: Flare vs Sunburst, 13 Steps [2026]

OpenAI pushed its image stack forward on September 8, 2026, replacing the single GPT Image 2 model with two distinct options: GPT Image 2.5 Flare and GPT Image 2.5 Sunburst. The split matters more than a version bump suggests. Flare targets speed and everyday generation, while Sunburst trades latency for editing precision across multi-step workflows. If you shipped code against GPT Image 2 or the original GPT Image 1, several defaults changed, including new quality tiers, new resolution options, and a pricing structure that treats the two models differently.

This tutorial walks through setting up both models from a clean account, covers the Images API and the Responses API image generation tool, and ends with a working Flask microservice you can deploy today. Expect 13 concrete steps, six runnable code blocks, and a troubleshooting section built from the errors developers are actually hitting on OpenAI’s community forum right now.

What Is GPT Image 2.5? Flare vs Sunburst Explained

GPT Image 2.5 is not one model, it is a pair of them, each with its own dated snapshot: gpt-image-2.5-flare-2026-09-08 and gpt-image-2.5-sunburst-2026-09-08. Both accept text and image inputs and output images, and both plug into the same two entry points: the dedicated Images API and the image_generation tool inside the Responses API.

Flare is the model OpenAI recommends as the default for most applications. According to OpenAI’s own documentation, “GPT Image 2.5 Flare is the small model, optimized for speed, with image quality comparable to GPT Image 2,” a line pulled straight from the image-prompting guide. The company also claims Flare delivers higher-quality output than GPT Image 2 at roughly 50% lower latency, which matters if you are generating images inside a user-facing request rather than a background job.

Sunburst sits at the other end of the trade-off. It is described by OpenAI as the company’s most capable image generation and editing model, built for workflows where multi-step edits need to preserve fine detail, things like campaign creative that goes through several rounds of revision, or product photography that needs precise masking. The cost is generation time: Sunburst runs slower than Flare by design.

Both models support six quality settings (auto, low, medium, high, xhigh, and max), a jump from the four-tier system most developers remember from GPT Image 1. The xhigh and max tiers are new to the 2.5 generation and did not exist on GPT Image 2.

The naming convention itself is new too. Earlier GPT Image releases used a single numbered model per generation, so developers just picked the newest one and moved on. Splitting the 2.5 generation into two named variants forces an upfront decision: pick for speed, or pick for precision. That decision point is exactly what this tutorial is built to help you make correctly on the first attempt, instead of discovering the wrong default six weeks into production when a cost report lands on your desk.

Prerequisites: What You Need Before You Start

Gather these before writing a single line of code. Skipping any one of them is the fastest way to burn an hour on an error that has nothing to do with your prompt.

  • An OpenAI platform account with billing enabled (platform.openai.com), not a ChatGPT Plus or Pro subscription, which does not grant API access on its own
  • Python 3.9 or later, or Node.js 18 or later, depending on which SDK you use
  • The official openai Python package, version 3.22.1 or later (verified current release on PyPI as of this writing), installed via pip install --upgrade openai
  • A terminal with curl available, useful for quick tests without spinning up a script
  • Roughly $5 to $10 in prepaid API credit, enough to run every example in this guide several times over
  • Basic familiarity with REST APIs and JSON, since both the Images API and the Responses API return structured JSON payloads

One detail trips up a lot of developers coming from ChatGPT’s image feature: using GPT Image 2.5 inside the ChatGPT app does not require any of this. This tutorial covers the API, the version you call from your own backend, not the consumer product.

Step 1-3: Create Your API Key and Enable Billing

Step 1. Log into platform.openai.com and open the API Keys page under your project settings. Click “Create new secret key,” name it something you will recognize later (like “gpt-image-2-5-tutorial”), and copy the value immediately. OpenAI only shows it once.

Step 2. Go to Billing and add a payment method if you have not already. Image generation is metered per request and will fail with an “insufficient_quota” error on a zero-balance account, even if the key itself is valid.

Step 3. Export the key as an environment variable rather than pasting it into your script. On macOS or Linux, run export OPENAI_API_KEY="sk-..." in your shell profile. On Windows, use setx OPENAI_API_KEY "sk-..." in PowerShell. Every official SDK reads this variable automatically, which keeps the key out of your source control history.

Step 4-6: Install the SDK and Send Your First Request

Step 4. Install the SDK for your language of choice.

# Python
pip install --upgrade openai

# Node.js
npm install openai@latest

Step 5. Confirm the install picked up a version that actually knows about GPT Image 2.5. Older SDK builds will accept the model string but may reject newer parameters like xhigh quality, so run a quick version check before moving on.

python -c "import openai; print(openai.__version__)"

Step 6. Send your first generation request through the dedicated Images API. This hits the POST /v1/images/generations endpoint directly.

from openai import OpenAI

client = OpenAI()  # reads OPENAI_API_KEY from the environment

result = client.images.generate(
    model="gpt-image-2.5-flare",
    prompt="A weathered lighthouse on a rocky coast at dawn, soft orange light",
    size="1536x1024",
    quality="high",
)

image_base64 = result.data[0].b64_json
with open("lighthouse.png", "wb") as f:
    import base64
    f.write(base64.b64decode(image_base64))

print("Saved lighthouse.png")

Run it, and within a few seconds you get a PNG saved locally. If you see an authentication error instead, double check that your shell session actually has OPENAI_API_KEY set, since a fresh terminal tab will not inherit a variable you exported in a different window.

Step 7-8: Choosing Quality, Size, and Aspect Ratio

Step 7. Pick a quality tier deliberately instead of leaving it on auto. OpenAI’s image generation guide states plainly that “the image generation tool allows you to generate images using a text prompt, and optionally image inputs,” but it does not pick a sensible cost tier for you, that choice is yours and it directly sets your bill.

Quality Setting Best Use Case Relative Cost Generation Speed
low Thumbnails, rapid prototyping, A/B testing prompts Lowest Fastest
medium Draft previews, internal mockups Low Fast
high Customer-facing assets, blog headers Moderate Moderate
xhigh Print-adjacent work, detailed product shots High Slower
max Final creative deliverables, hero images Highest Slowest
auto Letting OpenAI pick based on prompt complexity Variable Variable

Step 8. Match your size parameter to the aspect ratio your layout actually needs. GPT Image 2.5 supports square, portrait, landscape, and ultra-wide formats, listed below with their rough aspect ratios.

  • 1024x1024: 1:1, social avatars and icons
  • 1536x1024: 3:2, blog headers and article covers
  • 1024x1536: 2:3, mobile-first portrait layouts
  • 2048x2048: 1:1, higher-resolution square assets
  • 2048x1152: 16:9, widescreen hero banners
  • 3840x2160 / 2160x3840: 16:9 and 9:16 at near-4K resolution

Requesting an unsupported dimension, like 1920x1080, returns a 400 error rather than silently rounding to the nearest valid size. Stick to the published list.

Step 9: Generating Images Through the Responses API

If your application already uses the Responses API for chat or agent workflows, you do not need a separate code path for images. OpenAI’s own guide confirms this directly: “the API lets you generate and edit images from text prompts using gpt-image-2.5-sunburst and gpt-image-2.5-flare,” referring to the image_generation tool available inside responses.create() calls, as documented in the tools-image-generation guide.

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.1",
    input="Generate a minimalist icon of a mountain inside a circle, flat design, two colors",
    tools=[{"type": "image_generation", "model": "gpt-image-2.5-flare"}],
)

for item in response.output:
    if item.type == "image_generation_call":
        import base64
        with open("mountain_icon.png", "wb") as f:
            f.write(base64.b64decode(item.result))
        print("Icon saved")

This pattern is worth adopting if your agent needs to decide, mid-conversation, whether to generate an image at all. OpenAI’s guidance is specific here too: “set the image_generation tool’s model to gpt-image-2.5-sunburst for precise editing, or gpt-image-2.5-flare for fast, high-quality image generation,” so the model choice happens inside the tool definition, not as a separate call.

Step 10: Editing Images and Using Reference Inputs

Editing runs through a different endpoint, POST /v1/images/edits, and this is where Sunburst earns its reputation. Upload an existing PNG, describe the change, and the model modifies the image in place rather than regenerating it from scratch.

from openai import OpenAI

client = OpenAI()

result = client.images.edit(
    model="gpt-image-2.5-sunburst",
    image=open("product_photo.png", "rb"),
    prompt="Remove the background clutter and replace it with a seamless white studio backdrop",
    quality="high",
)

import base64
with open("product_photo_edited.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

For multi-step edits, chain calls by feeding the output of one edit into the next request as the new input image. This is the exact workflow OpenAI designed Sunburst around: “with the Image API, set model to gpt-image-2.5-sunburst or gpt-image-2.5-flare directly,” according to the image generation guide, and chaining is how you get iterative creative revisions without starting the prompt over each time.

How Many Reference Images Can You Send?

OpenAI has not published a confirmed maximum reference-image count specifically for GPT Image 2.5 edits at the time of this writing. If your workflow depends on a large batch of reference inputs, test incrementally in a staging environment and watch for a 400 response rather than assuming a number from a different model family.

Step 11: Transparent Backgrounds and Output Formats

Both Flare and Sunburst support a background parameter with two values: opaque and transparent. This matters for anything destined for compositing, stickers, product cutouts, UI icons, or layered design files where a flat white background becomes a problem the moment you drop the asset onto a colored canvas.

curl https://api.openai.com/v1/images/generations 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -H "Content-Type: application/json" 
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "A small cartoon fox sticker, bold outline, flat colors",
    "size": "1024x1024",
    "background": "transparent",
    "quality": "high"
  }'

Leave background unset and you will get an opaque result by default, which is an easy miss if you are porting code from an older integration that never had this parameter at all.

Step 12: Understanding GPT Image 2.5 Pricing

Pricing is where Flare and Sunburst actually diverge in ways that affect a production budget. According to OpenAI’s published pricing page, gpt-image-2.5-sunburst is billed at $8.00 per 1 million input tokens, $2.00 per 1 million cached input tokens, and $30.00 per 1 million output tokens. That cached-input rate is worth building around, since reusing the same reference image across several edit calls cuts that portion of the cost by 75%.

For a simpler mental model, OpenAI’s model reference page for the closely related chatgpt-image-latest baseline lists per-image pricing at 1024×1024 resolution of $0.009 at low quality, $0.034 at medium, and $0.133 at high. Treat these as a baseline sanity check rather than an exact Sunburst or Flare figure, since OpenAI prices image generation per token consumed rather than a flat per-image rate, and actual cost scales with resolution and quality tier. The full release details, including both dated snapshots, are documented in OpenAI’s API changelog and in the original community announcement thread, both worth bookmarking since OpenAI tends to update pricing and parameter details there before anywhere else.

Cost Component GPT Image 2.5 Sunburst Reference Baseline (GPT Image 2-style, 1024×1024)
Input tokens $8.00 per 1M Included in per-image rate
Cached input tokens $2.00 per 1M Not separately listed
Output tokens $30.00 per 1M Included in per-image rate
Low quality, 1024×1024 Billed per token $0.009 per image
Medium quality, 1024×1024 Billed per token $0.034 per image
High quality, 1024×1024 Billed per token $0.133 per image

Always check your usage dashboard after your first few dozen calls rather than estimating from a spreadsheet. Resolution, quality, and whether you are editing versus generating from scratch all move the final number.

Step 13: Build a Complete Working Project: A Flask Image Generation Microservice

Here is a small but complete service you can actually deploy. It exposes one endpoint, accepts a prompt plus optional quality and size, calls GPT Image 2.5 Flare by default, and falls back to Sunburst when the caller requests precision editing.

import base64
import os
from flask import Flask, request, jsonify, send_file
from io import BytesIO
from openai import OpenAI

app = Flask(__name__)
client = OpenAI()

ALLOWED_SIZES = {"1024x1024", "1536x1024", "1024x1536", "2048x2048", "2048x1152", "3840x2160", "2160x3840"}
ALLOWED_QUALITY = {"auto", "low", "medium", "high", "xhigh", "max"}

@app.route("/generate", methods=["POST"])
def generate():
    data = request.get_json(force=True)
    prompt = data.get("prompt")
    if not prompt:
        return jsonify({"error": "prompt is required"}), 400

    size = data.get("size", "1024x1024")
    quality = data.get("quality", "high")
    precise = data.get("precise_edit", False)

    if size not in ALLOWED_SIZES:
        return jsonify({"error": f"size must be one of {sorted(ALLOWED_SIZES)}"}), 400
    if quality not in ALLOWED_QUALITY:
        return jsonify({"error": f"quality must be one of {sorted(ALLOWED_QUALITY)}"}), 400

    model = "gpt-image-2.5-sunburst" if precise else "gpt-image-2.5-flare"

    try:
        result = client.images.generate(
            model=model,
            prompt=prompt,
            size=size,
            quality=quality,
            background=data.get("background", "opaque"),
        )
    except Exception as exc:
        return jsonify({"error": str(exc)}), 502

    image_bytes = base64.b64decode(result.data[0].b64_json)
    return send_file(BytesIO(image_bytes), mimetype="image/png")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Test it with a single curl call once it is running locally.

curl -X POST http://localhost:5000/generate 
  -H "Content-Type: application/json" 
  -d '{"prompt": "A ceramic mug on a wooden table, morning light", "quality": "high", "size": "1024x1024"}' 
  --output mug.png

Deploy it behind a reverse proxy with a request timeout of at least 30 seconds, since max quality generations on Sunburst take noticeably longer than a typical API call and a tight timeout will kill valid requests before they finish.

Testing and Validating Your Integration Before Launch

A tutorial example running once on your laptop is not the same as a service holding up under real traffic. Before pointing production users at the Flask microservice above, run through a short validation pass.

Start with a load test using a tool like hey or locust at a traffic level roughly matching your expected peak, then watch for two things: how quickly your 429 responses climb, and whether your timeout setting actually survives a max quality Sunburst call under concurrent load. A service that works fine at one request at a time can still fall over once five requests queue up against the same rate limit tier.

Next, build a small regression set of 10 to 15 prompts that represent your actual use case, run them against both Flare and Sunburst at your chosen quality tier, and save the outputs. Every time OpenAI ships a new dated snapshot, rerun that same regression set and compare the results side by side. This catches silent quality drift before your users do, and it gives you a documented baseline to point to if a teammate asks why a particular model and quality combination was chosen in the first place.

Finally, test your error handling paths deliberately. Send a request with an invalid size string, an empty prompt, and a prompt designed to trip content moderation, and confirm your application surfaces a clean message in each case instead of crashing or returning a raw stack trace to the end user.

Sunburst vs Flare: Which Model Should You Actually Use?

The honest answer depends on where the image sits in your product. Default to Flare, and reach for Sunburst only when you have a specific reason.

Factor GPT Image 2.5 Flare GPT Image 2.5 Sunburst
Primary strength Speed, everyday generation Editing precision, multi-step revisions
Latency vs GPT Image 2 About 50% lower Longer generation time by design
Recommended for Social content, product listings, prototyping, high-volume generation Campaign creative, final production assets, detailed edits
Output token cost Lower than Sunburst $30.00 per 1M output tokens
Default choice in OpenAI’s docs Yes, for most applications No, opt-in for precision work

Teams running high volumes of product imagery, think e-commerce catalogs or social media automation, should start with Flare and only escalate specific assets to Sunburst after a human flags them for revision. Running everything through Sunburst by default inflates both your latency budget and your bill without a corresponding quality gain for simple, single-pass generations.

If you need a fully open-weight alternative you can self-host instead of calling an API, our Qwen-Image-2.1 self-hosting guide covers Alibaba’s 7-billion-parameter competitor, which ships with public weights and native transparency support of its own.

5 Common Pitfalls When Building With GPT Image 2.5

1. Treating Flare and Sunburst as interchangeable for cost estimates. Sunburst’s $30.00 per-million output token rate is not the same as Flare’s, and budgeting both at one flat number will throw off your forecast the moment usage scales.

2. Reusing GPT Image 1 or GPT Image 2 size strings without checking the new list. The 2.5 generation adds near-4K options like 3840x2160 that did not exist before, and an old hardcoded size constant can quietly cap your output resolution.

3. Leaving quality on auto in production. Auto is convenient for a demo, but it makes your per-request cost unpredictable, which is a problem the moment finance asks for a monthly image generation forecast.

4. Storing raw base64 payloads in application memory at scale. A single max quality image at near-4K resolution produces a large base64 string, and holding dozens of these in memory simultaneously during a traffic spike is a quick way to trigger an out-of-memory crash.

5. Forgetting the background parameter when building composited assets. Omitting background: transparent on sticker or icon generation produces an opaque result that then needs a separate background-removal step, which defeats the point of generating a transparent asset in the first place.

6. Assuming Sunburst always produces better results. For a single, straightforward text-to-image generation with no editing involved, Flare matches Sunburst on quality in most cases while finishing faster, so routing everything through the slower model adds latency without adding value.

Troubleshooting: 8 Common GPT Image 2.5 API Errors

  • 401 Unauthorized: your API key is missing, expired, or belongs to a different project than the one with billing enabled. Regenerate the key and re-export the environment variable in a fresh terminal session.
  • 429 Too Many Requests: you have hit your account’s rate limit tier. Add exponential backoff with a base delay of at least one second and retry, rather than hammering the endpoint in a tight loop.
  • 400 Bad Request: invalid size: you passed a dimension string that is not in the published size list. Copy the exact strings from Step 8 rather than typing your own.
  • insufficient_quota: your account has no prepaid credit or a payment method issue. Check Billing, not the API key itself, since the key will look perfectly valid.
  • Content policy rejection with no image returned: your prompt tripped the safety system. Rephrase to remove ambiguous references to real people, violence, or anything that could read as impersonation.
  • Edit request ignores the reference image: confirm the file you uploaded is actually a supported format (PNG is safest) and under the documented file-size ceiling, since a silently rejected upload can look like the model just ignored your instructions.
  • Request times out before completion: this happens most often with max quality on Sunburst. Increase your HTTP client and reverse-proxy timeout to at least 30 seconds for that quality tier specifically.
  • SDK rejects the “xhigh” or “max” quality value: you are running an outdated SDK build. Run pip install --upgrade openai or npm install openai@latest and confirm the version string matches a release from September 2026 or later.

Advanced Tips: Rate Limits, Caching, and Cost Control

Rate limits scale with your account’s usage tier, and OpenAI has not published a confirmed per-minute figure specifically for GPT Image 2.5 Flare or Sunburst as of this writing, so check your account dashboard directly rather than relying on figures published for older models. Build your retry logic around the Retry-After response header when present instead of a fixed guess.

Cached input tokens on Sunburst cost $2.00 per million against a standard $8.00 per million, a 75% discount. If your application repeatedly edits the same base image, for example running five sequential revisions on one product photo, structure your calls so the reference image stays identical across the chain rather than re-uploading a freshly encoded copy each time, which can prevent the cache from matching.

For cost control at scale, route the bulk of your traffic through Flare at medium or high quality, and reserve Sunburst at xhigh or max for assets a human has explicitly flagged as final. Log every request’s model, quality, and size to a simple table so you can audit spend by category rather than discovering a surprise bill at the end of the month.

If your product already calls other OpenAI endpoints, pair this setup with our OpenAI Embeddings API setup guide for search-adjacent features, or see our GPT-6.1 Sol API setup walkthrough if you are wiring image generation into a broader agent pipeline. Teams comparing providers before committing should also look at our Grok 4.7 API setup guide and our Veo 3.1 API setup guide for video generation, since many teams end up running image and video models side by side. For a direct look at a rival image model, our Hy Image 3.5 API setup guide covers a lower-cost per-image alternative worth benchmarking against Flare.

Sample Output and What a Successful Response Looks Like

A successful call to images.generate() returns a JSON object with a data array. Here is a trimmed example of the shape you should expect, with the base64 payload shortened for readability.

{
  "created": 1790870400,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUgAA...(truncated)...",
      "revised_prompt": "A weathered lighthouse on a rocky coast at dawn, soft orange light, photorealistic"
    }
  ],
  "usage": {
    "input_tokens": 42,
    "output_tokens": 1710,
    "total_tokens": 1752
  }
}

Note the usage block. This is what you should be logging for cost tracking, since it reflects the actual token consumption OpenAI bills against, not an estimate based on quality tier alone.

Comparing GPT Image 2.5 to Other Current Image Models

GPT Image 2.5 arrives into a crowded field. Alibaba’s Qwen-Image-2.1, released just weeks earlier on September 20, 2026, is a 7-billion-parameter open-weight diffusion transformer that supports editing from up to 10 reference images and ships with public weights on Hugging Face and ModelScope, though commercial use requires a separate license from Qwen. The practical difference for most teams comes down to control versus convenience: Qwen-Image-2.1 can run on your own hardware with no per-call fee once deployed, while GPT Image 2.5 trades that infrastructure burden for a managed endpoint billed per token.

Neither approach is universally correct. A startup generating a handful of marketing images per day has little reason to manage GPU infrastructure for a self-hosted model. A company generating hundreds of thousands of product images per month may find the economics flip the other way once output token costs accumulate. Run both on a representative sample of your actual prompts before committing to one.

OpenAI’s own model reference page for Flare is also worth reading end to end before you lock in a model choice, since OpenAI updates these pages with parameter changes faster than third-party tutorials can track. The same applies to Sunburst’s equivalent page. Checking both directly takes five minutes and can save you from building against a parameter default that changed after this article was published.

Security and Content Policy Considerations

OpenAI enforces automated content moderation on every image generation and edit request, rejecting prompts that violate its usage policies before an image is ever returned. The exact parameter names and threshold behavior for GPT Image 2.5 specifically were not published in verifiable form at the time of this writing, so build your application to handle a rejection response gracefully rather than assuming every request will succeed.

If your application lets end users submit prompts directly, add your own pre-filter layer in front of the API call. This catches obvious policy violations before you spend a token on a request that was going to fail anyway, and it gives you a chance to show a user-friendly error message instead of surfacing a raw API error string.

Migrating From GPT Image 2 or GPT Image 1 to 2.5

Most existing integrations do not need a rewrite. The model string is the main thing that changes: swap gpt-image-2 or gpt-image-1 for gpt-image-2.5-flare, run your existing test suite against it, and check the output against three things before shipping the switch to production.

First, audit every hardcoded size string in your codebase. GPT Image 1 shipped with a narrower set of dimensions, and code that validates against that old list will reject the new near-4K options this tutorial covers in Step 8, even though the API itself would happily accept them. Second, check any quality constant you have pinned to "high" as a ceiling. The new xhigh and max tiers sit above it, and a hardcoded validator that only allows four values will silently block them. Third, if you built cost estimates into your billing dashboard using GPT Image 1 or GPT Image 2 per-image rates, treat those as stale. Sunburst in particular bills differently from the flat rates teams got used to, so recalculate your monthly projection using the token-based figures in Step 12 rather than copying forward an old spreadsheet formula.

Run a side-by-side comparison for at least a week before fully cutting over. Generate the same batch of prompts through your old model and through Flare, compare the outputs manually, and only retire the old code path once you are confident the new default matches or beats what you had running in production.

Using GPT Image 2.5 From Node.js

Python is not the only option here. If your backend runs on Node, the official SDK exposes the same endpoints with a near-identical method signature. Install the current package and request an image the same way you would from a browser-facing API route.

import OpenAI from "openai";
import fs from "fs";

const client = new OpenAI(); // reads OPENAI_API_KEY from the environment

async function generateImage() {
  const result = await client.images.generate({
    model: "gpt-image-2.5-flare",
    prompt: "A cozy bookstore interior, warm lighting, shot on film",
    size: "1536x1024",
    quality: "high",
  });

  const imageBuffer = Buffer.from(result.data[0].b64_json, "base64");
  fs.writeFileSync("bookstore.png", imageBuffer);
  console.log("Saved bookstore.png");
}

generateImage();

Wrap this in an Express route handler and you have a drop-in image generation endpoint for a Node backend without touching Python at all. The same quality, size, and background parameters from the Python examples apply unchanged.

Real-World Use Cases: Where Each Model Actually Fits

Abstract comparisons only go so far. Here is how the Flare and Sunburst split plays out across common product scenarios.

E-commerce product listings. A marketplace generating thousands of lifestyle shots per day for seller listings should run Flare at medium or high quality by default. Volume matters more than per-image perfection here, and Flare’s lower latency keeps the listing pipeline from backing up during a bulk upload.

Marketing campaign creative. An agency producing a hero image for a paid campaign, one that will get revised five or six times before a client signs off, benefits from Sunburst’s editing precision. The slower generation time is a non-issue when a human is reviewing each revision anyway.

In-app avatar and icon generation. A consumer app letting users generate a custom profile icon needs speed above all else, since users will not wait more than a few seconds for a result inside an onboarding flow. Flare at low or medium quality with a transparent background fits this case well.

Print and packaging mockups. Teams generating near-final packaging art that heads to a printer should use Sunburst at xhigh or max quality, where the higher per-token cost is small relative to the cost of a print run going out with a flawed design.

Frequently Asked Questions

Is GPT Image 2.5 the same as the image generator inside ChatGPT?
They share the same underlying models, but accessing GPT Image 2.5 Flare or Sunburst programmatically requires a platform.openai.com API key and billing setup, separate from a ChatGPT Plus or Pro subscription.

Which model should I use for most applications, Flare or Sunburst?
Start with Flare. OpenAI positions it as the default for fast, high-quality everyday generation, and it costs less per output token than Sunburst. Switch to Sunburst only for workflows that need precise, multi-step editing.

Can I generate transparent PNG images with GPT Image 2.5?
Yes. Set the background parameter to transparent on either model. Leaving it unset defaults to an opaque background.

What is the maximum resolution GPT Image 2.5 supports?
The published size list tops out at 3840x2160 and its portrait equivalent 2160x3840, both near 4K resolution, alongside smaller square and widescreen options.

How much does GPT Image 2.5 cost per image?
Pricing is token-based rather than a flat per-image rate. Sunburst is billed at $8.00 per million input tokens, $2.00 per million cached input tokens, and $30.00 per million output tokens, according to OpenAI’s published pricing page. A comparable GPT Image 2-style baseline at 1024×1024 runs roughly $0.009 at low quality up to $0.133 at high quality per image.

Do I need a special SDK version to use GPT Image 2.5?
You need a reasonably current build of the official SDK. The Python package was at version 3.22.1 at the time of this writing. Run pip install --upgrade openai before testing newer parameters like xhigh or max quality.

Can GPT Image 2.5 edit an existing image instead of generating a new one?
Yes, through the separate /v1/images/edits endpoint. Upload the source image and describe the change in your prompt. Sunburst is the better choice here for precision edits.

What happens if my prompt gets rejected by content moderation?
The API returns an error response with no image data rather than a partially generated result. Build your application to catch this case and show a clear message to the end user instead of surfacing a raw error.

Related Coverage

Source: Tech Insider