# GPT Image Prompt Lab > Writes production-grade gpt-image prompts from a one-line request, checks them, and renders them. > https://awesome-gpt-image-prompts.skillsafe.ai/ This app is specific to **gpt-image** (OpenAI's image model). Every template, every example prompt and the renderer itself are gpt-image. ## What it does A person types what they want a picture of — one sentence is enough, in English or Chinese. Then: 1. It scores the request against 22 industrial gpt-image prompt templates and names the best one with the evidence for the match. Free, instant, in the browser, signed out. 2. A text model writes the prompt as six blocks: subject and task, composition and layout, visual style and materials, text and label requirements, aspect ratio and output format, constraints and negative details. The app assembles the blocks into the final prompt — the model never writes that string, so block order is fixed and a missing block is visible. 3. It checks the prompt in the browser on every keystroke: which of the six blocks are present, the token count against gpt-image's 4000-token input cap, unfilled template placeholders, prose aimed at a chat assistant that gpt-image would paint as literal words, and prompts that point at an attachment the renderer is not allowed to receive. 4. It renders the prompt with gpt-image once the person is happy with it. Every word is editable before anything is rendered, and editing is free. ## Reference pictures 49 of the 541 library prompts are written for a picture you supply ("use the uploaded photo", "参考图"). Those work here, but not the way people expect, because of a hard platform rule: **An image-generation run refuses attachments.** There is no image-in/image-out call. So the app is two-legged and the seam is deliberate: - your reference → the **writer** (a text model) looks at it and describes it into the prompt - the prompt → the **renderer** (gpt-image) paints it, having seen only words Up to four pictures, PNG/JPEG/WebP/GIF, 10 MB each. They are uploaded only when you run the writer, never before. A prompt that still says "the uploaded image" at render time is blocked rather than charged, because the renderer cannot see it. A side effect worth stating: since no path exists from a photograph to the renderer, this app cannot face-swap. ## The two model runs - `task: "compose"` — a text run on `gpt-terra` (`gpt-5.6-terra`), optionally with `$files` attachments. Returns one JSON object with `blocks`, `why`, `variations`, `title`, `language` and `aspect_ratio` — or `{"refused": true, "reason": "..."}`. - `$model: "gpt-image"` — an image run on `gpt-image`. Exactly two keys, `instruction` and `$model`; attachments are refused here by the platform. Output is `job.output.images[0].b64`. ## What is free Template matching, the structure check, the 541-prompt example library, attaching and previewing reference pictures, writing or pasting your own prompt, the three worked demos, and every export. Only the two model runs cost credits. ## Sources Templates, taxonomy and the 541-prompt case corpus come from the `awesome-gpt-image-2` skill by freestylefly, https://github.com/freestylefly/awesome-gpt-image-2 (MIT). This app is a derived work: the matcher, the structure checker, the writing guide and the interface are original. Each example prompt keeps its original author's credit and a link to its entry in the source gallery. ## Pages - / — the lab - /api.html — driving the app programmatically, in eight languages - /tokens.html — token management (noindex) - /compose-prompt.js — the exact writing guide this app sends the model - /cases.json — the example prompt corpus