GPT Image 2.5 quality xhigh and max: which rows accept them on Sume
Only ChatGPT Image 2.5 (both variants) accepts xhigh and max; omit quality and it runs at high. Other rows reject them. Credits scale with quality.

On Sume, quality: "xhigh" and quality: "max" work on openai/gpt-image-2.5 and openai/gpt-image-2.5-sunburst only. If you omit quality on those rows, the default is high. ChatGPT Image 2 lists low, medium and high, and rows without a quality descriptor reject the field with 400 unsupported_parameter.
Who accepts what
The values are taken from the repo's capability data and the public docs.
| Sume model id | quality values |
|---|---|
| openai/gpt-image-2.5 | auto, low, medium, high, xhigh, max |
| openai/gpt-image-2.5-sunburst | auto, low, medium, high, xhigh, max |
| openai/gpt-image-2 | low, medium, high |
| ideogram/ideogram-v4.5 | low, medium, high (sets the price) |
| google/nano-banana-2.1 | Not listed; use resolution |
Cost behavior
Credits for the 2.5 rows scale with output size, quality, input images and text. auto quality reserves the max amount at admission, so pin a value if you want a predictable hold. A generation that fails uses no credits.
A sensible pattern is to draft at low, then rerun only the keepers at high or above.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
for q in ["low", "high"]:
r = requests.post(
"https://api.sume.com/v1/images",
headers=H,
json={"model": "openai/gpt-image-2.5", "prompt": "ceramic mug on a linen cloth", "quality": q},
timeout=60,
)
print(q, r.status_code)Rule of thumb
- Drafts: low.
- Finals: high, which is the default.
- Reserve xhigh and max for small hero assets and compare against high before you pay for them every time.
Sources
Related posts
More in Developers
- Grok Imagine Video 1.5 in TypeScript: first frame, poll, download
A Node 18+ script that animates one still with grok-imagine-video-1.5 on POST /v1/videos, polls the job, and saves the MP4. Fields Sume refuses are listed.
- AI image edit changed my crop: aspect_ratio auto vs omitted on Sume
On edit calls, aspect_ratio auto matches the reference; leaving the field out is not the same thing. Ideogram 4.5 keeps the source shape when you omit it.
- Stream partial images from the Sume Image API? 400, use async events
stream: true returns 400 streaming_not_supported and every catalog row reports supports_streaming false. For progress, submit async and read job events.
- 402 insufficient_credits: read required and available credits
The Sume 402 body gives details.required_credits and details.available_credits, whole credits. Compute the shortfall in Python and stop a batch cleanly.
Written by Sume