curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Преобразуй это фото в стиль акварели",
"size": "1:1",
"n": 1,
"image_urls": ["https://example.com/photo.jpg"],
"metadata": {
"resolution": "2K"
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/images/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}
)
task = response.json()
print(f"ID задачи: {task['id']}")
print(f"Статус: {task['status']}")
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gemini-3.1-flash-image-preview',
prompt: 'Ночной город в стиле киберпанк с мерцающими неоновыми огнями',
size: '16:9',
n: 1,
metadata: {
resolution: '2K'
}
})
});
const task = await response.json();
console.log(`ID задачи: ${task.id}`);
console.log(`Статус: ${task.status}`);
{
"id": "task_img_abc123def456",
"object": "generation.task",
"model": "gemini-3.1-flash-image-preview",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
Gemini-3.1-Flash-Image-preview (Nano banana2)
Gemini-3.1-Flash Генерация изображений
Генерация изображений с помощью Google Gemini 3.1 Flash, поддержка экстремальных соотношений сторон и улучшения через Google Search
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Преобразуй это фото в стиль акварели",
"size": "1:1",
"n": 1,
"image_urls": ["https://example.com/photo.jpg"],
"metadata": {
"resolution": "2K"
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/images/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}
)
task = response.json()
print(f"ID задачи: {task['id']}")
print(f"Статус: {task['status']}")
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gemini-3.1-flash-image-preview',
prompt: 'Ночной город в стиле киберпанк с мерцающими неоновыми огнями',
size: '16:9',
n: 1,
metadata: {
resolution: '2K'
}
})
});
const task = await response.json();
console.log(`ID задачи: ${task.id}`);
console.log(`Статус: ${task.status}`);
{
"id": "task_img_abc123def456",
"object": "generation.task",
"model": "gemini-3.1-flash-image-preview",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}
Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.- Модель генерации изображений Google Gemini 3.1 Flash (Nano banana2)
- Используйте параметр model для выбора
gemini-3.1-flash-image-preview - Поддержка текст-в-изображение и изображение-в-изображение, вывод до 4K разрешения
- До 6 референсных изображений для сохранения стиля/консистентности персонажей
- Поддержка экстремальных соотношений сторон (1:4, 4:1, 1:8, 8:1)
- Интегрированное улучшение через Google Search для генерации более реалистичных изображений
- Асинхронное управление задачами, запрос результатов по ID задачи
Важное изменение: Для повышения производительности и контроля затрат мы больше не поддерживаем передачу данных изображений в формате base64 напрямую в
image_urls. Пожалуйста, сначала используйте API загрузки изображений для загрузки изображений и получения URL, а затем вызывайте этот эндпоинт.Авторизация
string
обязательно
Все API требуют аутентификации Bearer TokenПолучите API Key на странице управления API KeyДобавьте в заголовок запроса:
Authorization: Bearer YOUR_API_KEY
Тело запроса
string
по умолчанию:"gemini-3.1-flash-image-preview"
обязательно
Название модели генерации изображенийПример:
"gemini-3.1-flash-image-preview"string
обязательно
Текстовое описание для генерации изображения
string
Соотношение сторон изображенияПоддерживаемые значения:
| Значение | Применение |
|---|---|
1:1 | Квадрат, аватар, социальные сети |
3:2 / 2:3 | Стандартное фото |
4:3 / 3:4 | Традиционный монитор |
16:9 / 9:16 | Широкоформатный / вертикальный |
5:4 / 4:5 | |
21:9 | Ультраширокий баннер |
1:4 / 4:1 | Длинный постер / баннер |
1:8 / 8:1 | Экстремально длинное изображение |
integer
по умолчанию:1
Количество генерируемых изображений⚠️ Примечание: Должно быть чистым числом (например
1), без кавычек, иначе будет ошибкаobject[]
Список URL референсных изображений для режима изображение-в-изображение
Ограничение: Максимум 6 изображений
Показать Подробное описание полей
Показать Подробное описание полей
string
обязательно
URL изображения⚠️ Только формат URL (base64 больше не поддерживается)
- Публично доступный URL изображения (http:// или https://)
- Пример:
https://example.com/image.jpg - Используйте API загрузки изображений для получения URL
- Один файл не более 10MB
- Поддерживаемые форматы: .jpeg, .jpg, .png, .webp
object
Метаданные для передачи дополнительных параметров конфигурации
Показать Поддерживаемые поля метаданных
Показать Поддерживаемые поля метаданных
string
по умолчанию:"1K"
Разрешение выходного изображенияПоддерживаемые значения:
0.5K— ~512px, предпросмотр низкого разрешения1K— ~1024px, стандартное разрешение (по умолчанию)2K— ~2048px, высокое разрешение4K— ~4096px, сверхвысокое разрешение
boolean
по умолчанию:"false"
Включить улучшение через текстовый поиск Google
true: Модель сначала ищет текстовую информацию в интернете для улучшения генерацииfalse: Отключено (по умолчанию)
boolean
по умолчанию:"false"
Включить улучшение через поиск изображений Google
true: Помимо текстового поиска, также ищет референсные изображенияfalse: Отключено (по умолчанию)
google_search: trueОтвет
string
Уникальный идентификатор задачи для запроса статуса
string
Тип объекта, всегда
generation.taskstring
Используемое название модели
string
Статус задачи
queued- В очередиin_progress- Обрабатываетсяcompleted- Успешно завершеноfailed- Ошибка
integer
Прогресс задачи в процентах (0-100)
integer
Временная метка создания задачи (Unix timestamp)
object
Метаданные задачи
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}'
curl --request POST \
--url https://toapis.com/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "Преобразуй это фото в стиль акварели",
"size": "1:1",
"n": 1,
"image_urls": ["https://example.com/photo.jpg"],
"metadata": {
"resolution": "2K"
}
}'
import requests
response = requests.post(
"https://toapis.com/v1/images/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "gemini-3.1-flash-image-preview",
"prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
"size": "16:9",
"n": 1,
"metadata": {
"resolution": "2K"
}
}
)
task = response.json()
print(f"ID задачи: {task['id']}")
print(f"Статус: {task['status']}")
const response = await fetch('https://toapis.com/v1/images/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gemini-3.1-flash-image-preview',
prompt: 'Ночной город в стиле киберпанк с мерцающими неоновыми огнями',
size: '16:9',
n: 1,
metadata: {
resolution: '2K'
}
})
});
const task = await response.json();
console.log(`ID задачи: ${task.id}`);
console.log(`Статус: ${task.status}`);
{
"id": "task_img_abc123def456",
"object": "generation.task",
"model": "gemini-3.1-flash-image-preview",
"status": "queued",
"progress": 0,
"created_at": 1703884800,
"metadata": {}
}