> ## 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.

# 画像編集で「Unable to Process Input Image」が返される場合

> Nano Bananaの画像編集で400「Unable to process input image」または「empty inlineData parameter」が返されるのは、リクエスト内のinlineData画像データが空であることが原因です。画像URLにアクセスできるかどうかとは関係ありません。送信前にbase64変換のステップを確認し、検証を行ってください。

## 現象

Nano Bananaモデル（`gemini-3.1-flash-image-preview`、`gemini-3-pro-image-preview`、`gemini-nano-banana-2.1`など）を**参照画像付きの画像編集**で呼び出すと、APIは次の2つのエラーのいずれかと共にHTTP 400を返します：

```json theme={null}
{
  "error": {
    "message": "Unable to process input image. Please retry or report in https://developers.generativeai.google/guide/troubleshooting",
    "code": 400
  }
}
```

```text theme={null}
Unable to submit request because it has an empty inlineData parameter. Add a value to the parameter and try again.
```

このエラーは通常、短時間に集中して発生した後に収まるため、APIが不安定であるように見えます。

## 原因

**リクエスト内の`inlineData.data`が空であるため、プロバイダーは画像を受信できていません。** どちらのエラーも原因は同じですが、ノードによって表現が異なります。一方はinlineDataパラメータが空であると表示します。もう一方は「unable to process input image」と表示されるため、画像が破損しているか、リンクにアクセスできないと考えられがちです。

<Info>
  **これは画像のURLや、ストレージバケットが公開されているかどうかには関係ありません。** `inlineData`では、画像はリクエストボディ内にbase64として送信されるため、プロバイダーがリンクを取得しにいくことはありません。このエラーは、base64文字列自体が空であることを意味しています。問題は、コード内で画像をbase64に変換する処理の段階にあります。
</Info>

これはコンソールのログで確認できます。失敗したリクエストは入力tokensがごくわずか（promptのみ）ですが、画像を含む通常のリクエストには数百から数千tokens以上多く含まれています。

## チェックリスト

<Steps>
  <Step title="ダウンロードまたはエンコードのステップは実際に成功していますか？">
    多くのプログラムでは、まずオブジェクトストレージ（COS / OSS / S3）から画像をダウンロードし、それを base64 に変換します。ダウンロードが失敗またはタイムアウトしたり、非同期ステップが完了する前にリクエストが送信されたりすると、空の文字列になってしまいます。送信直前に base64 の長さをログに出力してください。
  </Step>

  <Step title="変数が undefined になっていませんか？">
    JavaScript では、`JSON.stringify` は**値が `undefined` であるフィールドを暗黙的に除外します**。もし `imageBase64` が `undefined` の場合、シリアライズされたリクエストの `inlineData` 配下には `mimeType` のみが含まれ、`data` フィールドは一切存在しなくなるため、プロバイダーから inlineData が空であると報告されます。これはコード上では確認できないため、実際に送信されたリクエストボディをログに出力して確認する必要があります。
  </Step>

  <Step title="data に data URL プレフィックスが含まれていませんか？">
    `inlineData.data` には**プレーンな base64** のみを含める必要があります。完全な `data:image/png;base64,iVBORw0...` 文字列がある場合は、カンマを含むそれ以前の部分をすべて削除してください。
  </Step>

  <Step title="mimeType は実際の画像フォーマットと一致していますか？">
    実際のフォーマットに合わせて、`mimeType` を `image/png`、`image/jpeg`、または `image/webp` に設定してください。ファイル拡張子は信頼できません（スマートフォンの一部の `.jpg` ファイルは実際にはマルチフレーム画像です）。最も安全な方法は、変換時にすべて PNG または JPEG として再エンコードすることです。
  </Step>
</Steps>

## 送信前の検証

リクエスト作成前に数行のチェックを追加することで、APIエラーとしてではなくローカルで問題を検出できます：

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={null}
    const b64 = (imageBase64 || '').replace(/^data:[^;]+;base64,/, '');
    if (!b64) {
      throw new Error('Reference image base64 is empty; check the download / encoding step');
    }

    const payload = {
      contents: [{
        parts: [
          { text: prompt },
          { inlineData: { data: b64, mimeType: imageMimeType } }
        ]
      }],
      generationConfig: {
        responseModalities: ['IMAGE'],
        imageConfig: { imageSize: '2K' }
      }
    };
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import base64, re

    def to_inline_data(image_bytes: bytes, mime_type: str) -> dict:
        if not image_bytes:
            raise ValueError("Reference image is empty; check the download / read step")
        b64 = base64.b64encode(image_bytes).decode()
        return {"inlineData": {"data": b64, "mimeType": mime_type}}

    def strip_data_url(s: str) -> str:
        b64 = re.sub(r"^data:[^;]+;base64,", "", s or "")
        if not b64:
            raise ValueError("Reference image base64 is empty")
        return b64
    ```
  </Tab>
</Tabs>

<Tip>
  この400エラーはリクエスト自体に起因するため、**同じリクエストを再試行しても成功しません**。コードを修正すれば、プラットフォーム側の設定変更は不要です。
</Tip>

## 代わりに画像のURLを渡したい場合

ネイティブのGeminiエンドポイントは、画像の直接リンクも受け付けています。`fileData`を使用し、`inlineData`は**使用しないでください**:

```json theme={null}
{
  "fileData": {
    "fileUri": "https://your-bucket.example.com/ref.png",
    "mimeType": "image/png"
  }
}
```

<Warning>
  URLを使用する場合、Googleのサーバーが画像をダウンロードする必要があります。ストレージが中国本土のCDN（例えば、デフォルト設定のTencent Cloud COSなど）経由でのみ配信されている場合、Googleがアクセスできないことがよくあります。その際によく見られる症状は、エラーが発生するのではなく、**生成結果で参照画像が無視される**というものです。可能な限り、**base64の方がより確実な選択肢**です。詳細については、[Nano Banana開発者ガイド](/ja/api-capabilities/nano-banana-dev-guide)を参照してください。
</Warning>

## よくある質問

<AccordionGroup>
  <Accordion title="画像はパブリックに読み取り可能な状態ですが、なぜそれでもこのエラーが発生するのですか？">
    `inlineData` では、プロバイダーがいかなるリンクも取得しないため、パブリックアクセスの可否は関係ありません。コードで画像を base64 に変換するステップを確認し、送信している `data` フィールドが空になっていないか確認してください。
  </Accordion>

  <Accordion title="これらの失敗したリクエストは課金されますか？">
    いいえ、課金されません。リクエストはプロバイダーのエントリーポイントで拒否され、画像は生成されないため、料金は発生しません。コンソールの呼び出しログが正式な記録となります。
  </Accordion>
</AccordionGroup>

## 関連ドキュメント

<CardGroup cols={2}>
  <Card title="Nano Banana 開発者ガイド" icon="book-open" href="/ja/api-capabilities/nano-banana-dev-guide">
    入力画像の要件、URL入力、タイムアウトについて
  </Card>

  <Card title="Gemini 画像エラー処理" icon="shield-alert" href="/ja/api-capabilities/gemini-image-error-handling">
    各エラーおよび finishReason の処理方法
  </Card>

  <Card title="画像の MIME タイプ不一致？" icon="file-warning" href="/ja/faq/image-mime-type-mismatch-with-query">
    画像 URL 内の処理パラメータに起因するフォーマットの不一致
  </Card>

  <Card title="画像の圧縮と解像度" icon="minimize-2" href="/ja/api-capabilities/image-compression-resolution">
    参照画像を圧縮しても出力品質は低下しません
  </Card>
</CardGroup>


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