OpenAI 画像編集 API は、プロンプトに基づいて既存の画像を変更します。. ネイティブルートは POST /v1/images/edits; このAPIは、画像、プロンプト、およびマスクや参照画像などのオプションの編集制御を受け付けます。特定の目的を絞ったリクエストにはImage APIを、製品でマルチターン型の画像ワークフローが必要な場合にはResponses APIを使用してください。.
信頼性の高い編集とは、小さなパイプラインのようなものです。ソースファイルを固定し、残すべき箇所と変更可能な箇所を指定し、返されたバイトデータを検証し、承認されたアセットを保存します。1つのワークスペース内で画像編集ソフトやその他のメディアツールを切り替えて作業したい場合は、, GlobalGPTでGPT Image 2を使用して画像を作成・編集する; その公開APIでは別の非同期タスク契約が使用されており、このガイドではそれをOpenAIのネイティブエンドポイントとは区別しています。.
簡単な答え:コードを書く前にルートを選んでおくこと
| 必要性 | ルート | 形状の指定 | 処理すべき結果 |
|---|---|---|---|
| 画像の生成または編集を1回 | OpenAI Image API | POST /v1/images/edits, 複数ページにわたるフォーム | data[0].b64_json; それをデコードして保存する |
| 画像コンテキストを用いた数回の反復処理 | OpenAI レスポンス API | POST /v1/responses 画像生成ツールを使って | 画像生成の出力項目を抽出する |
| 1つのアカウントに複数のメディアモデルが紐付けられている | GlobalGPT 公開API | POST /tasks, その後、ポーリングを行う GET /tasks/{id} | output.url; 30日間の期間が終了する前に保存してください |
エンドポイント名は似ているように見えますが、リクエスト本文や結果の処理方法は互換性がありません。.
OpenAI 画像編集 API にはどのような機能がありますか?
編集プロセスは、既存の画像から始まります。 プロンプトで変更内容を記述し、入力画像は編集後も維持すべき視覚的な文脈を提供します。背景の置き換え、要素の追加や削除、より広範囲なスタイル変更を行うほか、参照用として複数の画像を渡すことも可能です。モデルは依然としてリクエストを解釈します。このAPIは、選択範囲が保証されたピクセルエディタではありません。.
OpenAIでは、2つの有用なワークフローが記載されています。その 画像API 1つのリクエストに対して1つの画像を返す必要がある場合に、最適な選択肢となります。この レスポンス API ユーザーが結果を確認し、別の変更を依頼し、ターンごとに画像のコンテキストを維持する場合、こちらの方が適しています。この選択は、リクエストの形式と、結果を抽出するコードの両方に影響を与えます。.
Image API 対 Responses API
| 質問 | 画像API | レスポンス API |
|---|---|---|
| 最適 | 1回の「生成または編集」操作 | マルチターン形式の編集体験 |
| 典型的な入力 | 複数パーツからなる画像、プロンプト、オプションのマスク | 会話入力機能と画像生成ツールの組み合わせ |
| 出力の処理 | data[0].b64_json | 画像生成の出力項目を見つける |
| 費用の内訳 | ダイレクト編集では、現在の入出力レートが使用されます | キャッシュされた入力ルールは異なる場合があります。最新の価格をご確認ください。 |
OpenAIのネイティブAPIを使用して最初の編集を行う
APIキーはサーバー上に保管し、環境変数から読み込んでください。以下の例では、1枚の画像とプロンプトを、ドキュメントに記載されている編集用エンドポイントに送信しています。この 画像[] 選択したモデルが複数の入力をサポートしている場合、このフィールドを繰り返し指定できます。シェルパイプラインは、最初に返された base64 形式の画像をデコードし、ローカルの PNG ファイルとして保存します。.
Native curl 編集:b64_json の結果を保存する
curl -s \
-X POST "https://api.openai.com/v1/images/edits" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2.5-sunburst" \
-F "image[]=@source.png" \
-F "prompt=背景のみを温かみのあるベージュ色のスタジオシーンに置き換えてください。商品とラベルは変更しないでください。" \
| jq -r '.data[0].b64_json' \
| base64 --decode > edited.pngPython SDK 編集:返されたバイトをデコードする
from openai import OpenAI
import base64
client = OpenAI()
result = client.images.edit(
model="gpt-image-2.5-sunburst",
image=open("source.png", "rb"),
prompt="背景のみを温かみのあるベージュ色のスタジオシーンに置き換えてください。製品とラベルは変更しないでください。",
)
image_bytes = base64.b64decode(result.data[0].b64_json)
with open("edited.png", "wb") as output:
output.write(image_bytes)これを本番環境での使用に適していると判断する前に、デコードされたファイルを検証してください。MIMEタイプ、寸法、バイト数、そして重要な視覚的詳細が依然として残っているかどうかを確認してください。200レスポンスは、リクエストが受理されたことを示すだけであり、ラベル、ロゴ、または製品の形状が保持されているかどうかは示しません。.
マスクや参考画像を安全に活用しましょう
マスクは、変更したい領域をモデルに指示するものですが、GPT Imageのマスキング機能は依然としてプロンプトに基づいています。OpenAIのガイドでは、モデルがマスクを絶対的なピクセル境界ではなく、あくまで指針として扱うことが明示的に警告されています。保護対象についてプロンプトを具体的に記述し、生成後に画像全体を確認するようにしてください。.
マスクの事前チェック
- 画像とマスクは同じ形式を使用しています。.
- 画像とマスクのサイズは同じです。.
- マスクファイルのサイズは50 MB未満です。.
- このマスクにはアルファチャンネルが含まれています。.
- プロンプトには、変更してはいけない部分と、置き換えるべき部分が明記されています。.
マスクをアップロードする前に確認してください
from PIL import Image
source = Image.open("source.png")
mask = Image.open("mask.png")
assert source.format == mask.format, (source.format, mask.format)
assert source.size == mask.size, (source.size, mask.size)
assert mask.width * mask.height > 0
assert mask.mode in {"RGBA", "LA"}, mask.mode
assert mask.fp is None or True # ディスク上のファイルサイズは別途確認
print("source:", source.size, source.format)
print("mask:", mask.size, mask.mode)マスク付きの画像を複数指定した場合、現在のガイドラインでは、マスクは最初の画像に適用されるとされています。これは、参照用ワークフローを設計する上で有用な基準となります。つまり、編集対象の領域を含むアセットを最初の入力とし、残りの画像は、マスクがそれらすべてにまたがって選択されると仮定するのではなく、参照用として扱うようにしてください。.
参考画像は別の問題を解決します。これらは、製品のアイデンティティ、照明の系統、配色、あるいは構図のヒントを提供することができます。参考画像は、モデルにすべての輪郭を忠実に再現することを強制するものではありません。パッケージの形状やラベルを正確にそのまま維持する必要がある場合は、モデル出力後に視覚的な確認工程を設けるか、従来の編集工程を組み込んでください。.
モデルとパラメータを選択してください
現在のOpenAIイメージガイドには、以下の内容が記載されています gpt-image-2.5-sunburst, gpt-image-2.5-flare, そして gpt-image-2. モデル名やサポートされているオプションは、常に更新されるドキュメントとして扱ってください。それらを組み込む直前に必ずモデルページを確認し、再現性が重要な場合は日付入りのバージョンを固定しておいてください。.
回避可能な障害を防ぐためのパラメータ設定
| 決定 | 実用的なルール | なぜそれが重要なのか |
|---|---|---|
| 入力の忠実度 | 省略 入力精度 にとって gpt-image-2; その画像入力は高忠実度で処理される。. | サポートされていないフィールドを送信すると、有効な編集リクエストであっても却下される可能性があります。. |
| 品質 | 「2.5 サンバーストおよびフレアルート」のドキュメント ロー, 中, 高, xhigh, そして max. | 設定値を高くすることは、コストとレイテンシのトレードオフであり、保存品質が向上することを保証するものではありません。. |
| フォーマット | 現在のエンドポイントがサポートしている出力形式を確認し、デコードされたファイルを確認してください。. | ストレージパイプラインは、リクエストされたオプションだけでなく、バイト列やMIMEタイプも信頼すべきです。. |
| 背景 | プロンプトで希望する背景を指定し、対応している場合は、ドキュメントに記載されている背景オプションを使用してください。. | モデルは依然としてシーンを解釈しているため、被写体に関する制約は明示的に記述しておいてください。. |
| 参考文献 | 参考画像を基に、ビジュアルの統一感、色、照明を決定し、各要素の役割を明確に定義してください。. | 画像の役割が曖昧だと、ドリフトの診断が難しくなる。. |
OpenAI 画像編集 API の利用料金はいくらですか?
OpenAIでは、GPT Imageの利用料金は、編集ごとに一律の定額料金ではなく、トークンカテゴリごとに設定されています。現在の料金ページには、画像入力、キャッシュ済み入力、画像出力の各料金が個別に記載されています。 Direct Image API による編集では、Responses API の画像生成ツールについて記載されている「キャッシュされた入力」の扱いは適用されないため、Responses の見積もりを Direct にコピーしないでください。 /v1/images/edits 予算。.
公開されているイメージトークンのレート(2026年9月28日時点)
| モデル | 画像入力 / 100万トークン | キャッシュされた画像の入力 / 100万トークン | 画像出力 / 100万トークン |
|---|---|---|---|
| GPT Image 2.5 | $8 | $2* | $30 |
| GPTイメージ2 | $4 | $1* | $15 |
*「cached-input」列は、公開されている価格設定のコンテキストについて表示されています。価格ガイドによると、「cached input」はResponses APIの画像生成ツールに適用されるものであり、次のようなImages APIへの直接リクエストには適用されません。 /v1/images/edits. 料金は変更される場合があります。ご自身でリクエストした際に返された使用量に基づいて計算してください。.
利用状況に基づいて、透明性のある見積もりを作成する
def estimate_image_cost(image_input_tokens, image_output_tokens,
input_rate, output_rate):
return (image_input_tokens / 1_000_000) * input_rate + \
(image_output_tokens / 1_000_000) * output_rate
# これはあくまで例です。回答では実際の使用例に置き換えてください。
estimate = estimate_image_cost(
image_input_tokens=250_000,
image_output_tokens=120_000,
input_rate=4.00,
output_rate=15.00,
)
print(f"${estimate:.4f}")この計算式はあくまで計画の参考例であり、画像1枚あたりの固定料金を保証するものではありません。再試行、ファイル保存、および別途発生するテキストやツールの使用料については、ご自身の予算に組み込んでください。出力結果が重要な場合は、リクエスト、レスポンスの使用状況、デコード済みファイルのハッシュ値、および承認の決定をまとめて管理してください。.
GlobalGPTでは、別の画像編集API契約が使用されています
について GlobalGPT APIドキュメント 画像、動画、音声の生成を非同期メディアタスクとして説明しています。その公開ベースURLは https://api2.glbgpt.com/ai-api/open/v1. JSONを以下のURLに送信してください /タスク, 世論調査 /tasks/{id}, 、そして読んで output.url タスクが正常に完了した後。モデルカタログには、以下のものが掲載されています。 gpt-image-2 そして gpt-image-2.5 最大4枚の入力画像を持つ「image-edit/reference」ルートとして、および アスペクト比.

S05 公開APIドキュメント: 非同期タスク契約に関する公開ドキュメントの証拠。この記事では、OpenAIのネイティブのマルチパート編集エンドポイントとは区別して扱っています。.

S06 パブリックモデルカタログ: GPT Imageのルートに関する公開モデルカタログの証拠および記録された画像タスクの制限事項。公開前に動的なクレジット情報やフィールドを確認してください。.
GlobalGPT パブリックタスクの形状
BASE="https://api2.glbgpt.com/ai-api/open/v1"
# オプション:タスクを作成したりクレジットを予約したりせずに見積もりを取得します。
curl "$BASE/tasks/estimate" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5",
"prompt": "ボトルとラベルはそのままにしてください。 背景のみを、温かみのあるベージュ色のスタジオ照明に置き換えてください。",
"images": ["https://YOUR_PUBLIC_IMAGE_URL/product.png"],
"aspect_ratio": "3:2"
}'
# 見積もりを確認してから送信してください。
curl "$BASE/tasks" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-edit-example-001" \
-d '{
"model": "gpt-image-2.5",
"prompt": "ボトルとラベルはそのままにしてください。 背景のみを、温かみのあるベージュ色のスタジオ照明に置き換えてください。",
"images": ["https://YOUR_PUBLIC_IMAGE_URL/product.png"],
"aspect_ratio": "3:2"
}'
# 返されたタスク ID を、成功または失敗するまでポーリングします。
curl "$BASE/tasks/TASK_ID" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY"OpenAIのマルチパートを貼り付けないでください マスク, 入力精度, サイズ, あるいは 品質 これらのフィールドをこのJSONに追加し、正常に動作すると仮定します。現在公開されているGlobalGPTのドキュメントには、このイメージルートに関するこれらのフィールドは記載されていません。サポートされていないフィールドは削除され、 無視されたパラメータ, 、したがって、設定が反映されたと結論付ける前に、その応答を確認してください。.
公開ドキュメントによると、GlobalGPTはメディアタスクが送信された際にクレジットを予約し、タスクが失敗した際にそれを解放し、成功したメディアは30日間利用可能な状態に保ちます。URLをより長期間維持する必要がある場合は、返されたアセットを管理下のストレージに保存してください。 バッチ処理の前には見積もりエンドポイントを使用し、ネットワークリクエストを再試行する際はイデポテンシーキーを使用し、ポーリングの応答が遅いだけの場合は元のタスク ID を使用してください。.
GlobalGPTモデルの試験で明らかになったこと
この違いを具体的に示すため、2026年9月28日に、2つの架空の(ブランド名を含まない)入力プロンプトと2つの編集プロンプトを用いて、制限付きのGlobalGPTモデルAPIテストを実施しました。 各タスクでは、GPT Image 2を使用し、3:2のリクエストを行い、最初の有効な出力を採用しました。以下の画像はモデルテストの結果を示すものであり、ブラウザワークスペースのセッションやベンチマーク、あるいはすべての編集においてすべての輪郭が保持されるという保証を示すものではありません。.

P00 入力: 元の画像:短い白いキャップと短いラベルが付いた、架空のノーブランドのボトル。.

P01 参照: 固定された参照画像:照明や色の調整にのみ使用され、第2の製品アイデンティティとしては使用されません。.
T01:1枚の画像の背景編集
プロンプト全体を表示する
入力画像のセラミックボトル、短い白いキャップ、架空のラベルテキスト「NORTH」と「250ml」、色、カメラアングル、およびアスペクト比は変更せずに維持してください。純白の背景のみを、柔らかな窓からの光と穏やかな影をイメージした、温かみのあるベージュ色の屋内スタジオの背景に置き換えてください。 新しいオブジェクト、ロゴ、文字、透かし、人物、ラベルなどは一切追加しないでください。3:2の横長構図で、ボトルを唯一の被写体として残してください。.
ここからわかることは: ボトルの形状は一目でそれとわかるままで、「NORTH / 250ml」のラベルも確認でき、白い背景は、窓のような柔らかな影が差す温かみのあるベージュ色の室内風景へと変わっています。.
制限: これは、最初に有効と判定された出力の1つです。これは、ピクセルの完全な保持や、ラベルの一般的な正確性を証明するものではありません。.
T02:2枚の画像による照明および色の参照
プロンプト全体を表示する
入力画像1を製品の正確な識別情報として使用し、入力画像2は温かみのあるベージュ色の照明、色温度、柔らかな室内の影の参考としてのみ使用してください。入力画像1のセラミックボトルの形状、短い白いキャップ、架空のラベルテキスト「NORTH」と「250ml」、色、カメラアングル、およびプロポーションは変更しないでください。 白い背景を、落ち着いた温かみのあるベージュ色の屋内スタジオシーンに置き換えてください。入力画像2から、余分なオブジェクト、テキスト、ロゴ、透かし、人物、ラベルなどは一切コピーしないでください。3:2の横長構図で、ボトルを唯一の被写体としてください。.
ここからわかることは: 製品と「NORTH / 250ml」のラベルはそのまま認識できる一方で、シーンはP01の温かみのあるベージュ色の部屋、テーブルの上、そして窓からの光といった雰囲気を取り入れています。.
制限: ボトルキャップの比率、ボトルの輪郭、配置が明らかに変化しました。これを「完璧な」あるいは「正確な」形状の再現だとは呼んではいけません。商品の寸法が一致する必要がある場合は、手作業による比較を行ってください。.
この証拠の活用方法: これにより、再現性のあるレビューゲートが実現されます。入力URLを固定し、保護対象の名称を指定し、参照ロールを記述し、返されたバイト列を検証し、公開前に承認済みの成果物とソースを比較します。ジオメトリにずれが生じている場合でも、スタイル転送は成功する可能性があります。.
エラーや応答の遅延への対処
症状 → 確認 → 対応
| 症状 | まず確認してください | 安全な次のステップ |
|---|---|---|
| 401 / 認証エラー | サーバー側の鍵、アカウントの権限、エンドポイントのホスト | 認証の問題を停止して修正してください。画質の評価は行わないでください。. |
| 400 / 422 不正なリクエスト | モデル ID、マルチパートフィールド名、ファイル形式、サポートされていないオプション | エラーで指定されたフィールドのみを変更し、失敗した元のリクエストはそのまま残してください。. |
| 429 / 5xx / 容量 | タスクIDが作成されたかどうか | タスクIDが存在しない場合は、ポリシーに基づいて1回再試行し、タスクが存在する場合はそのIDをポーリングします。. |
| タスクがキューに残ったまま、または処理中のまま | 状況、前回の調査日時、プロバイダーの見積もり | 一定の間隔でポーリングを行い、ステータスが不明の間は重複したインスタンスを作成しないようにしてください。. |
| 出力は、画像として保存されたJSONオブジェクトです | Content-Type、先頭バイト、デコード後の形式 | 応答を解析し、デコードする b64_json またはダウンロード output.url, その後、検証を行います。. |
| このパラメータは効果がないようです | グローバルGPT 無視されたパラメータ およびモデルカード | サポートされていないフィールドを削除し、モデル固有の契約を使用してください。. |
トランスポートに関する証拠と品質に関する証拠を区別してください。タイムアウト、DNS 障害、またはプロバイダーの容量制限による応答が発生した場合は、評価に用いる有効な画像が存在しないことを意味します。逆に、キャップやラベルが変更された有効な画像は、たとえその構図が魅力的に見えても、そのままの状態で報告すべき視覚的な結果となります。.
本番環境でも安全な画像編集のチェックリスト
- ソースを凍結する: 入力ファイル、寸法、形式、およびハッシュを保存します。.
- 画像の役割を割り当てる: 対象となる画像、および照明、配色、構図に関する参考資料を特定してください。.
- 書き込み保護されたキュー: 見直しが必要なラベル、シルエット、色、プロポーションを列挙してください。.
- 契約を選択してください: ネイティブ編集エンドポイントには OpenAI マルチパートを、パブリックメディア API には GlobalGPT JSON タスクを使用してください。.
- 見積もりを作成して提出する: 現在のOpenAIレート、またはGlobalGPTを使用する
/タスク/見積もり; リトライが安全な送信のために、冪等性キーを追加します。. - ポーリングとデコード: 1つのタスクIDを保持し、返されたファイルの有効性を確認した上で、そのバイトデータまたはURLを承認済みのストレージに保存する。.
- 目視で確認する: 製品カタログ、広告、または顧客向けページに掲載する前に、出力内容をソースと比較してください。.
個別のモデルダッシュボードをつなぎ合わせることなく、同じプロセスを実行したい場合は、次の方法を試してみてください。 GPT Image 2 in GlobalGPT. ブラウザ向けのワークフローについては、以下を参照してください。 GlobalGPT ワークスペースで画像を編集する; 設定や価格設定に関するより詳細な説明については、以下を参照してください。 GPT Image API の設定と料金体系.
よくある質問
OpenAI 画像編集 API とは何ですか?
これは、POST /v1/images/edits での画像編集ルートです。入力画像とプロンプト(必要に応じてマスクや参照画像も)を送信し、返された画像データをデコードします。単一の編集には Image API を、製品で複数回のやり取りを伴う画像会話が必要な場合は Responses API を使用してください。.
OpenAI Image Edit API は、公開用画像の URL を返しますか?
ドキュメントに記載されているImage APIのサンプルは、b64_jsonを返します。これらのバイト列をデコードし、ファイルの有効性を確認した上で、管理下のストレージに保存してください。レスポンスが成功したからといって、それがホスト型CDNのURLであると想定しないでください。.
OpenAIのイメージマスクは、ピクセル単位の正確な選択を行っているのでしょうか?
いいえ。マスクはプロンプトに基づく編集を誘導するものです。モデルは指定された領域周辺のピクセルを変更する可能性があるため、ラベル、製品の詳細、安全マークなど、正確さを保つ必要がある要素を必ず確認してください。.
1つの画像編集ツールで、最大何枚の画像を処理できますか?
現在の画像ガイドでは、参照ワークフロー向けに複数の入力画像に対応しています。具体的な制限やモデルごとの動作については、各モデルのドキュメントをご確認ください。サポートされている最大値であっても、すべての合成において画像が完全に保持されるとは限りません。.
base_url を変更することで、OpenAI の /v1/images/edits リクエストを GlobalGPT に送信することはできますか?
No. GlobalGPTのパブリックメディア契約では、JSON POST /tasks、続いてGET /tasks/{id}を使用し、選択されたモデルが対応している場合は画像とaspect_ratioを指定します。 公開ドキュメントには、OpenAIのそのルートに関するマルチパートマスク、input_fidelity、size、qualityの仕様は記載されていません。.
画像タスクを提出する前に、どのように見積もればよいでしょうか?
GlobalGPTの場合は、まず /tasks/estimate に同じ JSON ボディを送信してください。これにより、タスクが作成されたり、クレジットが予約されたりすることはありません。OpenAIの場合は、現在の 100 万トークンあたりのレートで計算を行い、その後、レスポンスまたは課金記録で実際の使用量を確認してください。.









