Nano Banana is the name for Gemini's native image generation capabilities. It currently refers to two distinct models available in the Gemini API:
- Nano Banana: The Gemini 2.5 Flash Image model (
gemini-2.5-flash-image). This model is designed for speed and efficiency, optimized for high-volume, low-latency tasks. - Nano Banana Pro: The Gemini 3 Pro Image Preview model (
gemini-3-pro-image-preview). This model is designed for professional asset production, utilizing advanced reasoning ("Thinking") to follow complex instructions and render high-fidelity text.
Get started
You can generate images using the generate_content method using the model name that corresponds to the version you'd like to use.
Python
from google import genai
from PIL import Image
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash-image",
contents="Create a picture of a futuristic banana with neon lights in a cyberpunk city.",
)
for part in response.parts:
if part.inline_data:
image = part.as_image()
image.show()
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-image",
contents: "Create a picture of a futuristic banana with neon lights in a cyberpunk city.",
});
for (const part of response.candidates[0].content.parts) {
if (part.inlineData) {
const buffer = Buffer.from(part.inlineData.data, "base64");
fs.writeFileSync("banana.png", buffer);
}
}
Go
package main
import (
"context"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
// handle error
}
resp, err := client.Models.GenerateContent(
ctx,
"gemini-2.5-flash-image",
genai.Text("Create a picture of a futuristic banana with neon lights in a cyberpunk city."),
)
for _, part := range resp.Candidates[0].Content.Parts {
if part.InlineData != nil {
_ = os.WriteFile("banana.png", part.InlineData.Data, 0644)
}
}
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Part;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ImageGen {
public static void main(String[] args) throws Exception {
try (Client client = new Client()) {
GenerateContentResponse response = client.models.generateContent(
"gemini-2.5-flash-image",
"Create a picture of a futuristic banana with neon lights in a cyberpunk city.",
null);
for (Part part : response.parts()) {
if (part.inlineData().isPresent()) {
Files.write(Paths.get("banana.png"), part.inlineData().get().data().get());
}
}
}
}
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Create a picture of a futuristic banana with neon lights in a cyberpunk city."}
]
}]
}'
Learn more
For comprehensive documentation on image generation, editing, advanced prompting, and model comparisons, please see the full guide:
- Image generation with Gemini: The complete guide to using Nano Banana and Nano Banana Pro models.
- Model information: Details on model versions, capabilities, and pricing.