Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.runflow.io/llms.txt

Use this file to discover all available pages before exploring further.

Pricing: $0.08/image. Endpoint: POST /v1/models/google/nano-banana-2/edit/runs.
Nano Banana 2 is Google’s new state-of-the-art image generation and editing model

Overview

Pricing

  • Base price: $0.08/image
  • Note: Usage-based, per image

Nano Banana 2 - Edit API

Endpoint: POST /v1/models/google/nano-banana-2/edit/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/google/nano-banana-2/edit/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "Transform this stained glass window into a massive underwater aquarium...",
            "image_urls": [
                "https://public.runflow.io/images/models/google/nano-banana-pro/example-output-0.webp"
            ]
        },
        "callback_url": "https://your-server.com/webhook"
    },
)

data = response.json()
print(data)

Node.js

const response = await fetch(
  "https://api.runflow.io/v1/models/google/nano-banana-2/edit/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "Transform this stained glass window into a massive underwater aquarium...",
            "image_urls": [
                "https://public.runflow.io/images/models/google/nano-banana-pro/example-output-0.webp"
            ]
        },
        "callback_url": "https://your-server.com/webhook"
    }),
  }
);

const data = await response.json();
console.log(data);

cURL

curl -X POST https://api.runflow.io/v1/models/google/nano-banana-2/edit/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "Transform this stained glass window into a massive underwater aquarium...",
        "image_urls": [
            "https://public.runflow.io/images/models/google/nano-banana-pro/example-output-0.webp"
        ]
    },
    "callback_url": "https://your-server.com/webhook"
}
JSON

Request parameters

ParameterTypeRequiredDescription
inputobjectrequiredModel input parameters. See “Input schema” below.
callback_urlstring | nulloptionalWebhook URL - POSTed when the run reaches a terminal state.
metadataobject | nulloptionalArbitrary key-value pairs attached to the run.

Input schema

FieldTypeRequiredAllowed valuesDescription
promptstringrequiredAnyThe prompt for image editing.
aspect_ratiostringoptionalAnyThe aspect ratio of the generated image. Supports extreme ratios: 4:1, 1:4, 8:1, 1:8.
enable_web_searchbooleanoptionalAnyEnable web search for the image generation task. This will allow the model to use the latest information from the web to generate the image.
resolutionstringoptional0.5K, 1K, 2K, 4KThe resolution of the image to generate.
num_imagesintegeroptionalAnyThe number of images to generate.
output_formatstringoptionaljpeg, png, webpThe format of the generated image.
thinking_levelstringoptionalAnyWhen set, enables model thinking with the given level (‘minimal’ or ‘high’) and includes thoughts in the generation. Omit to disable.
sync_modebooleanoptionalAnyIf True, the media will be returned as a data URI and the output data won’t be available in the request history.
safety_tolerancestringoptional1, 2, 3, 4, 5, 6The safety tolerance level for content moderation. 1 is the most strict (blocks most content), 6 is the least strict.
seedintegeroptionalAnyThe seed for the random number generator.
image_urlsimage_listrequiredAnyThe URLs of the images to use for image-to-image generation or image editing.
limit_generationsbooleanoptionalAnyExperimental 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.

Output schema

FieldTypeDescription
outputsjsonUnified output array - one entry per generated artifact with url/type/width/height/duration/etc.
model_datajsonModel-specific extra fields (prompt, description, actual_prompt, masks, etc.) keyed by field name.
nsfw_detectedjsontrue if the provider flagged output as NSFW, false if cleared, null if not checked.
seedjsonDeterministic seed used for generation, or null if the provider doesn’t return one.
timingjsonProvider timing info (inference_ms etc.), or null.

Callback payload

When you provide a callback_url, Runflow POSTs to it once the run reaches a terminal state.
FieldTypeDescription
eventstringEvent type: “run.completed”, “run.failed”, or “run.cancelled”.
run_idstringThe unique identifier of the run.
statusstringTerminal status: “succeeded”, “failed”, or “cancelled”.
outputobject | nullThe run output. Null if the run failed or was cancelled.
duration_msnumber | nullTotal run duration in milliseconds.
created_atstring | nullISO 8601 timestamp when the run was created.
completed_atstring | nullISO 8601 timestamp when the run reached terminal state.
metadataobject | nullThe metadata object passed at run creation, if any.
  • Retries: 3 attempts with exponential backoff (1s, 2s). Retries on 5xx / network errors only.
  • Headers: Runflow-Request-Id is always sent. Runflow-Signature is sent if a signing secret is configured.

Additional Resources

Browse all models

Browse the catalog.

Run lifecycle

Callbacks, polling, statuses.

Callbacks

Handle async results.

Pricing

How requests bill out.