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.
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.
| Check | Request | Status | Result |
|---|---|---|---|
| Pricing API reachable | GET https://cn.crazyrouter.com/api/pricing | 200 | Returned the public model pricing catalog used by these pages. |
| Target models visible to API key | GET https://cn.crazyrouter.com/v1/models | 200 | Authenticated 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 -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
}'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.