Sunburst is the GPT Image 2.5 tier for work that takes many rounds: retouch, then change the sky, then swap the label, without the mascot's face drifting along the way. OpenAI released it in September 2026 as the stronger of its two GPT Image 2.5 API models. You pay for that with time, since it is slower than the Flare tier (GPT Image 2.5).
Both tiers take the same inputs, so switching between them means changing one field.
What you can make
- Step-by-step retouching where every round starts from the last result
- A campaign that puts one mascot or pack design into many scenes
- Storyboard frames with the same recognizable character
- Busy compositions assembled from a large set of references
Settings that matter
image_urls: up to 16 references. Feed the previous result back as the first one and describe only the change.aspect_ratio:1024x1024,1536x1024,1024x1536orauto. Pick a fixed size so every step keeps the same frame.quality: fromlowtomax. Draft low, finish high.- Spell out what is off limits: face, logo position, wording, brand colors.
- Mask inpainting and custom pixel sizes exist at OpenAI but are not offered on Kadraris yet.
Starter prompt
Keep everything in image 1 exactly as it is. Only change
the time of day to late dusk: deep blue sky, warm
street lights on, soft reflections on the shop window.Replace the last sentence with your next edit and repeat, always passing the newest result as image 1.
Questions
What does one Sunburst image cost?
$0.05 per image, paid from a balance that never expires. A failed image costs $0.
When is the faster Flare tier enough?
For single images and quick drafts. Choose Sunburst only when several edits in a row must stay consistent. The GPT Image 2.5 vs Sunburst page shows the differences.
Can I use the images in client work?
Yes, within the law and OpenAI's usage terms. Read those terms before using real people or trademarks.
GPT Image 2.5 Sunburst in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "gpt-image-2.5-sunburst",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "gpt-image-2.5-sunburst",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 32000 chars | |
aspect_ratio | string | auto 1024x1024 1536x1024 1024x1536 | auto |
quality | string | auto low medium high xhigh max | auto |
image_urls | array | max 16 |
Fetch this list as JSON with GET /v1/models/gpt-image-2.5-sunburst.

























