Sume image_size vs aspect_ratio: 1080x1350 and GPT size limits

image_size wins over aspect_ratio on Sume's image API. On Nano Banana 1080x1350 becomes 4:5 plus target pixels; GPT needs multiples of 16. Rules and checks.

3 min readSume
All posts

If you send both image_size and aspect_ratio to the Sume image API, image_size wins. On GPT Image rows a custom size must be a multiple of 16 on each side, with a longest edge of 3840, an aspect no wider than 3:1, and between 655,360 and 8,294,400 pixels. On Nano Banana rows, 1080x1350 is turned into aspect_ratio of 4:5 plus a job target_pixels value, and the exact 1080 by 1350 is described in the docs as a post-step.

This catches people who copy a social-media size straight into a request. The right value depends on the row.

Rules by row family

How image_size behaves, from the Sume image docs (read 2026-10-08)
Row familyimage_size acceptedNotes
GPT ImageEnum or width and heightx16, max edge 3840, ratio at most 3:1, 655,360 to 8,294,400 px
Seedream, FLUX, Qwen, RecraftCustom pixelsField wins over aspect_ratio
Nano BananaMaps to a ratio1080x1350 becomes 4:5 and target_pixels; exact size is a post-step
Any rowsizeTier shorthand only; WxH is rejected, use image_size

Pick the right field

  • For a plain ratio such as 4:5 or 16:9, use aspect_ratio and a resolution tier. It works on every row that lists the ratio.
  • For exact pixels on GPT, FLUX, Seedream, Qwen or Recraft, use image_size and check the rules above.
  • For Nano Banana, use aspect_ratio and resize to the exact pixels yourself.
  • Never send WxH in size; it is rejected.

Two examples

A 1080 by 1350 feed post cannot be sent to GPT Image 2.5 as is, because 1080 divided by 16 is 67.5. Use 1088 by 1360, or send 4:5 and crop. The request below uses a safe size:

{
  "model": "openai/gpt-image-2.5",
  "prompt": "flat illustration of a bakery counter, warm colors",
  "image_size": {"width": 1088, "height": 1360}
}

Check before you send

Validate the numbers in your own code: both sides divisible by 16, longest edge at most 3840, long side divided by short side at most 3, and total pixels in range. 1088 times 1360 is 1,479,680 pixels, inside the range. A failed validation on your side costs nothing; a bad request is a 400.

Where the pixels end up

The result is a hosted URL on the response, and the job record keeps the final request. If you used image_size, read the width and height of the returned file before you place it in a layout, since a documented post-step on some rows means the file may not be your exact target. Store the target next to the file so the resize step knows what to do.

For a batch, run the validator once at the start of your script, not per image, and log the first failing field.

What Sume does not do

Sume does not round a GPT size to a legal one for you, and it does not resize a Nano Banana result to the exact pixels. If your template needs 1080 by 1350 exactly, do the final resize in your own pipeline.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume