GPT Image 2.5
Model IDs, generation and reference-image examples, and task polling.
Use an Official Group API key. Flare and Sunburst have distinct public model IDs; these are standalone image requests, not Responses tool calls on a GPT text model.
Supported protocol
Generate with JSON POST /v1/images/generations, or upload files with
POST /v1/images/edits (multipart/form-data). Submission returns 202 Accepted
and a task id. Poll GET /v1/tasks/{id} until completed or failed.
A 202 response is not a completed image.
This family uses Images + asynchronous tasks. Image generation through
/v1/chat/completions or /v1/responses is not supported.
See the complete submission and polling example.
Models and parameters
| Public model ID | resolution | n | Reference limit |
|---|---|---|---|
gpt-image-2.5-flare | 1k / 2k / 4k | 1–4 | 16 |
gpt-image-2.5-sunburst | 1k / 2k / 4k | 1–4 | 16 |
size selects an aspect ratio such as 1:1 or 16:9; resolution selects the resolution tier. quality accepts auto, low, medium, high, xhigh and max. The example uses low. Prompts are limited to 4000 characters. Substitute gpt-image-2.5-sunburst to use Sunburst.
Generate an image
Set APIPOOL_API_KEY to your key, then run:
APIPOOL_ENDPOINT="https://app.apipool.dev"
curl "$APIPOOL_ENDPOINT/v1/images/generations" \
-H "Authorization: Bearer $APIPOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "A blue ceramic cup on a white table",
"size": "1:1",
"resolution": "1k",
"n": 1,
"quality": "low"
}'Edit an image
Upload a local PNG, JPEG or WebP file, replacing source.png with its path:
curl "https://app.apipool.dev/v1/images/edits" \
-H "Authorization: Bearer $APIPOOL_API_KEY" \
-F "model=gpt-image-2.5-flare" \
-F "prompt=Change the cup to green" \
-F "image=@./source.png" \
-F "size=1:1" \
-F "resolution=1k" \
-F "n=1"For multiple references, repeat -F "image=@./second.png" within the model's limit.
To use publicly downloadable references, send image_urls to the same JSON
generation endpoint:
{
"model": "gpt-image-2.5-flare",
"prompt": "Change the cup to green",
"size": "1:1",
"resolution": "1k",
"n": 1,
"quality": "low",
"image_urls": ["https://your-cdn.example/source.png"]
}Replace the example URL with a real address reachable by the server. Expired tunnels, DNS failures and download timeouts can fail the task. Browser-only localhost or authenticated image URLs are unsuitable.
Poll and retrieve results
Save the submission's id, such as imgtask_01..., and query with the same key:
TASK_ID="imgtask_01..."
curl "https://app.apipool.dev/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $APIPOOL_API_KEY"Continue polling for submitted, submission_unknown, processing or
meter_pending. On completed, read data[].url and download before expiry.
On failed, inspect error. Do not resubmit while waiting.
See Asynchronous image tasks for all states,
timeout handling and a runnable polling example.
Scope and billing
APIPool delivers images as asynchronous tasks. Do not assume the synchronous Images response shape of a standard OpenAI SDK call: read the task ID and poll it.
See the selected model and group in Models & pricing. Pricing and available parameter tiers depend on that listing. These models use token pricing and return normalized usage when complete.