Back to Toolbox

Prompt

Start with the prompt. Open settings only if you need to change defaults or update your API key.

This endpoint is prompt-only. Unlike the upload-based editors elsewhere in this toolbox, Nano Banana 2 does not accept source image files or reference image URLs.

Be explicit about framing, subject, lighting, and details you want preserved.

Settings, API key, and request JSON

This UI defaults to the least strict mode.

Use the same seed with the same prompt to recreate the same output.

Optional Controls

Sync mode skips request history storage. Web search lets the model use up-to-date public web context.

Generation Policy

Keeps the model from following prompt instructions that ask for extra intermediate or multiple image rounds.

{}

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
Estimated Request $0.08

Base price for 1 image at 1K.

Approx. Requests per $1 12.5

Pricing changes with resolution, web search, and high thinking.

Resolution Multiplier 1.0x

0.5K = 0.75x, 2K = 1.5x, 4K = 2x.

Add-ons $0.00

Web search adds $0.015 and high thinking adds $0.002.

Endpoint https://fal.run/fal-ai/nano-banana-2
Model ID fal-ai/nano-banana-2
Category Text-to-image · inference
Tags
fast Google web search thinking
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.