今 OpenAI image generation API example を探しているなら、最初に選ぶべきは Images API と gpt-image-1.5 です。2026年3月23日 時点では、これがシンプルな画像生成リクエストを最短で通すための最も安全なルートです。Responses API に切り替えるのは、画像生成がより大きなマルチモーダル workflow の中で tool として振る舞う場合だけで十分です。
このトピックが必要以上にややこしく見えるのは、答えが複数のページに分散しているからです。メインの image generation guide は直接生成と編集を扱い、image_generation tool guide は responses.create() 経由の流れを扱います。Images API reference は生の endpoint と request shape を確認するためのページです。1ページだけ読むと、動きそうなコードを間違った surface に持ち込んでしまいがちです。
いちばん安全な順番はシンプルです。まずは直接生成リクエストを1本通し、返ってきた base64 画像を保存するところまで確認する。そのあとで edits、transparent background、compression、streaming を追加します。会話状態や tools、より広いマルチモーダル orchestration が本当に必要になったら、その時点で Responses を選べば十分です。
最短で動く OpenAI image generation API サンプル

このキーワードでは、最初の正解は Images API です。現在の endpoint は POST /v1/images/generations で、今の新規サンプルの中心に置くべき model ID は gpt-image-1.5 です。画像を1枚生成して保存したいだけなら、最初から assistant workflow に持ち込む必要はありません。
覚えやすい流れは次の4つです。
- prompt を送る
- base64 画像を受け取る
- decode する
- ローカルに保存する
JavaScript の最小サンプル:
jsimport fs from "fs"; import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); const result = await client.images.generate({ model: "gpt-image-1.5", prompt: "Create a clean editorial illustration of a robot camera operator in a bright studio", size: "1024x1024", quality: "medium", }); const imageBase64 = result.data[0].b64_json; const imageBuffer = Buffer.from(imageBase64, "base64"); fs.writeFileSync("openai-image-example.png", imageBuffer);
Python 版:
pythonfrom openai import OpenAI import base64 client = OpenAI() result = client.images.generate( model="gpt-image-1.5", prompt="Create a clean editorial illustration of a robot camera operator in a bright studio", size="1024x1024", quality="medium", ) image_base64 = result.data[0].b64_json image_bytes = base64.b64decode(image_base64) with open("openai-image-example.png", "wb") as f: f.write(image_bytes)
cURL 版:
bashcurl https://api.openai.com/v1/images/generations \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-1.5", "prompt": "Create a clean editorial illustration of a robot camera operator in a bright studio", "size": "1024x1024", "quality": "medium" }' \ | jq -r '.data[0].b64_json' \ | base64 --decode > openai-image-example.png
環境によっては base64 --decode が使えないので、その場合は OS に合ったフラグに置き換えてください。macOS なら通常 base64 -D です。
このサンプルが良いのは、今の direct contract を最小で理解できるからです。tool orchestration を早い段階で持ち込まずに済みます。もうひとつ古い記事が落としがちなポイントは、GPT image models はデフォルトで hosted URL ではなく base64 image data を返すことです。だから、役に立つ最初のサンプルは request だけで終わらず、decode と保存まで示す必要があります。
Images API と Responses はどう使い分けるべきか
画像を生成・編集するだけなら Images API のほうが理解しやすく、デバッグも簡単です。テキスト、tools、画像、会話状態をまとめて扱う assistant を作っているなら Responses のほうが自然です。
| 状況 | 先に選ぶべきルート | 理由 |
|---|---|---|
| 画像を1枚生成して保存したい | Images API | もっとも短くてわかりやすい |
| 1枚以上の画像を編集したい | Images API | edit flow と input_fidelity がここにある |
| シンプルな backend endpoint が欲しい | Images API | 層が少なく、失敗点も少ない |
| 画像生成が大きな multimodal workflow の tool である | Responses API | 画像が tool として自然に収まる |
| 1回のリクエストで画像以外の reasoning も必要 | Responses API | orchestration がしやすい |
ここで大事なのは、Responses が新しそうだからといって最初のデフォルトにしないことです。マルチモーダル orchestration が本当に必要な時だけ Responses を選べば十分です。そうでないなら、最初のサンプルを無駄に難しくしているだけです。
もう1つよくあるミスは、Responses の model フィールドに gpt-image-1.5 を入れてしまうことです。tool guide が示している通り、image_generation tool の背後で GPT Image が使われ、トップレベルの model には gpt-5 のような reasoning model を置きます。
この違いはデバッグの仕方も変えます。Images API なら access、payload、file write をまず見ればよいですが、Responses では tool invocation や output parsing も確認対象になります。だからこのページでは、最初の working example を direct Images API に固定しています。
より広いルーティングを見たいなら、日本語版の OpenAI Image API 教程 を続けて読むとつながりやすいです。
コードの前に access と model ID を確認する

「サンプルが壊れている」と見える問題の多くは、実際には code ではなく access 側です。2026年3月23日 時点で GPT Image 1.5 の model page は Free not supported を示し、Tier 1 starting at 100,000 TPM and 5 IPM と書いています。つまり、コードが正しくても model を呼べないケースがあります。
さらに、API model availability by usage tier and verification status では gpt-image-1 と gpt-image-1-mini が tiers 1 through 5 の API ユーザー向けに利用可能で、ただし一部 access は organization verification に依存すると説明されています。見た目は正しいサンプルでも失敗するなら、まず account surface を疑うべきです。
確認の順番は次の通りです。
- 最新 SDK を入れる。
OPENAI_API_KEYを確認する。- account が対応 usage tier にあるか確認する。
- active organization を確認する。
- current model name を確認する。
- そのあとで prompt や parameters を調整する。
Node.js:
bashnpm install openai
Python:
bashpip install openai
verification を終えたのに not verified のようなエラーが残る場合、API Organization Verification は 最大30分待つ、API key を作り直す、セッションを更新する、正しい organization を確認するという順を案内しています。これは周辺情報ではなく、このキーワードで実際によく踏む分岐です。
実務的なルールはシンプルです。まず access、次に request shape、最後に prompt quality を疑う。これを逆にすると、不要な試行錯誤が増えます。
API を変えずに edits と output controls を追加する

ベースのサンプルが動いたあとも、すぐに Responses に移る必要はありません。image edits、transparent background、output tuning は、そのまま direct Images API の範囲にあります。
jsimport fs from "fs"; import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); const result = await client.images.edit({ model: "gpt-image-1.5", image: [ fs.createReadStream("product-photo.png"), fs.createReadStream("logo.png"), ], prompt: "Add the logo to the product box as if it were printed on the packaging.", input_fidelity: "high", }); const imageBase64 = result.data[0].b64_json; fs.writeFileSync("product-with-logo.png", Buffer.from(imageBase64, "base64"));
ここでの input_fidelity: "high" は、入力画像の細部保持が重要な時に役立ちますが、image-token cost は増えます。最初のテストで何でも高 fidelity にするのではなく、本当に必要な場面で使うのが安全です。
同じ direct API で次の調整もできます。
size: 最初のテストは1024x1024quality: 最初の検証ならmediumbackground: GPT image models のpng/webpで透明背景が使えるoutput_format: ファイルサイズや latency を気にするならjpegやwebpoutput_compression: JPEG / WebP の圧縮率を制御したい時
最初のリクエストは「退屈」なくらいがちょうどいいです。正方形、medium quality、単一出力なら、access、payload、decode、file write のどこで失敗しているかが見えやすくなります。そのあとで transparency や高品質出力、多画像 edits を足していけば十分です。
コストも先に把握したいなら、日本語版の OpenAI image generation API pricing guide を合わせて見ると判断しやすくなります。
Responses に切り替えるべきタイミング
「画像を1枚作る」から、「assistant が reasoning を行い、tools を呼び、時々画像も返す」へ進んだら、その時点で Responses が正しい abstraction になります。
jsimport fs from "fs"; import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); const response = await client.responses.create({ model: "gpt-5", input: "Generate a transparent sticker-style icon of a paper airplane for a travel app", tools: [ { type: "image_generation", background: "transparent", quality: "high", }, ], }); const imageBase64 = response.output .filter((item) => item.type === "image_generation_call") .map((item) => item.result)[0]; fs.writeFileSync("paper-airplane.png", Buffer.from(imageBase64, "base64"));
このサンプルは正しいですが、解いている問題が違います。画像生成がより広い interaction の一部になる時に強いのであって、「まずは1本動くサンプルが欲しい」という用途には過剰です。
Responses を選ぶべきなのは次のような時です。
- 1回の呼び出しでテキストも画像も返る可能性がある
- 画像生成が assistant workflow の tool である
- model に、いつ画像を生成するか判断させたい
- 画像ステップが他の tools と並んで存在する
逆に direct Images API に留まるべきなのは、
- 最短の onboarding が欲しい
- backend endpoint が1つの image task だけを担当する
- generation / editing をデバッグしている
- チームに渡す最小サンプルをきれいにしておきたい
Troubleshooting: 古い記事が省略しがちな失敗パターン
1つ目は、古い model name をそのまま使ってしまうことです。この query では GPT Image 1 や DALL·E 時代の内容がまだ混ざります。今日の新しい direct example なら、最初に置くべき名前は gpt-image-1.5 です。
2つ目は、Responses の model に gpt-image-1.5 を直接入れることです。tool guide が示している通り、GPT Image は image_generation tool の背後にあり、トップレベル model は gpt-5 のような mainline model です。
3つ目は、access error を code error と勘違いすることです。availability、permission、verification 系のエラーなら、まず tier と organization verification を見てください。そこを詳しく追いたいなら、日本語版の verification guide があります。
4つ目は、古い DALL·E の出力イメージを期待してしまうことです。GPT image models では direct Images API のデフォルトは base64 なので、decode-and-save が必要です。
5つ目は、最初のリクエストで全部やろうとすることです。portrait size、transparency、high quality、multi-image edits、assistant orchestration を最初から全部入れるより、まず direct path が通ることを確認したほうが速いです。
SDK と cURL の比較も有効です。両方が同じように失敗するなら、問題はアプリコードではなく access、model naming、organization context であることが多いです。cURL は通るのにアプリだけ失敗するなら、environment variables や request parsing、file write を疑うべきです。
もう一つ実務で効くのは、最初に成功した direct request を team の baseline として残しておくことです。prompt、model、size、quality、保存した出力ファイルを一緒に固定しておくと、その後に transparency や edits を足した時も、どこで壊れたかをすぐ切り分けられます。
FAQ
新しい例では gpt-image-1.5 と gpt-image-1 のどちらを使うべきですか?
新しい direct example なら gpt-image-1.5 です。公式の GPT Image 1.5 page はこれを latest image generation model として扱っています。gpt-image-1 は migration や legacy comparison ではまだ意味がありますが、最初の default ではありません。
なぜ direct Images API は URL ではなく base64 を返すのですか?
GPT image models がデフォルトで base64 image data を返すからです。DALL·E 時代の hosted URL 前提を引きずっている古い記事が混乱を増やしています。
transparent PNG や image edits のために Responses は必要ですか?
不要です。direct Images API は edits、input_fidelity、transparent background、output_format、output_compression をすでにサポートしています。Responses が必要なのは orchestration が理由になる時です。
最終的なおすすめ
openai image generation api example という検索に対する今の正直な答えは、page one が見せるよりもずっとシンプルです。まず Images API を使い、gpt-image-1.5 を選び、最初の request は小さく正方形に保ち、返ってきた base64 image を実際に保存してください。これが 2026年3月23日 時点でいちばん速く動くルートです。
Responses image_generation に切り替えるのは、画像がより大きな workflow の tool になった時だけで十分です。この境界をはっきり保てば、今のドキュメント群で起きる混乱の大半は最初の一歩で避けられます。
