The map of OpenAI's image-generation lineage — what GPT-4o image, GPT-Image-1, and GPT Image 2 actually are, which one to call today, and how to migrate old calls to the current model.

If you have searched for the "GPT-4o image generation API," the "gpt-image-1 API," the "GPT Image 1.5 API," or the "ChatGPT image generation API," you have been searching for the same product at four different moments in its life. OpenAI's image generation is not a menu of parallel models you choose between — it is one line that keeps replacing its own front model. This guide untangles the lineage, tells you which one to build against today, and shows how to migrate old calls to the current model.
Here is the honest timeline. Treat it as a single product evolving, not a catalog.
gpt-image-1. This is when "the GPT image API" became a real, callable thing with its own id — the model most "gpt-image-1 api documentation" searches are looking for.(Lineage and dates: Wikipedia "GPT Image", and OpenAI's own "ChatGPT Images 2.0" announcement, both as of June 2026.)
The pattern is the important part. Each model replaced the one before it as OpenAI's standard image model. So at any given time there is essentially one current id worth building against; the older ids are legacy generations kept for backward compatibility, not because they are better at anything.
Short answer: the current generation, GPT Image 2 (gpt-image-2).
There is no real scenario in mid-2026 where you would start a new integration on gpt-image-1 or gpt-image-1.5. They are earlier checkpoints of the same line — GPT Image 2 is better at the things you actually care about (following the prompt, putting correct text on the image, keeping a subject consistent across multiple outputs) and is the model that continues to get attention. New build, new code: go straight to gpt-image-2.
The only reason to care about the older names at all is migration — you have existing code that names gpt-image-1 or the old GPT-4o image path, and you need to move it forward.
One honesty note, because it changes the migration target: on HiAPI, the model available from this family is GPT Image 2 — the base model plus its Pro and image-to-image variants. HiAPI does not host gpt-image-1 or gpt-image-1.5 as callable models. That is not a limitation to work around; those are superseded generations, so the right move is to migrate to GPT Image 2, not to keep an old id alive. The one case this platform does not fit is if you specifically need previous-generation behavior — everywhere else, GPT Image 2 is the upgrade you wanted anyway.
Migrating off an older GPT image call is mostly a model-id change, not a rewrite. There are two paths depending on how your current code is shaped.
Path A — the unified task API (recommended). HiAPI runs every image model through one async pattern: submit a job, poll until it is done, download the result. Wherever your old code passed gpt-image-1 (or invoked the GPT-4o image capability), you submit a task with model gpt-image-2:
# 1) Submit a task — returns data.taskId
curl -s https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer sk-<your key>" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","input":{"prompt":"a storefront sign that reads OPEN LATE, warm neon, dusk"}}'
# 2) Poll the task — data.status goes queued -> handling -> archiving -> success
curl -s https://api.hiapi.ai/v1/tasks/<taskId> \
-H "Authorization: Bearer sk-<your key>"
# 3) On success, read data.output[0].url and download it now — the URL expires
One detail that trips people up: the model id is exactly gpt-image-2. Do not append a suffix like gpt-image-2/text-to-image — that returns a 400. The same request shape serves every model in the catalog, so once this works you can swap to any other model by changing one field.
Path B — keep your OpenAI-style client. If your integration is built around an OpenAI-compatible client, you do not have to throw it away. HiAPI also exposes an OpenAI-compatible POST /v1/chat/completions endpoint, so the migration can be as small as pointing the base URL at https://api.hiapi.ai and swapping in your HiAPI key — your client code stays put. Lead with the task API for new work; reach for the compatible endpoint when the value is not rewriting a working client.
Either way, get an API key from the dashboard first (signup needs no card and currently includes $1 of free credit, around 50 images, to test real generations — see pricing). If a call comes back 401 with "code":"permission_denied", that is the key, not your request — it is missing, wrong, or not permitted for the model. Full reference is in the docs. One thing you do not migrate is your prompts: they carry over to GPT Image 2 and usually come out better.
This page is the hub. Once you know you are building on GPT Image 2, jump to the deep-dive that matches your actual question — each one goes far deeper than this map.
Start anywhere; they all link back here.
Is "GPT-4o image generation" the same as the GPT Image API?
Effectively yes, at a point in time. GPT-4o image generation (March 2025) was OpenAI's first native image generator, living inside GPT-4o. It was exposed to developers as the gpt-image-1 API a month later, then evolved into GPT-Image-1.5 and now GPT Image 2. They are stages of one product, not separate APIs.
What is the difference between gpt-image-1, gpt-image-1.5, and gpt-image-2?
They are successive generations of the same line, each replacing the last as the default. gpt-image-1 (April 2025) was the first standalone API model; gpt-image-1.5 (December 2025) added faster, more precise edits; gpt-image-2 (April 2026) added native reasoning and markedly better instruction-following and on-image text. For new work, use gpt-image-2.
Can I still call gpt-image-1 or gpt-image-1.5? On HiAPI, no — the family available is GPT Image 2 (plus its Pro and image-to-image variants). Those earlier ids are superseded generations, and the intended path is to migrate to GPT Image 2 rather than keep a legacy id running.
Do I need to rewrite my prompts when migrating to GPT Image 2? No. Prompts from earlier GPT image models carry over and usually come out better, since GPT Image 2 follows instructions more closely. Migration is a model-id (or base-URL) change, not a prompt rewrite.
What is the correct model id, and why am I getting a 400?
The id is exactly gpt-image-2. A common 400 cause is appending a suffix such as gpt-image-2/text-to-image — pass the plain id and put your prompt in input.
gpt-image-2. Pass it plain; appending /text-to-image returns a 400.gpt-image-1 or the old GPT-4o image path, the migration target is GPT Image 2 — and on HiAPI that is the only model from this family you can call, so migrating to it is the path, not a workaround.Key Takeaways