AI cocktail menu photos: four 4:5 takes per drink on Sume

Eight cocktails at four takes each is 32 images: $3.20 on Nano Banana 2 at $0.10 each, 4:5 ratio, one call per drink with n=4.

5 min readSume
All posts

To make AI cocktail photos for a bar menu, send one POST /v1/images call per drink to google/nano-banana-2 with aspect_ratio: "4:5" and n: 4, then keep the best take of the four. Nano Banana 2 lists at $0.08 per image on Sume's catalog, and Sume bills list times 1.25, so each image is $0.10: eight cocktails at four takes is 32 images and $3.20, with failed generations costing nothing.

Everything below comes from Sume's Image API page and the catalog source behind it, read on 2026-10-05. A cocktail is a good fit for four takes because the glass, garnish and ice are the part a menu photo has to get right, and a second look at four candidates is cheaper than one reshoot. Holiday party menus are being drawn up now, which is why the batch size matters.

What does one drink cost on Nano Banana 2?

n is a per-call count capped by the model's catalog descriptor; for Nano Banana 2 the catalog row lists a maximum of 4, so four takes is the most one call returns. The default tier is 1K; the catalog notes that admission scales the price for 0.5K, 2K and 4K, so a 1K menu image is the number in the table.

Cocktail batch cost on Nano Banana 2 (read 2026-10-05)
ItemValueSource
List price per image$0.08Sume catalog row for nano-banana-2
Billed price per image$0.10 (list x 1.25)Image API page, billing section
Takes per call (n)4 at mostCatalog n range for this model
One drink, four takes$0.404 x $0.10
Eight drinks, four takes$3.2032 images x $0.10
4:5 ratioListedNano Banana 2 aspect ratio list

How do I request four takes of one cocktail?

Keep the prompt about the drink, not the menu: glass type, liquid color, garnish, a plain dark bar-top surface and soft side light. Put the venue's name and prices in your menu layout, not in the picture. The call below returns a 200 with four hosted URLs when it finishes inside the 30-second wait, and a 202 job envelope when it does not; branch on the status code, as the Image API page tells callers to.

import os, requests

body = {
    "model": "google/nano-banana-2",
    "prompt": "A coupe glass of a pale pink cocktail with a thin lemon twist, dark wooden bar top, soft side light, shallow depth of field, no text",
    "aspect_ratio": "4:5",
    "resolution": "1K",
    "n": 4
}
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 before the photos go on the menu?

A generated photo shows a drink that was never poured, so match it to what the bar serves.

  • Compare glass, garnish and color with the real drink; regenerate with a corrected prompt instead of editing.
  • Read usage.cost on each response; it is the billed USD amount, and token counts are always 0 for image calls.
  • If a call returns 202, read the images from GET /v1/jobs/{id}/result, the generic job result described on the Jobs and results page.
  • Add drink names and prices in your own layout tool so the words are always spelled right.

Sources

Related posts

More in Models

All Models posts

Written by Sume