Developer Dashboard

Gemini 3.1 Flash Image Preview (Nano Banana 2) Now Available ​

Date: 2026-02-27 / (1404-12-08)

Summary ​

We announce the addition of Google's Gemini 3.1 Flash Image Preview (gemini-3.1-flash-image-preview), also known as "Nano Banana 2". This model brings high-fidelity image generation and faster, advanced editing to the Flash model series, serving as the high-efficiency counterpart to Gemini 3 Pro Image with an exceptional price-performance ratio optimized for high-volume developer use cases.


Details ​

Google Gemini 3.1 Flash Image Preview (Nano Banana 2) ​

Google's gemini-3.1-flash-image-preview (also known as "Nano Banana 2") is now available through AvalAI. This model delivers high-fidelity image generation and advanced editing capabilities, optimized for speed and high-volume developer workflows.

Model Name: gemini-3.1-flash-image-preview
Alias: Nano Banana 2

Key Features ​

  • Improved World Knowledge: Leverages Gemini's broad world knowledge with web search grounding to create enhanced visuals using real-world references
  • Advanced Text Rendering: Delivers reliable, crisp text rendering with in-image localization supporting multiple languages
  • Greater Creative Control: Vibrant lighting, richer textures, sharper details with configurable thinking levels
  • Native Aspect Ratios: Support for all existing aspect ratios plus new 4:1, 1:4, 8:1, and 1:8 ratios
  • New 512px Resolution: Optimized for efficiency with minimal latency for rapid iterations
  • Improved Instruction Following: Adheres more strictly to complex, multi-layered prompts
  • Resolution Support: Generate images up to 4K resolution (4096x4096px)
  • Image Editing: Comprehensive editing capabilities including multi-turn conversational editing
  • Google Image Search Grounding: Generate images based on real-world image references (exclusive to 3.1 Flash)

Pricing ​

TypeCost
Input Text$0.50 per 1M tokens
Input Image$0.50 per 1M tokens
Cached Input$0.25 per 1M tokens
Output Text$3.00 per 1M tokens
Output Image (1K-2K)$0.0672 per image
Output Image (2K-4K)$0.101 per image
Output Image (4K)$0.151 per image

Note: Image output is priced at $60 per 1M tokens. Output images from 1024x1024px (1K) to 2048x2048px (2K) consume approximately 1120 tokens.

Understanding the Nano Banana Family ​

Nano Banana is the name for Gemini's native image generation capabilities. Gemini can generate and process images conversationally with text, images, or a combination of both:

  • Nano Banana 2 (gemini-3.1-flash-image-preview): The high-efficiency counterpart to Gemini 3 Pro Image, optimized for speed and high-volume developer use cases
  • Nano Banana Pro (gemini-3-pro-image-preview): Designed for professional asset production with advanced reasoning ("Thinking") for complex instructions and high-fidelity text
  • Nano Banana (gemini-2.5-flash-image): Designed for speed and efficiency, optimized for high-volume, low-latency tasks

API Request/Response Examples ​

Using Chat Completions Endpoint:

bash
curl https://api.avalai.ir/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {
        "role": "user",
        "content": "Create a photorealistic portrait of a nano banana dish in a fancy restaurant with a Gemini theme"
      }
    ],
    "modalities": ["image", "text"]
  }' | jq '.choices[0].message.images[0].image_url.url |= (.[0:100] + "...[TRUNCATED]")'

Response:

json
{
  "id": "chatcmpl-xyz123",
  "created": 1740642000,
  "model": "gemini-3.1-flash-image-preview",
  "object": "chat.completion",
  "system_fingerprint": null,
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "I've created a photorealistic image of a nano banana dish in an elegant restaurant setting with a Gemini constellation theme.",
        "role": "assistant",
        "images": [
          {
            "image_url": {
              "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAADwf7zU...[TRUNCATED]",
              "detail": "auto"
            },
            "index": 0,
            "type": "image_url"
          }
        ],
        "thinking_blocks": [],
        "annotations": []
      }
    }
  ],
  "usage": {
    "completion_tokens": 1150,
    "prompt_tokens": 28,
    "total_tokens": 1178,
    "completion_tokens_details": null,
    "prompt_tokens_details": {
      "audio_tokens": null,
      "cached_tokens": null,
      "text_tokens": 28,
      "image_tokens": null
    }
  },
  "estimated_cost": {
    "unit": "0.0695000000",
    "irt": 7968.3,
    "exchange_rate": 114600
  }
}

SDK Usage Examples ​

bash
curl https://api.avalai.ir/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {
        "role": "user",
        "content": "Create a modern logo for a tech company called \"AvalAI\" with clean typography and a minimalist design"
      }
    ],
    "modalities": ["image", "text"]
  }'
python
from openai import OpenAI

client = OpenAI(api_key="your-avalai-api-key", base_url="https://api.avalai.ir/v1")

response = client.chat.completions.create(
    model="gemini-3.1-flash-image-preview",
    messages=[
        {
            "role": "user",
            "content": 'Create a modern logo for a tech company called "AvalAI" with clean typography and a minimalist design',
        }
    ],
    extra_body={"modalities": ["image", "text"]},
)

# Access the generated image
if hasattr(response.choices[0].message, "images"):
    images = getattr(response.choices[0].message, "images")
    for img in images:
        print(f"Image URL: {img.image_url.url[:100]}...")

print(response.choices[0].message.content)
javascript
import { OpenAI } from "openai";

const client = new OpenAI({
  apiKey: process.env.AVALAI_API_KEY,
  baseURL: "https://api.avalai.ir/v1",
});

const response = await client.chat.completions.create({
  model: "gemini-3.1-flash-image-preview",
  messages: [
    {
      role: "user",
      content: "Create a modern logo for a tech company called \"AvalAI\" with clean typography and a minimalist design",
    },
  ],
  modalities: ["image", "text"],
});

// Access the generated image
if (response.choices[0].message.images) {
  const images = response.choices[0].message.images;
  images.forEach((img, idx) => {
    console.log(`Image ${idx}: ${img.image_url.url.substring(0, 100)}...`);
  });
}

console.log(response.choices[0].message.content);

Image Editing Example ​

bash
curl https://api.avalai.ir/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Transform this image into a cyberpunk style with neon colors"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://example.com/original-image.jpg"
            }
          }
        ]
      }
    ],
    "modalities": ["image", "text"]
  }'
python
from openai import OpenAI

client = OpenAI(api_key="your-avalai-api-key", base_url="https://api.avalai.ir/v1")

response = client.chat.completions.create(
    model="gemini-3.1-flash-image-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Transform this image into a cyberpunk style with neon colors",
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/original-image.jpg"},
                },
            ],
        }
    ],
    extra_body={"modalities": ["image", "text"]},
)
javascript
import { OpenAI } from "openai";

const client = new OpenAI({
  apiKey: process.env.AVALAI_API_KEY,
  baseURL: "https://api.avalai.ir/v1",
});

const response = await client.chat.completions.create({
  model: "gemini-3.1-flash-image-preview",
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: "Transform this image into a cyberpunk style with neon colors",
        },
        {
          type: "image_url",
          image_url: { url: "https://example.com/original-image.jpg" },
        },
      ],
    },
  ],
  modalities: ["image", "text"],
});

Native Gemini SDK Example ​

You can also use the native Gemini API (v1beta) to access this model with Google's official SDK:

python
from google import genai
from google.genai import types
from PIL import Image

client = genai.Client(
    api_key="your-avalai-api-key",
    http_options=types.HttpOptions(base_url="https://api.avalai.ir/v1beta"),
)

prompt = (
    "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
)
response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=[prompt],
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")