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

# Nano banana 2.1 画像生成

> テキストからの画像生成と参照画像の編集に対応。1K / 2K / 4K、10 種類のアスペクト比をサポートし、公式版と Ext 版を提供します。

## モデルの選択

| モデル ID | 課金方式 | 1 リクエストの生成枚数 | 参照画像のサイズ |
| - | - | - | - |
| `gemini-nano-banana-2.1` | 実際のトークン使用量 | 1–4 枚 | 1 枚あたり最大 20MB |
| `gemini-nano-banana-2.1-ext` | 解像度ごとの画像単位課金 | 1 枚のみ | 1 枚あたり最大 20MB、合計最大 50MB |

両モデルの出力サイズと画質は同じです。1 回で複数枚を生成する場合は公式版、画像単位で費用を見積もる場合は Ext 版を選択してください。実際の料金は[モデル料金](https://apimart.ai/pricing)をご確認ください。

<Info>
  この API は非同期です。送信に成功すると `task_id` が返ります。[タスク照会](/ja/api-reference/tasks/status)で状態と画像を取得してください。3–5 秒間隔でポーリングし、全体の待機タイムアウトは 3 分以上に設定することを推奨します。
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/images/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "gemini-nano-banana-2.1",
      "prompt": "木のテーブルに座る茶トラ猫、隣にコーヒー、柔らかな朝の光、写実的な写真",
      "size": "16:9",
      "resolution": "2K",
      "n": 1
    }'
  ```

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

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "gemini-nano-banana-2.1",
          "prompt": "木のテーブルに座る茶トラ猫、隣にコーヒー、柔らかな朝の光、写実的な写真",
          "size": "16:9",
          "resolution": "2K",
          "n": 1
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.apimart.ai/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "gemini-nano-banana-2.1",
      prompt: "木のテーブルに座る茶トラ猫、隣にコーヒー、柔らかな朝の光、写実的な写真",
      size: "16:9",
      resolution: "2K",
      n: 1
    })
  });
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01K..."
      }
    ]
  }
  ```
</ResponseExample>

## リクエストヘッダー

<ParamField header="Authorization" type="string" required>
  Bearer 認証。形式は `Bearer <token>` で、`<token>` は APIMart API Key です。
</ParamField>

## リクエストパラメータ

<ParamField body="model" type="string" required>
  モデル ID：`gemini-nano-banana-2.1` または `gemini-nano-banana-2.1-ext`。
</ParamField>

<ParamField body="prompt" type="string" required>
  画像生成または編集のテキスト説明。中国語と英語に対応しています。
</ParamField>

<ParamField body="size" type="string" default="auto">
  出力アスペクト比。`1:1`、`2:3`、`3:2`、`3:4`、`4:3`、`4:5`、`5:4`、`9:16`、`16:9`、`21:9` に対応し、`16x9` 形式も使用できます。

  省略または `auto` の場合はモデルが決定します。画像から画像を生成する場合は参照画像の比率に従います。

  `1:4`、`4:1`、`1:8`、`8:1` など、その他の比率は非対応です。非対応の比率ではタスクが失敗し、返金されます。
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  出力解像度：`1K`、`2K`、`4K`。小文字でも指定でき、課金にも影響します。

  `0.5K` と `512` は非対応で、送信時に HTTP 400 が返ります。`3K` など認識できない他の値は `1K` として生成・課金されます。上記の対応値のみを使用してください。
</ParamField>

<ParamField body="n" type="integer" default="1">
  生成枚数。公式版は 1–4 枚、Ext 版は 1 枚のみです。

  4 を超えると送信時に HTTP 400 が返ります。Ext 版で 2–4 を指定すると実行段階で失敗し、全額返金されます。複数枚が必要な場合は Ext タスクを個別に送信するか、公式版を使用してください。
</ParamField>

<ParamField body="image_urls" type="string[]">
  参照画像のリスト。省略するとテキストから画像を生成し、指定すると画像からの生成または編集を行います。各要素は次に対応します。

  * 公開アクセス可能な HTTP(S) 画像 URL。
  * `data:image/png;base64,...` などの Base64 Data URL。

  PNG、JPEG、WEBP を推奨します。公式版は 1 枚あたり最大 20MB、Ext 版は 1 枚あたり最大 20MB、合計最大 50MB です。

  プラットフォームに固定の参照画像枚数上限はありませんが、無制限ではありません。モデルの対応範囲を超えるとタスクが失敗し、返金される場合があります。通常、参照画像が多いほど時間がかかります。
</ParamField>

<ParamField body="official_fallback" type="boolean" default="false">
  `gemini-nano-banana-2.1-ext` のみに適用されます。有効にすると、Ext 版で失敗した場合に公式版での完了を試みます。

  **実際に公式版を使用した場合、Ext 版の画像単位料金ではなく、公式版の実際のトークン使用量で課金されます。**
</ParamField>

<ParamField body="webhook" type="string">
  タスク終了時のコールバック URL。[タスク Webhook](/ja/api-reference/tasks/webhook)をご覧ください。
</ParamField>

## 出力サイズの目安

| アスペクト比 | 1K | 2K | 4K |
| - | - | - | - |
| 1:1 | 1024×1024 | 2048×2048 | 4096×4096 |
| 2:3 | 848×1264 | 1696×2528 | 3392×5056 |
| 3:2 | 1264×848 | 2528×1696 | 5056×3392 |
| 3:4 | 896×1200 | 1792×2400 | 3584×4800 |
| 4:3 | 1200×896 | 2400×1792 | 4800×3584 |
| 4:5 | 928×1152 | 1856×2304 | 3712×4608 |
| 5:4 | 1152×928 | 2304×1856 | 4608×3712 |
| 9:16 | 768×1376 | 1536×2752 | 3072×5504 |
| 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| 21:9 | 1584×672 | 3168×1344 | 6336×2688 |

上記には実測値とモデルシリーズの参考値が含まれます。すべての組み合わせを実測したものではありません。実際のピクセルサイズは返された画像を基準にしてください。

## 参照画像の編集

```json theme={null}
{
  "model": "gemini-nano-banana-2.1-ext",
  "prompt": "画像の猫に赤いニット帽をかぶせ、ほかは変更しない",
  "image_urls": ["https://example.com/cat.jpg"],
  "resolution": "1K"
}
```

サンプル URL を実際にアクセス可能な画像 URL に置き換えてください。`size` を省略すると参照画像の比率に従います。

## 一括生成（公式版のみ）

```json theme={null}
{
  "model": "gemini-nano-banana-2.1",
  "prompt": "サイバーパンク風の都市の夜景、ネオン、雨上がりの街路",
  "size": "16:9",
  "resolution": "2K",
  "n": 4
}
```

## 送信レスポンス

<ResponseField name="code" type="integer">
  レスポンスステータスコード。成功時は `200` です。
</ResponseField>

<ResponseField name="data" type="array">
  タスク送信結果。`status` は `submitted` です。`task_id` はタスクの状態と結果の照会に使用する ID で、最終画像の URL ではありません。
</ResponseField>

## タスク結果の照会

```bash theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01K... \
  --header 'Authorization: Bearer <token>'
```

成功レスポンスの例（画像 URL はプレースホルダーです）：

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed",
    "progress": 100,
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.png"],
          "expires_at": 1791417625
        }
      ]
    }
  }
}
```

| タスク状態 | 意味 |
| - | - |
| `pending` | 待機中 |
| `processing` | 生成中 |
| `completed` | 成功。`data.result.images[0].url` から画像 URL 配列を取得 |
| `failed` | 失敗。原因は `data.error.message`。全額返金され、`data.cost` は 0 |

完成画像のリンクはすべて `data.result.images[0].url` 配列に格納されます。4 枚生成した場合は 4 つのリンクが含まれます。完成画像のみが返され、`n=1` は完成画像 1 枚に対応します。

リンクはタスク完了から 24 時間で期限切れになります。`expires_at` を確認し、早めにダウンロード・保存してください。出力は PNG または JPEG で、実際のファイル内容を基準にしてください。照会結果の `data.cost` は最終請求額（米ドル）です。

## 課金について

* **公式版**：実際の入力・出力トークン使用量に基づいて課金されます。プロンプトと参照画像は入力に含まれます。送信時に解像度と `n` に基づいて仮引き落としし、完了後に実使用量との差額を返金または追加請求します。
* **Ext 版**：解像度別単価 × 実際の生成枚数で課金します。アスペクト比は解像度区分に影響しません。`official_fallback` が有効で実際に公式版を使用した場合は、公式版のトークン課金に切り替わります。
* 単価は[モデル料金](https://apimart.ai/pricing)をご確認ください。送信段階で拒否されたリクエストはタスクを作成せず、課金されません。失敗したタスクは全額返金されます。

## よくあるエラー

| 状況 | 対処方法 |
| - | - |
| HTTP 400 | `0.5K` / `512`、4 を超える `n`、参照画像 1 枚あたりのサイズ超過を確認 |
| HTTP 401 | API Key を確認 |
| HTTP 402 | 仮引き落とし額をカバーする残高があるか確認 |
| HTTP 429 | レート制限。間隔を延ばして再試行 |
| タスク失敗：非対応の比率 | 対応する 10 種類の `size` または `auto` を使用 |
| タスク失敗：Ext で複数枚を要求 | `n` を 1 にするか公式版を使用 |
| タスク失敗：安全性チェックによるブロック | プロンプトまたは参照画像を修正して再試行 |
| タスク失敗：参照画像のダウンロード失敗 | 画像 URL が公開アクセス可能か確認 |

<Warning>
  Nano banana 2.1 と Gemini 3.1 Flash Image は異なるモデルで、モデル名を相互の別名として使用できません。後者から移行する場合は、解像度 `0.5K` と 4 種類の極端な比率 `1:4`、`4:1`、`1:8`、`8:1` を変更してください。
</Warning>


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