Base price for 1 image at 1K.
Nano Banana 2 Edit
Google's Nano Banana 2 editing endpoint for prompt-guided image-to-image work. Upload reference images, mix in remote URLs, and send the final payload straight to fal.ai.
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
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 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.