Image 1.0 defaults to low quality; GPT Image 2.5 defaults to high

Same prompt, two Sume routes, two defaults: Image 1.0 omits quality as low, POST /v1/images with GPT Image 2.5 omits it as high. Set quality in both.

5 min readSume
All posts

On Sume, an image request with no quality field is not the same request on every route. Image 1.0 treats a missing quality as low. POST /v1/images with a ChatGPT Image 2.5 row treats a missing quality as high. If you move a payload from one route to the other and leave quality out, the output tier changes with it, and so does the price. Set quality explicitly on both.

What the docs say

The Image 1.0 page lists quality as low (the default), medium and high, and adds that a higher value is the right choice for finals, dense text or packaging. The Image API page says that for the ChatGPT Image 2.5 rows, quality takes auto, low, medium, high, xhigh or max, and that if you omit it the default is high. The Image 1.0 page also notes that Image 1.0 is a compatibility alias for Image Router Auto and that Sume will retire it soon.

Quality defaults by route, as of 2026-10-08
RouteAccepted quality valuesDefault when omitted
POST /v1/image-1.0/generatelow, medium, highlow
POST /v1/images with openai/gpt-image-2.5auto, low, medium, high, xhigh, maxhigh
POST /v1/images with openai/gpt-image-2low, medium, highnot stated; set it
POST /v1/images with ideogram/ideogram-v4.5low, medium, highmedium

Why this changes cost

GPT Image 2.5 rows are billed from image tokens, so quality moves the price. The Image API docs give Fal's output rate of $30 per million output image tokens and estimates for a 1024x1024 output: $0.09366 at xhigh and $0.21072 at max, before input tokens and Sume pricing. Lower tiers cost less. A default that jumps from low to high is a cost change you did not plan for.

Ideogram 4.5 has flat prices by quality: $0.03, $0.06 and $0.22 per image at list. The Sume price is list x 1.25, so $0.0375, $0.075 and $0.275. Its default is medium.

Say it every time

The cheapest way to avoid the surprise is a wrapper that always fills in quality. This one refuses a body without it.

def with_quality(body: dict, default: str = "medium") -> dict:
    out = dict(body)
    out.setdefault("quality", default)
    return out

print(with_quality({"prompt": "a poster"}))
print(with_quality({"prompt": "a poster", "quality": "high"}))

Moving off Image 1.0

Image 1.0 is retiring and keeps its legacy URLs as aliases for the Auto pipe. For new work, send model sume/auto or a catalog id to POST /v1/images. When you do, port quality on purpose: pick the tier you actually wanted, not the one the old default gave you. For draft runs choose low, for finals choose high, and treat xhigh and max as exceptions you price first.

A quick audit of your own code

Search your code for calls that build an image body without a quality key. Each one is relying on a default that depends on the route. List them, pick the tier you want per call site, and write it in. A draft preview can stay at low; a final asset should say high on purpose.

Also check any code that estimates cost before it sends. An estimate that assumes low will be wrong on a GPT Image 2.5 row that defaults to high, and an auto value reserves the max tier for admission, per the Image API page.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume