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

# Почему Gemini Image возвращает blockReason: OTHER?

> Когда модель генерации изображений Gemini возвращает promptFeedback.blockReason без candidates за считанные секунды, найдите заблокированное референсное изображение и выполните предварительную обработку референсных изображений как для ручных процессов, так и в коде.

## Краткий ответ

Если API генерации изображений Gemini возвращает HTTP 200, но в ответе **нет `candidates`** и присутствует только `promptFeedback.blockReason` (чаще всего `OTHER`), запрос был заблокирован проверкой входных данных провайдера **до начала генерации**.

* Такая блокировка обычно возвращается в течение нескольких секунд — гораздо быстрее, чем обычное изображение
* `OTHER` не указывает причину, а `safetyRatings` часто пуст
* Это **не обязательно связано с тем, как составлен prompt**; часто блокировку вызывает одно референсное изображение
* gemini-3-pro-image (Nano Banana Pro) проверяет входные данные строже, чем gemini-3.1-flash-image, поэтому один и тот же запрос может быть заблокирован на Pro и успешно пройти на flash

Подход следующий: **сначала определите, какое именно изображение вызывает блокировку, а затем единообразно выполните предварительную обработку всех референсных изображений**.

## Как это распознать

Типичный ответ выглядит следующим образом:

```json theme={null}
{
  "promptFeedback": {
    "blockReason": "OTHER",
    "safetyRatings": []
  },
  "usageMetadata": {
    "promptTokenCount": 1919,
    "candidatesTokenCount": 0
  },
  "modelVersion": "gemini-3-pro-image",
  "responseId": "..."
}
```

| Характеристика          | Блокировка blockReason                                        | NO\_IMAGE                                                                       |
| ----------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Поле, содержащее ошибку | `promptFeedback.blockReason`                                  | `candidates[0].finishReason`                                                    |
| `candidates`            | Отсутствует                                                   | Присутствует, но `parts` — `null`                                               |
| Время ответа            | В пределах нескольких секунд                                  | Сопоставимо с обычной генерацией                                                |
| Частая причина          | Входные данные (обычно референсное изображение) заблокированы | Неясное намерение относительно изображения в prompt                             |
| Что делать              | Найти и предварительно обработать референсное изображение     | Исправить prompt; см. [устранение неполадок NO\_IMAGE](/ru/faq/gemini-no-image) |

## Протестированный кейс

В сентябре 2026 года (UTC+8) мы повторно запустили запрос для каталога одежды: один prompt плюс 6 референсных изображений (поза, человек, сцена, наряд, коллаж из обуви и носков, а также головной убор), 2:3, 2K, `responseModalities: ["IMAGE"]`.

* gemini-3-pro-image вернула `blockReason: OTHER` 3 раза подряд; тот же запрос успешно выполнился на gemini-3.1-flash-image
* Путем последовательного разделения набора изображений пополам мы выяснили, что **единственным триггером было референсное изображение человека**: сгенерированный ИИ модельный лист персонажа с ракурсами спереди, сзади, сбоку и крупным планом лица
* Это изображение блокировалось с любым prompt, включая несвязанные инструкции вроде «измени фон на светло-серый»
* Два изображения, вызывавшие наибольшие подозрения — фото позы реального человека с водяным знаком и фото головного убора с логотипом, — по отдельности прошли проверку

Ключевой вывод:

| Способ отправки референсного изображения человека                                 | Результат                                                  |
| --------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Исходное изображение                                                              | Заблокировано 13/13                                        |
| Идентичные пиксели в другом формате файла (например, сохраненном как PNG)         | Заблокировано 2/2                                          |
| Повторно экспортировано в JPEG (качество 95, без видимых различий)                | Пройдено 6/6                                               |
| Полный запрос из 6 изображений с заменой на повторно экспортированное изображение | Сгенерировано 2/2, с правильным человеком, позой и нарядом |

Иными словами, эта проверка может быть очень чувствительна к точным значениям пикселей конкретных изображений, и однократный повторный экспорт изображения позволяет пропустить запрос. Провайдер не публикует информацию о том, на чем основан `OTHER`, поэтому мы не можем установить более точную причину.

<Info>
  Этот пример показывает, что отправка большого количества референсных изображений в одном запросе или объединение нескольких шагов в одну генерацию сами по себе не являются проблемой. Когда вы видите `OTHER`, сначала найдите проблемное изображение, прежде чем переписывать prompt или разделять рабочий процесс.
</Info>

## Как найти изображение

<Steps>
  <Step title="Шаг 1: Проверьте воспроизводимость">
    Отправьте запрос без изменений 2–3 раза. Блокировка `blockReason` обычно стабильно воспроизводится. Если сбой происходит лишь иногда, проблема, скорее всего, относится к типу [NO\_IMAGE](/ru/faq/gemini-no-image).
  </Step>

  <Step title="Шаг 2: Исключите prompt">
    Оставьте все изображения и замените prompt простой несвязанной инструкцией, например «сделайте фон светло-серым». Если запрос по-прежнему блокируется, причина кроется в изображениях.
  </Step>

  <Step title="Шаг 3: Разделите изображения пополам">
    Отправьте каждую половину по отдельности, затем продолжайте делить только ту половину, которая по-прежнему блокируется, пока не дойдете до одного изображения. Для шести изображений потребуется максимум три раунда.
  </Step>

  <Step title="Шаг 4: Исправьте это изображение">
    Экспортируйте изображение повторно, как описано ниже в разделе «Рекомендации», затем отправьте полный запрос еще раз для подтверждения.
  </Step>
</Steps>

<Tip>
  В процессе сужения круга поиска одного сгенерированного изображения достаточно, чтобы пометить группу как «пройдено», поэтому повторять запрос нет необходимости. Двух блокировок подряд достаточно, чтобы пометить ее как «заблокировано». Весь поиск обычно занимает всего около десятка вызовов.
</Tip>

## Рекомендации

### Сценарий 1: Ручная работа (генерация на холсте или в инструменте)

1. **Экспортируйте референсные изображения повторно перед их загрузкой**: используйте любой графический редактор (например, встроенную программу «Просмотр» или Photoshop), чтобы экспортировать JPEG с качеством 90–95 и длинной стороной не более 2048px.
2. **Уменьшайте разрешение больших изображений**: оригиналы с длинной стороной 3000–4000px можно уменьшить до 2048px без ущерба для результата, при этом они будут загружаться быстрее.
3. **Если запрос завершается с ошибкой в течение нескольких секунд, в первую очередь проверьте референсное изображение**: повторно экспортируйте изображение, добавленное последним, и повторите попытку. Если это не помогло, проверьте изображения по очереди, как описано выше.
4. **Отдавайте предпочтение изображениям в полный рост в качестве референсов персонажей**: в описанном выше случае фронтальный вид в полный рост прошел проверку сам по себе после разделения листа персонажа. Если лист персонажа постоянно блокируется, попробуйте использовать только его вид в полный рост.
5. **Временная альтернатива**: если изображение не проходит проверку на Pro, используйте для этого шага gemini-3.1-flash-image.

### Сценарий 2: Код (автоматизированная обработка)

**1. Предварительно обрабатывайте каждое референсное изображение перед отправкой**, а не обрабатывайте изображения по отдельности: преобразуйте в sRGB → примените ориентацию EXIF → ограничьте длинную сторону до 2048px → повторно закодируйте в JPEG (качество 90–95) → удалите метаданные.

Основное преимущество — значительно меньший размер тела запроса и более быстрая загрузка (исходный запрос в описанном выше случае составлял около 4,6 МБ). Это также снижает количество блокировок `OTHER` такого рода. Пример для Node.js:

```javascript theme={null}
import sharp from "sharp";

async function normalizeReference(buffer) {
  return sharp(buffer, { failOn: "none" })
    .rotate()                       // apply the EXIF orientation
    .toColorspace("srgb")
    .resize({ width: 2048, height: 2048, fit: "inside", withoutEnlargement: true })
    .jpeg({ quality: 92, mozjpeg: true })
    .toBuffer();                    // metadata is dropped by default
}

// parts.push({ inlineData: { mimeType: "image/jpeg", data: (await normalizeReference(buf)).toString("base64") } });
```

Тот же пайплайн на Python с использованием Pillow:

```python theme={null}
from io import BytesIO
from PIL import Image, ImageOps

def normalize_reference(raw: bytes) -> bytes:
    im = ImageOps.exif_transpose(Image.open(BytesIO(raw))).convert("RGB")
    im.thumbnail((2048, 2048))
    out = BytesIO()
    im.save(out, "JPEG", quality=92)
    return out.getvalue()
```

**2. Обрабатывайте каждый тип сбоев по-разному**:

| Ответ                                                                                                                           | Значение                                                                   | Рекомендуемые действия                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `promptFeedback.blockReason` имеет значение `OTHER`, возвращается в течение нескольких секунд                                   | Входные данные заблокированы проверкой провайдера; причина не раскрывается | Автоматически отправить повторно один раз с другими параметрами кодирования (например, качество 88 и длинная сторона на 1% меньше); если ошибка повторяется, переключитесь на Flash или попросите пользователя предоставить другое референсное изображение |
| `blockReason` имеет значение `SAFETY` / `PROHIBITED_CONTENT`, или `finishReason` имеет значение `IMAGE_SAFETY` либо аналогичное | Явная блокировка по соображениям безопасности контента                     | **Не повторяйте попытку**; попросите пользователя изменить исходный материал или описание                                                                                                                                                                  |
| `finishReason` имеет значение `NO_IMAGE` с нулевым количеством выходных tokens                                                  | Неясное намерение сгенерировать изображение в prompt                       | Добавьте к prompt фразу «output the final image only, no text» и отправьте повторно; см. [Устранение неполадок с NO\_IMAGE](/ru/faq/gemini-no-image)                                                                                                       |

<Warning>
  Автоматические повторные попытки применимы только к `OTHER`, причина которых неизвестна. При явных причинах безопасности повторное кодирование изображений не может и не должно использоваться для изменения результата; вместо этого попросите пользователя скорректировать контент.
</Warning>

**3. Логируйте детали для устранения неполадок**: при каждом сбое сохраняйте `responseId`, а также хеш и размеры каждого референсного изображения. Это позволит вам быстро найти изображение и предоставит нам необходимую информацию, если вы обратитесь в службу поддержки.

## Часто задаваемые вопросы

<AccordionGroup>
  <Accordion title="Почему flash генерирует изображение, а Pro блокирует его?">
    Эти две модели используют разные проверки входных данных, и Pro строже. Ситуация, когда референсное изображение проходит в flash и блокируется в Pro, является ожидаемым поведением и не означает, что сам запрос некорректен.
  </Accordion>

  <Accordion title="Могут ли созданные ИИ референсные изображения тоже блокироваться?">
    Да. Заблокированное изображение в примере выше представляло собой лист персонажа, повторно сгенерированный из собственных фотографий клиента. Блокировка изображения не зависит напрямую от источника его происхождения; найдите и выполните его предварительную обработку, как описано на этой странице.
  </Accordion>

  <Accordion title="Не слишком ли много 6 референсных изображений в одном запросе?">
    В рассмотренном выше случае 6 изображений не были проблемой: после замены одного изображения человека весь запрос из 6 изображений сгенерировался нормально.
  </Accordion>

  <Accordion title="Взимается ли плата за заблокированный запрос?">
    Проверьте журналы вызовов APIYI, чтобы подтвердить, была ли создана запись о списании средств по данному запросу.
  </Accordion>
</AccordionGroup>

## Проблема не решилась? Свяжитесь с поддержкой

Пожалуйста, укажите следующую информацию, чтобы мы могли помочь:

* Название модели и группу token;
* Полный ответ (как минимум `promptFeedback` и `responseId`), а также `request ID`;
* Время возникновения (с часовым поясом);
* Референсное изображение, которое вы определили, если вы можете им поделиться.

<Warning>
  Никогда не отправляйте API-ключ полностью. Скройте ключ перед отправкой скриншотов или логов.
</Warning>

<CardGroup cols={2}>
  <Card title="Поддержка в WeCom" icon="message-circle" href="https://work.weixin.qq.com/kfid/kfc9adfd5810ece25ec">
    <img src="https://mintcdn.com/apiyillc/fpi567ydpk7adDt0/images/wecom-qrcode.png?fit=max&auto=format&n=fpi567ydpk7adDt0&q=85&s=7286b96e94110e3a48798b649df1b45b" alt="QR-код поддержки в WeCom" style={{maxWidth: "180px"}} width="400" height="400" data-path="images/wecom-qrcode.png" />

    Отсканируйте QR-код или нажмите на эту карточку, чтобы связаться с поддержкой напрямую.
  </Card>

  <Card title="Поддержка по электронной почте" icon="mail">
    **Поддержка**: [support@apiyi.com](mailto:support@apiyi.com)

    Рекомендуем указать «blockReason» и название модели в теме письма.
  </Card>
</CardGroup>

## Связанная документация

<CardGroup cols={2}>
  <Card title="Почему API изображений Gemini возвращает NO_IMAGE?" icon="image-off" href="/ru/faq/gemini-no-image">
    Отсутствие изображений из-за неясного намерения в prompt и способы это исправить
  </Card>

  <Card title="Сбои генерации изображений Nano Banana" icon="image-off" href="/ru/faq/nano-banana-image-failure">
    Распространенные причины, включая безопасность, удаление водяных знаков, известные объекты интеллектуальной собственности и несовершеннолетних
  </Card>

  <Card title="Обработка ошибок в API изображений Gemini" icon="triangle-alert" href="/ru/api-capabilities/gemini-image-error-handling">
    Полный порядок проверки ответов и понятные пользователю сообщения об ошибках
  </Card>

  <Card title="Как читать суммы тарификации в логах?" icon="file-text" href="/ru/faq/log-billing-explained">
    Используйте логи вызовов, чтобы проверить, был ли запрос успешным и была ли списана плата
  </Card>
</CardGroup>
