Skip to main content
Nano Banana 2 の API リファレンスです。Nano Banana 2(Gemini 3.1 Flash Image)はテキストから画像を生成し、入力画像が指定された場合はその画像を編集します。

クイックスタート

お使いの Comfy ワークスペースでキーを作成し、COMFY_API_KEY としてエクスポートします。Python、TypeScript、Swift のスニペットは Comfy SDK(pip install comfy-sdk、npm install @comfyorg/sdk、および ComfySwiftSDK Swift パッケージ)を使用しています。cURL のスニペットは、生の HTTP で同じ呼び出しを行います。 モデル ID: vertexai/gemini-3.1-flash-image エンドポイント: POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image

サービングプロバイダー

このモデルは、リクエストで別のプロバイダーが指定されない限り、Comfy Router が直接提供します。以下のプロバイダーも、同じエンドポイントかつ同じモデル ID でこのモデルを提供しており、model_provider クエリパラメータで選択します。
  • Comfy(デフォルト): POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image
  • fal、fal/fal-nano-banana-2 として: POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image?model_provider=fal
  • Runware、runware/runware-nano-banana-2 として: POST https://api.comfy.org/v2/models/vertexai/gemini-3.1-flash-image?model_provider=runware
strict_mode のデフォルトは false であるため、Router はこのページで説明されているネイティブのリクエストボディをプロバイダー独自のスキーマに変換し、レスポンスを元に戻す変換を行います。API リファレンスの model_provider、strict_mode、fallback_provider を参照し、この方法でルーティングされるすべてのモデルについてはサービングプロバイダーを参照してください。

スキーマ

入力

object[]
必須
モデルとの現在の会話のコンテンツです。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。
object[]
必須
object
URI ベースのデータです。
string
URI
string
data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。使用可能な値: application/pdf, audio/mpeg, audio/mp3, audio/wav, image/png, image/jpeg, image/webp, text/plain, video/mov, video/mpeg, video/mp4, video/mpg, video/avi, video/wmv, video/mpegps, video/flv, image/heic, image/heif, audio/flac, video/webm
object
生のバイト形式のインラインデータです。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。
string (byte)
プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコードです。メディアをインラインで含める場合は、データのメディアタイプ (mimeType) も指定する必要があります。サイズ制限: 20MB形式: byte
string
data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプです。使用可能な値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードされている必要があります。テキストファイルのコンテンツはトークン制限にカウントされます。画像の解像度に制限はありません。使用可能な値: application/pdf, audio/mpeg, audio/mp3, audio/wav, image/png, image/jpeg, image/webp, text/plain, video/mov, video/mpeg, video/mp4, video/mpg, video/avi, video/wmv, video/mpegps, video/flv, image/heic, image/heif, audio/flac, video/webm
string
モデルがこのパートのビデオを読み取る方法です。固定レートのフレームサンプリングではなく、モデルに検査するセグメントを決定させるには “AGENTIC” を設定します。省略すると、デフォルトの固定レートサンプリングが使用されます。gemini-3.7-flash 以降の Flash モデルでサポートされています。
string
テキストプロンプトまたはコードスニペット。
boolean
このパートがモデルによる思考/推論ステップであることを示します。
string
使用可能な値: user, model
object
生成のサンプリング、長さ、出力の設定です。すべてのフィールドは任意です。以下で default を宣言しているフィールドは省略時にその値が適用され、それ以外はモデル自身の動作にフォールバックします。
object
画像生成の設定
string
生成される画像のアスペクト比
object
任意。生成された画像の画像出力形式です。
integer
任意。出力画像の圧縮品質です。
string
任意。出力を保存する画像形式です。
string
任意。生成される画像のサイズを指定します。サポートされる値は 1K、2K、4K です。指定しない場合、モデルはデフォルト値の 1K を使用します。
integer
応答で生成できるトークンの最大数です。1 トークンは約 4 文字です。100 トークンはおよそ 60~80 語に相当します。範囲: 16 から 65536
`TEXT`, `IMAGE`[]
integer
シードを特定の値に固定すると、モデルは繰り返しのリクエストに対して同じ応答を返すよう最善を尽くします。決定論的な出力は保証されません。また、temperature などのモデルやパラメータ設定を変更すると、同じシード値を使用していても応答が変動する可能性があります。デフォルトでは、ランダムなシード値が使用されます。以下のモデルで利用できます: gemini-2.5-flash, gemini-2.5-pro, gemini-2.5-flash-preview-04-1, gemini-2.5-pro-preview-05-0, gemini-2.0-flash-lite-00, gemini-2.0-flash-001
string[]
number
デフォルト:"1"
temperatureは、topPおよびtopKが適用される応答生成中のサンプリングに使用されます。temperatureは、トークン選択におけるランダム性の度合いを制御します。低いtemperatureは、より開かれた、あるいは創造的な応答を必要としないプロンプトに適しており、高いtemperatureはより多様または創造的な結果につながる可能性があります。temperatureが0の場合、常に最も確率の高いトークンが選択されます。この場合、特定のプロンプトに対する応答はほとんど確定的ですが、わずかなばらつきが生じる可能性は残ります。モデルが返す応答が一般的すぎる、短すぎる、またはフォールバック応答を返す場合は、temperatureを上げてみてください範囲: 0 から 2形式: float
object
省略可能。thinking機能の設定です。thinkingとは、モデルが複雑なタスクをより小さなステップに分解し、より高品質な応答を生成するプロセスです。
boolean
省略可能。trueの場合、モデルは応答に自身の思考を含めます。
integer
省略可能。モデルのthinkingプロセスに割り当てるトークン予算です。モデルはこの予算内に収まるよう最善を尽くします。
string
省略可能。モデルのthinkingレベルです。指定可能な値: THINKING_LEVEL_UNSPECIFIED、LOW、MEDIUM、HIGH、MINIMAL
integer
デフォルト:"40"
Top-Kは、モデルが出力するトークンを選択する方法を変更します。Top-Kが1の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンの中で最も確率が高いものになります。Top-Kが3の場合、次に選択されるトークンは、確率が上位3位までのトークンの中からtemperatureを用いて選択されます。範囲: 1 から …
number
デフォルト:"0.95"
指定した場合、nucleusサンプリングが使用されます。 Top-Pは、モデルが出力するトークンを選択する方法を変更します。トークンは、確率の合計がtop-Pの値に等しくなるまで、最も確率が高いもの(top-Kを参照)から最も低いものへと選択されます。たとえば、トークンA、B、Cの確率がそれぞれ0.3、0.2、0.1で、top-Pの値が0.5の場合、モデルはtemperatureを用いてAまたはBのいずれかを次のトークンとして選択し、Cは候補から除外します。 よりランダム性の低い応答には低い値を、よりランダム性の高い応答には高い値を指定してください。範囲: 0 から 1形式: float
object[]
安全でないコンテンツをブロックするためのリクエストごとの設定です。GenerateContentResponse.candidatesに適用されます。
string
必須
指定可能な値: HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_DANGEROUS_CONTENT
string
必須
指定可能な値: OFF、BLOCK_NONE、BLOCK_LOW_AND_ABOVE、BLOCK_MEDIUM_AND_ABOVE、BLOCK_ONLY_HIGH
object
モデルをより良いパフォーマンスへ導くための指示です。たとえば、「できるだけ簡潔に回答してください」や「回答に専門用語を使わないでください」などです。テキスト文字列はトークン制限にカウントされます。systemInstructionのroleフィールドは無視され、モデルのパフォーマンスには影響しません。注: partsではテキストのみを使用し、各partのcontentは別々の段落にしてください。
object[]
必須
1つのメッセージを構成する順序付けられたpartのリストです。partごとに異なるIANA MIMEタイプを使用できます。最大トークン数や画像数などの入力に関する制限については、Google modelsページのモデル仕様を参照してください。
string
テキストプロンプトまたはコードスニペット。
string
メッセージを作成するエンティティの識別情報です。以下の値がサポートされています。user: メッセージが実在の人物によって送信されたことを示します。通常はユーザーが生成したメッセージです。model: メッセージがモデルによって生成されたことを示します。modelの値は、マルチターン会話においてモデルからのメッセージを会話に挿入するために使用されます。マルチターンでない会話では、このフィールドは空欄または未設定のままにできます。指定可能な値: user、model
object[]
システムがモデルの知識と範囲の外にあるアクションまたは一連のアクションを実行するために、外部システムと連携できるようにするコードです。Function callingを参照してください。
object[]
string
string
必須
object
関数パラメータのJSONスキーマ
boolean
trueの場合、生成された画像はクラウドストレージにアップロードされ、インラインのbase64データではなく署名付きURLとして返されます。URLは24時間後に有効期限が切れます。
object
ビデオ入力の場合、ビデオの開始オフセットと終了オフセットをDuration形式で指定します。たとえば、1:00から始まる10秒のクリップを指定するには、“startOffset”: { “seconds”: 60 } および “endOffset”: { “seconds”: 70 } を設定します。メタデータは、ビデオデータがinlineDataまたはfileDataで提示されている場合にのみ指定してください。
object
ビデオタイムライン上の位置に対する再生時間のオフセットを表します。
integer
ナノ秒単位の符号付き秒の小数部。小数を含む負の秒の値であっても、nanos の値は負でない必要があります。範囲: 0 から 999999999 まで
integer
期間の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)である必要があります。範囲: -315576000000 から 315576000000 まで
object
ビデオタイムライン上の位置に対する再生時間のオフセットを表します。
integer
ナノ秒単位の符号付き秒の小数部。小数を含む負の秒の値であっても、nanos の値は負でない必要があります。範囲: 0 から 999999999 まで
integer
期間の符号付き秒数。-315,576,000,000 から +315,576,000,000 まで(両端を含む)である必要があります。範囲: -315576000000 から 315576000000 まで
GET /v2/models/vertexai/gemini-3.1-flash-image/openapi.json で Router が提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する際に使用するドキュメントと同じものです。

出力

object[]
object
object[]
string[]
integer
string
string (date)
形式: date
integer
string
string
object
モデルとの現在の会話のコンテンツ。単一ターンのクエリでは、これは単一のインスタンスです。マルチターンのクエリでは、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。
object[]
必須
object
URI ベースのデータ。
string
URI
string
data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間で、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。可能な値: application/pdf, audio/mpeg, audio/mp3, audio/wav, image/png, image/jpeg, image/webp, text/plain, video/mov, video/mpeg, video/mp4, video/mpg, video/avi, video/wmv, video/mpegps, video/flv, image/heic, image/heif, audio/flac, video/webm
object
生のバイト形式のインラインデータ。gemini-2.0-flash-lite および gemini-2.0-flash では、inlineData を使用して最大 3000 枚の画像を指定できます。
string (byte)
プロンプトにインラインで含める画像、PDF、またはビデオの base64 エンコーディング。メディアをインラインで含める場合は、データのメディアタイプ (mimeType) も指定する必要があります。サイズ制限: 20MB形式: byte
string
data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。許容される値は次のとおりです。gemini-2.0-flash-lite および gemini-2.0-flash では、オーディオファイルの最大長は 8.4 時間で、ビデオファイル (オーディオなし) の最大長は 1 時間です。詳細については、Gemini のオーディオとビデオの要件を参照してください。テキストファイルは UTF-8 でエンコードする必要があります。テキストファイルの内容はトークン制限にカウントされます。画像の解像度に制限はありません。可能な値: application/pdf, audio/mpeg, audio/mp3, audio/wav, image/png, image/jpeg, image/webp, text/plain, video/mov, video/mpeg, video/mp4, video/mpg, video/avi, video/wmv, video/mpegps, video/flv, image/heic, image/heif, audio/flac, video/webm
string
モデルがこのパートのビデオをどのように読み取るか。「AGENTIC」を設定すると、固定レートのフレームサンプリングではなく、モデルが検査するセグメントを判断します。デフォルトの固定レートサンプリングを使用する場合は省略します。gemini-3.7-flash 以降の Flash モデルでサポートされています。
string
テキストプロンプトまたはコードスニペット。
boolean
このパートがモデルからの思考/推論ステップであることを示します。
string
可能な値: user, model
string
object[]
string
可能な値: HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_DANGEROUS_CONTENT
string
コンテンツが指定された安全性カテゴリに違反する確率可能な値: NEGLIGIBLE, LOW, MEDIUM, HIGH, UNKNOWN
string
レスポンスが作成されたタイムスタンプ。
string
レスポンスの生成に使用されたモデルのバージョン。
object
string
string
object[]
string
指定可能な値: HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_HARASSMENT, HARM_CATEGORY_DANGEROUS_CONTENT
string
コンテンツが指定された安全性カテゴリに違反する確率指定可能な値: NEGLIGIBLE, LOW, MEDIUM, HIGH, UNKNOWN
string
レスポンスの一意の識別子。
object
integer
出力専用。入力内のキャッシュされた部分(キャッシュされたコンテンツ)のトークン数。
integer
レスポンス内のトークン数。
object[]
モダリティ別の候補トークンの内訳。
string
入力または出力コンテンツのモダリティの種類。指定可能な値: MODALITY_UNSPECIFIED, TEXT, IMAGE, VIDEO, AUDIO, DOCUMENT
integer
指定されたモダリティのトークン数。
integer
リクエスト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュされたコンテンツ内のトークン数も含まれます。
object[]
モダリティ別のプロンプトトークンの内訳。
string
入力または出力コンテンツのモダリティの種類。指定可能な値: MODALITY_UNSPECIFIED, TEXT, IMAGE, VIDEO, AUDIO, DOCUMENT
integer
指定されたモダリティのトークン数。
integer
thoughts 出力に含まれるトークン数。
integer
ツール使用プロンプトに含まれるトークン数。
object[]
モダリティ別のツール使用プロンプトトークンの内訳。
string
入力または出力コンテンツのモダリティの種類。指定可能な値: MODALITY_UNSPECIFIED, TEXT, IMAGE, VIDEO, AUDIO, DOCUMENT
integer
指定されたモダリティのトークン数。
integer
トークンの合計数(プロンプト + 候補)。
string
リクエストに使用されたトラフィックタイプ(例: PROVISIONED_THROUGHPUT)。

例

入力

出力

デフォルトでは、生成済み画像の part には inlineData.data に base64 バイトデータが、inlineData.mimeType にメディアタイプが含まれます。バイトデータをデコードしてファイルに保存してください。uploadImagesToStorage: true を指定した場合、アップロードされた画像は代わりに、署名付き URL に fileData.fileUri、メディアタイプに fileData.mimeType を使用します。これらの画像は、URL が作成されてから 24 時間後に失効するため、失効する前にダウンロードしてください。アップロードに失敗すると、その画像はインラインのまま残ります。そのため、各 part に inlineData または fileData が含まれているかを確認してください。テキストの part も含まれる場合があり、画像が必ず最初の part であるとは限りません。上記のクイックスタートのサンプルにある candidates[0].content.parts[0].inlineData.data というパスは、このページのサンプルレスポンスにある単一のインライン part を読み取るものです。実際のレスポンスに対しては、位置 0 を指定するのではなく、parts をスキャンして目的のキーを探してください。

出荷前の確認

SDK は Idempotency-Key を生成し、自動リトライで再利用します。手動リトライでは元のキーを再利用してください。Router は最大 10 分間接続を保持できます。 リクエストが失敗すると、Router は理由を説明する X-Comfy-Error-Type レスポンスヘッダーを送信します。422 は、プロバイダーを呼び出す前に Router が入力を拒否したことを意味し、413 はリクエスト本文が Router の受け入れ可能なサイズを超えていたことを意味します。生成されたアセットは 結果 URL の有効期限 があるため、早めにダウンロードしてください。 上記のフィールド説明に記載されているサイズ制限は、プロバイダーの仕様から引用した、そのフィールドに対するプロバイダー自身の上限です。Router はリクエスト本文全体に対して別の上限を適用し、base64 エンコードされたメディアもこれにカウントされます。リクエスト本文のサイズ を参照してください。 このページは、Comfy Router 経由で呼び出す 1 つのパートナーモデルについて説明しています。同じ comfy-sdk / @comfyorg/sdk パッケージには、Comfy Cloud 上で ComfyUI のワークフローグラフ全体を実行するための 2 つ目のクライアントも含まれています: Comfy(api_key=...) / new Comfy({ apiKey })、および client.workflows、client.assets、client.jobs。Comfy SDKs を参照してください。

ヘッダー

認証、冪等性、リクエスト ID、エラー分類、リトライ間隔、支出上限。

Router API の利用

モデルの検出、バリデーションエラー、リトライ、課金。

制限事項

Router が現在対応していないことと、代替手段。