Crazyrouter GuidesMain Site
Image API Guide

Nano Banana 2 API guide

Nano Banana 2 is available in the Pricing API as nano-banana-2 and uses the public OpenAI Images-compatible request path.

Use case

Image teams evaluating Gemini image routes need the public model alias, endpoint, resolution parameters, and per-image pricing assumptions in one place.

Standard model names and pricing

Source: GET https://cn.crazyrouter.com/api/pricing, snapshot 2026-06-06.

POST /v1/images/generations
nano-banana-2
$0.0369/image after 0.55x discount
Billing: per_image
Public endpoints: image-generation
Supported endpoints: image-generation, openai, gemini
Rule: i2i, 1K, verified
nano-banana-pro
$0.0737/image after 0.55x discount
Billing: per_image
Public endpoints: image-generation
Supported endpoints: image-generation, openai, gemini
Rule: i2i, 1K, verified
nano-banana
$0.0215/image after 0.55x discount
Billing: per_image
Public endpoints: image-generation
Supported endpoints: image-generation, openai, gemini
Rule: i2i, 1K, verified

Available models and pricing

The Nano Banana family is present in the pricing catalog. Start with nano-banana-2 for new integrations, then compare related models by output quality, cost, and reference-image needs.

  • nano-banana-2: $0.0369/image after 0.55x discount; public_endpoint_types = image-generation.
  • nano-banana-pro: $0.0737/image after 0.55x discount; public_endpoint_types = image-generation.
  • nano-banana: $0.0215/image after 0.55x discount; public_endpoint_types = image-generation.

Request fields

Use POST /v1/images/generations with model nano-banana-2. The public parameters are prompt, image_input, resolution, aspect_ratio, output_format, output_compression, and n. Do not pass Gemini-native fields such as generationConfig or imageOutputOptions.

  • Text-to-image: omit image_input.
  • Reference image edit: pass one or more image URLs in image_input.
  • Use output_format png, jpeg, or jpg depending on downstream needs.

Implementation checklist

Begin with one 1K image and one reference-free prompt. Add image_input, aspect_ratio, resolution, and output format controls only after the baseline request is stable.

cn.crazyrouter.com test evidence

Only checks that returned 200 are shown here. API requests use https://cn.crazyrouter.com; account, billing, and console actions use https://crazyrouter.com.

CheckRequestStatusResult
Pricing API reachableGET https://cn.crazyrouter.com/api/pricing200Returned the public model pricing catalog used by these pages.
Target models visible to API keyGET https://cn.crazyrouter.com/v1/models200Authenticated check confirmed gpt-image-2, veo-3.1-fast, veo-3.1, nano-banana-2, nano-banana-pro, nano-banana, grok-4-image, qwen-image-plus, qwen-image-max, and qwen-image-2.0 are visible to the local Crazyrouter API key.

Implementation examples

cURL
curl -X POST https://cn.crazyrouter.com/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "nano-banana-2",
    "prompt": "A clean ecommerce hero shot of a red apple on a white background",
    "n": 1
  }'
Python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://cn.crazyrouter.com/v1",
)

response = client.images.generate(
    model="nano-banana-2",
    prompt="A clean ecommerce hero shot of a red apple on a white background",
    n=1,
)

print(response.data[0].url)

FAQ

Where do these model prices come from?

Prices are based on GET https://cn.crazyrouter.com/api/pricing and the current Crazyrouter pricing catalog. For final billing, confirm usage in the Crazyrouter console and consumption logs.

Which Base URL should an OpenAI-compatible client use?

OpenAI-compatible SDKs should use https://cn.crazyrouter.com/v1. Hand-written cURL requests should use the full endpoint path, such as https://cn.crazyrouter.com/v1/images/generations.

Should I call Gemini native generateContent for Nano Banana 2?

For the public Crazyrouter contract, start with POST /v1/images/generations. The docs state that Crazyrouter handles provider-native field conversion on the server side.