Base price for 1 image at 1K.
Nano Banana 2
Google's fast state-of-the-art text-to-image model. Prompt it, pick the aspect ratio and resolution, then stream the result straight from fal.ai.
Output
Idle
Generated images and the model description appear here.
Generated images will appear here.
Run details and response JSON
Run Log
Waiting for first request...
Response JSON
No response yet.
Pricing and model details
Pricing changes with resolution, web search, and high thinking.
0.5K = 0.75x, 2K = 1.5x, 4K = 2x.
Web search adds $0.015 and high thinking adds $0.002.
Documentation, schema, examples, and resources
Collapsed by default so the interactive controls and results stay in focus.
Input Schema
prompt (string, required)
The text prompt used to generate the image.
num_images (integer)
Images per request. Default 1, range 1-4.
seed (integer)
Optional random seed for reproducible generations.
aspect_ratio (enum)
Supports standard and extreme ratios from 21:9 to 1:8, plus auto.
output_format (enum)
jpeg, png, or webp. Default png.
safety_tolerance (enum)
Moderation strictness from 1 (strictest) to 6 (least strict).
sync_mode (boolean)
Returns media as a data URI and keeps it out of request history when true.
resolution (enum)
0.5K, 1K, 2K, or 4K. Default 1K.
limit_generations (boolean)
Experimental flag that limits the number of generations from each round of prompting to 1.
enable_web_search (boolean)
Lets the model use recent public web information during image generation.
thinking_level (enum)
Optional minimal or high reasoning. Omit the field to disable thinking.
Output Schema
images
Array of image objects with fields like file_name, content_type, and url.
description
Text description of the generated images.
Usage Examples
cURL
curl --request POST \
--url https://fal.run/fal-ai/nano-banana-2 \
--header "Authorization: Key $FAL_KEY" \
--header "Content-Type: application/json" \
--data '{
"prompt": "An action shot of a black lab swimming in an inground suburban swimming pool. The camera is placed meticulously on the water line, dividing the image in half, revealing both the dog's head above water holding a tennis ball in its mouth, and its paws paddling underwater."
}'
Python
import fal_client
def on_queue_update(update):
if isinstance(update, fal_client.InProgress):
for log in update.logs:
print(log["message"])
result = fal_client.subscribe(
"fal-ai/nano-banana-2",
arguments={
"prompt": "An action shot of a black lab swimming in an inground suburban swimming pool. The camera is placed meticulously on the water line, dividing the image in half, revealing both the dog's head above water holding a tennis ball in its mouth, and its paws paddling underwater."
},
with_logs=True,
on_queue_update=on_queue_update,
)
print(result)
JavaScript
import { fal } from "@fal-ai/client";
const result = await fal.subscribe("fal-ai/nano-banana-2", {
input: {
prompt: "An action shot of a black lab swimming in an inground suburban swimming pool. The camera is placed meticulously on the water line, dividing the image in half, revealing both the dog's head above water holding a tennis ball in its mouth, and its paws paddling underwater."
},
logs: true,
onQueueUpdate: (update) => {
if (update.status === "IN_PROGRESS") {
update.logs.map((log) => log.message).forEach(console.log);
}
},
});
console.log(result.data);
console.log(result.requestId);
Additional Resources
Pricing shown on this page is based on the documentation you provided and may change on fal.ai.