GPT Image 2.5 banner: 3840x1280 passes the 3:1 rule
3840x1280 is exactly 3:1, both edges are multiples of 16 and it is 4,915,200 pixels, so Sume accepts it on GPT Image 2.5. The four checks shown.
3840x1280 is a valid custom size on ChatGPT Image 2.5 in Sume: it is exactly 3:1, both edges are multiples of 16, the long edge equals the 3840 maximum, and 4,915,200 pixels sits inside the allowed range. It is a usable wide-banner size for a hero strip or a header.
The four rules, checked
The Image API docs give four limits for custom pixels on the 2.5 rows: both edges multiples of 16, maximum edge 3840, aspect ratio at most 3:1, and 655,360 to 8,294,400 total pixels.
| Rule | Limit | 3840x1280 | Result |
|---|---|---|---|
| Edges multiple of 16 | 16 | 3840 = 240 x 16; 1280 = 80 x 16 | Pass |
| Maximum edge | 3840 | 3840 | Pass, at the limit |
| Aspect ratio | At most 3:1 | 3840 / 1280 = 3.0 | Pass, at the limit |
| Total pixels | 655,360 to 8,294,400 | 4,915,200 | Pass |
Where it stops
A 4:1 strip does not pass. 3840x960 is 4:1, and 3840x1200 is 3.2:1; both break the ratio limit. If you need a longer strip, generate at 3:1 and extend it outside the model, or compose two images on a timeline. Sume does not offer a native 4:1 size on these rows.
- Use image_size with custom pixels; do not put pixels on size.
- Pin quality, because auto reserves the max price.
- Send aspect_ratio or image_size, not both, to avoid an ambiguous request.
A request
The body below is the shape the docs use, with the custom size added as the docs describe.
curl -X POST https://api.sume.com/v1/images \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2.5",
"prompt": "Wide website hero banner, soft morning light, empty left third for text",
"image_size": {"width": 3840, "height": 1280},
"quality": "medium"
}'Sources
Related posts
More in Developers
- GPT Image 2.5 4K returns 202: a Python poll loop that works
Slow ChatGPT Image 2.5 calls on Sume return 202 and a job envelope after 30 seconds. Python that handles 200 and 202 without paying twice.
- Grok Imagine returns one image per call: fan out 1,000 in Python
Grok Imagine on Sume takes n=1, so 1,000 images means 1,000 requests at $0.025 each, $25.00 in all. A short Python fan-out shows how to run them safely.
- Grok Imagine Video 1.5 API in Python: animate a still on Sume
Animate one image with Grok Imagine Video 1.5 on Sume: Python, a first frame, 720p, 4 to 15 seconds, $0.15 for 12 seconds. Text-only calls fail.
- Handle every Sume API error with one switch on next_action
Sume errors share one envelope. Branch on next_action, retryable and retry_after_seconds, and your client handles new codes without a code change. JS sample.
Written by Sume