GPT Image 2.5 Flare on Sume: the id is openai/gpt-image-2.5, no suffix
Flare is openai/gpt-image-2.5 on Sume's Image API and Sunburst is openai/gpt-image-2.5-sunburst. An id ending in -flare returns 404 model_not_found.

On Sume, GPT Image 2.5 Flare is openai/gpt-image-2.5 and GPT Image 2.5 Sunburst is openai/gpt-image-2.5-sunburst. There is no -flare suffix: an id such as openai/gpt-image-2.5-flare is not a catalog id, and an unknown model returns 404 model_not_found.
OpenAI's pricing page names the models gpt-image-2.5-flare and gpt-image-2.5-sunburst, which is where the habit of adding the suffix comes from.
Ids side by side
| Model | OpenAI's API id | Sume public id |
|---|---|---|
| GPT Image 2.5 Flare | gpt-image-2.5-flare | openai/gpt-image-2.5 |
| GPT Image 2.5 Sunburst | gpt-image-2.5-sunburst | openai/gpt-image-2.5-sunburst |
| GPT Image 2 | gpt-image-2 | openai/gpt-image-2 |
Prices and limits
OpenAI lists the same token rates for all three: $30.00 per 1M image output tokens, $8.00 image input and $5.00 text input (OpenAI pricing, read 2026-10-06). Sume's docs say Flare and Sunburst share the same rates, up to 16 references, an optional mask_url and background, so the id is the only thing that changes.
A defensive pattern
Do not hard-code ids from a vendor page. Call GET /v1/images/models at startup and check that your configured id is in the list; a missing id then fails in your deploy, not at the first customer request. The Flare and Sunburst post covers what else is shared between the two.
Check it on your own account
Do not budget from a blog table alone. GET /v1/images/models lists every model with its descriptors, and GET /v1/images/models/{id}/endpoints shows the pricing line for one model. Then run one small request and read usage.cost on the response, which is the billed amount in USD; the token counts in usage are reported as 0 on this route.
Run the test at the quality and size you plan to ship, because both move the price. A single test at low quality costs under a cent for most sizes here, so it is a cheap way to confirm your assumptions before a batch.
Sync, async and failures
The /v1/images route waits up to 30 seconds for the image. If the job finishes in that window you get the result directly; otherwise you get a 202 and an async job to poll. Write your client to branch on the status code, since larger sizes and higher quality are the likely cases for a 202.
Requests are strict. A parameter the chosen model does not list returns 400 unsupported_parameter, stream returns a 400, and provider.only or provider.order accept only sume. Treat a 400 as a bug in the request, not a transient error, and do not retry it unchanged.
Sources
Related posts
More in Developers
- OpenAI images.generate to Sume /v1/images: field by field map
Move a gpt-image-1 images.generate call to Sume POST /v1/images: which fields carry over, which return 400, and why size becomes image_size. Python mapper.
- opencode remote MCP entry for Sume: env syntax and a longer timeout
The hosted Sume server in opencode.json: type remote, a bearer header from an env variable, a timeout above jobs_wait's 55 s cap. Checked by a script.
- Bash and openssl script to verify a Sume webhook signature
A tested bash script that checks a Sume webhook signature with openssl, enforces the 300 s window and exits on an empty secret. Plus what it cannot do.
- Fade out the end of a Short: Timeline fade_out_seconds limits
Sume Timeline fades video and audio at the ends with output.fade_in_seconds and fade_out_seconds, 0 to 5 each, summing to at most the length. Setup for Shorts.
Written by Sume