Skip to main content
POST
GPT Image 2.5
GPT Image 2.5 is the next generation of the official GPT Image line. It keeps the actions and parameters of GPT Image 2, widens quality from three levels to five, and re-scales the output usage of the levels that share a name. Two models are available, gpt-image-2.5 (the Flare line) and gpt-image-2.5-sunburst (the Sunburst line); their request shape, value ranges and billing are identical, and they differ only in the trade-off between speed and editing precision. Switching between them means changing the model field alone.

Available models

Both models carry the same rates, so the same set of parameters costs the same on either one; only the generated result differs. QWave never switches between them automatically.

Quick start

A successful submission returns a task_id. Retrieve the result with GET /v1/tasks/{task_id}, wait inline with Prefer: wait, or configure a webhook.

Request parameters

string
required
gpt-image-2.5 or gpt-image-2.5-sunburst.
string
default:"generate"
  • generate — generate an image from text
  • edit — edit reference images; image_urls is required
string
required
Image description or editing instruction.
string[]
Reference image URLs. Required for edit, up to 16 images.
string
default:"1:1"
One of 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 3:1, 1:3, 21:9, 9:21.
string
default:"1k"
Output resolution: 1k, 2k or 4k.
string
default:"low"
Quality level: low, medium, high, xhigh or max. xhigh and max exist only on 2.5; sending them to gpt-image-2 returns 400 and is not downgraded silently. Quality has the largest effect on cost on this line — see Pricing below.
integer
default:"1"
Number of images, fixed at 1. Each request returns one image.
string
auto, opaque or transparent. Left to the model when omitted. A transparent background supports png and webp only.
string
default:"png"
png, jpeg or webp.
integer
JPEG/WebP compression, 0100. Requires output_format set to jpeg or webp.
string
default:"low"
Moderation level: auto or low.
The shared callback_url, callback_events, Prefer: wait, Idempotency-Key and cost-ceiling headers are documented in Submit Task. This line does not accept mask_url or seed — for masked inpainting, use gpt-image-2. Any other parameter returns 400 and is not billed.

Limits

Pricing

Billed from actual token usage across five dimensions: text input, cached text input, image input, cached image input and image output. Rates are in price_config on GET /v1/models and in the console’s Model Market. What a single call actually cost is the cost field on the task response — an integer quota at 500,000 quota = 1 USD, not dollars. Image input includes reference images. Cached rates apply only when the upstream response reports cache usage that can be settled. Otherwise, billing uses ordinary input and image-output usage.

Holds and settlement

Submitting a task places a hold for the estimated usage; the task then settles from actual usage and the difference is released. The estimate is built from:
  • Output — expected output tokens, looked up by aspect ratio, resolution and quality
  • Text input — a floor of 32 tokens
  • Reference images — 4,096 tokens each
Quality dominates the spread. At a given aspect ratio and resolution, expected output tokens form roughly this ladder: medium around 2× low, high around 9×, xhigh around 16×, and max around 36×. Resolution adds another layer, with 4k several times 1k. Combined, per-image cost spans two orders of magnitude. Aspect ratio matters too: at the same quality, 16:9 uses fewer output tokens than 1:1.
Levels that share a name are not interchangeable across generations: medium and high on 2.5 are about a quarter of the output tokens of the same-named levels on GPT Image 2, and max on 2.5 is what corresponds to high on GPT Image 2. When migrating from gpt-image-2, re-estimate against the ladder on this page rather than carrying over the old cost expectations.
The estimated output tokens for every aspect-ratio / resolution / quality combination are in price_config.image_usage_reservation on GET /v1/models. You are only billed for a successfully generated image. Failed and cancelled tasks, and tasks that return no usable image, are refunded in full. See Task status for the billing fields.

Response

Completed task
Generated images are returned in result.images, and expires_at is when that link is deleted (artifacts are kept for 7 days — see Task status). Failed and cancelled tasks release the hold in full. If an upstream success response contains no deliverable image, QWave marks the task as failed and refunds it.