HiAPI
ブログ

チュートリアル

Nano Banana 2 API の使い方:5分で最初の1枚を生成

オンライン試用4ステップ、API連携4ステップ。すぐに実行できるcurlとPython、参考画像編集の例、よくあるエラーの早見表付き。

Oct 12, 2026
Nano Banana 2 API の使い方:5分で最初の1枚を生成

TL;DR

  • これは何か:Google 製の Nano Banana 2 は、テキストからの画像生成と参考画像編集で同じモデル ID nano-banana-2 を共有し、一度に最大 14 枚の参考画像を渡せます。HiAPI で提供中で、モデルページを開く とプロンプトを入力するだけで生成でき、新規ユーザー登録で 200 クレジットがもらえます。
  • 料金:枚数課金で、1K $0.036、2K $0.057、4K $0.086。参考画像は追加料金なし、失敗時は自動返金。
  • API の呼び方:POST https://api.hiapi.ai/v1/tasks に model として nano-banana-2 を指定し、taskId を取得したらポーリングまたはコールバックを待ち、data.output[0].url をダウンロードします。

Nano Banana 2 でできること

  • 1 つのモデルで 2 通りの使い方。 プロンプトだけならテキストから画像生成、image_input を加えれば参考画像編集になり、エンドポイントやモードを切り替える必要はありません。
  • 参考画像は一度に最大 14 枚。 商品の多角度画像、モデル画像、シーン画像をまとめて渡せ、同じ商品のシーン変更、衣装変更、ブランドの統一ビジュアルに適しています。
  • 14 種類の固定アスペクト比と auto。 よく使う 1:1、4:5、16:9、21:9 のほか、1:4、4:1、1:8、8:1 もあり、迷ったらデフォルトの auto を使います。
  • 1K、2K、4K の 3 段階。 1K はプロンプトの試用、2K、4K は本番出力用。デフォルトの出力は PNG です。

下の画像は Nano Banana 2 モデルページのサンプルで、4:3、1K で生成したものです:

A mystical tropical rainforest at night with hundreds of glowing fireflies, warm golden lights floating among dark green ferns and moss, soft mist, dreamy bokeh, cinematic fantasy photography, 4:3

このプロンプトで生成 →

2 つの導入ルート:オンライン試用か API か?

まず効果を確認したいならオンライン試用、プロダクトに組み込むなら API を選びます。どちらも同じモデル、同じ料金体系です。

オンライン試用(約 1 分)

  1. Nano Banana 2 モデルページ を開くか、上の画像の下にあるリンクを直接クリックすると、プロンプトが自動で入力されます。
  2. 登録またはログインします。新規アカウントには 200 クレジットが付与されます。
  3. アスペクト比と解像度を選びます。通常価格は 1K で 1 枚 72 クレジットです。
  4. 生成をクリックし、満足したらダウンロードします。

API 連携(約 5 分)

  1. HiAPI コンソール で API Key(sk-...)を作成します。
  2. POST /v1/tasks でタスクを作成し、レスポンスの data.taskId を取得します。
  3. GET /v1/tasks/{id} でポーリングするか、リクエストボディに callback.url を含めて通知を待ちます。
  4. data.status が success になったら、data.output[0].url から画像をダウンロードします。

1K で 1 枚 $0.036、$10 で約 277 枚生成でき、プロンプトの調整には十分です。全パラメータは 中国語ドキュメント を参照してください。

最初の 1 枚:curl 版

タスクを作成:

curl --fail-with-body -sS -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "input": {
      "prompt": "A mystical tropical rainforest at night with hundreds of glowing fireflies, warm golden lights floating among dark green ferns and moss, soft mist, dreamy bokeh, cinematic fantasy photography",
      "aspect_ratio": "4:3",
      "resolution": "1K",
      "output_format": "png"
    }
  }'

返されるタスク ID は data.taskId にあります:

{"code":200,"data":{"taskId":"tk-hiapi-..."},"message":"success"}

結果を問い合わせ:

curl --fail-with-body -sS https://api.hiapi.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer sk-YOUR_KEY"

必須なのは prompt だけです。aspect_ratio はデフォルトで auto、resolution はデフォルトで 1K、output_format はデフォルトで png(jpg も選択可)です。

最初の 1 枚:Python 版

まず requests をインストールし(python3 -m pip install requests)、ターミナルで HIAPI_API_KEY を設定します(export HIAPI_API_KEY="sk-YOUR_KEY")。以下の例ではタスクを作成し、最大 10 分ポーリングしてから画像をダウンロードします。タイムアウトした場合は taskId を保持して問い合わせを続けます:

import os
import time
import uuid
import requests

API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
HEADERS["Idempotency-Key"] = str(uuid.uuid4())  # Save with this business task before submitting.

payload = {
    "model": "nano-banana-2",
    "input": {
        "prompt": "A mystical tropical rainforest at night with hundreds of glowing fireflies, warm golden lights floating among dark green ferns and moss, soft mist, dreamy bokeh, cinematic fantasy photography",
        "aspect_ratio": "4:3",
        "resolution": "1K",
        "output_format": "png",
    },
}


def task_data(response):
    response.raise_for_status()
    body = response.json()
    if body.get("code") != 200:
        raise RuntimeError(f"HiAPI request failed: {body}")
    return body["data"]


task_id = task_data(requests.post(API, headers=HEADERS, json=payload, timeout=30))["taskId"]
print(f"taskId: {task_id}", flush=True)  # Save this ID for later queries.

deadline = time.monotonic() + 600
while time.monotonic() < deadline:
    task = task_data(requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30))
    if task["status"] == "success":
        image_url = task["output"][0]["url"]
        image = requests.get(image_url, timeout=60)
        image.raise_for_status()
        with open("nano-banana-2.png", "wb") as f:
            f.write(image.content)
        break
    if task["status"] == "fail":
        raise RuntimeError(f"task {task_id} failed: {task}")
    time.sleep(3)
else:
    raise TimeoutError(f"task {task_id} is still pending; query this ID instead of submitting again")

参考画像編集:image_input を追加するだけ

input に image_input を加えると、同じリクエストが編集になります。以下は白背景の美容液ボトルの商品画像を浴室のカウンターに置く例です:

curl --fail-with-body -sS -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "input": {
      "prompt": "Place this exact serum bottle, unchanged, on a white marble bathroom counter next to a folded beige linen towel, soft warm morning window light",
      "image_input": ["https://static.hiapi.ai/blog/nano-banana-ecommerce-product-images-hiapi/shot-1-listing.jpg"],
      "aspect_ratio": "4:3",
      "resolution": "1K"
    }
  }'

image_input は URL の配列で、最大 14 枚です。公開インターネットから直接開ける画像リンクである必要があり、SVG はサポートされません。プロンプトに「何を保持するか」(this exact serum bottle, unchanged)を明記すると、商品ラベルやボトルの形状がより安定します。この同商品のシーン変更の完全なプロンプトと生成画像は、Nano Banana 2 プロンプト大全 にあります。

本番投入前に注意すべき 3 つのこと

  1. サーバー側ではコールバックを使う。 リクエストボディのトップレベルに "callback": {"url": "https://yourapp.com/webhook", "when": "final"} を追加すると、タスク終了時に自動通知されます。成功も失敗もコールバックされるので、taskId で重複排除します。
  2. リトライには冪等キーを付ける。 POST /v1/tasks はデフォルトで毎回新しいタスクを作成し、個別に課金されます。リクエストヘッダに Idempotency-Key を追加し、同じ業務タスクに対して 1 つのキーを生成・保存します。ネットワークタイムアウト後、同じアカウント、同じキー、まったく同じリクエストボディでリトライすれば、タスクは 1 回だけ作成されます。
  3. 結果を取得したらまずダウンロード。 出力リンクには有効期限があるため、まず画像を自分のストレージに保存してから後続処理を行います。

よくあるエラー、1 行ずつ

  • 400 additional properties ... not allowed → フィールド名のスペルミス、または別モデルのフィールドを使用(例:Nano Banana 2 Lite の image_urls、size と書いた場合)→ image_input、resolution に修正します。
  • 400、aspect_ratio の値が不正 → リスト外のアスペクト比を渡した → 15 個の有効値から 1 つ選びます。
  • 401 permission_denied → Key の欠落、誤り、または失効 → Authorization: Bearer sk-... ヘッダを確認し、必要ならコンソールで再作成します。
  • 402 → 残高不足。タスクは作成されず、課金もされません → チャージ後にリトライします。
  • タスクの status が fail → 返された error に従ってリクエストを修正し、そのままリトライしないでください。事前に差し引かれた金額は自動で全額返金されます。

よくある質問

モデル ID はどう書く? nano-banana-2 と書きます。パラメータ名は Nano Banana 2.1 と完全に同じで、gemini-nano-banana-2.1 に変えれば 2.1 に切り替えられます。

参考画像に追加料金はかかる? かかりません。料金は出力解像度だけで決まり、参考画像が 1 枚でも 14 枚でも同じです。

一度に何枚生成できる? 1 タスクにつき 1 枚です。複数枚必要な場合は複数のタスクを並行して作成し、枚数課金になります。

期間限定キャンペーン価格はどうやって適用する? コードを変更する必要はありません。プログラマーの日 50% オフは北京時間 2026-11-09 00:00 までで、API もオンライン試用も自動的に 50% オフで課金され、1K で 1 枚 $0.018 になります。

Nano Banana 2 シリーズ記事

今すぐ試す:上の雨林の画像の下にある このプロンプトで生成 → をクリックしてください。プロンプトは入力済みで、アスペクト比は 4:3、解像度は 1K を選び、実行後に結果をダウンロードします。通常価格は 1 枚 $0.036 です。

永続的なAIアーティファクトで開発を始める

APIキーを取得して、タスクベースの1つのAPIで画像・動画・音声モデルを呼び出せます。

APIドキュメントを読む