Images · Image to image

Nano Banana 2 Edit API

Google Gemini 2 Flash image editing. Reference-based generation.

Price
From $0.06 per run from $0.06/image
Typical time
~15 s
Model id
nano_banana_2/edit

Nano Banana 2 Edit runs on one varg API key and one credit balance, the same as every other model here. You pay the provider's price, with no markup.

POST /v2/tools/image/call
curl -X POST https://api.varg.ai/v2/tools/image/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "nano_banana_2/edit",
  "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
  "files": [
    {
      "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
    }
  ],
  "aspect_ratio": "9:16"
}'
Nano Banana 2 Edit sample output
Real outputexact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.

Nano Banana 2 Edit pricing

From $0.06 per run. Prices are in US dollars and are the provider's own, with no markup. For the exact price of a request, send the same body to POST https://api.varg.ai/v2/estimate.

  • fal from $0.06/image
    fal:nano_banana_2/edit

    Image to image

    Resolution 0.5K
    $0.06/image
    Resolution 2K
    $0.12/image
    Resolution 4K
    $0.16/image
    Other
    $0.08/image
    Most one request can cost
    $0.64
    Typical time
    ~15 s

Nano Banana 2 Edit inputs

The JSON body of the request. Media inputs are URLs: upload a local file with POST /v2/files and pass the URL it returns. Full JSON Schema, no key needed: api.varg.ai/v2/tools/image?model=nano_banana_2%2Fedit

Nano Banana 2 Edit request fields
FieldWhat it does
model string requirednano_banana_2/edit picks a route automatically.
prompt string —
files array of { url } —
aspect_ratio string Allowed e.g. 16:9 | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | auto

Provider options

Optional, under provider_options.<provider>. Only the options of the provider that runs the job apply; pin a route to choose it.

provider_options.fal

Nano Banana 2 Edit options for fal
FieldWhat it does
prompt string The prompt for image editing.
system_prompt string Optional system instruction that steers the model's persona and output style across the request. Leave blank to omit; when provided, it is sent as the system instruction to Gemini (or as a system message on OpenAI-compatible providers).
image_urls array of URL strings —
seed integer Allowed -9007199254740991–9007199254740991
pdf_url string (URL) —
audio_url string (URL) —
sync_mode boolean If `True`, the media will be returned as a data URI and the output data won't be available in the request history.
video_url string (URL) —
num_images integer The number of images to generate. Allowed 1–4
resolution string Allowed 0.5K | 1K | 2K | 4K
aspect_ratio string Allowed auto | 21:9 | 16:9 | 3:2 | 4:3 | 5:4 | 1:1 | 4:5 | 3:4 | 2:3 | 9:16 | 4:1 | 1:4 | 8:1 | 1:8
output_format string Allowed jpeg | png | webp
thinking_level string Allowed minimal | high
safety_tolerance string Allowed 1 | 2 | 3 | 4 | 5 | 6
enable_web_search boolean Enable web search for the image generation task. This will allow the model to use the latest information from the web to generate the image.
limit_generations boolean Experimental parameter to limit the number of generations from each round of prompting to 1. Set to `True` to to disregard any instructions in the prompt regarding the number of images to generate and ignore any intermediate images generated by the model. This may affect generation quality.

Call the Nano Banana 2 Edit API

POST https://api.varg.ai/v2/tools/image/call with Authorization: Bearer $VARG_API_KEY. It answers 202 with a job right away.

1. Send the request

cURL
curl -X POST https://api.varg.ai/v2/tools/image/call \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "nano_banana_2/edit",
  "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
  "files": [
    {
      "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
    }
  ],
  "aspect_ratio": "9:16"
}'
JavaScript
JavaScript
const headers = {
  Authorization: `Bearer ${process.env.VARG_API_KEY}`,
  'Content-Type': 'application/json',
}

const res = await fetch('https://api.varg.ai/v2/tools/image/call', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    "model": "nano_banana_2/edit",
    "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
    "files": [
      {
        "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
      }
    ],
    "aspect_ratio": "9:16"
  }),
})
const job = await res.json() // { id: "job_…", status: "queued" }
Python
Python
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['VARG_API_KEY']}"}

job = requests.post(
    "https://api.varg.ai/v2/tools/image/call",
    headers=headers,
    json={
      "model": "nano_banana_2/edit",
      "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
      "files": [
        {
          "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
        }
      ],
      "aspect_ratio": "9:16"
    },
).json()  # {"id": "job_…", "status": "queued"}

2. Get the result

Poll the job until its status is completed, failed or cancelled; Nano Banana 2 Edit typically takes about 15 s. The result is at output.outputs[0].url.

GET /v2/jobs/{id}
curl https://api.varg.ai/v2/jobs/$JOB_ID \
  -H "Authorization: Bearer $VARG_API_KEY"

# Poll until "status" is completed, failed or cancelled.
# The result is in output.outputs[0].url
JavaScript
JavaScript
let current = job
while (!['completed', 'failed', 'cancelled'].includes(current.status)) {
  await new Promise((resolve) => setTimeout(resolve, 3000))
  current = await (await fetch(`https://api.varg.ai/v2/jobs/${current.id}`, { headers })).json()
}
console.log(current.output?.outputs?.[0]?.url)
Python
Python
import time

while job["status"] not in ("completed", "failed", "cancelled"):
    time.sleep(3)
    job = requests.get(f"https://api.varg.ai/v2/jobs/{job['id']}", headers=headers).json()

print(job["output"]["outputs"][0]["url"])
Or take a webhook instead of polling

Add options.webhook_url and varg POSTs the finished job to it.

request body
{
  "model": "nano_banana_2/edit",
  "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
  "files": [
    {
      "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
    }
  ],
  "aspect_ratio": "9:16",
  "options": {
    "webhook_url": "https://your-app.com/varg-webhook"
  }
}

From Claude, ChatGPT or Cursor (MCP)

The varg MCP server, https://mcp.varg.ai/mcp, runs Nano Banana 2 Edit with call_tool. Sign in with varg, no API key to paste. How to connect it

call_tool
{
  "tool": "image",
  "input": {
    "model": "nano_banana_2/edit",
    "prompt": "exact same man from reference image — muscular male calisthenics coach, same face, same dark tank top, same necklace, same hairstyle, same skin texture, same age, same gym background with equipment visible, same warm dramatic lighting from above-left, same UGC vertical framing, centered in frame looking directly into camera, serious but welcoming expression, calm focused eyes, slight natural ready-to-speak stance, photorealistic, no smile, no overacting, no beauty filter, no subtitles. Maintain exact facial identity from reference. No face changes.",
    "files": [
      {
        "url": "https://s3.varg.ai/files/667690f1-5d8e-48e0-95ed-4ece08ad7202/file_5aed78f5ac31.png"
      }
    ],
    "aspect_ratio": "9:16"
  },
  "wait": true
}

Nano Banana 2 Edit API: questions

How much does Nano Banana 2 Edit cost on varg?
Nano Banana 2 Edit costs from $0.06 per run on varg (from $0.06/image on the cheapest route). varg charges the provider's price with no markup, from one credit balance. For the exact price of a request before you run it, send the same body to POST https://api.varg.ai/v2/estimate.
How do I call the Nano Banana 2 Edit API?
Send POST https://api.varg.ai/v2/tools/image/call with the header "Authorization: Bearer $VARG_API_KEY" and a JSON body that includes "model": "nano_banana_2/edit". The call answers 202 with a job right away. Poll GET https://api.varg.ai/v2/jobs/{id} until "status" is "completed", then read output.outputs[0].url, or pass options.webhook_url to be called back.
Can I use Nano Banana 2 Edit from Claude, ChatGPT or Cursor?
Yes. Add the varg MCP server (https://mcp.varg.ai/mcp) to Claude, ChatGPT, Cursor or any other MCP client and sign in with varg, with no API key to paste. The agent runs Nano Banana 2 Edit with call_tool, passing tool "image" and "model": "nano_banana_2/edit".
How long does a Nano Banana 2 Edit request take?
Typically about 15 s on the fastest route, by the catalog's estimate. The API answers at once with a job id, so nothing waits on an open connection while it runs.

For AI agents: this page as Markdown is varg.ai/models/nano_banana_2%2Fedit.md, and every model is listed in varg.ai/models/llms.txt.