Nano Banana icon
Image by Google

Nano Banana API

Generate and edit images with Google's Nano Banana through one unified API. A single REST endpoint, async jobs, and webhooks, with no Google Cloud setup to manage.

Integrate Nano Banana with a single API call — one key, one unified endpoint, and shared billing across every model on Apiframe.

model: "nano-banana"
Nano Banana four-panel sequence showing the same character waking up, commuting, working, and relaxing with a consistent look

What's special about Nano Banana

Generation and editing in one model

Built natively into Gemini 2.5 Flash, it both creates images from text and edits existing ones to a state-of-the-art standard.

Conversational, mask-free editing

You make targeted, region-aware changes with plain language and refine across multiple turns, without fussy manual masks.

Multi-image fusion

It blends several reference images into one seamless result, borrowing a subject from one, a texture from another, and a background from a third.

Character and style consistency

It keeps the same character, product, or style across a sequence of images without time-consuming fine-tuning.

Native multimodal world knowledge

Because it draws on Gemini's broader understanding, it grasps how light, objects, and context relate, and renders readable text more reliably than many models.

Fast, affordable, and responsible

As a Flash-tier model it offers low latency and cost-effective generation, with Google's invisible SynthID watermark on outputs.

Made with Nano Banana

A few outputs generated through the Nano Banana API on Apiframe.

Nano Banana conversational edit changing a living room wall color to sage green while keeping everything else the same

Change the wall color in this living room photo to sage green, keeping everything else the same.

Nano Banana multi-image fusion blending a product photo, a fabric texture, and a background into one seamless ad image

Blend this product photo, this fabric texture, and this background into one seamless ad image.

Nano Banana four-panel sequence showing the same character waking up, commuting, working, and relaxing with a consistent look

Show this same character in four panels, waking up, commuting, working, and relaxing, consistent look.

Nano Banana photorealistic product mockup of a cereal box reading 'OAT CRUNCH' on a kitchen counter

A photorealistic product mockup of a cereal box reading 'OAT CRUNCH' on a kitchen counter.

Nano Banana composite placing a person into a scenic mountain background while matching the lighting and perspective

Place me in this scenic mountain background, matching the lighting and perspective.

Nano Banana edit turning a daytime street photo into a rainy night scene with neon reflections

Turn this daytime street photo into a rainy night scene with neon reflections.

Overview

Endpoint
POST /v2/images/generate
Model ID
nano-banana
Params key
nanoBananaParams
Modality
Image
Provider
Google
Avg. completion
~15s

Capabilities

Aspect ratios1:1, 3:4, 4:3, 9:16, 16:9
Image inputSupported
Avg. time~15s

Quick start

Send a single POST /v2/images/generate request with your API key to generate with Nano Banana. The call returns a jobId you can poll or receive via webhook.

curl -X POST https://api.apiframe.ai/v2/images/generate \
  -H "X-API-Key: afk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
        "prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
        "model": "nano-banana",
        "nanoBananaParams": {
            "image_input": "https://example.com/input.jpg",
            "output_format": "jpg",
            "google_search": false,
            "image_search": false
        }
    }'
import requests

response = requests.post(
    "https://api.apiframe.ai/v2/images/generate",
    headers={
        "X-API-Key": "afk_your_api_key_here",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
        "model": "nano-banana",
        "nanoBananaParams": {
            "image_input": "https://example.com/input.jpg",
            "output_format": "jpg",
            "google_search": False,
            "image_search": False
        }
    },
)
print(response.json())  # { "jobId": "...", "status": "QUEUED" }
const response = await fetch("https://api.apiframe.ai/v2/images/generate", {
  method: "POST",
  headers: {
    "X-API-Key": "afk_your_api_key_here",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "prompt": "a sleek silver sports car on a coastal highway at sunset, hyper-realistic",
    "model": "nano-banana",
    "nanoBananaParams": {
      "image_input": "https://example.com/input.jpg",
      "output_format": "jpg",
      "google_search": false,
      "image_search": false
    }
  }),
});
const { jobId } = await response.json();
console.log(jobId);

Response & job lifecycle

Generation is asynchronous. A successful submission returns 202 Accepted with a jobId. Poll GET /v2/jobs/{id} (or supply a webhook_url) until the status is COMPLETED; the result field then holds the output URL(s).

1. Submission response (202)

{
  "jobId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "status": "QUEUED"
}

2. Poll for the result

curl https://api.apiframe.ai/v2/jobs/JOB_ID \
  -H "X-API-Key: afk_your_api_key_here"
import requests, time

while True:
    job = requests.get(
        "https://api.apiframe.ai/v2/jobs/JOB_ID",
        headers={"X-API-Key": "afk_your_api_key_here"},
    ).json()
    if job["status"] in ("COMPLETED", "FAILED"):
        break
    time.sleep(2)
print(job["result"])
let job;
do {
  await new Promise((r) => setTimeout(r, 2000));
  job = await fetch("https://api.apiframe.ai/v2/jobs/JOB_ID", {
    headers: { "X-API-Key": "afk_your_api_key_here" },
  }).then((r) => r.json());
} while (job.status !== "COMPLETED" && job.status !== "FAILED");
console.log(job.result);

Input schema

Request parameters accepted by the Nano Banana endpoint. Model-specific options are nested under the params object shown below.

Parameter Type Required Default Allowed / range Description
prompt string required Text description of what to generate.
model string required "nano-banana" "nano-banana" The model identifier for this endpoint.
nanoBananaParams.image_input string (URL) optional Compose with or edit a reference image.
nanoBananaParams.output_format string optional "jpg" "jpg", "png", "webp" Output format
nanoBananaParams.google_search boolean optional false Google search grounding
nanoBananaParams.image_search boolean optional false Image search grounding

Frequently Asked Questions

Common questions about the Nano Banana API.

What is Nano Banana?

The nickname for Google's Gemini 2.5 Flash Image, a state-of-the-art image generation and editing model released in August 2025.

What can it do?

Text-to-image generation, conversational editing, multi-image fusion, character consistency, and multi-turn refinement.

Do you need masks to edit an image?

No. It makes region-aware edits from natural-language instructions.

Can it keep a character consistent across images?

Yes, across multiple generations without fine-tuning.

Does it watermark generated images?

Yes. Outputs carry Google's invisible SynthID watermark.

Where can you access it?

Through Apiframe, as well as the Gemini app, Google AI Studio, the Gemini API, and Vertex AI.

Still have questions?

Start building with the Nano Banana API

Get your API key and integrate Nano Banana in minutes — Pay-as-you-go.

Free credits to start
One API for every model
Webhooks, SDKs & idempotency
No provider account required

Questions? Join our Discord or contact sales.