HTTP 接続を 20–50 秒間開いたままにする必要がある場合は、この API を使用してください。すでに動作する同期インテグレーションがある場合は、移行する前に
同期または非同期の選択を参照してください。
エンドポイント
作成時のパスは複数形で、読み取り時は単数形であることに注意してください。リスト、キャンセル、削除のエンドポイントはありません。
タスクを作成する
リクエストボディは、常に次の3つのキーを持つエンベロープです。model、input、およびオプションのcallback_urlです。
エンベロープのフィールド
エンベロープレベルの未知のキーは現在受け付けられ、無視されます。ただし、
この動作に依存せず、生成パラメータをそこに配置しないでください。生成パラメータは
inputに指定します。
inputオブジェクト
inputには生成パラメータが含まれ、受け付けるフィールドはモデルによって異なります。その周囲のエンベロープは固定されていますが、内容は固定されていません。
input内のバリデーションは厳格です。モデルが認識しないキーはすべて
即座に拒否されるため、タイプミスを見逃さずに検出できます。
Nano Banana シリーズ
フィールドの完全な一覧、解像度の段階、アスペクト比、および画像編集。
結果をポーリングする
タスクのフィールド
レスポンスはタスクの進行に応じて拡張されます。タスクの実行中は、
outputsとexpires_atは単に存在しません。固定された形状を前提にせず、フィールドを防御的に読み取り、まずstatusに基づいて分岐してください。
ステータスの流れ
待機時間
送信処理は 1 秒未満で完了し、負荷がかかってもその状態が維持されます。同時実行数 12 で 30 件のタスクを処理した測定では、p50 は 0.88 秒、p95 は 0.92 秒でした。時間がかかるのは生成処理自体で、モデルと解像度に応じておよそ 12~50 秒です。そのうち 0~11 秒はキュー待ちに費やされます。モデルごとの数値は各モデルのページに記載されています。出力のダウンロード
outputsは、署名やクエリ文字列を含まないプレーンなhttpsURLで、APIとは異なるホスト名のWideRouterの配信CDNから提供されます。これにより、次の2点が導かれます。
1
認証されていません
APIキーを送信してはいけません。また、URL自体を秘密情報として扱ってください。
リンクを持っている人は誰でも、そのURLが有効な間は画像を取得できます。
2
24時間後に期限切れになります
expires_atは常にcreated_atに86400を加えた値です。保持する必要があるものはすべて
自分のストレージにコピーしてください。出力URLを永続的な参照として保存してはいけません。1Kで約0.4~0.7 MB、2Kで2.4~3.0 MB、4Kで7.5~8.2 MBです。
ファイル拡張子を推測するのではなく、レスポンスからContent-Typeを読み取ってください。
コールバック
作成時にcallback_url を設定すると、WideRouter が完了したタスクをそこに POST するため、
ポーリングを完全に省略できます。
https でなければなりません。それ以外のもの — http、ホスト名のみの値、文字列以外の値 —
は送信時に invalid_callback_url で拒否されるため、誤記があっても、配信されないまま気づけないのではなく、
すぐに失敗します。
WideRouter はタスクオブジェクトを application/json として POST します。本文を解析する前に
ルーティングに使用できるヘッダーも含まれます。
本文は、その時点で
GET /v1/task/{task_id} が返す内容とバイト単位で同一です —
フィールドも値も同じであるため、1つのハンドラーで両方の経路に対応できます。
テストでは配信は即時に行われました。3つのタスクのコールバックはすべて、タスクが
completed に到達してから1秒以内に届きました。エンドポイントが 5xx を返した場合、
WideRouter は再試行します。確認された試行は、およそ0秒、10秒後、70秒後でした。
コールバックはレイテンシーを最適化するものであり、配信を保証するものではありません。コールバックが届かない
タスクに備えてポーリングのフォールバックを維持し、ハンドラーは冪等にしてください —
再試行によって同じタスクが複数回届く可能性があるため、タスク
id をキーにします。タスクが失敗した場合
failedタスクは、readエンドポイントでは依然として200です。失敗しているのはHTTPステータスではなく、
ボディです。
outputsもexpires_atもない点に注意してください。入力取得の失敗は、モデル処理の前に発生するため高速で、
1秒未満です。
送信時のエラー
バリデーションは何かがキューに追加される前に行われるため、ここでの400には費用がかかりません。
エラーは一度に1つのフィールドを指し、
paramは配列インデックス(input.images[0])を含む完全なパスを使用するため、失敗箇所をリクエストに直接対応付けられます。
ここで利用できるモデル
モデル ID は完全一致で照合されます。エイリアスはなく、-previewが付いた
名前は受け付けられません。非同期 API で提供されていない ID を送信すると、
キューに追加される前の送信時点でmodel_not_supportedが返されます。
Nano Banana シリーズ
Google の画像モデル — 各提供先での利用可否、パラメータ、実測レイテンシ。
同期と非同期の選択
どちらの方式も利用でき、いずれも非推奨ではありません。
サーバーレス関数、リバースプロキシ、またはモバイルクライアントの背後で実行する処理では、50 秒のリクエストに確実に耐えられるものはないため、通常は非同期のほうが適しています。単にバイト列を受け取りたいスクリプトでは、同期呼び出しのほうがシンプルです。
次のステップ
Nano Banana シリーズ
パラメータマトリクス、解像度の段階、および2つのモデルの違い。
クイックスタート
エンドツーエンドの同じフローを約5分で実行できます。