---
category: 05-openai-dalle-gpt-image
title: "OpenAI Image Models (DALL·E 3 → gpt-image-1.5) — Category Index"
role: category-indexer
last_updated: 2026-04-19
angles:
  - 5a-dalle3-prompt-guide-and-rewriter.md
  - 5a-dalle3-recaptioning.md
  - 5b-gpt-image-1-api.md
  - 5b-gpt-image-1-api-and-transparency.md
  - 5c-logo-icon-generation.md
  - 5c-openai-cookbook-asset-workflows.md
  - 5d-failure-modes-text-and-moderation.md
  - 5d-system-style-behavior.md
  - 5e-production-integrations.md
models_in_scope:
  - dall-e-2    # sunset 2026-05-12
  - dall-e-3    # sunset 2026-05-12
  - gpt-image-1          # GA 2025-04-23
  - gpt-image-1-mini
  - gpt-image-1.5        # GA 2025-12-16, snapshot gpt-image-1.5-2025-12-16
  - chatgpt-image-latest # Responses API alias
tags:
  - openai
  - dall-e-3
  - gpt-image-1
  - gpt-image-1.5
  - prompt-rewriter
  - revised_prompt
  - transparency
  - rgba
  - moderation
  - c2pa
  - responses-api
  - input-fidelity
  - batch-api
  - mcp
---

> **📅 Research snapshot as of 2026-04-19.** Provider pricing, free-tier availability, and model capabilities drift every quarter. The router reads `data/routing-table.json` and `data/model-registry.json` at runtime — treat those as source of truth. If this document disagrees with the registry, the registry wins.

# 05 — OpenAI DALL·E / gpt-image: Category Index

## Category Executive Summary

The nine angles collectively establish that OpenAI's image surface in 2026 is **two architecturally different systems bolted onto one API tree**, not a single product line. Understanding the seams is the entire job of a prompt enhancer targeting OpenAI.

1. **Two families, one doomed.** `dall-e-2` and `dall-e-3` are deprecated with a **2026-05-12 sunset** (5a-dalle3-prompt-guide-and-rewriter; 5c-logo-icon-generation). Every asset route in the plugin should compile to the `gpt-image-1`/`gpt-image-1-mini`/`gpt-image-1.5` family. DALL·E 3 remains worth understanding only because its quirks (the relabeler, silent branded-object rewrites, `vivid`/`natural` split) persist conceptually in the newer stack.

2. **DALL·E 3 is a two-model pipeline: a GPT-4 "relabeler" feeds a diffusion backbone.** Every `/v1/images/generations` call is rewritten server-side before the image model ever sees it; the rewrite returns as `revised_prompt` and **cannot be disabled** by any official flag (5a-dalle3-prompt-guide-and-rewriter; 5a-dalle3-recaptioning). This is load-bearing — the model was trained on **95 % synthetic descriptive captions / 5 % ground-truth alt-text** (Betker et al. 2023), so short human prompts are off-distribution and the relabeler brings them into DSC-land at inference time.

3. **The only documented relabeler-softening trick is an in-prompt meta-instruction**, supplied by an OpenAI staff reply on the developer forum: `"I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS:"` for short prompts, or `"My prompt has full detail so no need to add more:"` for long ones (5a-dalle3-prompt-guide-and-rewriter §2; 5a-dalle3-recaptioning §2.4; 5d-failure-modes-text-and-moderation). This softens style/detail rewrites but **never** bypasses the separate branded-object, named-person, and living-artist substitution stages (5a-dalle3-recaptioning §3; 5d-failure-modes-text-and-moderation §3).

4. **`gpt-image-1` / `gpt-image-1.5` are natively multimodal autoregressive models with real RGBA.** `background: "transparent"` + `output_format ∈ {png, webp}` + `quality ∈ {medium, high}` yields **genuine 4-channel alpha** — unlike Gemini/Imagen which produce opaque pixels or a fake checkerboard baked into RGB (5b-gpt-image-1-api §9; 5b-gpt-image-1-api-and-transparency §3.1). This is the single biggest quality lever for logo/icon/favicon/sticker tasks and the headline differentiator against the Google family.

5. **Transparency is broken in three predictable ways** (5b-gpt-image-1-api-and-transparency §3.3; 5d-failure-modes-text-and-moderation): (a) `/v1/images/edits` ignores `background="transparent"` and returns opaque output — always regenerate on `/generations`; (b) `quality: "low"` produces ragged edges and halos because 272 output tokens is insufficient to resolve a clean matte; (c) prompt `"remove the background"` over-segments and punches through legitimate white regions (shirts, highlights, UI panels). Canonical recipe: **`/generations` + `background=transparent` + `png` + `quality=high|medium` + prompt that echoes `"on a transparent background, clean anti-aliased edges"`**.

6. **Text rendering is stratified, not binary.** DALL·E 3 misspells anything past one short word (T5 tokenizer sees whole words, not letters; Betker §5.2, Spennemann 2025 measures 15.6 % attribute-error rate). `gpt-image-1` clears single headings but garbles small/dense text. `gpt-image-1.5` is the first OpenAI model where in-image typography is production-viable; LM Arena ranks it #1 in March 2026 (ELO 1264). For wordmarks, the prompt-to-asset should **route by text length**: 0 words → any model; 1–3 → `gpt-image-1.5` or `gpt-image-1`; ≥4 or multi-line → `gpt-image-1.5` only; handwritten/CJK → generate mark-only and composite type in post (5d-failure-modes-text-and-moderation §Text Rendering; 5c-logo-icon-generation §Pattern E).

7. **Three input-preservation levers on `/edits` drive brand/face fidelity.** `input_fidelity="high"` roughly 2–4×'s input-image tokens and preserves typography, faces, and logos of the **first** image in a multi-image edit — subsequent images are preserved less finely (5b-gpt-image-1-api §Recipe 8; 5c-openai-cookbook-asset-workflows §Recipe 3–4; 5d-system-style-behavior §3). Always place the logo/face first; concatenate brand assets into a single composite for whole-identity work. Up to **16 reference images** are accepted; `mask` (alpha PNG) binds only to image 0 and is **soft**, not hard — the model may rewrite outside the masked region (5b-gpt-image-1-api-and-transparency §4).

8. **Three distinct rewriter layers** must be reasoned about separately (5d-failure-modes-text-and-moderation §Prompt Rewriter Tampering; 5a-dalle3-recaptioning §2.1; 5d-system-style-behavior §1): (i) the DALL·E 3 API-side relabeler (unkillable, returns `revised_prompt`); (ii) the ChatGPT tool-side system prompt (fans one request into 4 stylistic variants, injects diversity/safety rewrites, exposes an undocumented `seeds` parameter unavailable via API); (iii) the **Responses API mainline LLM** rewrite on `gpt-image-1*` — here the developer writes the system/developer message, the LLM rewrites the user's prompt into `revised_prompt`, and the image model receives the rewritten text. **Image API direct path has no rewriter for `gpt-image-1*`** — this is the most controllable surface.

9. **Two distinct style-instruction surfaces exist, and only one has a system role** (5d-system-style-behavior §1). `/v1/images/generations` accepts a single `prompt` string — no system/developer message. The Responses API respects the standard `developer ≻ system ≻ user` hierarchy, preserves `instructions` across `previous_response_id` turns, and is the correct place for durable house-style rules (brand palette, negative-space constraints, "never render human faces"). For one-shot batch asset generation, go direct to `/v1/images/generations`; for conversational iterative design, use Responses.

10. **Moderation is a four-layer stack** (5d-failure-modes-text-and-moderation §Moderation; 5d-system-style-behavior §5): prompt-text classifier (named entities, trademarks, post-1912 artists, CSAM, weapons) → prompt rewriter (DALL·E 3 only) → output-side safety classifier (`moderation="auto"|"low"`) → deployment wrappers (Azure, Replicate, Pollinations). `moderation="low"` only softens the output classifier and exists only on `gpt-image-1*`, not DALL·E 3. `gpt-image-1` **rejects pop-culture prompts that DALL·E 3 rendered** — stormtroopers, red-cap plumbers, cartoon mice — with `content_policy_violation` (OpenAI community thread 1252701, May 2025). A `moderation_blocked` result still **costs tokens** (thread 1245636), so a prompt-to-asset must pre-screen via the free `omni-moderation-latest` endpoint.

11. **Three sizes, no others.** `1024x1024`, `1536x1024`, `1024x1536`, or `auto` — period (5b-gpt-image-1-api §File Size Limits). All favicon/app-icon workflows must generate at 1024² and downscale client-side with Lanczos. Composition is coupled to aspect ratio (5a-dalle3-prompt-guide-and-rewriter §Size): square biases cluttered snapshot framing, landscape biases professional hero-banner framing, portrait biases phone-mockup/story-frame framing. Changing `size` on an identical prompt materially changes composition — do not treat size as "pixels only".

12. **Pricing is per output token, deterministic per (quality, size).** At $40/1M image-output tokens for `gpt-image-1` (~$32/1M for `gpt-image-1.5`), 1024² high = 4,160 tokens ≈ $0.167 for `gpt-image-1` (the famous ~$0.19 figure with prompt tokens included) or **~$0.133 for `gpt-image-1.5`** (same token count, lower per-token rate). Low/medium/high for a square = **272 / 1,056 / 4,160** tokens, a **15× spread** (5b-gpt-image-1-api §Token Pricing; 5b-gpt-image-1-api-and-transparency §5). Streaming adds 100 tokens per `partial_image` (0–3, ~7 % uplift for 3 partials). `input_fidelity="high"` adds ~2–4× input-image tokens. **Batch API gives 50 % discount** with 24 h SLA — correct for brand-kit sweeps but cannot be combined with partial_images (5c-openai-cookbook-asset-workflows §Recipe 7).

> **Updated 2026-04-21:** gpt-image-1.5 pricing corrected to $0.009 / $0.034 / $0.133 (low/medium/high, 1024²). Earlier drafts incorrectly stated ~$0.19 for gpt-image-1.5 — that figure is for gpt-image-1. Max output resolution for both models is 1536 px long edge (same three fixed sizes); the 2048 figure appearing in earlier 5e-production-integrations.md draft was incorrect and has been fixed. **gpt-image-2** is in ChatGPT-side testing as of April 2026 but has not been officially released to the API; monitor `developers.openai.com/api/docs/changelog` for the API launch announcement.

13. **Rate-limit ceiling is IPM, not TPM.** Tier 1 = 5 IPM; Tier 5 = 250 IPM. A single high-quality 1024² consumes ~4,260 TPM out of the Tier-1 100k TPM budget, so images-per-minute bites first (5b-gpt-image-1-api §Rate Limits; 5e-production-integrations §Scaling). Multi-tenant deployments need per-tenant buckets + exponential-backoff-with-jitter (`tenacity.wait_random_exponential(min=1, max=60)` per OpenAI's cookbook).

14. **Org verification is a blocking onboarding step.** `gpt-image-1*` requires API Organization Verification (government ID for the org owner) before first call; stale keys from pre-verification projects return 403s and `"retry after 0.0 seconds"` (5b-gpt-image-1-api §Access Control; 5e-production-integrations). Surface this with a specific error message rather than a generic permission error — it is the #1 support ticket trigger on a fresh account.

15. **C2PA provenance metadata is mandatory, automatic, and non-optional.** All `gpt-image-1*` outputs carry signed Content Credentials identifying them as AI-generated (`"OpenAI"` or `"Azure OpenAI ImageGen"` software agent; 5d-system-style-behavior §5). This is both a safety feature and a product surface — the prompt enhancer should surface "AI-generated, signed" status to end users and preserve the manifest through the post-processing pipeline (rembg, Pillow, pngquant) rather than stripping it. Downstream screenshot/re-encode workflows will silently lose the manifest.

## Map of the Angles

The category is organized into five numbered sub-angles (5a–5e). Two sub-angles — 5a, 5b, 5c, 5d — each have **two complementary files** because OpenAI's product has separable technical layers; 5e stands alone.

### 5a — DALL·E 3: prompting and the rewriter

- **`5a-dalle3-prompt-guide-and-rewriter.md`** — the **API-surface** angle: exact parameter matrix (`model`, `prompt` ≤4000 chars, `n=1`, `size`, `quality`, `style`, `response_format`, `user`), `vivid` vs `natural` behavioral split, `standard` vs `hd` (~10 s latency / 2× cost), aspect-ratio-coupled composition shifts, the six load-bearing prompt patterns (icon / OG / logo / anti-text / anti-trademark / seamless-texture), and the `revised_prompt` suppression trick with its limits. This is the canonical practitioner reference.
- **`5a-dalle3-recaptioning.md`** — the **training-time captioner** angle: Betker 2023's 95 %/5 % DSC/ground-truth blend, the CoCa image captioner's two fine-tune stages (SSC then DSC), the inherited limitations (spatial language, text rendering, specific-entity hallucination), the Appendix-C GPT-4 upsampler prompt that became the blueprint for production rewriting, and a full side-by-side of ChatGPT-side vs API-side rewriter layers with five documented `original → revised_prompt` pairs. Read this to understand *why* rewriting exists; read 5a-prompt-guide to understand *what to send*.

### 5b — gpt-image-1 / 1.5: API surface and transparency

- **`5b-gpt-image-1-api.md`** — the **full parameter enumeration**: all shared and edit-only parameters, the token-count table per (quality, size), the IPM/TPM rate-limit ladder, 12 worked code examples (Python SDK, curl, streaming SSE, multi-image edit, mask with alpha-channel, high-input-fidelity logo preservation, Responses API multi-turn). The canonical "what can this API do" reference.
- **`5b-gpt-image-1-api-and-transparency.md`** — the **transparency + economics deep-dive**: how OpenAI's native RGBA output path differs architecturally from Gemini/Imagen (alpha channel wired into the VAE detokenizer), the three-check PIL verification harness, the T1–T7 failure-mode taxonomy (edge halos, silent JPEG coercion, `/edits` opacity, over-segmentation, soft-mask leakage, multi-edit grain, Vercel Gateway dropping `mask`), the mask API's practical limits, and the economic comparison vs Nano-Banana-plus-rembg pipelines. Read together with the base 5b as the complete gpt-image reference.

### 5c — Logo/icon generation and cookbook workflows

- **`5c-logo-icon-generation.md`** — **category-specific prompt patterns** for the product's core asset types: the OpenAI Cookbook §4.5 logo recipe ("Field & Flour" bakery), SnapAI's empirically-derived rules (strip "icon"/"logo" words; say `"fill the frame"`), six concrete patterns (A: flat vector brand mark / B: transparent app icon / C: iOS squircle via JSON style profile / D: die-cut sticker / E: wordmark with literal text / F: favicon with ≤1/32-width detail constraint), the comparison matrix DALL·E 3 vs `gpt-image-1` vs `gpt-image-1.5`, and the Apple App Store caveat (no alpha, no manual corner rounding — generate full-bleed opaque).
- **`5c-openai-cookbook-asset-workflows.md`** — the **first-party cookbook recipes catalog**: 10 production workflows distilled from the three canonical OpenAI notebooks (Apr 2025 "Generate images with GPT Image", Jul 2025 "high input fidelity", Dec 2025 "gpt-image-1.5 prompting guide"), mapped to community-tool implementations (SnapAI ~1.77k⭐, ai-icon-generator, rembg ~22.5k⭐, peterzervas/gpt-image-1-demo). Covers the five integration patterns (pure asset service / two-stage LLM rewrite / Responses API streaming / rembg post-processing / Batch API brand kit) and 11 gotchas. This is the "build a pipeline" file.

### 5d — Failure modes, moderation, and style behavior

- **`5d-failure-modes-text-and-moderation.md`** — the **failure taxonomy** (18 reproducible classes): text garbling, rewriter drift, `gpt-image-1` over-refusal relative to DALL·E 3, living-artist refusals, aspect-ratio head-cropping, fake-transparent JPEG coercion, the "piss filter" warm-yellow bias, multi-edit grain decay, billable `moderation_blocked`, Azure double-filter wrapping, compositional counting failures. Each row carries frequency, scope, workaround, root cause, and a primary source (mostly OpenAI community threads dated 2023-10 through 2026-04). This is the file to consult when something breaks.
- **`5d-system-style-behavior.md`** — the **control-surface** angle: how `developer`/`system`/`user` roles actually work (only in Responses API, never in `/v1/images/generations`), how the mainline LLM fuses `instructions` into every `revised_prompt`, clause-order recommendations ("background → subject → details → constraints"), four consistency mechanisms (`previous_response_id`, `input_fidelity="high"`, reference-image compositing, character-anchor pattern), quality-tier adherence tradeoffs, the four-layer moderation stack, and the concrete safe-zone/padding prompt recipe for icons. Read this before designing a multi-turn UX.

### 5e — Production integrations

- **`5e-production-integrations.md`** — the **SDK/iPaaS/hosting/MCP landscape**: Vercel AI SDK (`openai.image('gpt-image-1')`, PR #5938's `response_format` stripping), LangChain (`DallEAPIWrapper` + `OpenAIDALLEImageGenerationTool`, both lagging the model), LlamaIndex (`OpenAIImageGenerationToolSpec`), OpenAI Agents SDK (`ImageGenerationTool`, native `image_generation_call` items), Replicate webhook async, Modal/Baseten custom wrappers, Figma plugins (official template + FigPilot + Summon.AI), Canva Magic Studio (confirmed running on `gpt-image-1-mini`), n8n PR #14870, MCP servers (`openai-gpt-image-mcp-server`, `lpenguin/openai-image-mcp`, `pavelsukhachev/mcp-server-gpt-image`). Pricing/latency/IPM tables per tier, persistence requirements (OpenAI URLs expire ~1–2 h; `gpt-image-1*` returns only `b64_json`), and the MCP design principle (expose a semantic `generate_asset` tool, not a thin passthrough).

## Cross-Cutting Patterns

Several themes appear across **every** angle and therefore constitute plugin-level truths, not file-local claims:

- **The prompt rewriter is architecturally different across models, but behaviorally unavoidable in all OpenAI entry points.** DALL·E 3 rewrites inside the image service; gpt-image-1 inside the Responses API's mainline LLM; ChatGPT inside a tool-system-prompt layer. Only `/v1/images/generations` direct against `gpt-image-1*` is rewriter-free (5a-recaptioning §5; 5d-failure-modes §Prompt Rewriter Tampering; 5d-system-style-behavior §1).
- **"Medium or high quality" is the floor for every asset task that matters.** Transparency edges, text rendering, photoreal textures, fine typography, composition adherence on multi-constraint prompts — all degrade at `quality="low"`. The 4× price jump from medium to high buys edge cleanliness and layout precision, not pixels (5b-api §Transparency; 5c-logo §Pattern A; 5d-system-style §4).
- **First-image-wins semantics on `/edits`.** Every edit pathway (`input_fidelity="high"`, mask application, multi-image fidelity) weights image index 0 specially. Product code should compose a single "primary" image (logo / face / brand sheet) and place it first (5b-api §Edit-only; 5c-workflows §Recipe 3; 5d-system-style §3).
- **C2PA + organization-verification + URL expiry are three always-true operational facts.** Never skip onboarding verification. Never rely on the OpenAI URL outliving the request. Never strip C2PA if provenance matters (5b-api §Access Control; 5d-system-style §5; 5e-integrations).
- **Route-by-text-length.** Zero words → any model by style/cost; 1–3 words → gpt-image-1/1.5; >3 or multi-line → gpt-image-1.5 only; script/handwritten/CJK → generate mark-only and composite type in post. This rule is repeated verbatim across 5a, 5c, 5d (5a-prompt-guide §Example 4; 5c-logo §Pattern E; 5d-failure §Text).

## Controversies / Disagreements

- **Does `background="transparent"` actually work on `/edits`?** 5b-gpt-image-1-api (§Transparency) reports community threads showing transparency on `/edits` "sometimes returns an opaque image" and recommends re-emphasizing in the prompt. 5b-api-and-transparency (§T3) is stronger: "the parameter is accepted but the model ignores it — reproducibly returns opaque output". 5d-system-style-behavior (§6) says the edit-endpoint transparency "was initially broken prompt-only and later fixed by exposing `background='transparent'` on `/v1/images/edits`" and that it now works on current APIs. 5c-logo-icon-generation (§Pattern D) concurs with the "fixed" view. Resolution: transparency on `/edits` is accepted but unreliable enough that production code **must not depend on it** — regenerate on `/generations` whenever alpha is required.
- **Does `gpt-image-1` apply a rewriter on the direct Image API?** 5a-dalle3-recaptioning (§5) says rewriting is "still there; OpenAI just moved it to the Responses API". 5c-openai-cookbook-asset-workflows (§Gotchas) flatly states "`gpt-image-1`/`gpt-image-1.5` don't auto-rewrite in the Image API, only in Responses/ChatGPT". 5d-failure-modes (§Prompt Rewriter Tampering) agrees with the latter: "no rewriter — the prompt is the prompt". Resolution: on `/v1/images/generations` direct, the prompt is transmitted unchanged; rewriting is re-introduced by any Responses API / ChatGPT tool wrapper around it.
- **Who wins on photorealism and text rendering?** 5b-api-and-transparency (§6) positions `gpt-image-1.5` as best-in-class on text (≥1 word, multi-line, non-Latin) while Nano Banana Pro wins on photoreal skin. 5d-failure-modes (§Text Rendering Deep-Dive) agrees on gpt-image-1.5 leadership but cites Ideogram 3.0 at ~90 % text accuracy ahead of gpt-image-1 — with gpt-image-1.5 closing but not quite matching Ideogram on stylized typography. Resolution: for UI-mockup legibility, gpt-image-1.5 is sufficient; for brand-critical stylized typography, Ideogram still wins.
- **Is the "I NEED / DO NOT add detail" prefix actually effective?** 5a-dalle3-prompt-guide (§2) and 5a-recaptioning (§2.4) both present it as the officially sanctioned softener, traced to a forum reply from an OpenAI staffer. 5d-failure-modes (§Workarounds) is more skeptical: "a softener, not a kill-switch". Resolution: it reduces style/detail rewriting but cannot suppress the independent branded-object, named-person, and living-artist substitution stages.

## Gaps

- **No controlled diff between Image API and Responses API moderation.** Community reports (5d-failure, thread 1252701) show the *same prompt* succeeding on DALL·E 3 and failing on `gpt-image-1`; none measure whether Responses API rewriting *softens* moderation vs the direct Image API for the same gpt-image call. This matters for routing policy.
- **No public branded-object blocklist.** 5a-dalle3-prompt-guide (§Open Questions) calls for a fuzzing corpus; none exists. A prompt enhancer that warns users pre-call needs this.
- **No per-category moderation dial.** The Image API `moderation` parameter is a two-tier binary (`auto`/`low`). Enterprise tenants wanting "allow medical, block sexual" currently have no API-level lever and must pre-filter via the text moderation endpoint (5d-system-style §Open Questions).
- **`input_fidelity="high"` multiplier is unpublished.** ~2–4× input-image tokens is the field estimate; the exact multiplier would make budgeting deterministic (5b-api §Token Pricing).
- **No official opt-out for the Responses-API rewrite.** DALL·E 3 had an explicit "workaround"; `gpt-image-1*` via Responses has no documented knob at all. Teams that need deterministic output have no supported hook (5d-system-style §Open Questions).
- **gpt-image-2 capabilities not yet documentable.** As of April 21, 2026, `gpt-image-2` is undergoing gray testing in LM Arena (codenames: maskingtape-alpha, gaffertape-alpha, packingtape-alpha) and limited ChatGPT rollout. Reported capabilities include near-perfect text rendering (~99% accuracy), 4096×4096 px output, and 2× generation speed vs gpt-image-1.5. No official API release or pricing as of research date. Monitor `developers.openai.com/api/docs/changelog`; the plugin's routing-table will need a new entry when the API launches.
- **Public-figure moderation policy partially relaxed.** 2026 policy shift allows named public figures (politicians, celebrities) in many non-harmful contexts. The pre-2026 research in 5a-dalle3-prompt-guide and 5d-failure-modes treats this as a hard block; those sections should be revised once the new policy is fully documented. Current evidence is from third-party reports and TechCrunch (Mar 2025) — OpenAI has not published the revised blocklist.

## Actionable Recommendations for the Plugin's OpenAI Routing

1. **Default model by asset type and text requirement.** Logo/icon/favicon/sticker with ≤3 words → `gpt-image-1.5` (fallback `gpt-image-1`). Wordmarks or marketing copy → `gpt-image-1.5` only. Drafts / cost-bound batch → `gpt-image-1-mini`. Never default to DALL·E 3 for new code paths — it sunsets 2026-05-12.
2. **When to route transparent:** any logo / icon / sticker / favicon / "cutout" asset type automatically sets `background="transparent"` + `output_format="png"` + `quality="high"` (or `"medium"` if budget-bound), on `/v1/images/generations` only. Never on `/edits`.
3. **Handle the prompt rewriter explicitly per pathway.** Direct `/v1/images/generations` against gpt-image-1* → the plugin's enhanced prompt is transmitted verbatim; full author control. Responses API → wrap the user's prompt with a developer-role instruction `"Call image_generation with the user's prompt exactly as written — do not paraphrase or expand."` and log tool-call arguments for audit. DALL·E 3 (legacy only) → prefix with `"My prompt has full detail so no need to add more:"` (preferred over `"I NEED to test…"` when the enhancer's output is already DSC-shaped) and **always log `revised_prompt`** back to the caller as first-class debug output.
4. **Shape the prompt as a DSC caption.** Target 40–80 words, image-type prefix (`Photo of…` / `Illustration of…` / `Vector mark of…`), present-tense declarative, ordered `background → subject → key details → constraints`, with the negative list as the **final** line (`"No watermark, no extra text, no logos/trademarks, no background frame, no drop shadow."`). This minimizes rewriter delta on every OpenAI pathway (5a-recaptioning §6.2–6.3; 5d-system-style §2).
5. **Moderation avoidance — five layered rules.** (a) Pre-screen every prompt through the free `omni-moderation-latest` endpoint; return the user a specific rejection with reasons before spending an image token. (b) Strip or paraphrase trademark/celebrity/public-figure/living-artist names at the enhancer layer, proposing the substitution to the user explicitly — do not let OpenAI silently rewrite and leave the user confused. (c) Translate living-artist styles to 3–5 visual attributes (`"in the style of Studio Ghibli"` → `"soft watercolor backgrounds, 2D cel animation, pastoral Japanese countryside"`). (d) For brand-adjacent pop-culture prompts, prefer geometric/chromatic description over named entities. (e) Set `moderation="low"` on `gpt-image-1*` for branding/figurative tasks (still subject to Usage Policies); log `moderation_blocked` separately from generic errors so the product can offer a retargeted retry.
6. **Transparency verification harness.** Every transparent-generated asset passes a PIL check before save: `img.mode == "RGBA"`, `getchannel("A").getextrema() != (255, 255)`, `getchannel("A").getextrema()[0] < 16`. If any check fails, the provider returned fake alpha — error out and retry with a stricter prompt or fall back to `gpt-image-1.5 /generations` + `rembg` safety-net post-processing (5b-api-and-transparency §3.1; 5c-workflows §Pattern D).
7. **Identity-preserving edits.** Whenever the user supplies a reference image (logo PNG, face photo, brand sheet), route to `/v1/images/edits` with `input_fidelity="high"` and place the reference **first** in a multi-image array. For transparent output on the edited asset, regenerate on `/generations` with the edit-output as a reference — don't ask `/edits` to "remove the background".
8. **C2PA transparency to end users.** Preserve the C2PA manifest through post-processing (rembg, Pillow, pngquant do not strip it by default; `oxipng` with `--strip=safe` keeps it; screenshot pipelines do not). Expose "AI-generated, signed by OpenAI/Azure" status in the plugin UI and its MCP response payload.
9. **Batch API for brand-kit sweeps.** When the user asks for a full identity (logo × favicon × OG × app-icon-iOS × app-icon-Android × splash), submit a single JSONL job with 24 h SLA for 50 % discount. Real-time UI paths stay on `/generations` with `partial_images=2` streaming; batch and streaming are mutually exclusive (5c-workflows §Recipe 7).
10. **Operational hygiene.** Surface org-verification errors with a link to `platform.openai.com/settings/organization/general`. Copy every returned `b64_json` to durable blob storage on receipt — OpenAI URLs (when DALL·E 3 returns one) expire in ~1 h. Per-tenant IPM buckets with `tenacity.wait_random_exponential(min=1, max=60) + stop_after_attempt(6)`. Route overflow to Replicate's `openai/gpt-image-1.5` or Azure OpenAI as a soft fallback; both accept the same parameter surface.

## Primary Sources Aggregated

**OpenAI first-party.** [DALL·E 3 paper (Betker 2023)](https://cdn.openai.com/papers/dall-e-3.pdf); [DALL·E 3 System Card](https://openai.com/index/dall-e-3-system-card); [Image generation guide — dall-e-3](https://platform.openai.com/docs/guides/image-generation?image-generation-model=dall-e-3); [Image generation guide — gpt-image-1](https://platform.openai.com/docs/guides/image-generation?image-generation-model=gpt-image-1); [Image API reference — generations](https://developers.openai.com/api/reference/resources/images/methods/generate/); [Image API reference — edits](https://developers.openai.com/api/reference/resources/images/methods/edit/); [Help Center — DALL·E 3 API](https://help.openai.com/en/articles/8555480-dall-e-3-api); [Help Center — API org verification](https://help.openai.com/en/articles/10910291-api-organization-verification); [Deprecations](https://platform.openai.com/docs/deprecations); [Pricing](https://platform.openai.com/docs/pricing); [GPT-Image-1 model page](https://platform.openai.com/docs/models/gpt-image-1); [GPT-Image-1.5 model page](https://platform.openai.com/docs/models/gpt-image-1.5); [Image generation API launch (Apr 2025)](https://openai.com/index/image-generation-api/); [GPT-Image-1.5 launch (Dec 2025)](https://openai.com/index/new-chatgpt-images-is-here/?id=GPTImage1.5); [Image generation tool (Responses API)](https://platform.openai.com/docs/guides/tools-image-generation); [Moderation guide](https://platform.openai.com/docs/guides/moderation?example=images); [C2PA in ChatGPT Images](https://help.openai.com/en/articles/8912793-c2pa-in-chatgpt-images).

**OpenAI Cookbook.** [What's new with DALL·E 3](https://cookbook.openai.com/articles/what_is_new_with_dalle_3); [Generate images with GPT Image (Apr 2025)](https://cookbook.openai.com/examples/generate_images_with_gpt_image); [Generate images with high input fidelity (Jul 2025)](https://cookbook.openai.com/examples/generate_images_with_high_input_fidelity); [gpt-image-1.5 Prompting Guide (Dec 2025)](https://cookbook.openai.com/examples/multimodal/image-gen-1.5-prompting_guide); [Image Evals](https://cookbook.openai.com/examples/multimodal/image_evals).

**OpenAI community threads** (highest-signal, referenced across multiple angles): [#481664](https://community.openai.com/t/dalle3-api-prompt-modification/481664) DALL·E 3 API prompt modification + "I NEED" trick; [#726297](https://community.openai.com/t/dall-e-3-behaviour-with-revised-prompts/726297) revised_prompt non-disableable; [#730913](https://community.openai.com/t/no-revised-prompt-in-dalle-3-python-sdk/730913) SDK schema drift; [#923673](https://community.openai.com/t/dalle-3-image-quality-is-baaaaad-specilly-for-vector-illustrations-and-logos/923673) DALL·E 3 vector regression; [#587999](https://community.openai.com/t/dall-e-3-too-restrictive-content-policies/587999) + [#478274](https://community.openai.com/t/concerns-over-stringent-content-policy-blocks-in-dall-e-3-api-especially-for-non-english-prompts/478274) content-policy false positives; [#1252701](https://community.openai.com/t/gpt-image-1-moderation-blocks-prompts-allowed-by-dall-e-3-pop-culture-references/1252701) gpt-image-1 over-refusal vs DALL·E 3; [#1240577](https://community.openai.com/t/gpt-image-1-transparent-backgrounds-with-edit-request/1240577) + [#1273481](https://community.openai.com/t/gpt-image-1-transparency-remove-background-also-cuts-out-other-white-spots-of-the-image/1273481) transparency bugs on /edits; [#1240639](https://community.openai.com/t/gpt-image-1-problems-with-mask-edits/1240639) soft mask; [#1320474](https://community.openai.com/t/multiple-gpt-image-1-high-fidelity-edits-lead-to-grainy-result/1320474) grainy multi-edit; [#1318395](https://community.openai.com/t/gpt-image-1-bias-towards-cropping-with-1024x1024-aspect-ratio/1318395) 1024² head cropping; [#1245636](https://community.openai.com/t/api-error-400-on-image-generation-with-gpt-image-1-2025-04-23-but-still-paying-the-cost-of-generation/1245636) moderation_blocked billing; [#1259920](https://community.openai.com/t/spelling-errors-and-improper-text-rendering-in-image-model/1259920) text spelling.

**Academic / benchmark.** [Betker 2023 DALL·E 3 paper](https://cdn.openai.com/papers/dall-e-3.pdf); [Ramesh 2021 DALL·E (arXiv 2102.12092)](https://arxiv.org/pdf/2102.12092); [Spennemann 2025 prompt fidelity (arXiv 2510.21821)](https://arxiv.org/abs/2510.21821); [Yan 2025 GPT-ImgEval (arXiv 2504.02782)](https://arxiv.org/abs/2504.02782); [Li 2025 *Right Looks, Wrong Reasons* (arXiv 2511.10136)](https://arxiv.org/abs/2511.10136); [T2I-CompBench++ (arXiv 2307.06350)](https://arxiv.org/abs/2307.06350); [BLIP3o-NEXT (arXiv 2510.15857)](https://arxiv.org/html/2510.15857v1); [TokenFlow CVPR 2025](https://openaccess.thecvf.com/content/CVPR2025/papers/Qu_TokenFlow_Unified_Image_Tokenizer_for_Multimodal_Understanding_and_Generation_CVPR_2025_paper.pdf); [LM Arena T2I](https://lmarena.ai/leaderboard/text-to-image).

**Reverse-engineering / leaks.** [Willison — *Now add a walrus*](https://blog.simonwillison.net/2023/Oct/26/add-a-walrus/); [jujumilk3 leaked DALL·E 3 system prompt](https://github.com/jujumilk3/leaked-system-prompts/blob/main/openai-dall-e-3_20231007-1.md); [Shreyansh Singh recaptioning summary](https://shreyansh26.github.io/post/2024-02-18_dalle3_image_recaptioner/).

**Ecosystem & integrations.** [openai-python](https://github.com/openai/openai-python); [openai-cookbook](https://github.com/openai/openai-cookbook); [openai-agents-python image_generator](https://github.com/openai/openai-agents-python/blob/main/examples/tools/image_generator.py); [Vercel AI PR #5938](https://github.com/vercel/ai/pull/5938) + [issue #14360](https://github.com/vercel/ai/issues/14360); [n8n PR #14870](https://github.com/n8n-io/n8n/pull/14870); [pollinations #7266](https://github.com/pollinations/pollinations/issues/7266); [snapai](https://github.com/betomoedano/snapai); [ai-icon-generator](https://github.com/samzong/ai-icon-generator); [rembg](https://github.com/danielgatis/rembg); [Replicate gpt-image-1](https://replicate.com/openai/gpt-image-1); [Azure Foundry](https://techcommunity.microsoft.com/t5/microsoft-foundry-blog/introducing-openai-s-gpt-image-1-5-in-microsoft-foundry/ba-p/4478139) + [C2PA](https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-credentials).

**Third-party analysis.** [Taurit vivid vs natural](https://taurit.pl/dalle-3-style-vivid-vs-natural/); [Flowith NB2 vs GPT Image 1](https://flowith.io/blog/nano-banana-2-vs-gpt-image-text-rendering-2026); [OpenAIToolsHub](https://www.openaitoolshub.org/en/blog/gpt-image-vs-dall-e); [DataCamp gpt-image-1](https://www.datacamp.com/tutorial/gpt-image-1); [Bhandekar iOS JSON trick](https://medium.com/@bprathamesh2003/the-json-trick-for-perfect-ios-icons-with-gpt-4o-image-generation-957a533d60d8); [Atlas Cloud text rendering](https://www.atlascloud.ai/blog/ai-updates/gpt-image-1.5-api-is-now-available-on-atlas-cloud); [aifreeapi pricing](https://aifreeapi.com/en/posts/gpt-image-1-5-pricing).
