Nano Banana 2 (text to image)
curl --request POST \
--url https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"size": "<string>",
"google": {
"web_search": true,
"image_search": true
},
"prompt": "<string>",
"aspect_ratio": "<string>",
"output_format": "<string>"
}
'import requests
url = "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image"
payload = {
"size": "<string>",
"google": {
"web_search": True,
"image_search": True
},
"prompt": "<string>",
"aspect_ratio": "<string>",
"output_format": "<string>"
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
size: '<string>',
google: {web_search: true, image_search: true},
prompt: '<string>',
aspect_ratio: '<string>',
output_format: '<string>'
})
};
fetch('https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => '<string>',
'google' => [
'web_search' => true,
'image_search' => true
],
'prompt' => '<string>',
'aspect_ratio' => '<string>',
'output_format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image"
payload := strings.NewReader("{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"image_urls": [
{}
],
"grounding_metadata": {}
}Image
Nano Banana 2 (text to image)
POST
/
v3
/
gemini-3.1-flash-image-text-to-image
Nano Banana 2 (text to image)
curl --request POST \
--url https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"size": "<string>",
"google": {
"web_search": true,
"image_search": true
},
"prompt": "<string>",
"aspect_ratio": "<string>",
"output_format": "<string>"
}
'import requests
url = "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image"
payload = {
"size": "<string>",
"google": {
"web_search": True,
"image_search": True
},
"prompt": "<string>",
"aspect_ratio": "<string>",
"output_format": "<string>"
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
size: '<string>',
google: {web_search: true, image_search: true},
prompt: '<string>',
aspect_ratio: '<string>',
output_format: '<string>'
})
};
fetch('https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'size' => '<string>',
'google' => [
'web_search' => true,
'image_search' => true
],
'prompt' => '<string>',
'aspect_ratio' => '<string>',
'output_format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image"
payload := strings.NewReader("{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myrouter.ai/v3/gemini-3.1-flash-image-text-to-image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"size\": \"<string>\",\n \"google\": {\n \"web_search\": true,\n \"image_search\": true\n },\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"output_format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"image_urls": [
{}
],
"grounding_metadata": {}
}Generate images from text prompts using the Gemini 3.1 Flash Image Preview model. Supports configurable image size, aspect ratio, and thinking depth for higher quality generation results.
Request Headers
string
required
Enum:
application/jsonstring
required
Bearer authentication format: Bearer {{API Key}}.
Request Body
string
default:"1K"
Output image pixel dimensions (width*height). 0.5K (512px) is only available for Gemini 3.1 Flash.Possible values:
0.5K, 1K, 2K, 4Kobject
string
required
Text prompt describing the image to generate
string
default:"1:1"
Aspect ratio of the generated image.Possible values:
1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9string
default:"image/png"
MIME type of the output image. Supports PNG and JPEG formats.Possible values:
image/png, image/jpegResponse
array
required
List of generated image URLs
object
Model grounding metadata. Returned when Google server-side tools (e.g., search) are invoked. Note: tool invocation depends on Google. Enabling the parameter makes the tool available but does not guarantee 100% tool invocation.
⌘I