# Ошибки генерации изображений Gemini: коды API и когда повторять

> В приложении Gemini картинку блокируют вход, возраст, страна, лимит или правила. В API решает код: 429 и 5xx повторяют с паузой, 400, 402 и 403 — нет.

- URL: https://blog.laozhang.ai/ru/posts/gemini-image-common-errors-fix
- Published: 2026-03-16
- Updated: 2026-10-05
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Генерация изображений
- Tags: Gemini, Nano Banana, Gemini API, Ошибка 429, IMAGE_SAFETY, Генерация изображений

---
Ошибка генерации изображения в Gemini бывает двух видов, и устраняются они по-разному. В приложении Gemini (сайт gemini.google.com или мобильное приложение) кода обычно нет: картинку не дают создать аккаунт, возраст, страна, лимит или правила Google. В Gemini API причину называет код ответа, и по нему же видно, есть ли смысл повторять запрос. По правилам Google повторяют только 429, 408 и ошибки 5xx, с нарастающей паузой; 400, 402 и 403 не пройдут, пока не исправлена причина.

Ниже сначала короткий разбор для приложения, затем таблица кодов API. Модели и даты указаны по состоянию на 5 октября 2026 года.

## Gemini не создаёт картинку в приложении: вход, возраст, страна, лимит

| Что происходит | Причина | Что сделать |
|---|---|---|
| Генерация не запускается, Gemini просит войти | Изображения создаются только после входа в аккаунт Google | Войдите в личный аккаунт |
| Создавать можно, а редактировать загруженное фото — нет | Редактирование изображений доступно с 18 лет, создание — с 13 лет (или с возраста, установленного в стране) | Проверьте возраст в аккаунте Google; до 18 лет редактирование закрыто |
| «Недоступно в вашем регионе» | Функция работает только в странах и на языках, которые поддерживает приложение. России нет в списках стран приложения Gemini, Google AI Studio и Gemini API | Официального способа пользоваться функцией из России нет; подробности — в разборе [что из Nano Banana доступно из России](https://blog.laozhang.ai/ru/posts/is-nano-banana-free) |
| Не работает в рабочем или учебном аккаунте | Для таких аккаунтов действуют другие условия и ограничения | Проверьте в личном аккаунте или спросите администратора |
| Картинки перестали создаваться после серии | Исчерпан лимит: он считается по вычислительной нагрузке, обновляется каждые 5 часов до недельного потолка. Пока не восстановилась дневная квота Nano Banana 2, не работает и «Redo with Pro» | Дождитесь обновления лимита; как он устроен — в материале [сколько картинок бесплатно в Gemini](https://blog.laozhang.ai/ru/posts/gemini-image-generation-free-limit-2026) |
| Gemini отказывается, особенно когда в запросе реальный человек | Срабатывают правила Google: нельзя использовать чужое изображение без согласия, создавать интимные изображения без согласия, сцены насилия и другой запрещённый контент. Уже созданную картинку система может удалить | Измените запрос так, чтобы он не нарушал правила; что разрешено с людьми — в статье [почему Gemini не генерирует изображения людей](https://blog.laozhang.ai/ru/posts/gemini-image-generation-people-restriction) |
| «Что-то пошло не так», генерация зависает | Сбой на стороне сервиса или соединения | Повторите позже; разбор по симптомам — в статье [Nano Banana не работает в Gemini](https://blog.laozhang.ai/ru/posts/nano-banana-not-working-gemini-image-errors) |

Обойти отказ переформулировками с целью обмануть фильтры не стоит: Google отдельно отслеживает попытки обойти защиту, а повторные нарушения могут ограничить генеративные функции или весь аккаунт Google. Оспорить ограничение можно по ссылке из уведомления.

## Коды ошибок Gemini API для изображений: что значат и повторять ли

Google публикует коды ошибок для Interactions API — на нём построены текущие примеры генерации изображений в документации. Ответ с ошибкой содержит объект `error` с полями `code` и `message`; по `code` и стоит ветвить логику.

| Код | HTTP | Что случилось | Что делать | Повторять |
|---|---|---|---|---|
| `invalid_request` | 400 | Неверный формат запроса или параметр | Сверить запрос со справочником API: ID модели, размер, поля | Нет |
| `parameter_unknown` | 400 | В запросе неизвестный параметр | Удалить его | Нет |
| `failed_precondition` | 400 | Не выполнено условие, например выключен биллинг | Проверить платёжный аккаунт проекта | Нет |
| `authentication` | 401 | Ключ отсутствует, неверен или истёк | Проверить ключ и то, к какому проекту он относится | Нет, пока ключ не исправлен |
| `payment_required` | 402 | Исчерпан предоплаченный баланс (Prepay) | Пополнить баланс или включить автопополнение | Нет: Google прямо пишет, что запрос не пройдёт без пополнения |
| `permission_denied` | 403 | У ключа нет доступа к ресурсу | Проверить права ключа и доступ к проекту | Нет |
| `model_not_found` | 404 | Модели с таким ID нет, в том числе отключённой | Перейти на действующий ID (список ниже) | Нет |
| `rate_limit_exceeded` | 429 | Превышен лимит запросов или токенов в минуту или секунду | Пауза с экспоненциальным ростом | Да |
| `quota_exceeded` | 429 | Исчерпана дневная квота | Дождаться сброса или запросить увеличение | Только после сброса |
| `api_error` | 500 | Внутренняя ошибка сервера | Повторить; если не проходит, писать в поддержку | Да |
| `service_unavailable` | 503 | Сервис перегружен или недоступен | Пауза с экспоненциальным ростом | Да |
| `deadline_exceeded` | 504 | Запрос не уложился в срок | Увеличить или убрать таймаут на стороне клиента | Да, с бо́льшим таймаутом |

Если вы работаете через `generateContent`, ситуации те же, но выглядят иначе: HTTP-статус приходит вместе со статусом вроде `RESOURCE_EXHAUSTED` (для 429) или `INVALID_ARGUMENT` и `FAILED_PRECONDITION` (для 400), а блокировки содержимого — в полях `finishReason` и `promptFeedback.blockReason`.

С 402 чаще всего сталкиваются после перехода на платный уровень: с 23 марта 2026 года новые аккаунты по умолчанию работают по предоплате, минимальное пополнение — $5, и при нулевом балансе каждый запрос возвращает 402. Неудачные запросы с ошибками 400 и 500 не оплачиваются, но расходуют квоту. Если в сообщении стоит «Your API key was reported as leaked», Google заблокировал ключ как утёкший: нужен новый ключ из AI Studio, а старый лучше нигде не публиковать. Подробно о долгих 503 — в разборе [ошибки 503 у Nano Banana Pro](https://blog.laozhang.ai/ru/posts/fix-gemini-3-pro-image-503-overloaded) и в статье [ошибка Gemini High Demand](https://blog.laozhang.ai/ru/posts/gemini-high-demand-error); сводка ошибок именно Nano Banana Pro — в [справочнике ошибок Nano Banana Pro](https://blog.laozhang.ai/ru/posts/nano-banana-pro-errors-troubleshooting-hub).

## Ошибка 429 у моделей изображений: минутный лимит, квота или limit 0

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

- **`rate_limit_exceeded`** — минутный или секундный лимит. У моделей изображений, кроме запросов и токенов, считается число изображений в минуту (IPM). Здесь пауза с нарастанием как раз помогает.
- **`quota_exceeded`** — дневная квота. Лимит запросов в день (RPD) сбрасывается в полночь по тихоокеанскому времени, и повторы до этого момента бесполезны.
- **Лимит расходов** за скользящие 10 минут: $10 на Tier 1, $50 на Tier 2, $200 на Tier 3. Он тоже приходит как 429 `RESOURCE_EXHAUSTED`. Пример расчёта: при цене Nano Banana Pro $0,134 за картинку 1K или 2K лимит Tier 1 исчерпывается примерно на 74 изображениях за 10 минут ($10 / $0,134 ≈ 74,6).
- **Бесплатный уровень.** Генерация изображений через API на бесплатном уровне не предусмотрена ни для одной текущей модели, поэтому запрос из бесплатного проекта сразу упирается в квоту; по сообщениям разработчиков, в тексте ошибки обычно стоит `free_tier_requests` и limit 0. Если так происходит в уже платном проекте, смотрите разбор [free_tier_requests limit 0 на платном тарифе](https://blog.laozhang.ai/ru/posts/paid-tier-getting-free-tier-requests-limit-0).

Лимиты действуют на проект, а не на ключ, так что новый ключ в том же проекте 429 не снимет. Точные цифры для вашего проекта показывает AI Studio. Подробный порядок проверки — в статье [как исправить ошибку 429 Gemini Image](https://blog.laozhang.ai/ru/posts/gemini-image-429-rate-limit), а случай с Nano Banana Pro — в материале [ошибка RESOURCE_EXHAUSTED у Nano Banana Pro](https://blog.laozhang.ai/ru/posts/resource-exhausted-error-nano-banana).

![Четыре причины 429: минутный лимит, суточная квота, расходы и limit: 0](https://blog.laozhang.ai/posts/ru/gemini-image-common-errors-fix/img/content-1.webp)



## Блокировки и ответ без картинки: IMAGE_SAFETY, IMAGE_OTHER, NO_IMAGE

Если запрос прошёл, а изображения нет, причина в коде блокировки или ошибки генерации. В Interactions API это значения `code`, в `generateContent` — те же названия заглавными буквами в `finishReason` или `promptFeedback.blockReason`.

| Код | Что означает | Что делать |
|---|---|---|
| `image_safety` | Нарушение правил безопасности в изображении | Изменить запрос или исходное фото |
| `image_prohibited_content` | Запрещённый контент в изображении | Изменить запрос в рамках правил |
| `image_recitation` | Результат слишком похож на защищённый материал | Сделать запрос оригинальнее, без копирования известных работ |
| `image_other` | Блокировка без уточнения причины | Разбор — в статье [Nano Banana 2 blockReason OTHER](https://blog.laozhang.ai/ru/posts/nano-banana-2-blockreason-other) |
| `no_image` | Модель не смогла создать изображение | Проверить ответ по шагам — [Nano Banana не генерирует изображение в API](https://blog.laozhang.ai/ru/posts/nano-banana-2-200-ok-no-image) |
| `missing_thought_signature` | В многоходовом диалоге потеряна подпись мышления (thought signature) | Возвращать предыдущие ответы модели целиком — [ошибка thought signature в Nano Banana 2](https://blog.laozhang.ai/ru/posts/nano-banana-2-thought-signature-error) |

Для блокировок Google советует одно: изменить входные данные и отправить снова. Настройки `safetySettings` здесь не помогут. Настраиваемые фильтры у текущих моделей Gemini и так по умолчанию выключены, поэтому `BLOCK_NONE` ничего не меняет, а встроенная защита, например в части безопасности детей, не отключается вовсе. В Interactions API своих настроек безопасности нет. Подробнее о том, что можно настроить, — в материале [фильтры безопасности Nano Banana Pro](https://blog.laozhang.ai/ru/posts/nano-banana-pro-safety-filters).

## Как повторять запросы к Gemini API: правила Google

Правила из руководства Google по устранению неполадок:

1. Повторять только временные ошибки: 429, 408 и 5xx. Ошибки 400, 402 и 403 не повторять: это неверный ключ, пустой баланс или синтаксис.
2. Увеличивать паузу экспоненциально: 1 с, 2 с, 4 с, 8 с.
3. Добавлять к паузе случайный разброс (jitter), чтобы клиенты не повторяли запросы одновременно.
4. Ограничить число попыток.

По руководству Google официальные SDK повторяют временные ошибки сами: Python SDK — до четырёх раз, с паузой от примерно 1 секунды до 60 секунд. В google-genai 2.28.0 это не включено по умолчанию: в тесте 5 октября 2026 года с локальным сервером, который отвечал 429 `RESOURCE_EXHAUSTED`, клиент `genai.Client()` без настроек отправил один запрос и сразу выбросил `APIError`. Это относится к `client.models.generate_content`: `client.interactions.create` в той же версии повторяет 429 сам (в том же тесте — четыре запроса примерно за 3 секунды). Повторы включаются одной строкой конфигурации:

```python
from google import genai
from google.genai import types

client = genai.Client(
    http_options=types.HttpOptions(retry_options=types.HttpRetryOptions())
)
```

С этой настройкой в том же тесте клиент отправил 5 запросов (первый и четыре повтора) с паузой, растущей примерно от 1 секунды до потолка 60 секунд; в список кодов, которые SDK повторяет, входят 408, 429, 500, 502, 503 и 504. SDK для JavaScript, Go и Java в этом тесте не проверялись.

Выберите один уровень повторов: либо `HttpRetryOptions` в SDK, либо собственный цикл. Если включить оба, попытки перемножатся: пять своих попыток поверх пяти запросов SDK дают до 25 запросов. Собственный цикл нужен прежде всего для прямых REST-запросов, например такой:

```python
import os
import random
import time

import requests

URL = "https://generativelanguage.googleapis.com/v1beta/interactions"
RETRY_STATUSES = {408, 429, 500, 502, 503, 504}
MAX_ATTEMPTS = 5


def create_image(prompt: str) -> dict:
    headers = {
        "x-goog-api-key": os.environ["GEMINI_API_KEY"],
        "Content-Type": "application/json",
    }
    body = {
        "model": "gemini-3.1-flash-image",
        "input": [{"type": "text", "text": prompt}],
        "response_format": {"type": "image", "image_size": "2K", "aspect_ratio": "16:9"},
    }
    for attempt in range(MAX_ATTEMPTS):
        resp = requests.post(URL, headers=headers, json=body, timeout=180)
        if resp.ok:
            return resp.json()
        try:
            error = resp.json().get("error", {})
        except ValueError:
            error = {}
        code = error.get("code", "")
        # Дневная квота не восстановится за секунды: повторять бессмысленно
        retryable = resp.status_code in RETRY_STATUSES and code != "quota_exceeded"
        if not retryable or attempt == MAX_ATTEMPTS - 1:
            raise RuntimeError(f"{resp.status_code} {code}: {error.get('message', resp.text)}")
        time.sleep(min(2 ** attempt, 60) + random.uniform(0, 1))
```

Функция возвращает JSON ответа; изображение в нём закодировано в base64 (в SDK это поле `output_image.data`). 400, 401, 402, 403 и 404 сразу поднимают исключение: для них нужна правка запроса, ключа или баланса, а не повтор.

![Обработка ошибок API: исправление постоянных причин, временные повторы и проверка ответа без картинки](https://blog.laozhang.ai/posts/ru/gemini-image-common-errors-fix/img/content-3.webp)



## Перед повтором проверьте запрос: ID модели, «2K», /v1beta

Многие 400 и 404 при генерации изображений вызваны не сбоем, а устаревшим кодом.

- **ID модели.** Действующие модели изображений: `gemini-3.1-flash-image` (Nano Banana 2), `gemini-3-pro-image` (Nano Banana Pro) и `gemini-3.1-flash-lite-image` (Nano Banana 2 Lite). `gemini-3-pro-image-preview` и `gemini-3.1-flash-image-preview` отключены 25 июня 2026 года, `gemini-2.5-flash-image` — 2 октября 2026 года, модели Imagen 4 — 17 августа 2026 года. Запрос к отключённому ID возвращает 404 `model_not_found`.
- **Размер с заглавной K.** Допустимы `"1K"`, `"2K"`, `"4K"`; строчное `"1k"` API отклоняет. По умолчанию создаётся 1K, а Nano Banana 2 Lite поддерживает только 1K.
- **Где задаётся размер.** В Interactions API — `response_format.image_size` и `response_format.aspect_ratio`, в `generateContent` — `generationConfig.imageConfig.imageSize` и `aspectRatio`.
- **Версия API.** Генерация изображений идёт через `/v1beta`: и `/v1beta/interactions`, и `/v1beta/models/…:generateContent`. Функции в статусе бета доступны только в `/v1beta`.
- **Число вариантов.** `candidateCount` — целое от 1 до 8.

Пошаговая настройка ключа, предоплаты и первого запроса — в руководстве [Gemini Image API: ключ, предоплата $5, модели и код на Python](https://blog.laozhang.ai/ru/posts/gemini-image-api-guide-2026).

## Вопросы об ошибках генерации изображений в Gemini

### Каков лимит генерации изображений в Gemini?

Фиксированного числа картинок в день Google не публикует. В приложении лимит считается по вычислительной нагрузке, обновляется каждые 5 часов и ограничен недельным потолком; с планом Google AI он выше. В API лимиты задаются на проект и зависят от уровня (Tier), а цифры для конкретного проекта показывает AI Studio.

### Почему Gemini пишет, что функция «недоступна в вашем регионе»?

Функция не открыта для вашей страны. Google ограничивает генерацию изображений странами и языками, которые поддерживает приложение, а России нет ни в списках приложения Gemini, ни в списках AI Studio и Gemini API. Официального способа снять это ограничение нет.

### Как отредактировать изображение в Gemini?

Загрузите фото или откройте уже созданную картинку и опишите правку словами; можно загрузить несколько изображений и попросить их совместить. На компьютере: gemini.google.com → раздел Library → изображение → Chat. Редактирование доступно только с 18 лет.

### Поможет ли новый API-ключ при ошибке 429?

Нет, если ключ создан в том же проекте: лимиты Gemini API действуют на проект, а не на ключ. Помогает пауза при минутном лимите, ожидание сброса при дневной квоте, а если лимит расходов мешает при обычной работе, — запрос на его повышение.
