1920x1088 works on GPT Image 2.5 where 1920x1080 fails: the 16 rule

1080 is not a multiple of 16, so a custom 1920x1080 size is rejected on ChatGPT Image 2.5. Use 1920x1088 or 1536x864, then trim. Prices included.

5 min readSume
All posts

On ChatGPT Image 2.5 through Sume, a custom image_size of 1920x1080 is rejected because 1080 divided by 16 is 67.5. Ask for 1920x1088, which passes, and trim 4 pixels from the top and bottom in your slide or video tool.

The docs state the whole rule: both edges must be multiples of 16, the longest edge at most 3840, the aspect ratio at most 3:1, and the total between 655,360 and 8,294,400 pixels.

Which 16:9 sizes pass

Checking six common 16:9 sizes against that rule shows that only one common size fails.

16:9 sizes against the ChatGPT Image 2.5 custom size rule (read 2026-10-07)
SizePixelsResultWhy
1280x720921,600validBoth edges multiples of 16
1536x8641,327,104validBoth edges multiples of 16
1920x10802,073,600rejected1080 / 16 = 67.5
1920x10882,088,960validBoth edges multiples of 16
2560x14403,686,400validBoth edges multiples of 16
3840x21608,294,400validBoth edges multiples of 16

Price of the fix

Price follows output tokens for the pixel count and the quality. In the repository estimator, 1920x1088 is $0.0056 at low, $0.0130 at medium and $0.0498 at high from text, and $0.0071, $0.0164 and $0.0630 with one reference.

Compare that with 1536x864 at high, which is $0.0405 from text. If the slide is shown at 1280 wide, the smaller size is enough and it is cheaper.

  • Need exactly 1920x1080: request 1920x1088, then crop 4 px top and bottom.
  • Need 16:9 and do not care about exact pixels: use aspect_ratio: "16:9" and a preset.
  • Need 4K: 3840x2160 is valid because 2160 / 16 = 135.

Trimming the 8 extra pixels

The two padded rows are 4 at the top and 4 at the bottom. In a slide tool, set the image to fill the 1920x1080 frame anchored at the center, and the overflow is clipped without any scaling. In a video editor, the same happens when you place the 1920x1088 image on a 1920x1080 timeline with crop or fill selected.

If you must have exact pixels on the file itself, crop in a script. Any image library can do it in one line: keep x from 0 to 1920 and y from 4 to 1084. The model composes for the full 1088-row canvas, so crop only after generation.

Write the prompt as if the safe area were the central 1080 rows. Keep headline text and faces away from the top and bottom 4 pixels, which will be trimmed, and from the slide's own margins.

  • Request 1920x1088, trim to 1920x1080.
  • Or request 1536x864 and scale up if softness is acceptable.
  • Or request 3840x2160, which passes, and scale down.

A guard before you call

A two-line check in your code saves a failed request. Reject any size where either edge modulo 16 is not zero, or where the pixel count is outside the range, and round up to the next multiple. The request goes to POST /v1/images as image_size: "1920x1088" with model: "openai/gpt-image-2.5". See the Image API docs for the full parameter list.

If your pipeline builds the size from a ratio, round up rather than down. Taking 1080 and rounding it to the next multiple of 16 gives 1088, while rounding down gives 1072, which would cut off real content on the final trim. In code that is ceil(h / 16) * 16. Apply it to both edges, then check the pixel total against the 655,360 to 8,294,400 range and the 3:1 limit before you send the request, so the failure shows up in your logs with a clear reason instead of as a rejected call.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume