---
title: "Nano Banana"
api: 'POST https://api.highwayapi.ai/gemini/v1/models/{model}:generateContent'
playground: 'simple'
---
Параметры и способ использования совпадают с официальными. Подробные параметры можно найти в официальной документации.
## Способ вызова
- `https://{api_domain}/gemini/v1/models/{model}:generateContent`
- `https://{api_domain}/gemini/v1beta/models/{model}:generateContent`
BaseURL:
- `https://{api_domain}/gemini`
## Поддерживаемые модели
- `gemini-3.1-flash-lite-image`
- `gemini-3.1-flash-image`
- `gemini-3-pro-image`
- `gemini-2.5-flash-image`
- `gemini-3.1-flash-lite-image-as`
- `gemini-3.1-flash-image-as`
- `gemini-3-pro-image-as`
- `gemini-2.5-flash-image-as`
## REST API
Пример запроса (подробное использование API смотрите в официальной документации https://ai.google.dev/gemini-api/docs/image-generation)
### Генерация изображения по тексту
```bash
curl -X POST 'https://{api_domain}/gemini/v1/models/gemini-2.5-flash-image:generateContent' \
-H 'Authorization: Bearer apikey' \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Generate an image of a cute cat playing with yarn"}]
}],
"generationConfig": {
"responseModalities": ["IMAGE"]
}
}'
Редактирование изображения
curl -X POST 'https://{api_domain}/gemini/v1/models/gemini-3-pro-image:generateContent' \
-H 'Authorization: Bearer apikey' \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"role": "user",
"parts": [
{"text": "Add a party hat to this cat"},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "'"$(cat /path/to/image | base64 -w0)"'"
}
}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}'
GenAI SDK
from google import genai
from google.genai import types
api_key = "{your-api-key}"
client = genai.Client(
http_options=types.HttpOptions(
base_url=f"https://{api_domain}/gemini",
api_version="v1",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
),
api_key=api_key,
)
try:
response = client.models.generate_content(
model="gemini-2.5-flash-image",
contents="Generate an image of a cute cat playing with yarn",
config=types.GenerateContentConfig(
response_modalities=["IMAGE"],
),
)
except Exception as e:
print(f"API request failed: {e}")
exit(1)
# Extract the generated image
if not response.candidates:
print("No candidates returned in the response.")
exit(1)
for part in response.candidates[0].content.parts:
if part.inline_data:
try:
data = part.inline_data.data
if isinstance(data, str):
import base64
data = base64.b64decode(data)
with open("output.png", "wb") as f:
f.write(data)
print("Image saved to output.png")
except (OSError, base64.binascii.Error) as e:
print(f"Failed to save image: {e}")
elif part.text:
print(part.text)
Лучшие практики
Проблема черновика-мысли
- При использовании параметра по умолчанию
responseModalities=["TEXT", "IMAGE"]модель с некоторой вероятностью генерирует два изображения: одно — черновик-мысль (1K), другое — финальное изображение. Черновик-мысль тарифицируется по токенам вывода мысли, а финальное изображение — по токенам финального вывода. - Необходимо установить
responseModalities = ["IMAGE"], чтобы генерировалось только финальное изображение.