Home → Guides → GPT Image 2.5, measured
The suffix on the model name is the resolution switch — not the size parameter. Measured across 76 billed image calls.
size parameter. size only picks the aspect ratio.gpt-image-2.5 for 3840×2160 and you get 1672×941 back — no error, no warning.Every row below was measured on 2026-09-13 by sending the request and reading the width and height straight out of the returned PNG header. This is the part that is not in anyone’s documentation.
| Model suffix | size requested | What came back | |
|---|---|---|---|
(none) | 1024×1024 | 1254×1254 | upscaled to fill the cap |
(none) | 1536×1024 | 1536×1024 | exact |
(none) | 1920×1072 | 1678×937 | downscaled to the cap |
(none) | 3840×2160 | 1672×941 | downscaled to the cap |
-1k | 1024×1024 | 1024×1024 | exact |
-1k | 1536×1024 | — | rejected: cross-tier resolution not supported |
-2k | 2048×2048 | 2048×2048 | exact |
-2k | 1920×1072 | 2048×1152 | snapped to the tier's aspect |
-4k | 3840×2160 | 3584×2016 | capped at the family's long edge |
-4k | 2160×3840 | 2016×3584 | capped at the family's long edge |
The rule behind the table: the suffix sets the long edge, and size only chooses the aspect ratio within that tier. Once you know that, the odd-looking results stop being odd — -2k asked for 1920×1072 returns 2048×1152 because 2048 is simply what that tier’s long edge is.
The trap. The plain model name accepts any size you send and returns HTTP 200 every time — it just quietly resizes to its ~1.57 MP budget. If you are paying for a 4K tier and calling the plain name, you are paying for pixels you are not receiving. Use -4k.
| Tier | Typical delivery | Per image | Credits deducted |
|---|---|---|---|
| 1K | 1024×1024 · 1254×1254 | $0.0536 | 0.1072 |
| 2K | 2048×2048 · 2048×1152 | $0.0804 | 0.1608 |
| 4K | 3584×2016 · 2016×3584 | $0.1072 | 0.2144 |
Flat per image. There is no token arithmetic to do, no quality multiplier, and no subscription — the balance is drawn down by the amount in the right-hand column and the credit-to-dollar rate is fixed.
Images are generated synchronously here: one request, one response, no polling queue. That also means the connection stays open for the whole generation, so these durations are what your client will actually wait.
| Model | Calls | Average | Range |
|---|---|---|---|
gpt-image-2.5 | 28 | 36.2 s | 19–170 s |
gpt-image-2 | 13 | 61.9 s | 21–337 s |
gpt-image-2.5-flare | 10 | 35.2 s | 22–47 s |
gpt-image-2.5-flare-4k | 5 | 34.6 s | 29–44 s |
gpt-image-2.5-sunburst-4k | 3 | 35.0 s | 33–36 s |
gpt-image-2-2k | 3 | 40.9 s | 35–50 s |
gpt-image-2-4k | 3 | 55.3 s | 46–60 s |
gpt-image-2.5-flare-2k | 3 | 31.4 s | 22–39 s |
gpt-image-2.5-sunburst | 3 | 30.4 s | 25–40 s |
gpt-image-2.5-sunburst-2k | 2 | 33.1 s | 31–35 s |
gpt-image-2-1k | 1 | 47.5 s | 47–47 s |
gpt-image-2.5-sunburst-1k | 1 | 27.2 s | 27–27 s |
gpt-image-2.5-flare-1k | 1 | 21.4 s | 21–21 s |
Across everything measured, the fastest call finished in 19 seconds and the slowest took 337. Budget for roughly half a minute per image and set your client timeout well above it — a 30-second default will cut off perfectly good requests. The gpt-image-2 rows are a baseline from the previous generation, which is still available here; rows with one or two calls are there for completeness, not as a benchmark — read the call count before the average.
Three names exist and they are not interchangeable:
gpt-image-2.5-flare and gpt-image-2.5-sunburst both support the full -1k / -2k / -4k range. They cost the same here.gpt-image-2.5 on its own has no tier variants available upstream — requesting gpt-image-2.5-4k returns no available compatible accounts. In practice that leaves it capped at the 1.57 MP ceiling described above.What we have not done is a controlled comparison of image quality between flare and sunburst. We measured price, delivered resolution and latency — not which one draws hands better. If output style matters to your use case, generate the same prompt through both and judge it yourself; at these prices that costs a few cents.
from openai import OpenAI
client = OpenAI(api_key="YOUR_KEY", base_url="https://api.apiclan.us/v1")
resp = client.images.generate(
model="gpt-image-2.5-flare-4k", # the suffix is what sets resolution
prompt="a red ceramic cube on a white studio background",
size="3840x2160", # this only chooses the aspect ratio
n=1,
response_format="b64_json",
)
Two details that will save you an afternoon. Ask for b64_json rather than url — the URL form points at temporary upstream storage that can expire before you finish writing the download code. And send image requests to api.apiclan.us: a 4K generation routinely runs past the 100-second proxy timeout on the main domain.
No subscription, no monthly minimum, no sales call. Top up with USDT and spend what you use — 1 USDT gives you 2 credits of API balance.
Read the 30-second quickstartPrices quoted on this page are regenerated automatically from live billing data. Third-party terms are quoted from that party's own published documentation.