Workflow3 min read

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:

SQL
1SELECT
2 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 standard
8FROM dalle_prompts
9WHERE archived_at IS NULL;
DALL-E 3 prompt inventory
DALL-E 3 prompt inventory

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 3GPT 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.

PYTHON
1import asyncio, fal_client, psycopg2
2from psycopg2.extras import RealDictCursor
3
4conn = 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")
7
8SIZE_MAP = {
9 '1024x1024': 'square_hd',
10 '1024x1792': 'portrait_16_9',
11 '1792x1024': 'landscape_16_9',
12}
13
14async def check(row):
15 r = await fal_client.submit_async(
16 "fal-ai/flux/dev", # or fal-ai/gpt-image-2 once available
17 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']
25
26async 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()
34
35asyncio.run(main(cur.fetchall()))
Batch conversion pipeline
Batch conversion pipeline

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.


Also reading