Prompt Guide: Ideogram 4
Ideogram 4 is a state-of-the-art text-to-image generation model. While it accepts standard natural language prompts, it is trained natively on structured JSON captions. Formatting your prompts as JSON gives you unprecedented control over composition, color palettes, and typographic layout.
1. Plain-Text vs. JSON Prompts
You can write prompts for Ideogram 4 in plain text. However, to unlock the model's full quality and layout control, you can structure your prompt as a JSON block.
Writing structured JSON prompts by hand can be complex. Instead of manually typing coordinate values or color codes, you can use The Prompt Composer to visually compose your layouts, place text boxes, select hex-code color palettes, and automatically build clean JSON prompts compatible with Ideogram 4.
Why Use JSON Prompts?
- Spatial Layout: Control exactly where objects are placed using coordinate bounding boxes.
- Typographic Control: Specify the exact location, text string, and style of typography.
- Exact Colors: Lock in the visual color theme using a custom hex code palette.
- Reduced Hallucinations: Providing clear, structured keys helps the model render precise layouts with fewer artifacts.
2. The JSON Caption Schema
An Ideogram 4 JSON prompt contains three main fields:
high_level_description: A one- or two-sentence overview of the scene.style_description: Defines the visual aesthetics, lighting, color palette, and medium.compositional_deconstruction: Breaks down the layout into a background and specific individual elements (objects or text).
Full JSON Prompt Example:
{
"high_level_description": "A golden retriever riding a skateboard down a sunny sidewalk.",
"style_description": {
"aesthetics": "warm, playful, vibrant",
"lighting": "bright afternoon sunlight, long soft shadows",
"photo": "shallow depth of field, eye-level, 85mm lens",
"medium": "photograph",
"color_palette": ["#F5C542", "#87CEEB", "#4A4A4A", "#FFFFFF", "#2E8B57"]
},
"compositional_deconstruction": {
"background": "A sun-drenched suburban sidewalk lined with green hedges and a white picket fence.",
"elements": [
{
"type": "obj",
"bbox": [200, 300, 800, 900],
"desc": "A golden retriever with a fluffy coat, standing on a red skateboard with all four paws."
},
{
"type": "obj",
"bbox": [250, 750, 750, 950],
"desc": "A worn red skateboard with black wheels rolling along the concrete sidewalk."
}
]
}
}
3. Controlling Layout with Bounding Boxes
The bbox field inside elements lets you specify the exact location and size of an object or text block using normalized coordinates from 0 to 1000:
- Coordinate format:
[ymin, xmin, ymax, xmax] [0, 0]represents the top-left corner of the canvas.[1000, 1000]represents the bottom-right corner of the canvas.
Normalized Grid Mapping:
[0, 0] ----------------- [0, 1000]
| |
| |
| |
| |
[1000, 0] ----------------- [1000, 1000]
4. Aesthetic & Color Palette Conditioning
Under style_description, you can configure:
- aesthetics: Visual themes, mood, or artistic styles (e.g.,
"minimalist modern layout","retro cartoon style"). - lighting: Lighting configurations (e.g.,
"dramatic neon lighting","warm golden hour glow"). - medium: The medium of the generation (e.g.,
"photograph","mixed media","3D render","watercolor illustration"). - color_palette: An array of hex codes (e.g.,
["#F5C542", "#87CEEB"]) that strictly guides the color distribution of the generation.
5. Typographic Design & Layout
To place text precisely in the frame, define elements with "type": "text". For each text element, specify the bounding box, text content, and typography details.
JSON Text Element Example:
{
"type": "text",
"bbox": [100, 200, 300, 800],
"text": "COFFEE",
"desc": "bold sans-serif typography, glowing neon style, warm orange color"
}
Schema Parameters for Text:
text: The literal text string to be rendered.desc: A natural language description of the font style, weight, or look (e.g.,"serif typeface, elegant calligraphy, copperplate engraving style").
6. Prompt Templates
Use these pre-configured templates as starting points in the Prompt Editor:
Modern Photo with Custom Palette
{
"high_level_description": "A minimalist studio portrait of a person holding a large monstera leaf.",
"style_description": {
"aesthetics": "clean, modern, minimalist",
"lighting": "soft side window lighting, gentle shadows",
"photo": "sharp focus, Hasselblad, portrait lens",
"medium": "photograph",
"color_palette": ["#E8DED1", "#2D4B3B", "#3F3A36", "#FFFFFF"]
},
"compositional_deconstruction": {
"background": "A plain plaster wall in a warm cream color.",
"elements": [
{
"type": "obj",
"bbox": [200, 300, 900, 700],
"desc": "A person standing centered, gazing confidently ahead."
},
{
"type": "obj",
"bbox": [150, 400, 800, 900],
"desc": "A large vibrant green monstera leaf held partially in front of their face."
}
]
}
}
Typographic Advertising Poster
{
"high_level_description": "An advertising poster for a fruit juice brand featuring fresh oranges.",
"style_description": {
"art_style": "bold vector graphic, modern poster art",
"aesthetics": "fresh, clean, vibrant",
"lighting": "bright studio light, minimal shadows",
"medium": "illustration",
"color_palette": ["#FF8C00", "#FFD700", "#1E3F20", "#FFFFFF"]
},
"compositional_deconstruction": {
"background": "A solid dark green backdrop.",
"elements": [
{
"type": "text",
"bbox": [80, 100, 250, 900],
"text": "NATURAL FRESH",
"desc": "bold uppercase sans-serif typography, bright yellow color, centered"
},
{
"type": "obj",
"bbox": [350, 200, 850, 800],
"desc": "A glass pitcher filled with fresh orange juice, surrounded by orange halves splashing in clear water."
}
]
}
}