Nano Banana 2.1 still, then Omni 1080p for 6 s: $1.225 together
A Nano Banana 2.1 still at $0.10 and a 6-second Omni Flash 1080p animation at $1.125 total $1.225 on Sume. The two-call Python script and where the cost sits.

A Nano Banana 2.1 still at 1K costs $0.10 on Sume, and animating it with Gemini Omni Flash 1.1 at 1080p for 6 seconds costs 6 x $0.1875 = $1.125, so the pair costs $1.225. The video is 92% of that total.
Google's changelog lists Nano Banana 2.1 as generally available on Oct 6 2026 (read 2026-10-09). On Sume you call it by the id nano-banana-2.1; prices are from the Sume price tool.
Where the money goes
Reroll the still as often as you like: at $0.10 a try, 10 stills cost $1.00, less than one 1080p animation. Settle the still first, then animate.
| Step | Model | Setting | Cost |
|---|---|---|---|
| Still | Nano Banana 2.1 | 1K | $0.10 |
| Animate | Omni Flash 1.1 | 1080p, 6 s, $0.1875 per second | $1.125 |
| Together | $1.225 | ||
| Same animation at 720p | Omni Flash 1.1 | 6 s, $0.125 per second | $0.75 |
The two calls
POST /v1/images blocks for up to 30 seconds and returns the image as a Sume-hosted URL in data[0].url. If it answers 202, poll the job before you read the URL. Pass the URL to the Video Router as image_url.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
img = requests.post("https://api.sume.com/v1/images", headers=H, timeout=60,
json={"model": "nano-banana-2.1",
"prompt": "Matte black bottle on marble, soft window light, vertical"})
img.raise_for_status()
if img.status_code != 200:
raise SystemExit("image job still running: poll its status_url first")
still = img.json()["data"][0]["url"]
vid = requests.post("https://api.sume.com/v1/video-router/generate", headers=H, timeout=60,
json={"model": "gemini-omni-flash-1.1", "image_url": still,
"prompt": "Slow orbit around the bottle, light shifts across the label",
"resolution": "1080p", "duration": 6, "aspect_ratio": "9:16", "mode": "async"})
vid.raise_for_status()
print(vid.json())Ten assets
A set of ten stills each animated once multiplies the pair price. The table compares two animation resolutions.
| Animation | One pair | Ten pairs |
|---|---|---|
| 720p | $0.85 | $8.50 |
| 1080p | $1.225 | $12.25 |
Limits and gotchas
Check the image docs for the resolution field before you ask for 2K or 4K stills, since their price is higher than the 1K figure used here.
- Omni takes 3-10 seconds, 16:9 or 9:16. Make the still in the same shape as the clip.
- Audio is always on for Omni, so the animation has a soundtrack.
- A start-frame request uses
image_url. For a reference request, usereference_image_urlsand a token instead. - Give the video call its own Idempotency-Key; the image call is not a video job.
Sources
Related posts
More in Use cases
- Narrate a Claude Motion explainer with Sume TTS and Timeline: 12 cents
A 450-character voiceover costs $0.021 on Sume TTS and a one-minute Timeline render $0.10, so narrating a Claude Motion MP4 comes to about $0.12.
- 90-Second News Explainer Video: Stills, Voiceover, Timeline, $1.06
How to build a 90-second vertical explainer on a current story with Sume: research calls, six stills, 1,200 characters of voiceover, one two-minute render.
- Nine music variants for one Reel: a flat $0.125 each, $1.125 total
Music on Sume is a flat $0.125 per generation, so nine track variants cost $1.125 whatever the length. A cost table, the request body and what to check.
- Non-skippable YouTube ads run 15 to 60 s: how many Sume clips make 60?
Google lists non-skippable in-stream ads at 15 to 60 seconds. No Sume video model makes 60 s in one clip: clips needed per model, with prices.
Written by Sume