Nano Banana 2 Lite, officially Gemini 3.1 Flash-Lite Image, is the speed option in Google's Nano Banana line, released in June 2026. Every image comes out at 1K, which keeps it fast and light. It is the model to use when you need many pictures quickly, or when your app is waiting for the result and every second counts.
What you can make
- Thumbnails, previews and placeholders in bulk.
- Batch fixes on product photos, such as tidying up or swapping a background.
- Quick idea rounds before the final render on a bigger model.
- In-app features where the user should see a result almost right away.
Settings that matter
- Resolution: fixed at 1K, one image per request.
- Aspect ratio: 14 shapes including the extreme 1:8 and 8:1, or
auto. For edits leave it onautoand the output follows your photo. - References: up to 10 images in
image_urls, in JPEG, PNG or WebP, each up to 30 MB. - Prompt: up to 20,000 characters, though short single instructions work best for edits.
- Multi-step edits: do one change per request and chain them, instead of piling five changes into one prompt.
Starter prompt
Replace the background with a plain light grey studio wall, keep the sneaker, its shadow and its colors exactly as they areUse the same sentence across a whole folder of product shots and only change the background color when needed.
Questions
What does a Nano Banana 2 Lite image cost?
$0.0375 per image. You pay from a prepaid balance without a minimum commitment, and a failed image costs nothing.
When should I move up to Nano Banana 2?
When you need 2K or 4K. Approve the idea on Lite, then rerun the winning prompt on Nano Banana 2 or Nano Banana Pro. The Lite vs 2 comparison lists all differences.
Can I edit with several photos at once?
Yes, up to 10 per request. Say in the prompt what each image is for, such as "product from the first, background from the second".
Nano Banana 2 Lite in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2-lite",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "nano-banana-2-lite",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "nano-banana-2-lite",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "auto"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 20000 chars | |
aspect_ratio | string | 1:1 1:4 1:8 2:3 3:2 3:4 4:1 4:3 4:5 5:4 8:1 9:16 16:9 21:9 auto | auto |
image_urls | array | max 10 |
Fetch this list as JSON with GET /v1/models/nano-banana-2-lite.


























