Introduction
GPT Image 2.5 Sunburst Edit runs OpenAI's gpt-image-2.5-sunburst on images you already have. It takes one to sixteen sources, an optional PNG mask and a transparent-background option, and it is the model OpenAI recommends when editing precision matters most.
Choose a mode by starting material
| What you have | Mode |
|---|---|
| a written brief | GPT Image 2.5 Sunburst Text to image |
| an image to change | GPT Image 2.5 Sunburst Edit |
Key features & highlights
Masks, fidelity and transparency
A mask limits the repaint to its transparent pixels; input fidelity high keeps faces and fabric closer to the sources; background transparent returns a real alpha channel in PNG or WebP.
Up to sixteen sources
Combine people, settings and products from up to sixteen images in one request, each referred to by its order in the prompt. Every source adds a fixed input charge to each output image, so include only the references that matter.
Precision is the point
In our crimson-gown edit only the fabric changed: the lace sleeves, the face, the chair and the single key light stayed where they were.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Up to 5,000 characters. Put every word that must appear in the image in double quotes and say where it goes; the rest is read as description. at least 1 characters · at most 5000 characters |
image_urls | Yes | 1 to 16 source images. Refer to them by order in the prompt (the first image, the second image). at least 1 items · at most 16 items |
mask_url | No | Optional PNG with the same size as the first source image. Transparent pixels mark the area to repaint; opaque pixels are kept. |
aspect_ratio | No | Fifteen shapes from 1:3 to 3:1, 1:1 by default. The result takes the shape you pick, not the shape of the source, and the shape changes the price. |
resolution | No | 1k (default), 2k or 4k. A square frame is 1024, 2048 or 2880 pixels across; a larger tier costs more per image. |
quality | No | low, medium, high (default), xhigh or max. Each step adds detail, time and cost; keep xhigh and max for finals. |
num_outputs | No | 1 to 10 images from one request, 1 by default. Every image is billed separately. |
input_fidelity | No | low (default) or high. High keeps faces, fabric and printed details from the sources more closely. |
background | No | auto (default), transparent or opaque. Transparent needs png or webp output and returns a real alpha channel. |
output_format | No | png (default), jpeg or webp. Does not change the price. |
output_quality | No | Compression quality for jpeg and webp, 0 to 100: higher keeps more detail and makes larger files. Not used for png, and it does not change the price. |
official_fallback | No | On by default. Default: |
Pricing
Billed per output image by quality, size tier and aspect ratio; on the official route each source image also adds a fixed charge on every output. The quote shows the total before you submit. A request for a single high-quality 1k PNG edit in 1:1, 3:2, 2:3, 4:3, 3:4, 16:9 or 9:16, with no mask, input fidelity low and background auto, starts on the economy route at the economy price. With Official fallback on, the default, a request that route refuses or cannot complete runs again on the official route at the official price, so the quote shows both the starting price and the most the request can cost. Refused requests are not charged. On the official route, long prompts add a small charge for input tokens beyond the first 100, once per request; Chinese, Japanese and Korean text counts about one token per character.
| Specification | Price |
|---|---|
| $0.001816 / image |
| $0.001816 / image |
| $0.00244 / image |
| $0.00244 / image |
| $0.002752 / image |
| $0.002752 / image |
| $0.00304 / image |
| $0.00304 / image |
| $0.003568 / image |
| $0.003568 / image |
| $0.003808 / image |
| $0.003808 / image |
| $0.003856 / image |
| $0.003856 / image |
| $0.004192 / image |
| $0.004192 / image |
| $0.004744 / image |
| $0.004744 / image |
| $0.005104 / image |
| $0.00568 / image |
| $0.00568 / image |
| $0.00652 / image |
| $0.00652 / image |
| $0.007312 / image |
| $0.007312 / image |
| $0.008176 / image |
| $0.008176 / image |
| $0.008728 / image |
| $0.008728 / image |
| $0.010936 / image |
| $0.01396 / image |
| $0.01396 / image |
| $0.018592 / image |
| $0.018592 / image |
| $0.020998 / image (With Official fallback: up to $0.023992) |
| $0.020998 / image (With Official fallback: up to $0.023992) |
| $0.021472 / image |
| $0.021472 / image |
| $0.022 / image (With Official fallback: up to $0.028) |
| $0.022 / image (With Official fallback: up to $0.028) |
| $0.022864 / image (With Official fallback: up to $0.031456) |
| $0.022864 / image (With Official fallback: up to $0.031456) |
| $0.024136 / image |
| $0.024136 / image |
| $0.025636 / image (With Official fallback: up to $0.042544) |
| $0.0316 / image |
| $0.0316 / image |
| $0.034504 / image |
| $0.034504 / image |
| $0.037864 / image |
| $0.037864 / image |
| $0.043504 / image |
| $0.043504 / image |
| $0.049816 / image |
| $0.049816 / image |
| $0.054616 / image |
| $0.054616 / image |
| $0.055624 / image |
| $0.055624 / image |
| $0.059872 / image |
| $0.059872 / image |
| $0.07144 / image |
| $0.07144 / image |
| $0.075328 / image |
| $0.082936 / image |
| $0.082936 / image |
| $0.096472 / image |
| $0.096472 / image |
| $0.110728 / image |
| $0.110728 / image |
| $0.124624 / image |
| $0.124624 / image |
| $0.135064 / image |
| $0.135064 / image |
| $0.168976 / image |
| $0.002872 / image |
| $0.002872 / image |
| $0.004456 / image |
| $0.004456 / image |
| $0.005152 / image |
| $0.005152 / image |
| $0.005704 / image |
| $0.005704 / image |
| $0.006328 / image |
| $0.006328 / image |
| $0.006712 / image |
| $0.006712 / image |
| $0.007312 / image |
| $0.007312 / image |
| $0.008128 / image |
| $0.008128 / image |
| $0.009088 / image |
| $0.009088 / image |
| $0.009928 / image |
| $0.01108 / image |
| $0.01108 / image |
| $0.01276 / image |
| $0.01276 / image |
| $0.014176 / image |
| $0.014176 / image |
| $0.015904 / image |
| $0.015904 / image |
| $0.017296 / image |
| $0.017296 / image |
| $0.021808 / image |
| $0.024112 / image |
| $0.024112 / image |
| $0.03688 / image |
| $0.03688 / image |
| $0.041896 / image |
| $0.041896 / image |
| $0.043072 / image |
| $0.043072 / image |
| $0.048064 / image |
| $0.048064 / image |
| $0.055432 / image |
| $0.055432 / image |
| $0.062416 / image |
| $0.062416 / image |
| $0.062944 / image |
| $0.062944 / image |
| $0.067984 / image |
| $0.067984 / image |
| $0.07624 / image |
| $0.07624 / image |
| $0.086032 / image |
| $0.087496 / image |
| $0.087496 / image |
| $0.095248 / image |
| $0.095248 / image |
| $0.098968 / image |
| $0.098968 / image |
| $0.110656 / image |
| $0.110656 / image |
| $0.121312 / image |
| $0.121312 / image |
| $0.142816 / image |
| $0.142816 / image |
| $0.152632 / image |
| $0.171016 / image |
| $0.171016 / image |
| $0.19456 / image |
| $0.19456 / image |
| $0.220456 / image |
| $0.220456 / image |
| $0.248464 / image |
| $0.248464 / image |
| $0.274216 / image |
| $0.274216 / image |
| $0.342928 / image |
| $0.003736 / image |
| $0.003736 / image |
| $0.006016 / image |
| $0.006016 / image |
| $0.0076 / image |
| $0.0076 / image |
| $0.008368 / image |
| $0.008368 / image |
| $0.009304 / image |
| $0.009304 / image |
| $0.011176 / image |
| $0.011176 / image |
| $0.01192 / image |
| $0.01192 / image |
| $0.0124 / image |
| $0.0124 / image |
| $0.01324 / image |
| $0.01324 / image |
| $0.016216 / image |
| $0.0166 / image |
| $0.0166 / image |
| $0.02116 / image |
| $0.02116 / image |
| $0.023872 / image |
| $0.023872 / image |
| $0.026296 / image |
| $0.026296 / image |
| $0.028552 / image |
| $0.028552 / image |
| $0.032272 / image |
| $0.032272 / image |
| $0.035992 / image |
| $0.050776 / image |
| $0.050776 / image |
| $0.056176 / image |
| $0.056176 / image |
| $0.0652 / image |
| $0.0652 / image |
| $0.080464 / image |
| $0.080464 / image |
| $0.086752 / image |
| $0.086752 / image |
| $0.094288 / image |
| $0.094288 / image |
| $0.103984 / image |
| $0.103984 / image |
| $0.11296 / image |
| $0.11296 / image |
| $0.115576 / image |
| $0.115576 / image |
| $0.127864 / image |
| $0.127864 / image |
| $0.14272 / image |
| $0.14272 / image |
| $0.14272 / image |
| $0.168592 / image |
| $0.168592 / image |
| $0.184552 / image |
| $0.184552 / image |
| $0.197104 / image |
| $0.197104 / image |
| $0.201832 / image |
| $0.201832 / image |
| $0.253408 / image |
| $0.259552 / image |
| $0.259552 / image |
| $0.320608 / image |
| $0.320608 / image |
| $0.37588 / image |
| $0.37588 / image |
| $0.414736 / image |
| $0.414736 / image |
| $0.456544 / image |
| $0.456544 / image |
| $0.569656 / image |
Use cases
Retouch approved photographs
Change a garment, a colour or the light in a signed-off photograph without touching the rest of the frame, masked or unmasked.
Cut-outs for layouts
People and products returned on a transparent background, ready for a layout, a slide or a product page without a separate removal step.
Product recolours
One product photograph in several finishes or colours, masked to the product so the set and the light stay identical.
Prompt guide & pro tips
Build the mask to match the source
Same pixel size as the first source, saved as PNG, transparent only where the repaint should happen. Everything opaque is protected.
Write the protected list out
After the change, name what must stay: face, hair, pose, chair, light. The model follows a written list more reliably than an implied one.
For cut-outs, name what to keep
Say which subject stays and that the background should be fully transparent, and set output_format to png or webp.
Check the alpha before layout
Open the returned PNG or WebP in your layout tool: the empty area is a real alpha channel, so no extra keying or masking step is needed.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "openai/gpt-image-2.5-sunburst/edit",
"input": {
"aspect_ratio": "1:1",
"background": "auto",
"image_urls": [
"https://example.com/reference.png"
],
"input_fidelity": "low",
"num_outputs": 1,
"output_format": "png",
"prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.





