メインコンテンツへスキップ
生成と編集の2つのエンドポイントは、どちらもOpenAIのImages APIと同じ形式でレスポンスを返します。 Nano BananaのモデルでGeminiネイティブの画像生成と編集を行う場合は、Nano Bananaの概要を参照してください。画像モデルとエンドポイントの比較は、画像APIの比較にあります。

認証情報を設定する

トークン管理でモデル用のAPIキーを作成し、環境変数 LAOZHANG_API_KEY に設定します。キーのグループでGPT Image 2.5のVIPモデルを使えることを、コンソールのモデルと料金で確認してください。 ターミナルで、プレースホルダーを置き換えてキーを設定します。
以下の例では、次の値を使います。
  • APIホスト: https://api.laozhang.ai
  • OpenAI SDKのベースURL: https://api.laozhang.ai/v1
  • 認証: Authorization: Bearer $LAOZHANG_API_KEY
  • モデル: gpt-image-2.5-flare-vip(生成)と gpt-image-2.5-sunburst-vip(編集)
APIの呼び出しと画像の保存に使うPythonパッケージをインストールします。cURLの例でも、レスポンスのデコードと正しい拡張子の判定にPythonを使います。

レスポンスから画像を保存する

次のヘルパーを、例を実行するディレクトリに save_images.py として保存します。data[] の各エントリーが b64_json と url のどちらでも、すべての画像をファイルに書き出します。
cURLのリクエストのあとに python save_images.py <response.json> <名前> として実行するか、Pythonで save_images をインポートして使います。

画像を生成する

model と prompt を含むJSONの本文を、次のエンドポイントに送ります。
次の例は商品画像を作り、返ってきたファイル形式に応じて generated.png、generated.jpg、generated.webp のいずれかで保存します。
リクエストが完了したら、generation-response.json から画像を保存します。
保存した画像を開いて結果を確認してください。.json ファイルにはAPIのレスポンスが入っています。拡張子を .png に変えても画像にはなりません。

画像を編集する

コマンドを実行するディレクトリに、input.png という名前の画像を置きます。ファイルと指示を、マルチパートのフォームデータとして次のエンドポイントに送ります。
次の例は背景を変え、結果を edited.png、edited.jpg、edited.webp のいずれかで保存します。
リクエストが完了したら、edit-response.json から画像を保存します。
image[]=@input.png はファイルの中身をアップロードします。JSONにパスの文字列を書いても、ローカルのファイルはアップロードされません。cURLの -F を使うときは、マルチパートのContent-Typeと境界文字列はcURLに任せ、Content-Type: application/json を付けないでください。 変えたい内容と、残したい細部の両方を書いてください。画像の編集は生成によって行われるため、被写体をそのままにするよう指示しても、編集範囲の外のピクセルが完全に同じになるとは限りません。

リクエストのオプション

上の最小限の例では、モデルの既定の出力設定を使っています。サイズや品質を選ぶには、GPT Image 2.5かGPT Image 2のページで、使うモデルのオプションを確認してください。 GPT ImageとDALL·Eでは、使えるオプションが違います。DALL·Eの quality="hd" や style を、GPT Imageのリクエストにそのまま持ち込まないでください。マスク、複数の参照画像、透過背景、出力形式の指定も、モデルごとの手順に従う必要があります。ローカルの画像を1枚編集するだけなら、上の基本的なファイルのアップロードを使ってください。

画像の結果を読み取る

data[] の各エントリーは出力画像1枚で、次の2つのどちらかの形で返ります。
  • b64_json:Base64でエンコードされた画像のバイト列です。data:image/...;base64, の接頭辞が付いたり、末尾の = のパディングが欠けたりするレスポンスもあるため、save_images.py と同じように、接頭辞を取り除いてパディングを補ってからデコードします。
  • url:ダウンロードリンクです。LaoZhang APIのキーを付けずにすぐ取得し、自分の手元に保存してください。URLの結果は期限切れになることがあります。
複数の画像を求めた場合は、data[] のすべてのエントリーを処理してください。画像生成のタスクIDや、Geminiの candidates のレスポンスは別の形式なので、それぞれのAPIに合った処理が必要です。

エラーとリトライ

  • 400: リクエストのフィールドとモデルのオプションを確認します。編集では、ファイルがマルチパートでアップロードされていることを確認します。
  • 401または403: APIキー、トークングループ、モデルの権限を確認します。
  • 404、またはモデルを利用できないというエラー: コンソールのモデルと料金で、エンドポイントと正確なモデルIDを確認します。
  • 429: エラーの本文を読み、レート制限や同時実行の制限なのか、アカウントの残高の問題なのかを見分けます。
  • 5xxまたはタイムアウト: 画像のリクエストを再送する前に、呼び出しログを確認します。
クライアント側でタイムアウトしても、サーバー側の生成は取り消されません。Pythonの例ではSDKの自動リトライを無効にしているため、リクエストを繰り返すかどうかはアプリケーションで判断できます。 現在の料金と課金単位はコンソールに表示されます。サービスと返金の条件は利用規約に定められています。

関連ドキュメント