Source: https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/
Canonical: https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/
Language: ru

# Google: Nano Banana Pro (Gemini 3 Pro Image Preview)

[Markdown](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/index.md) · [JSON](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/facts.json)

## [Google: Nano Banana Pro (Gemini 3 Pro Image Preview)](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/)

Nano Banana Pro — модель Google Gemini 3 Pro Image Preview для генерации и редактирования изображений. Документированный профиль поддерживает композицию из нескольких изображений, встроенный текст, локализованные творческие правки, привязку к Search и вывод 2K или 4K.

- [**Ailoot Ultra · Чат OpenAI** `POST /v1/chat/completions` `google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/#method-0)
- [**Ailoot Ultra · Картинки** `POST /v1/images/generations` `google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/#method-1)
- [**Ailoot Ultra · Сообщения Anthropic** `POST /v1/messages` `google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/google-gemini-3-pro-image-preview/#method-2)

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

Nano Banana Pro — модель Google для генерации и редактирования изображений, построенная на Gemini 3 Pro. Она принимает текст и изображения и возвращает изображения или текст. Опубликованный профиль охватывает инфографику, схемы, товарные визуализации, раскадровки и композиции из нескольких элементов или референсов.

#### Композиция и видимое содержимое изображения

Назовите назначение, главный предмет и отношения элементов. Для инфографики предоставьте реальные числа и точные подписи, затем опишите иерархию. Для товарной сцены определите объект, ракурс, окружение и детали, которые должны остаться узнаваемыми. Документированная роль модели в отрисовке текста включает длинные формулировки и многоязычные компоновки; проверяйте возвращённые буквы, числа и выравнивание в изображении.

Привязка к поиску документирована для включения актуальных сведений в визуальную задачу. Если интерфейс предоставляет её, сохраняйте исходные факты вместе с брифом и проверяйте их отображение в итоговой графике. Визуально убедительный график или схема всё равно должны сравниваться с данными и подписями, которые предполагалось представить.

#### Референсы и творческие правки

Опубликованный профиль размещения принимает до четырнадцати референсных изображений. Назначьте каждому роль, например предмет, окружение или визуальный стиль, не оставляя их отношение необъяснённым. Описание модели подчёркивает сохранение облика до пяти объектов; сравнивайте фактически изображённые объекты и важные детали по всей возвращённой композиции.

Для правки назовите область или объект изменения и сохраняемые элементы. Документированные творческие настройки включают локальные изменения, корректировку света и фокуса, преобразования камеры и гибкие соотношения сторон. Сохраняйте исходное изображение при проверке и запрошенной правки, и деталей, которые должны остаться узнаваемыми.

#### Разрешение и пригодный материал

Профиль документирует вывод 2K и 4K. Выбирайте визуальные пропорции и масштаб вывода для целевого размещения, затем изучайте реальные возвращённые размеры и свойства файла. Дизайн-концепция и требование экспорта должны оставаться связанными при включении изображения в более крупную компоновку.

Сохраняйте выбранное изображение с брифом, ролями референсов и историей правок. Проверяйте точные формулировки, постоянство предмета и иерархию информации в размере использования. Полезный материал — проверенное изображение или сопровождающий текст этого профиля модели, готовые к дальнейшей дизайнерской или производственной работе.

Практическая задача

### Практическая задача

Технический пример на английском

```
Create a stock comparison infographic

Create a clean landscape infographic for a warehouse noticeboard. Title: "Weekly stock". Show exactly three labelled bars: "Boxes 24", "Bags 12", "Tubes 6". Use a white background, dark text and one blue accent. Keep labels large, align the bars to a common baseline and add no extra numbers or logos.
```

#### Ожидаемый результат

```
One infographic image with the exact title and three proportional, labelled bars on a common baseline.
```

#### Проверка результата

```
Inspect all lettering and confirm the bar values and relative lengths match 24, 12 and 6.
```

**Ailoot Ultra · Чат OpenAI** `POST /v1/chat/completions` `google/gemini-3-pro-image-preview`

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=chat)

Google /`google/gemini-3-pro-image-preview`

### Начало

Nano Banana Pro — модель Google Gemini 3 Pro Image Preview для генерации и редактирования изображений. Документированный профиль поддерживает композицию из нескольких изображений, встроенный текст, локализованные творческие правки, привязку к Search и вывод 2K или 4K.

Допустимые входные данные

Текст

Результаты

Текст

### Доступно в Ailoot · входные данные и методы

**Ailoot Ultra · Чат OpenAI** `POST /v1/chat/completions`

Входные данные

`text`

Результат

`text`

Выходной формат

json или SSE

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения google/gemini-3-pro-image-preview | По умолчанию— |
| Поле`messages` | Тип`message[]` | ТребованиеОбязательно | Значения и ограничения Минимум элементов: 1 | По умолчанию— |
| Поле`messages[].role` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Примеры: system, user, assistant, tool, function Условия: Эти роли явно представлены типами совместимости исходного кода; точный набор ролей зависит от модели. Зависит от модели | По умолчанию— |
| Поле`messages[].content` | Тип`string\|content_part[]\|null` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
| Поле`messages[].tool_calls` | Тип`tool_call[]` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
| Поле`messages[].tool_call_id` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Применяется, когда: role=tool; используйте фактически возвращённый ID | По умолчанию— |
| Поле`messages[].name` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
| Поле`messages[].reasoning_content` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Применяется, когда: Передавайте обратно фактически возвращённые рассуждения, если эта модель их использует | По умолчанию— |
| Поле`messages[].reasoning_details` | Тип`object\|array` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`max_tokens` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 Зависит от модели | По умолчанию— |
| Поле`max_completion_tokens` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 Зависит от модели | По умолчанию— |
| Поле`stream` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения | По умолчаниюfalse |
| Поле`stream_options.include_usage` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`temperature` | Тип`number` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`top_p` | Тип`number` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`stop` | Тип`string\|string[]` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`tools` | Тип`function_tool[]` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`tools[].type` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения function Зависит от модели | По умолчанию— |
| Поле`tools[].function.name` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Применяется, когда: передан инструмент-функция | По умолчанию— |
| Поле`tools[].function.description` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
| Поле`tools[].function.parameters` | Тип`JSON_schema` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |
| Поле`tool_choice` | Тип`string\|object` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`parallel_tool_calls` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`response_format` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`reasoning_effort` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`reasoning` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`service_tier` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`instructions` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Поле совместимости | По умолчанию— |
| Поле`functions` | Тип`function[]` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`function_call` | Тип`string\|object` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`prompt_cache_options` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`modalities` | Тип`string[]` | ТребованиеНеобязательно | Значения и ограничения text | По умолчанию— |
| Поле`provider` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения Условия: provider.options отклоняется на этом текстовом маршруте Ultra | По умолчанию— |
| Поле`cache_control.ttl` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Условия: 1h отклоняется в фактических местах настройки кэша запросов | По умолчанию— |

Сочетания входных материалов

**Текст** · Текст UTF8

`messages[].content`

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`content_type` | Контрактapplication/json |
| Параметр`required` | Контрактmodel, messages |
| Параметр`material_types` | Контрактtext |
| Параметр`messages` | Контрактмассив сообщений со структурой role/content |
| Параметр`file_material` | Контрактфактический документ UTF-8 вставляется как буквальный текст; ID файла не выводится из него |
| Параметр`optional_controls` | Контрактstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Параметр`control_scope` | Контрактзависит от модели; пользовательские инструменты-функции отличаются от инструментов, выполняемых на стороне сервиса |
| Параметр`output_modalities` | Контрактtext |
| Параметр`hosted_operations` | Контрактfalse |
| Параметр`multimodal_input_binding` | Контрактnull |

Жизненный цикл: `synchronous_or_streamed`

Отправляйте точный ID модели вместе с messages.

Длина контекста не является пределом выхода.

Текстовый файл может передавать буквальный текст; входные изображения, аудио и файловые объекты требуют точной привязки.

### Тарифы

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим

Стандартный тариф При выборе быстрого режима

Режим flex

Стандартный тариф При выборе режима flex

Максимальная интенсивность рассуждений

Стандартный тариф При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Цены явного кэширования

Не включено Когда запрошено явное кэширование

#### Ставки Ailoot

#### Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

| Конфигурация | Шкала ставок | Токенов контекста больше | Токенов контекста не более, включительно | Плата |
| --- | --- | --- | --- | --- |
| КонфигурацияБазовые ставки за токены | Шкала ставокБазовая ставка | Токенов контекста больше— | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены **$0.004** / 1K токенов Выход · Выходные токены **$0.024** / 1K токенов Вход · Чтение кэша **$0.0004** / 1K токенов Вход · Запись в кэш **$0.00075** / 1K токенов Вход · Запись в кэш, 1 час **—** / 1K токенов Выход · Токены выходного изображения **$0.24** / 1K токенов изображения |
| КонфигурацияУровень 1 по длине запроса | Шкала ставок— | Токенов контекста больше0 | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены **$0.004** / 1K токенов Выход · Выходные токены **$0.024** / 1K токенов Вход · Чтение кэша **$0.0004** / 1K токенов Вход · Запись в кэш **$0.00075** / 1K токенов Вход · Запись в кэш, 1 час **—** / 1K токенов |

#### Сведения о справочном тарифе

Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.

google/gemini-3-pro-image-preview

#### Цены по конфигурациям

| Конфигурация | Условия расчёта | Плата |
| --- | --- | --- |
| Конфигурацияgoogle/gemini-3-pro-image-preview · Стандартная конфигурация | Условия расчётаКонфигурация по умолчанию | Плата Вход · Вход **0,004 $** / 1K токенов Выход · Выход **0,24 $** / 1K токенов |

Google: Nano Banana Pro (Gemini 3 Pro Image Preview)

#### Цены по конфигурациям

| Конфигурация | Условия расчёта | Плата |
| --- | --- | --- |
| КонфигурацияGoogle: Nano Banana Pro (Gemini 3 Pro Image Preview) · Стандартная конфигурация | Условия расчётаКонфигурация по умолчанию | Плата Вход · Входные токены **0,004 $** / 1K токенов Выход · Выходные токены **0,024 $** / 1K токенов Вход · Входное изображение **0,004 $** / 1K токенов Выход · Выходное изображение **0,24 $** / 1K токенов Вход · Входное аудио **0,004 $** / 1K токенов Вход · Чтение аудио из кэша **0,0004 $** / 1K токенов Выход · Поиск в интернете **0,028 $** за поиск Выход · Токены рассуждений **0,024 $** / 1K токенов Вход · Чтение кэша **0,0004 $** / 1K токенов Вход · Запись в кэш · 5 минут **0,00075 $** / 1K токенов |

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

### Примеры запросов

#### Ailoot Ultra · Чат OpenAI

curlPython SDKПоток Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3-pro-image-preview", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-3-pro-image-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='google/gemini-3-pro-image-preview',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Получить и сохранить результаты

#### Ailoot Ultra · Чат OpenAI

json или SSE

##### Сохраняйте все готовые результаты

Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.

Сохраняйте каждый вариант ответа с его содержимым, вызовами инструментов и рассуждениями. В SSE собирайте изменения по индексам варианта и инструмента, сохраняйте итоговую причину завершения и данные использования.

##### Если нужно проверить исходный ответ

Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`choices[].index` | Типinteger |
| Поле`choices[].message.content` | Типstring\|null |
| Поле`choices[].message.tool_calls` | Типtool\_call\[\] |
| Поле`choices[].message.reasoning_content` | Типstring |
| Поле`choices[].message.reasoning_details` | Типobject\|array |
| Поле`choices[].finish_reason` | Типstring\|null |
| Поле`usage` | Типobject |

Ошибки и дальнейшие шаги

| Ответ | Условие | Следующий шаг |
| --- | --- | --- |
| Ответ400 · `invalid_request_error` | УсловиеНеверные обязательные поля, представление материалов или значение параметра | Следующий шагИсправьте указанные поля перед новым запросом на создание. |

### Псевдонимы

#### Псевдонимы моделей

**Ailoot Ultra** [`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=chat)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=chat)

**Ailoot Ultra · Картинки** `POST /v1/images/generations` `google/gemini-3-pro-image-preview`

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=images)

Google /`google/gemini-3-pro-image-preview`

### Начало

Nano Banana Pro — модель Google Gemini 3 Pro Image Preview для генерации и редактирования изображений. Документированный профиль поддерживает композицию из нескольких изображений, встроенный текст, локализованные творческие правки, привязку к Search и вывод 2K или 4K.

Допустимые входные данные

Текст · Картинки

Результаты

Картинки

### Доступно в Ailoot · входные данные и методы

**Ailoot Ultra · Картинки** `POST /v1/images/generations`

Входные данные

`text`, `image`

Результат

`image`

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения google/gemini-3-pro-image-preview | По умолчанию— |
| Поле`prompt` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Минимальная длина: 1 | По умолчанию— |
| Поле`resolution` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения 1K, 2K, 4K | По умолчанию— |
| Поле`aspect_ratio` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | По умолчанию— |
| Поле`n` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 Максимум: 1 | По умолчанию— |
| Поле`input_references` | Тип`array` | ТребованиеНеобязательно | Значения и ограничения Минимум элементов: 0 Максимум элементов: 14 | По умолчанию— |
| Поле`provider` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`content_type` | Контрактapplication/json |
| Параметр`required` | Контрактmodel, prompt |
| Параметр`material_types` | Контрактtext, image |

Жизненный цикл: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Фактически возвращённый task\_id или запись в медиатеке

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Тарифы

##### Как рассчитывается итоговая плата

Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим

Не указано При выборе быстрого режима

Режим flex

Не указано При выборе режима flex

Максимальная интенсивность рассуждений

Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

#### Оценочные ставки для сравнения

#### Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

| Конфигурация | Шкала ставок | Прогноз количества | Плата |
| --- | --- | --- | --- |
| КонфигурацияБазовые тарифы на токены | Шкала ставокБазовая ставка | Прогноз количества— | Плата Вход · Входные токены · Оценка только для сравнения **—** / 1K токенов Выход · Выходные токены · Оценка только для сравнения **—** / 1K токенов Вход · Чтение кэша · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш, 1 час · Оценка только для сравнения **—** / 1K токенов |
| КонфигурацияОриентировочная стоимость генерации | Шкала ставок— | Прогноз количестваОценка для одной генерации | Плата Выход · Оценочная стоимость генерации · Оценка только для сравнения **$0.98304** оценка до генерации Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации. |

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

### Примеры запросов

#### Ailoot Ultra · Картинки

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'google/gemini-3-pro-image-preview', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Получить и сохранить результаты

#### Ailoot Ultra · Картинки

Загрузите каждое полученное изображение или сохраните его содержимое Base64

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Чтение другого содержимого

Читать существующие материалы, принадлежащие вам

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Сохраняйте все готовые результаты

Сохраните каждое готовое изображение; загрузите содержимое по каждому полученному URL или декодируйте его содержимое Base64.

Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.

##### Если нужно проверить исходный ответ

Сохраните возвращённый X-Client-Request-ID для сверки. Читайте только фактически возвращённые значения task\_id/asset\_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`created` | Тип |
| Поле`data[].url` | Тип |
| Поле`data[].b64_json` | Тип |
| Поле`usage` | Тип |

### Псевдонимы

#### Псевдонимы моделей

**Ailoot Ultra** [`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=images)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=images)

**Ailoot Ultra · Сообщения Anthropic** `POST /v1/messages` `google/gemini-3-pro-image-preview`

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=messages)

Google /`google/gemini-3-pro-image-preview`

### Начало

Nano Banana Pro — модель Google Gemini 3 Pro Image Preview для генерации и редактирования изображений. Документированный профиль поддерживает композицию из нескольких изображений, встроенный текст, локализованные творческие правки, привязку к Search и вывод 2K или 4K.

Допустимые входные данные

Текст

Результаты

json · sse

### Доступно в Ailoot · входные данные и методы

**Ailoot Ultra · Сообщения Anthropic** `POST /v1/messages`

Входные данные

`text`

Результат

`json`, `sse`

Выходной формат

JSON или SSE

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения google/gemini-3-pro-image-preview | По умолчанию— |
| Поле`messages` | Тип`message[]` | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
| Поле`messages[].role` | Тип`string` | ТребованиеОбязательно | Значения и ограничения user, assistant | По умолчанию— |
| Поле`messages[].content` | Тип`string` | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
| Поле`max_tokens` | Тип`integer` | ТребованиеОбязательно | Значения и ограничения | По умолчанию— |
| Поле`stream` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения | По умолчаниюfalse |

Сочетания входных материалов

**Текст** · Текст UTF-8

`строка messages[].content`

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`content_type` | Контрактapplication/json |
| Параметр`required` | Контрактmodel, messages, max\_tokens |
| Параметр`optional_controls` | Контрактstream |
| Параметр`material_types` | Контрактtext |
| Параметр`text_file_material` | КонтрактПрочитайте фактический документ UTF-8 и поместите его текст в указанную строку входа или содержимого сообщения. |

Жизненный цикл: `synchronous_or_streamed`

### Тарифы

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим

Стандартный тариф При выборе быстрого режима

Режим flex

Стандартный тариф При выборе режима flex

Максимальная интенсивность рассуждений

Стандартный тариф При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Цены явного кэширования

Не включено Когда запрошено явное кэширование

#### Ставки Ailoot

#### Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

| Конфигурация | Шкала ставок | Токенов контекста больше | Токенов контекста не более, включительно | Плата |
| --- | --- | --- | --- | --- |
| КонфигурацияБазовые ставки за токены | Шкала ставокБазовая ставка | Токенов контекста больше— | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены **$0.004** / 1K токенов Выход · Выходные токены **$0.024** / 1K токенов Вход · Чтение кэша **$0.0004** / 1K токенов Вход · Запись в кэш **$0.00075** / 1K токенов Вход · Запись в кэш, 1 час **—** / 1K токенов Выход · Токены выходного изображения **$0.24** / 1K токенов изображения |
| КонфигурацияУровень 1 по длине запроса | Шкала ставок— | Токенов контекста больше0 | Токенов контекста не более, включительноБез верхней границы | Плата Вход · Входные токены **$0.004** / 1K токенов Выход · Выходные токены **$0.024** / 1K токенов Вход · Чтение кэша **$0.0004** / 1K токенов Вход · Запись в кэш **$0.00075** / 1K токенов Вход · Запись в кэш, 1 час **—** / 1K токенов |

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

### Примеры запросов

#### Ailoot Ultra · Сообщения Anthropic

Полное минимальное тело запроса в формате JSONcurl · используйте свой документ UTF-8Python · сохраните полный результат

```json
{
  "model": "google/gemini-3-pro-image-preview",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3-pro-image-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-3-pro-image-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Получить и сохранить результаты

#### Ailoot Ultra · Сообщения Anthropic

JSON или SSE

##### Сохраняйте все готовые результаты

Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.

Сохраняйте все блоки содержимого, подписи рассуждений и фактические ID обращений к инструментам. Собирайте все изменения блоков SSE; первый текстовый блок не является полным выходом.

##### Если нужно проверить исходный ответ

Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`id` | Типstring |
| Поле`model` | Типstring |
| Поле`content[]` | Типtext\|thinking\|tool\_use\|other content block |
| Поле`stop_reason` | Типstring\|null |
| Поле`usage` | Типobject |

Ошибки и дальнейшие шаги

| Ответ | Условие | Следующий шаг |
| --- | --- | --- |
| Ответ400 · `invalid_request_error` | УсловиеНеверные обязательные поля, представление материалов или значение параметра | Следующий шагИсправьте указанные поля перед новым запросом на создание. |

### Псевдонимы

#### Псевдонимы моделей

**Ailoot Ultra** [`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=messages)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`google/gemini-3-pro-image-preview`](https://ailoot.ai/models/ru/#m=google%2Fgemini-3-pro-image-preview&route=Ultra&caller=google%2Fgemini-3-pro-image-preview&fmt=messages)

FAQ · Google: Nano Banana Pro (Gemini 3 Pro Image Preview)

Какие входные данные и результаты доступны?

`POST /v1/chat/completions` · `google/gemini-3-pro-image-preview`: `text` → `text` `POST /v1/images/generations` · `google/gemini-3-pro-image-preview`: `text`, `image` → `image` `POST /v1/messages` · `google/gemini-3-pro-image-preview`: `text` → `json`, `sse`

Какие поля использует запрос?

`POST /v1/chat/completions` · `google/gemini-3-pro-image-preview`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/images/generations` · `google/gemini-3-pro-image-preview`: `model`, `prompt`, `resolution`, `aspect_ratio`, `n`, `input_references`, `provider` `POST /v1/messages` · `google/gemini-3-pro-image-preview`: `model`, `messages`, `max_tokens`, `stream`

Какие ограничения действуют?

`POST /v1/chat/completions` · `google/gemini-3-pro-image-preview`: `messages.min_items`: `1` `POST /v1/images/generations` · `google/gemini-3-pro-image-preview`: `n.minimum`: `1`; `n.maximum`: `1`

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

## Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

## Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка

Выберите тариф со скидкой для своих регулярных запросов.

Промокод до 50%

Введите код при покупке. Цена пересчитается с учётом действующей акции.

Расходы в истории

Модель, токены и сумма сохраняются для каждого запроса.

[Выбрать подписку](https://ailoot.ai/docs/ru/billing/subscriptions/) · [Посмотреть цены моделей](https://ailoot.ai/models/ru/)

## Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение

Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.

Лицензия для реселлера

Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.

Документы на сайте

Оферта, лицензионный договор и политика обработки данных доступны до подключения.

[Запросить реселлерскую лицензию](mailto:support@ailoot.ai) · [Оферта и лицензионный договор](https://ailoot.ai/legal/offer?lang=ru)

## Ailoot · Компания и портфель её проектов





Ailoot опирается на накопленный опыт работы, большую клиентскую базу, стабильный сервис и постоянный контроль KPI.





Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.





Этот опыт Ailoot использует для API-доступа к нейросетям в продуктах клиентов, агентах, приложениях и автоматизациях.
