Migrating from DALL-E 3 to GPT Image 2 Before May 12
OpenAI's May 12, 2026 shutdown of DALL-E 3 is less than a month away. Every stored prompt you built against DALL-E 3 needs to work against its successor before the API returns 410 on every call.
OpenAI's May 12, 2026 shutdown of DALL-E 3 is less than a month away. Every stored prompt you built against DALL-E 3 needs to work against its successor before the API returns 410 on every call. This post walks you through four concrete steps to get off DALL-E 3 cleanly.
Step 1: Inventory what you actually have
Before you rewrite a single prompt, know the blast radius. Most teams who built against DALL-E 3 two years ago have three to four times more stored prompts than they think. Ad variants, A/B branches, old listings, and abandoned drafts all add up.
Run this against your prompt table:
1SELECT2 COUNT(*) AS total_prompts,3 SUM(CASE WHEN size = '1024x1792' THEN 1 ELSE 0 END) AS portrait,4 SUM(CASE WHEN size = '1792x1024' THEN 1 ELSE 0 END) AS landscape,5 SUM(CASE WHEN size = '1024x1024' THEN 1 ELSE 0 END) AS square,6 SUM(CASE WHEN quality = 'hd' THEN 1 ELSE 0 END) AS hd,7 SUM(CASE WHEN quality = 'standard' THEN 1 ELSE 0 END) AS standard8FROM dalle_prompts9WHERE archived_at IS NULL;

That single query gives you the shape of the migration and a budget forecast for step 3.
Step 2: Map the parameters that change
DALL-E 3 and GPT Image 2 do not share an exact parameter grammar. The three that bite are size, quality, and style directives.
| DALL-E 3 | GPT Image 2 (expected) |
|---|---|
| `size: 1024x1024` | `size: 1024x1024` |
| `size: 1024x1792` | `size: 1024x1536` |
| `size: 1792x1024` | `size: 1536x1024` |
| `quality: hd` | `quality: high` |
| `quality: standard` | `quality: medium` |
The portrait change trips people up. DALL-E's 1024x1792 was 9:16. GPT Image 2 holds 2:3 at 1024x1536. If your pages have fixed aspect ratio CSS, the box will show letterbox bars. Plan to adjust the container or set object-fit: cover.
Step 3: Run a sanity pass on a cheaper model
Before you spend real budget on Image 2 credits once it ships, verify each stored prompt still produces something coherent on a proxy model. Flux dev at $0.003 per image is the current cheapest reasonable baseline. At 10,000 historical renders this is $30 total.
1import asyncio, fal_client, psycopg22from psycopg2.extras import RealDictCursor34conn = psycopg2.connect("postgresql://localhost/myapp")5cur = conn.cursor(cursor_factory=RealDictCursor)6cur.execute("SELECT id, prompt, size FROM dalle_prompts WHERE archived_at IS NULL")78SIZE_MAP = {9 '1024x1024': 'square_hd',10 '1024x1792': 'portrait_16_9',11 '1792x1024': 'landscape_16_9',12}1314async def check(row):15 r = await fal_client.submit_async(16 "fal-ai/flux/dev", # or fal-ai/gpt-image-2 once available17 arguments={18 "prompt": row['prompt'],19 "image_size": SIZE_MAP.get(row['size'], 'square_hd'),20 "num_inference_steps": 28,21 },22 )23 out = await r.get()24 return row['id'], out['images'][0]['url']2526async def main(rows):27 sem = asyncio.Semaphore(10)28 async def bounded(r):29 async with sem:30 return await check(r)31 for pid, url in await asyncio.gather(*[bounded(r) for r in rows]):32 cur.execute("UPDATE dalle_prompts SET sanity_url = %s WHERE id = %s", (url, pid))33 conn.commit()3435asyncio.run(main(cur.fetchall()))

Ten concurrent jobs is a polite rate for the fal queue.
Step 4: Flag prompts that need a human rewrite
The sanity pass surfaces three groups: prompts that render fine on Flux, prompts that render badly, and prompts that error on the content filter. For the last two, route to a queue ordered by user visibility and rewrite manually.
Budget math
A 10k-prompt inventory:
- Sanity pass on Flux dev: 10,000 x $0.003 = $30
- Final render on GPT Image 2, hedging against current GPT Image 1.5 medium pricing around $0.04 (midpoint of the $0.005 to $0.20 range): 10,000 x $0.04 = $400
- Human rewrite queue at 3 percent needing attention: 300 prompts at 5 minutes each = 25 hours
The deadline is not flexible
Once the DALL-E 3 endpoint returns 410 Gone, production traffic fails and you are migrating under pressure. Start the inventory this week. Finish the sanity pass by end of April. Leave the first two weeks of May for the Image 2 cut-over and the rewrite queue.