Back to Toolbox

Input

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

Local files are uploaded to fal storage on submit, then merged with any direct URLs you added into the final image_urls payload.

Describe the transformation, scene direction, and any details the edit must preserve.

+
Drop images here or click to upload
JPG, PNG, WebP supported

Or add image URLs

Use public image URLs when your references already live on a CDN or in fal storage.

No images selected

Settings, API key, and request JSON

This UI defaults to the least strict mode.

Set a seed if you want repeatable edits with the same prompt and inputs.

Optional Controls

Sync mode skips request history storage. Web search lets the model use public web context while composing the edit.

Generation Policy

Experimental: ignores prompt instructions that ask for additional generation rounds or extra intermediate images.

{}

Output

Idle

Edited images and the model description appear here.

Edited 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/edit
Model ID fal-ai/nano-banana-2/edit
Category Image-to-image ยท inference
Tags
editing multi-image 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 prompt that directs the edit.

num_images (integer)

Images per request. Default 1, range 1-4.

seed (integer)

Optional random seed for reproducible edits.

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.

image_urls (list<string>, required)

URLs of the images used for image-to-image editing. Local uploads are converted into fal storage URLs on submit.

resolution (enum)

0.5K, 1K, 2K, or 4K. Default 1K.

limit_generations (boolean)

Experimental flag that limits each round of prompting to a single generation.

enable_web_search (boolean)

Lets the model use recent public web information during the edit.

thinking_level (enum)

Optional minimal or high reasoning. Omit the field to disable thinking.

Output Schema

images

Array of edited image objects with fields like file_name, content_type, and url.

description

Text description of the returned images.

Usage Examples

cURL
curl --request POST \
  --url https://fal.run/fal-ai/nano-banana-2/edit \
  --header "Authorization: Key $FAL_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "prompt": "make a photo of the man driving the car down the california coastline",
    "image_urls": [
      "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input.png",
      "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input-2.png"
    ]
  }'
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/edit",
    arguments={
        "prompt": "make a photo of the man driving the car down the california coastline",
        "image_urls": [
            "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input.png",
            "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input-2.png"
        ]
    },
    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/edit", {
  input: {
    prompt: "make a photo of the man driving the car down the california coastline",
    image_urls: [
      "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input.png",
      "https://storage.googleapis.com/falserverless/example_inputs/nano-banana-edit-input-2.png"
    ]
  },
  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.