Flare draft, Sunburst final: a two-pass image edit loop on Sume

Find the edit on GPT Image 2.5 Flare at low quality, then send the same request to Sunburst at high for the keeper. Costs and limits from Sume docs.

5 min readSume
All posts

A cheap way to run image edits is two passes: send the request to openai/gpt-image-2.5 (Flare) at quality: "low" until the edit is right, then repeat the same prompt and references on openai/gpt-image-2.5-sunburst at high for the keeper. OpenAI's announcement describes Flare as the speed-first model and Sunburst as the precision model, and Sume's Image API lists both with the same parameters.

Why two models and not one

OpenAI's announcement dated 2026-09-08 says Flare prioritizes speed (described as 50% faster) for everyday prompts, while Sunburst emphasizes precision for detailed creative work with longer generation times. The claim compares the two models with each other, so treat it as a direction, not a number you can budget around.

Sume's docs say Flare and Sunburst use the same Fal token rates, so the choice is about time and edit precision, not a different price list. The draft pass is cheap because you also drop quality: at 1024x1024 the output token estimate is a fraction of a cent at low and several cents at high.

What the two passes cost

These are output-token estimates only, computed from the $30 per million output image token rate in the Image API docs and Fal's GPT Image 2.5 Flare page. Input tokens and Sume's own pricing come on top, so read the live numbers from GET /v1/images/models before you budget.

GPT Image 2.5 output estimate at 1024x1024 before input tokens and Sume pricing (read 2026-10-04)
QualityOutput estimate per imageUse it for
low$0.00588Draft: is the edit direction right?
medium$0.01317Second look at faces and layout
high$0.05268Keeper candidate (the default when quality is omitted)
xhigh$0.09366Dense detail, small text

The loop

Keep every request identical between passes except model and quality. The reference list, its order and the prompt are what carry the edit, and the Image API does not accept a seed, so a second pass on a different model is a new take, not a replay of the draft. Expect the final to differ in detail from the draft.

Pick the draft you like, then spend high only on it. If a draft pass fails the check (wrong object changed, wrong crop), fix the prompt at low where it costs fractions of a cent.

  • Pass 1: openai/gpt-image-2.5, quality: low, n: 4 for four takes.
  • Choose one take; note its prompt and input_references.
  • Pass 2: openai/gpt-image-2.5-sunburst, quality: high, n: 1.
  • Edits: set aspect_ratio: "auto" so the output keeps the reference's shape.

Request for either pass

import os
import asyncio
import httpx

URL = "https://api.sume.com/v1/images"
HEADERS = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

async def edit(model: str, quality: str, n: int) -> list[str]:
    body = {
        "model": model,
        "prompt": "Replace the background with a soft daylight studio. Keep the product identical.",
        "input_references": [
            {"type": "image_url", "image_url": {"url": "https://example.com/product.png"}}
        ],
        "aspect_ratio": "auto",
        "quality": quality,
        "n": n,
    }
    async with httpx.AsyncClient(timeout=60) as client:
        r = await client.post(URL, headers=HEADERS, json=body)
        r.raise_for_status()
        if r.status_code == 202:
            raise RuntimeError("Still running: poll the job, see Jobs and results")
        return [d["url"] for d in r.json()["data"]]

async def main():
    print(await edit("openai/gpt-image-2.5", "low", 4))

asyncio.run(main())

What this does not do

Sume does not pick the pass for you. model: "sume/auto" leaves the family to Sume, and the docs say Auto continues to use Flare, so choose Sunburst by id when you want it. Slow requests can come back as a 202 job instead of an image body; the pattern for that is in Jobs and results.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume