Skip to main content

GPT-Image-2.5

In this page's examples, {BASE_URL} is https://api.uniall.ai.

GPT Image 2.5 provides two public model IDs:

  • gpt-image-2.5-flare
  • gpt-image-2.5-sunburst

Both IDs use the same OpenAI-compatible synchronous image contract. Use /v1/images/generations for text-to-image requests and /v1/images/edits whenever the request includes reference images.

The models returned by GET /v1/models for your API key are the models currently available to your account.

When To Use It

Use GPT Image 2.5 when you need:

  • synchronous text-to-image generation;
  • image editing with one or more reference images;
  • explicit output size, quality, and format controls;
  • URL or Base64 image responses.

Endpoint

GET /v1/models
POST /v1/images/generations
POST /v1/images/edits

The image endpoints wait for the provider result and return the generated image in the same response. They do not create a task that requires polling.

Authentication

Authorization: Bearer sk-***
Content-Type: application/json

The compatibility header below can also be used for authenticated requests:

x-api-key: sk-***

Model Availability

curl "{BASE_URL}/v1/models" \
-H "Authorization: Bearer sk-***"

A successful response includes the model IDs visible to the current API key:

{
"object": "list",
"data": [
{
"id": "gpt-image-2.5-flare",
"object": "model",
"created": 0,
"owned_by": "uniall"
},
{
"id": "gpt-image-2.5-sunburst",
"object": "model",
"created": 0,
"owned_by": "uniall"
}
]
}

Request Parameters

ParameterTypeRequiredDescription
modelstringYesgpt-image-2.5-flare or gpt-image-2.5-sunburst.
promptstringYesGeneration or editing instruction. Maximum length: 32,000 characters.
sizestringNoauto or WIDTHxHEIGHT. Default: auto.
qualitystringNoauto, low, medium, high, xhigh, or max. Default: auto.
nintegerNoNumber of output images. Default: 1; range: 1 to 10.
output_formatstringNopng, jpeg, or webp. Default: png.
response_formatstringNourl or b64_json. Default: b64_json.
imagesarrayConditionalJSON reference images for /v1/images/edits. Each item uses {"image_url":"..."}.
maskobjectNoJSON mask for /v1/images/edits. Uses {"image_url":"..."} and applies to the first reference image.

Size Rules

For an explicit WIDTHxHEIGHT value:

  • width and height must be positive multiples of 16;
  • the longest edge must not exceed 3840 pixels;
  • the aspect ratio must not exceed 3:1;
  • total pixels must be between 655,360 and 8,294,400.

Use auto when the output size should be selected from the request and reference-image context.

Text-To-Image Example

curl -X POST "{BASE_URL}/v1/images/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "A red ceramic cup on a clean white table, studio product photo, no text",
"size": "1024x1024",
"quality": "medium",
"output_format": "png",
"n": 1,
"response_format": "url"
}'

JSON Image Editing Example

Use /v1/images/edits when the request includes one or more reference images.

curl -X POST "{BASE_URL}/v1/images/edits" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "Keep the product shape and replace the background with a bright studio scene",
"images": [
{"image_url": "https://example.com/product.png"}
],
"size": "auto",
"quality": "high",
"output_format": "png",
"response_format": "url"
}'

Each JSON reference uses an HTTP(S) image URL or a PNG, JPEG, or WebP Base64 Data URL. A request can include up to 16 reference images.

Base64 Image Editing Example

For JSON editing requests, pass the reference image as a complete Base64 Data URL in images[].image_url.

curl -X POST "{BASE_URL}/v1/images/edits" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "Keep the product shape and replace the background with a bright studio scene",
"images": [
{
"image_url": "data:image/png;base64,BASE64_IMAGE_DATA"
}
],
"size": "1024x1024",
"quality": "high",
"output_format": "png",
"response_format": "url"
}'

The Data URL must include its MIME prefix, such as data:image/png;base64,..., data:image/jpeg;base64,..., or data:image/webp;base64,....

Multipart Image Editing

Use multipart when the source image is a local file. Repeat image[] for multiple references.

curl -X POST "{BASE_URL}/v1/images/edits" \
-H "Authorization: Bearer sk-***" \
-F "model=gpt-image-2.5-sunburst" \
-F "prompt=Keep the subject and change the background to pale blue" \
-F "image[]=@product.png" \
-F "response_format=url"

A multipart mask can be sent as mask=@mask.png. The mask must be a PNG with an alpha channel, smaller than 4 MB, and have the same dimensions as the first reference image.

Response Example

{
"created": 1789121337,
"size": "1024x1024",
"output_format": "png",
"data": [
{
"url": "https://api.uniall.ai/generated-media/example.png"
}
],
"usage": {
"prompt_tokens": 23,
"completion_tokens": 425,
"total_tokens": 448,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 23,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"reasoning_tokens": 0
},
"usage_source": "upstream_response"
}
}

When response_format is b64_json, each data item contains b64_json instead of url. The value is raw Base64 data without a data:image/...;base64, prefix.

Base64 Response Example

Set response_format to b64_json when your application needs the image bytes in the JSON response.

curl -X POST "{BASE_URL}/v1/images/generations" \
-H "Authorization: Bearer sk-***" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "A red ceramic cup on a clean white table, studio product photo",
"size": "1024x1024",
"quality": "medium",
"output_format": "png",
"response_format": "b64_json"
}'

The response contains raw Base64 data without a data:image/...;base64, prefix:

{
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}