21:9 architecture photos with AI: which Sume models take the ratio

Nano Banana 2 and Pro, FLUX.2 pro and flex, Qwen and Recraft list 21:9 on Sume. GPT Image 2.5 gets 3840x1648 by custom size. Imagen, Ideogram, Seedream do not.

5 min readSume
All posts

For a 21:9 architecture photo on Sume, use Nano Banana 2 or Pro, FLUX.2 pro or flex, Qwen Image Max or Recraft V4, which list the ratio, or GPT Image 2.5 with a custom 3840 x 1648 size. Imagen 4, Ideogram and Seedream rows do not list 21:9 in the docs I read, and sume/auto returns a 400 if you pass a ratio the chosen model lacks.

Black Forest Labs lists 21:9 to 9:21 for FLUX 3 Image, which is why wide-format stills are in demand this week. Sume does not list FLUX 3, so for now the options below are the ones you can actually call.

Which rows take it

Brutalist buildings reward wide framing: long horizontal concrete, deep shadow and a small human figure for scale. Pick the model by how it gets to 21:9, then compare on one prompt.

read 2026-10-03 from Sume's image model docs
Model on SumeHow 21:9 is reachedNote
Nano Banana 2Aspect ratio 21:9Also lists 4:1, 8:1, 1:4, 1:8
Nano Banana ProAspect ratio 21:90.5K to 4K tiers
FLUX.2 pro / flexCustom pixel ratioFAL custom ratios include 21:9 and 9:21
Qwen Image MaxCustom pixel ratioText-to-image only
Recraft V4Custom pixel ratioWebP out, text-to-image only
GPT Image 2.5Custom size 3840 x 1648Within the 3:1 and pixel limits
Imagen 4, Ideogram, SeedreamNot listedChoose another ratio or crop

A prompt that suits the format

Write for the frame: "wide 21:9 photograph of a brutalist concrete library at dusk, long horizontal composition, a single pedestrian for scale, overcast sky, symmetrical, 35mm look, no text." Mention the wide framing in words as well as the parameter, since some models compose better when told. Run the same prompt on two or three rows and keep the one that best handles the long horizon line.

If a model lacks 21:9, generate at 16:9 and crop to 21:9, which removes about 12 percent of the height. That is cheaper than a fresh render but cuts anything near the top and bottom edges, so keep the subject centered.

Resolution and what to ask for

A 21:9 frame at 3840 pixels wide is only 1648 pixels tall, which is 6.3 megapixels. Nano Banana Pro lists tiers from 0.5K to 4K, so pick a tier that gives you at least the width you need for the final use. For a website hero, 2560 wide is usually enough; for a print banner, render at the largest tier and plan to upscale. Sume exposes an upscale tool in its MCP surface, image_upscale_create, for that last step.

Do not trust a single render for architecture. Straight lines, repeating windows and the number of floors are common places for models to slip, so generate several and count the storeys before you pick one.

Cropping as a fallback, honestly

A crop from 16:9 is a legitimate route when the model you prefer lacks 21:9, but it changes the picture. A 16:9 render at 3840 x 2160 cropped to 21:9 becomes 3840 x 1646, so you lose 514 pixel rows. For architecture, where the sky and the ground line often sit near the edges, that can remove the entire context of the building. Prefer a native 21:9 row when the composition depends on both.

Also note that a wide ratio is not a resolution guarantee. Sume's catalog tells you which tiers each model offers, and some rows return a fixed native size and apply a target-pixel step afterwards, as the docs describe for Nano Banana at 4:5.

Check before you send

Read the aspect list from the catalog and fail locally. This avoids paying for a request that will 400, and it keeps working when a row is added or removed.

More on the 400 behavior is in the Auto 21:9 post, and the list of rows is at docs.sume.com/models/images.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.get("https://api.sume.com/v1/images/models", headers=H, timeout=30)
r.raise_for_status()
for m in r.json()["data"]:
    ratios = m.get("supported_parameters", {}).get("aspect_ratio", {}).get("values", [])
    if "21:9" in ratios:
        print(m["id"])

Sources

Related posts

More in Models

All Models posts

Written by Sume