GPT Image 2.5: image_size wins over aspect_ratio, plus the pixel rules
Send aspect_ratio 1:1 and image_size 1280x720 to GPT Image 2.5 on Sume and the pixels win. The multiples-of-16, 3:1 and pixel-count rules, with a validator.
On Sume's image API, image_size has priority over aspect_ratio, so a GPT Image 2.5 request that sends aspect_ratio: "1:1" and image_size: {"width":1280,"height":720} returns a 16:9 frame, not a square. The ratio does not break the request; it is simply ignored. The Image API docs list the custom-pixel rules: both edges multiples of 16, longest edge at most 3840, aspect ratio at most 3:1, and 655,360 to 8,294,400 pixels in total.
That makes conflicts easy to write by accident. A config that stores a default ratio and a per-job size will quietly use the size.
What are the exact rules?
The rules are arithmetic, so test them before you pay for a call. Note that size is a different field: it takes a resolution tier only and rejects pixel values.
| Size | Multiple of 16 | Pixels | Result |
|---|---|---|---|
| 1280x720 | Yes | 921,600 | Accepted |
| 1920x1080 | No (1080 is 67.5 x 16) | 2,073,600 | Rejected; use 1920x1088 |
| 1920x1088 | Yes | 2,088,960 | Accepted |
| 3840x1280 | Yes | 4,915,200 | Accepted (3:1, longest edge 3840) |
| 3840x1024 | Yes | 3,932,160 | Rejected (ratio above 3:1) |
How do I check a size in code?
This validator mirrors the documented limits. It is a preflight, not a replacement for the API's own 400, which stays the source of truth.
def gpt_size_ok(w: int, h: int) -> bool:
if w % 16 or h % 16:
return False
if max(w, h) > 3840:
return False
if max(w, h) / min(w, h) > 3:
return False
return 655_360 <= w * h <= 8_294_400
for size in [(1280, 720), (1920, 1080), (1920, 1088), (3840, 1280), (3840, 1024)]:
print(size, gpt_size_ok(*size))What should I do about conflicts?
Pick one source of truth. If you need pixels, send only image_size. If you need a ratio and the model's native size, send only aspect_ratio. The price follows the pixels you ask for: on GPT Image 2.5 at high quality 1280x720 bills about $0.0356, against $0.0659 for 1024x1024. Prices here are list x 1.25 in dollars per image before whole-cent rounding; the catalog's billable formula reads "list x 1.25, ceil usd cents", so confirm the first charge in usage.cost and budget from the invoice, not from the sum.
Sources
Related posts
More in Models
- gpt-image-2 or gpt-image-2.5 to replace gpt-image-1 on Sume?
OpenAI names gpt-image-2.5 as the gpt-image-1 replacement. On Sume, gpt-image-2 and 2.5 differ on references, mask_url, background and quality tiers.
- H3 Max Recast on a 12-second video: person swap price
Swapping people in a 12-second source video with H3 Max Recast on Sume costs $4.50 at 768p and $6.75 at 1080p.
- H3 Max Recast on a 15-second video: person swap price
Swapping people in a 15-second source video with H3 Max Recast on Sume costs $5.6250 at 768p and $8.4375 at 1080p.
- H3 Max Recast on a 20-second video: person swap price
Swapping people in a 20-second source video with H3 Max Recast on Sume costs $7.50 at 768p and $11.25 at 1080p.
Written by Sume