AI book cover mockup on Nano Banana Pro: 4:5 and four resolutions

Nano Banana Pro lists at $0.15 at 1K and default quality and bills $0.1875 on Sume; it takes 0.5K, 1K, 2K or 4K and 4:5, so read usage.cost for larger tiers.

5 min readSume
All posts

For an AI book cover mockup, call google/nano-banana-pro with aspect_ratio: "4:5" and a resolution of 0.5K, 1K, 2K or 4K. The catalog's default rate is $0.15 list at 1K and default quality, which bills $0.1875 on Sume (list times 1.25); for the larger tiers, read usage.cost instead of assuming the 1K price.

A cover mockup is a concept for a designer or a pitch, and a final cover needs your own typeset title. Facts are from Sume's Image API page and the catalog source, read on 2026-10-05. Nano Banana Pro lists 4:5 in its ratios, and a 2:3 trade paperback shape is closer to 2:3, so check that ratio in the catalog for the row.

What do the tiers look like?

Draft a mockup at 1K, then raise the tier only for the cover you keep.

Nano Banana Pro for a cover mockup (read 2026-10-05)
ItemValueSource
Model idgoogle/nano-banana-proImage API page
Default rate$0.15 list at 1KPricing table, 1K default
Billed at that rate$0.1875$0.15 x 1.25
Resolution tiers0.5K, 1K, 2K, 4KCatalog resolutions
Larger tiersRead usage.costNot assumed here
Ratio4:5 is listedImage API page

How do I request a mockup?

Describe the scene and leave the title area empty; set the real title in a design tool.

import os, requests

body = {
    "model": "google/nano-banana-pro",
    "prompt": "Book cover art for a mystery novel: a lighthouse at night above a stormy sea, moody blues, large clear space at the top for a title, no text",
    "aspect_ratio": "4:5",
    "resolution": "1K"
}
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?

  • Typeset the title and author name yourself.
  • Check the print trim size against the ratio before you commit.
  • Compare a 1K draft with a 2K finish on one image only.
  • Read usage.cost to price the tier you chose.

Sources

Related posts

More in Models

All Models posts

Written by Sume