Skip to main content
同じ Gemini ネイティブ接続先で、文章からの生成、参照画像の編集、追加編集を行えます。例は nano-banana-2.1 を使用します。他の 2 モデルは URL または SDK のモデル ID を置き換えてください。
BetterToken API は Google のウェブ検索や画像検索を利用した画像生成に対応していません。検索ツールを追加しないでください。

接続情報

BetterToken API Key を作成 · モデルカタログ · Nano Banana モデル紹介
3 モデルは POST /v1/images/generations と POST /v1/images/edits に対応せず、400 unsupported_endpoint を返します。GPT Image の multipart、image[]、data[].b64_json の例は使用しないでください。

最初の画像を生成する

ターミナルで BETTERTOKEN_API_KEY を設定して実行します。生成を待ち、JSON 全体を response.json に保存します。
高解像度が必要なら imageSize を 2K または 4K に変更します。最初は 1K、1:1、1 枚から始め、--retry による自動再送は設定しないでください。

主なパラメーター

商品写真では被写体、材質、照明、背景を説明します。ポスターでは正確な文字と配置を指定します。編集では変更する部分と維持する部分を伝えます。 ネイティブ HTTP は下表、Python SDK は snake_case を使います。画像設定は generationConfig.imageConfig 内に配置します。

Google 公式の対応比率

Nano Banana 2 と 2.1 は 14 種類、Pro は 10 種類の比率に対応しています。最初のリクエストは 1:1 から始めてください。 Google の比率と画像サイズの説明 上限は枚数の保証ではありません。複数枚を指示しても 1 枚になる場合があります。固定枚数が必要なら別々にリクエストしてください。

応答から画像を保存する

画像は candidates[].content.parts[].inlineData にあります。下記は構造の例で、BASE64_IMAGE_DATA は仮の値です。最終画像の全 part を処理し、thought: true は除外してください。
次の Python で curl の結果を保存できます。拡張子は mimeType に合わせます。JPEG の可能性があるため、一律に .png としないでください。

Python SDK の完全な例

Python 3.10 以降と google-genai==2.30.1 を使います。プロジェクトの仮想環境にインストールしてください。古い SDK は image_size を送信しない場合があります。
SDK の Base URL はドメインのルートです。/v1 や /v1beta を追加しません。timeout はミリ秒、attempts=1 は自動再試行を無効にします。save_images は最終画像をすべて保存します。

参照画像を送る

Python の例の後に実行すると、新たな編集リクエストになります。reference.jpg をローカルファイルに置き換えてください。PNG は mime_type="image/png"。複数の参照画像は同じユーザーメッセージの parts に追加します。
ネイティブ JSON は inlineData: {"mimeType": "image/jpeg", "data": "BASE64_IMAGE_DATA"} です。元のバイト列を base64 にし、data:image/...;base64, を付けません。multipart、Files、fileData は使用しません。

続けて編集する

生成または参照編集の成功後に実行します。モデル応答の content 全体と part の順序、thoughtSignature を保持してください。画像だけで履歴を再構築せず、署名を作成・変更しないでください。
各ターンは新しい生成です。完全な history にユーザー指示、返却されたモデル content の順に追加します。Interactions の previous_interaction_id は使用しません。

API の対応範囲

  • 非ストリーミングの generateContent を使用します。Files / fileData、Batch、Interactions、ストリーミングには対応していません。
  • responseMimeType、responseSchema、画像圧縮形式の指定には対応していません。imageConfig は上記の 2 フィールドのみ使用してください。
  • cachedContent、関数呼び出し、コード実行、ファイル検索、Maps、URL context、音声入力・生成の設定は追加しないでください。

既存の OpenAI Chat クライアントを使う

POST /v1/chat/completions と Base URL https://bettertoken.ai/v1 を利用できます。新規接続、参照画像、連続編集には上記の Gemini ネイティブ API を推奨します。Chat の n は省略するか整数 1 にしてください。 HTTP では google.image_config を JSON のルートに置きます。Python OpenAI SDK は extra_body をルートに統合します。ここでは generationConfig を使用しません。
Python OpenAI SDK の例は同じ仮想環境に openai==1.66.2 をインストールして実行します:
Chat の画像は choices[0].message.content 内の Markdown Data URL です。Images API の data[] ではありません。この文字列から署名履歴を再構築せず、ネイティブ編集を使ってください。

よくあるエラー

画像は現在の応答で返ります。このフローに後からの画像取得やタスクのポーリングはありません。すぐ保存し、SDK とプロキシに十分な待機時間を設定して自動再試行を無効にしてください。

公式資料