One 8:1 image sliced into 8 square carousel slides: $0.15 vs $1.20
Generate one 8:1 Nano Banana 2.1 image on Sume at $0.15 (2K), cut it into 8 squares for a swipe carousel. Cost vs 8 separate images, slicing code, seam gotchas.

An 8:1 image is eight squares side by side, so one call can become an eight-slide swipe carousel where the picture runs across slide edges. On Sume, Nano Banana 2.1 lists 8:1 and a 2K image costs $0.15, against $1.20 for eight separate 2K squares at the same price per image.
The 8:1 ratio arrived with Nano Banana 2.1 GA on Oct 6 2026 (Gemini API changelog, read 2026-10-09).
Cost: one wide image or eight squares
Price depends on the resolution tier, not on the ratio, so the wide image costs the same as one square.
| Resolution | One 8:1 image | Eight 1:1 images (8 x price) | Difference |
|---|---|---|---|
| 0.5K | $0.075 | $0.60 | $0.525 |
| 1K | $0.10 | $0.80 | $0.70 |
| 2K | $0.15 | $1.20 | $1.05 |
| 4K | $0.20 | $1.60 | $1.40 |
Generate one continuous scene
Ask for one continuous scene that runs left to right. The pixel size is not fixed by the request, so read the dimensions of the returned file and cut by width divided by eight, not by a hard-coded number.
import os, requests
body = {
"model": "google/nano-banana-2.1",
"prompt": "One continuous street scene across eight panels, left to right, no text",
"aspect_ratio": "8:1",
"resolution": "2K",
}
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json=body, timeout=60,
)
print(r.status_code) # 200 = image body, 202 = job envelope
if r.status_code == 200:
out = r.json()
print(out["data"][0]["url"], out["usage"]["cost"])Cut the returned file
This Pillow snippet crops eight squares from the downloaded file. It uses the real width and height, so a result a few pixels off 8:1 still slices cleanly.
from PIL import Image
import requests, io
url = "https://media.sume.com/img/EXAMPLE/0.png" # data[0].url from the response
img = Image.open(io.BytesIO(requests.get(url, timeout=60).content))
w, h = img.size
tile = w // 8 # 8:1 means eight squares side by side
side = min(tile, h)
for i in range(8):
box = (i * tile, 0, i * tile + side, side)
img.crop(box).save(f"slide-{i + 1}.png")Gotchas
- Separate square generations will not line up at the slide edges; that is the reason to use one wide image.
- Objects on a cut line get split between two slides. Ask for empty space at the seams, or accept a deliberate swipe effect.
- Text inside the image should sit inside one eighth of the width, or it will straddle a cut.
data[].urlis a signed Sume-hosted URL; download the file you keep.
Sources
Related posts
More in Use cases
- One 9-second dance on four brand avatars: Kling motion control, $5.67
Four avatars, one 9-second driving video: four Kling 3.0 Motion Control jobs at $0.1575 a second, 4 x 9 x 0.1575 = $5.67 on Sume. Request shape and queueing.
- One model for 1:1, 4:5, 9:16, 16:9 and 21:9: 6 Sume rows do it
Of 10 Sume image rows checked, only six list all of 1:1, 4:5, 9:16, 16:9 and 21:9. FLUX.2 pro does it at $0.0375, so five placements cost $0.1875.
- Photo avatar of a real person: when YouTube's AI label applies
A photo avatar scripted to say new words falls under YouTube's 'real person says something they did not' test. How Sume's three avatar inputs map to it.
- Pinterest holiday 2026: carousel stills from one product photo
Pinterest lists Carousel ads, Gift Badge and visual search for holiday 2026. Make four 2:3 stills from one product photo with the Sume Image API.
Written by Sume