AI photo booth strip from one selfie: a 1:4 Nano Banana 2 edit

A four-frame photo strip fits the 1:4 ratio that Nano Banana 2 lists on Sume; one selfie reference and one call cost $0.10 billed per strip.

5 min readSume
All posts

To make an AI photo booth strip from one selfie, call google/nano-banana-2 with the selfie in input_references and aspect_ratio: "1:4", and ask for four stacked frames in one image. Nano Banana 2 is the Sume catalog row that lists 1:4 (and 4:1, 8:1, 1:8) among its ratios, and it bills $0.10 per image: $0.08 list times 1.25.

A booth strip is a tall four-frame layout, so a tall ratio is the right canvas. The facts below come from Sume's Image API page and the catalog source, read on 2026-10-05. Use a photo of yourself or someone who agreed to be in the strip; this is for party favors, not for pictures of other people.

Which ratio and cost fit a photo strip?

Most models in the catalog stop at 1:2 or 1:3. Nano Banana 2 lists 1:4 directly, and the edit call keeps the person's face as the reference. For a guest list, one call per guest is the plan.

Photo strip calls on Nano Banana 2 (read 2026-10-05)
ItemValueSource
Model idgoogle/nano-banana-2Image API page
Tall ratios listed1:4 and 1:8Aspect ratio list
Billed price per image$0.10$0.08 list x 1.25
Twenty guests, one strip each$2.0020 x $0.10
References per callUp to 10Catalog range

How do I request the four frames?

Describe the strip as four separate frames with the same person and small pose changes. Keep the background a plain curtain so the frames read as booth shots.

import os, requests

body = {
    "model": "google/nano-banana-2",
    "prompt": "A vintage photo booth strip with four stacked frames of the same person from the reference photo, laughing, surprised, winking, smiling, plain red curtain, black and white film look, no text",
    "aspect_ratio": "1:4",
    "input_references": [
        {
            "type": "image_url",
            "image_url": {
                "url": "https://example.com/selfie.jpg"
            }
        }
    ]
}
r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json=body,
    timeout=60,
)
if r.status_code == 200:
    out = r.json()
    for img in out["data"]:
        print(img["url"])
    print("billed USD:", out["usage"]["cost"])
elif r.status_code == 202:
    print("still running, poll:", r.json()["data"]["status_url"])
else:
    print(r.status_code, r.text)

What should I check on each strip?

  • Count the frames; ask again if the strip has three or five.
  • Check that the face matches the reference in every frame; drift is a reason to regenerate.
  • Keep guest photos only as long as the event needs them, and delete the files after.
  • A 202 means the job is still running: read the result from the job endpoint.

Sources

Related posts

More in Models

All Models posts

Written by Sume