Skip to content

Nano Banana API Examples

Since the nano-banana model is a multimodal model, the OpenAI SDK currently does not support direct access to this model. You need to use the request method to access the nano-banana model.

Basic Configuration

Before starting to use the API, please ensure you have obtained an API Key. If not, please refer to Create API Key.

⚠️ Important: Address Change Notice

The old address https://api.agentsflare.com/googleapi/google/v1/models/ will no longer be updated. Please migrate as soon as possible!

The new address https://api.agentsflare.com/google/v1/models/ offers the following advantages:

  • ✅ Supports automatic channel switching on 429 errors, more stable
  • ✅ Continuous updates and optimizations
  • ✅ Better performance

Basic Information

  • API Base URL: https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent
  • Authentication Method: Bearer Token
  • Content Type: application/json

Request Examples

bash
curl -X POST "https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer API-KEY" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{"text": "Generate a display image of a sports car."}]
    }],
    "generationConfig": {
      "imageConfig": {
        "aspectRatio": "16:9",
        "imageSize": "1K"
      }
    }
  }'
python
import requests

url = "https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer API-KEY"
}
data = {
    "contents": [{
        "role": "user",
        "parts": [{"text": "Generate a display image of a sports car."}]
    }],
    "generationConfig": {
        "imageConfig": {
            "aspectRatio": "16:9",
            "imageSize": "1K"
        }
    }
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Collections;

public class NanoBananaExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(new URI("https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent"))
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer API-KEY")
            .POST(HttpRequest.BodyPublishers.ofString("""
            {
                "contents": [{
                    "role": "user",
                    "parts": [{"text": "Generate a display image of a sports car."}]
                }],
                "generationConfig": {
                    "imageConfig": {
                        "aspectRatio": "16:9",
                        "imageSize": "1K"
                    }
                }
            }
            """))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
javascript
const axios = require('axios');

const url = 'https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent';
const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer API-KEY'
};
const data = {
    "contents": [{
        "role": "user",
        "parts": [{"text": "Generate a display image of a sports car."}]
    }],
    "generationConfig": {
        "imageConfig": {
            "aspectRatio": "16:9",
            "imageSize": "1K"
        }
    }
};

axios.post(url, data, { headers })
    .then(response => console.log(response.data))
    .catch(error => console.error(error));
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

type RequestBody struct {
	Contents []struct {
		Role  string `json:"role"`
		Parts []struct {
			Text string `json:"text"`
		} `json:"parts"`
	} `json:"contents"`
	GenerationConfig struct {
		ImageConfig struct {
			AspectRatio string `json:"aspectRatio"`
			ImageSize   string `json:"imageSize"`
		} `json:"imageConfig"`
	} `json:"generationConfig"`
}

func main() {
	url := "https://api.agentsflare.com/google/v1/models/gemini-3-pro-image-preview:generateContent"
	
	requestBody := RequestBody{
		Contents: []struct {
			Parts []struct {
				Text string `json:"text"`
			} `json:"parts"`
		}{
			{
				Parts: []struct {
					Text string `json:"text"`
				}{
					{Text: "Generate a display image of a sports car."},
				},
			},
		},
		GenerationConfig: struct {
			ImageConfig struct {
				AspectRatio string `json:"aspectRatio"`
				ImageSize   string `json:"imageSize"`
			} `json:"imageConfig"`
		}{
			ImageConfig: struct {
				AspectRatio string `json:"aspectRatio"`
				ImageSize   string `json:"imageSize"`
			}{
				AspectRatio: "16:9",
				ImageSize:   "1K",
			},
		},
	}

	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		log.Fatal(err)
	}

	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		log.Fatal(err)
	}

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("Authorization", "Bearer API-KEY")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(string(body))
}

Response Example

Convert the data after "data" to base64 and then to an image.

json
{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/jpeg",
              "data": "/9j/PoOcZyOaLe1tfs661unrf1P/Z"
            },
            "thoughtSignature": "EvzcWNXXAXOBvMMwZBfjm6U4n6io7E5K+3iawi5TnliFj8tlQmYhAxTh3sCGOdUCz7perrdCeV8NhgyYan"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 21,
    "candidatesTokenCount": 1234,
    "totalTokenCount": 1420,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 21
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "IMAGE",
        "tokenCount": 1120
      }
    ],
    "thoughtsTokenCount": 165
  },
  "modelVersion": "gemini-3-pro-image-preview",
  "responseId": "MK5kaf_nKdWU_uMPkciLkAY"
}

Request Parameters

For detailed parameters, see Nano Banana image generation

This documentation is licensed under CC BY-SA 4.0.