> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gemini Nano Banana 2.1 Генерация изображений

> Генерация изображений с Gemini Nano Banana 2.1 и VIP: до 14 референсных изображений, разрешения 1K, 2K и 4K.

<Note>
  **Для пользователей из материкового Китая:** используйте `https://toapis.cn` как Base URL. Замените `https://toapis.com` на `https://toapis.cn` в примерах ниже.
</Note>

## Выбор модели

| Версия | Model ID |
| - | - |
| Стандартная | `gemini-nano-banana-2.1` |
| VIP | `gemini-nano-banana-2.1-vip` |

Обе модели используют один эндпоинт и одинаковые параметры запроса. Переключайте версии с помощью поля `model`. Поддерживаются генерация по тексту и редактирование изображений. Запросы выполняются асинхронно. Получайте результаты по ID задачи из ответа на отправку.

<Warning>
  `image_urls` принимает только общедоступные URL изображений, а не данные base64. Сначала загрузите локальные изображения через [API загрузки изображений](../../uploads/images) и получите URL.
</Warning>

## Авторизация

<ParamField header="Authorization" type="string" required>
  Все запросы требуют Bearer Token. Получите API Key на [странице управления API Key](https://toapis.com/console/token).

  ```text theme={null}
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Параметры запроса

<ParamField body="model" type="string" default="gemini-nano-banana-2.1" required>
  Название модели. Используйте `gemini-nano-banana-2.1` или `gemini-nano-banana-2.1-vip`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Текстовое описание для генерации или редактирования изображения.
</ParamField>

<ParamField body="size" type="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`
</ParamField>

<ParamField body="n" type="integer" default={1}>
  Количество выходных изображений фиксировано: число `1`. Не используйте строку `"1"`.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Массив строк URL референсных изображений для генерации или редактирования. Максимум 14 изображений. Каждый URL должен быть общедоступным. Количество референсных изображений не является количеством выходных изображений.

  Максимум 10MB на изображение. Поддерживаемые форматы: .jpeg, .jpg, .png, .webp.

  ```json theme={null}
  ["https://example.com/photo.jpg"]
  ```
</ParamField>

<ParamField body="metadata" type="object">
  Дополнительные параметры настройки.

  <Expandable title="metadata">
    <ParamField body="resolution" type="string" default="1K">
      Разрешение выходного изображения. Поддерживаемые значения: `1K`, `2K`, `4K`. По умолчанию: `1K`. Используйте заглавную `K`.
    </ParamField>
  </Expandable>
</ParamField>

## Поля ответа

<ResponseField name="id" type="string">
  ID задачи для запроса статуса и результатов.
</ResponseField>

<ResponseField name="object" type="string">
  Всегда `generation.task`.
</ResponseField>

<ResponseField name="model" type="string">
  ID модели, использованный в запросе.
</ResponseField>

<ResponseField name="status" type="string">
  Статус задачи: `queued`, `in_progress`, `completed`, `failed`.
</ResponseField>

<ResponseField name="progress" type="integer">
  Прогресс задачи в процентах от 0 до 100.
</ResponseField>

<ResponseField name="created_at" type="integer">
  Время создания задачи, Unix timestamp в секундах.
</ResponseField>

<ResponseField name="metadata" type="object">
  Метаданные задачи.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://toapis.com/v1/images/generations \
    --header 'Authorization: Bearer YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "gemini-nano-banana-2.1",
    "prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
    "size": "16:9",
    "n": 1,
    "metadata": {
      "resolution": "2K"
    }
  }'
  ```

  ```bash cURL (VIP Редактирование изображения) theme={null}
  curl --request POST \
    --url https://toapis.com/v1/images/generations \
    --header 'Authorization: Bearer YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "gemini-nano-banana-2.1-vip",
    "prompt": "Преобразуй эту фотографию в акварельную картину",
    "size": "1:1",
    "n": 1,
    "image_urls": [
      "https://example.com/photo.jpg"
    ],
    "metadata": {
      "resolution": "2K"
    }
  }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://toapis.com/v1/images/generations",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
      },
      json={
          "model": "gemini-nano-banana-2.1",
          "prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
          "size": "16:9",
          "n": 1,
          "metadata": {
              "resolution": "2K"
          }
      }
  )
  response.raise_for_status()
  task = response.json()
  print(task["id"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://toapis.com/v1/images/generations', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      "model": "gemini-nano-banana-2.1",
      "prompt": "Ночной город в стиле киберпанк с мерцающими неоновыми огнями",
      "size": "16:9",
      "n": 1,
      "metadata": {
        "resolution": "2K"
      }
    })
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }
  const task = await response.json();
  console.log(task.id);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "task_img_abc123def456",
    "object": "generation.task",
    "model": "gemini-nano-banana-2.1",
    "status": "queued",
    "progress": 0,
    "created_at": 1703884800,
    "metadata": {}
  }
  ```
</ResponseExample>

## Получение результатов

Поле `id` в ответе на отправку содержит ID задачи. Используйте [API статуса задачи изображения](../../tasks/image-status) для получения статуса и итоговых изображений. Асинхронные уведомления описаны в [Webhook задач](../../webhooks/task-webhooks).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.