gpt-image-2.5 quality auto reserves max: holds from $0.22 to $0.89
On Sume, gpt-image-2.5 with quality auto and auto size reserves $0.8895 per image, while omitting quality reserves $0.2224. Hold table and the safe request.

Sending quality: "auto" with no size reserves $0.8895 per gpt-image-2.5 image on Sume, compared with $0.2224 when you omit quality and $0.0659 when you also pin 1024x1024. The Image API states that auto quality reserves max, and that auto size reserves the upper bound of output tokens.
The reserved amount is a hold at submit, not necessarily the final charge, but a hold you cannot cover returns 402 insufficient_credits before work starts.
Hold by setting
| Quality | Size | Reserved per image |
|---|---|---|
| omitted (high) | auto | $0.2224 |
| auto | auto | $0.8895 |
| auto | 1024x1024 | $0.2635 |
| high | 1024x1024 | $0.0659 |
| medium | 1024x1024 | $0.0165 |
| low | 1024x1024 | $0.0074 |
The safe request
Pin both. A low balance then fails because of a number you chose.
import os, requests
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={
"model": "openai/gpt-image-2.5",
"prompt": "Flat lay of three ceramic bowls",
"quality": "medium",
"image_size": {"width": 1024, "height": 1024},
},
timeout=60,
)
print(r.status_code)
body = r.json()
if r.status_code == 200:
for item in body["data"]:
print(item["url"])
else:
print(body)Why it matters for batches
A loop of 1,000 requests that leaves both on auto needs $889.50 of headroom per thousand, against $16.50 when pinned to medium. Concurrent requests each hold their own reservation, so unpinned batches can hit 402 far earlier than the real spend suggests.
Rule of thumb
- Always set
quality. - Always set
image_sizeor a named size you have priced. - Treat the table above as the hold your balance must cover per in-flight request.
- Read
GET /v1/images/models/{model_id}/endpointsfor the livepricingline before a large run: prices are catalog data and can change.
Sources
Related posts
More in Developers
- Find the six removed Sora identifiers in your repo, then move to Sume
OpenAI's removal list names the Videos API and five model ids, all dated 2026-09-24. A runnable repo scan finds them, and what changes on Sume's /v1/videos.
- Grok Image n is 1 on Sume: four images mean four calls, $0.10
Sume's catalog caps n at 1 for Grok Image. A Python loop for four images costs $0.10, and runs sync. Ratios incl. 9:19.5 and 9:20 stay available.
- Group failed Sume jobs by error category with curl and jq
One curl and jq command that lists the last 100 failed jobs, groups them by error.category, code and retryable, and prints a sample job id for each group.
- Recast 400 "exactly one source video and 1-4 images": five causes
The Videos API refuses an h3-max-recast request that is not one video plus 1-4 images in input_references. Five causes of that 400 and what to send instead.
Written by Sume