gpt-image-2.5 smallest custom size: the 655,360-pixel floor
gpt-image-2.5 on Sume rejects images under 655,360 pixels. Why 512x512 and 768x768 fail, which small sizes pass, and the other edge rules to check first.
The smallest custom image_size you can send to gpt-image-2.5 on Sume is 655,360 pixels in total, for example 1024x640 or 800x832. A 512x512 thumbnail (262,144 pixels) or a 768x768 square (589,824 pixels) is below the floor, so request a larger size and downscale afterwards.
OpenAI's own image generation guide, read on 2026-10-02, lists the recommended sizes (1024x1024, 1536x1024, 1024x1536) and the custom-size rules: WIDTHxHEIGHT, both edges a multiple of 16, an aspect ratio between 1:3 and 3:1, and a maximum of 3840 pixels per edge. It does not state a minimum total pixel count on that page. Sume's Image API documents one for the ChatGPT Image 2.5 models, and this post is about that extra rule.
What are all the size rules on Sume?
Sume serves GPT Image 2.5 as openai/gpt-image-2.5 (Flare) and openai/gpt-image-2.5-sunburst. Per the Image API docs, image_size accepts named presets, auto, or custom pixels, and custom pixels must satisfy every rule in the table below. A request that breaks one is a validation problem you should catch before you submit, not after.
| Rule | Value | Source |
|---|---|---|
| Edge multiple | Both edges a multiple of 16 | Sume Image API and OpenAI guide |
| Maximum edge | 3840 pixels | Sume Image API and OpenAI guide |
| Aspect ratio | At most 3:1 (OpenAI states 1:3 to 3:1) | Sume Image API and OpenAI guide |
| Total pixels | 655,360 to 8,294,400 | Sume Image API |
Which small sizes pass and which fail?
Work the arithmetic. Multiply width by height and compare with 655,360. Values below the floor are common in thumbnail and icon workflows, which is why this surprises people who start from a 512 or 768 square.
| Size | Pixels | Multiple of 16 | Passes floor |
|---|---|---|---|
| 512x512 | 262,144 | Yes | No |
| 768x768 | 589,824 | Yes | No |
| 1024x640 | 655,360 | Yes | Yes, exactly at the floor |
| 1024x1024 | 1,048,576 | Yes | Yes |
| 1000x700 | 700,000 | No (1000 is not divisible by 16) | Fails the edge rule |
How do I get a small final image anyway?
Generate at a compliant size, then resize in your own pipeline or with a Sume video or media tool if the final asset is a clip. For stills, a 1024x1024 generation downscaled to 512x512 is the simple path, and it also gives you a sharper result than asking a model for a tiny canvas.
If you only need a standard preset, skip custom pixels entirely: the docs say named presets are accepted, and auto lets the model choose. Presets without a verified GPT-specific pixel mapping reserve the output token upper bound, which matters for your balance check, as covered in reserved cost for auto quality.
What should I validate in code?
A five-line pre-flight check saves a failed call. The sketch below mirrors the documented rules and nothing more.
def size_ok(w, h):
if w % 16 or h % 16:
return False
if max(w, h) > 3840:
return False
if max(w / h, h / w) > 3:
return False
return 655_360 <= w * h <= 8_294_400
for s in [(512, 512), (1024, 640), (3840, 2160), (3840, 2400)]:
print(s, size_ok(*s))What does Sume not do here?
Sume does not resize for you when you break a rule, and it does not silently round to the nearest legal size. The Image API reports a rejected parameter as an error rather than dropping it. Read supported_parameters from GET /v1/images/models before pinning a size, and see the size validator post for the longer version.
Last check on the upper end: 3840x2160 is 8,294,400 pixels, exactly the cap, while 3840x2400 is 9,216,000 and fails, as the script above prints.
Sources
Related posts
More in Models
- GPT Image 2.5 misspells a brand name: spell it letter by letter
OpenAI's prompting docs say to quote the text and spell tricky words letter by letter. The prompt to write, and how to check the result on Sume's image API.
- GPT Image 2.5 text in the wrong place: fix it with a mask edit
OpenAI says GPT Image 2.5 can still misplace text. Mask only the text zone and re-render that region through Sume's mask_url edit instead of the whole image.
- grok-4.5 as a Sume model id runs GPT-6 Sol, not Grok: the alias list
Sume treats grok-4.5, composer-2.5, composer-2.5-fast and sume-1.0-fast as old Cursor-era ids that run GPT-6 Sol. How Grok 4.7 is gated and how grok-4.6 moves.
- Grok 4.7 doubles price at 200k tokens: long video agent threads
xAI bills a Grok 4.7 request at the higher rate for every token once the prompt reaches 200k. What that does to a long video agent thread, with the arithmetic.
Written by Sume