> For the complete documentation index, see [llms.txt](https://docs.pletor.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pletor.ai/models/image-models/ideogram-v4.md).

# Ideogram v4

### Overview

Ideogram v4 treats typography, colors and layout as inputs you control. It reads structured JSON prompts — describing every element, its position, and its color — and renders them.&#x20;

The model was trained exclusively on structured captions, so it expects them: prompts written as prose underperform, and the more relationships you pin down, the more grounded the output.

### Strengths for marketers

* **In-image text**: Best-in-class typography — multi-line, multi-font lettering rendered cleanly, with each text block placed exactly where you want it.
* **Layout control**: Place any element by bounding box. Titles, objects, and text land where you put them, not where the model guesses.
* **Color palette conditioning**: Lock exact brand colors with hex codes — up to 16 per image, 5 per element — instead of describing them in words.
* **Detail & realism**: Photoreal output with fine texture and accurate lighting alongside the design control.

### Ideal use cases

* **Posters & print visuals**: Anything where the text *is* a strong part of the design.
* **Editorial & layout-driven content**: Multi-element compositions where placement and hierarchy carry the message.

### Weaknesses

* **Needs structured prompts** — plain text prompts underperform. Results come from JSON with explicit elements, colors, and boxes.
* **Reference images are style inspiration** — Ideogram reads refs for look and mood, not for exact reproduction. For precise product imagery or character fidelity, route to a dedicated model.

***

## How to use effectively

#### Key principles

Ideogram v4 rewards structure over prose. Describe the image as data, not a sentence:

* **Prompt in JSON.** Wrap every request in the schema: a `high_level_description`, a `style_description` block, and a `compositional_deconstruction` listing each element. The model validates against this format before rendering.
* **Type your text.** A `text` element carries the literal string to render plus a separate `desc` for its styling. This is the mechanism behind multi-line, multi-font in-image text.
* **Place elements with bounding boxes.** Give any element a `bbox` as `[y_min, x_min, y_max, x_max]` in 0–1000 normalized coordinates, origin at the top-left. Boxes are honored precisely.
* **Set color with hex codes.** Use `color_palette` arrays — up to 16 hex values per image, 5 per element — to steer dominant colors directly rather than through descriptive language.

#### Example

json

```json
{
  "high_level_description": "Retro square poster for a team tasting event, bold red type on salmon pink.",
  "style_description": {
    "aesthetics": "Retro, playful, warm.",
    "color_palette": ["#E8552D", "#F4B9A0"]
  },
  "compositional_deconstruction": {
    "background": "Solid salmon-pink ground with scattered confetti shapes.",
    "elements": [
      {
        "type": "text",
        "bbox": [70, 270, 470, 730],
        "text": "MANGO\nSAGO\nSOCIAL",
        "desc": "Bold blocky sans-serif, deep reddish-orange, stacked vertically, slightly distressed."
      },
      {
        "type": "obj",
        "desc": "Tall glass of mango sago dessert topped with cream, a whole mango beside it."
      }
    ]
  }
}
```
