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/runs.
Nano Banana 2 is Google’s new state-of-the-art fast image generation and editing model

Overview

Pricing

  • Base price: $0.08/image
  • Note: Per image (1K default)

Nano Banana 2 API

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

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/google/nano-banana-2/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "A bioluminescent treehouse hotel suspended between ancient redwood trees at twilight. Three geodesic glass pods connected by vine-wrapped rope bridges, each pod glowing turquoise from within. Orchids and phosphorescent mushrooms grow on the bark. A narrow wooden staircase spirals up the trunk. Mist drifts through the canopy."
        },
        "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/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "A bioluminescent treehouse hotel suspended between ancient redwood trees at twilight. Three geodesic glass pods connected by vine-wrapped rope bridges, each pod glowing turquoise from within. Orchids and phosphorescent mushrooms grow on the bark. A narrow wooden staircase spirals up the trunk. Mist drifts through the canopy."
        },
        "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/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "A bioluminescent treehouse hotel suspended between ancient redwood trees at twilight. Three geodesic glass pods connected by vine-wrapped rope bridges, each pod glowing turquoise from within. Orchids and phosphorescent mushrooms grow on the bark. A narrow wooden staircase spirals up the trunk. Mist drifts through the canopy."
    },
    "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
promptstringrequiredAnyText prompt describing the image. 3–50,000 characters.
resolutionstringoptional0.5K, 1K, 2K, 4KOutput resolution. Options: “0.5K”, “1K”, “2K”, “4K”. Default: “1K”. Price varies by tier.
aspect_ratiostringoptionalauto, 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:8Image aspect ratio. Options: “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”. Use “auto” to let the model decide. Default: “auto”.
enable_web_searchbooleanoptionalAnyEnable web search to ground generation in current information. +$0.015/image. Default: false.
thinking_levelstringoptionalminimal, highEnable model thinking. Options: “minimal”, “high”. Adds +$0.002/image at high level. Omit to disable.
num_imagesintegeroptionalAnyNumber of images to generate. Range: 1–4. Default: 1.
output_formatstringoptionaljpeg, png, webpOutput format. Options: “jpeg”, “png”, “webp”. Default: “png”.
safety_tolerancestringoptionalAnyContent moderation level. 1 = most strict, 6 = least strict. Default: 4.
seedintegeroptionalAnyRandom seed for reproducible outputs.
limit_generationsbooleanoptionalAnyLimit to 1 image per prompt round regardless of prompt instructions. Default: true.
sync_modebooleanoptionalAnyReturn media as data URI without storing in history. Default: false.

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.