---
title: "Generate images with Ideogram 4.0 from a text or structured prompt"
method: POST
path: "/v2/images/generate/ideogram-v4"
tags: ["images-generate"]
---

# Generate images with Ideogram 4.0 from a text or structured prompt

`POST /v2/images/generate/ideogram-v4`

Generate one or more images from a prompt with Ideogram 4.0. The
`prompt` accepts either natural language or a structured Ideogram 4.0
JSON prompt; the server detects which was supplied. A structured JSON
prompt is consumed by the model directly and skips magic prompt.

`magic_prompt` controls how a natural-language prompt is prepared:
`AUTO`/`ON` rewrite and expand the prompt before generation, while
`OFF` keeps your wording and only converts the prompt into the
structured format the model consumes.

When `resolution` is omitted, the server picks an aspect ratio
automatically based on the prompt.

By default the request blocks until the images are ready and returns
them in `data`. Set `async` to true to return immediately after the
request is accepted, then poll for completion and results with
`GET /v1/generations/{generation_id}` using the returned
`generation_id`.

Supplying a `webhook_url` makes the request asynchronous whatever
`async` says: the response returns as soon as the request is accepted,
and the finished result is POSTed to that URL.

## Request body

- GenerateImageIdeogramV4Request
  - `prompt` string, required — The prompt to generate images from. Accepts either natural language or a structured Ideogram 4.0 JSON prompt; the server detects which was supplied. A structured JSON prompt is consumed by the model directly and skips magic prompt.
  - `magic_prompt` 'AUTO' | 'ON' | 'OFF' — Determine if MagicPrompt should be used in generating the request or not.
  - `seed` integer — Random seed. Set for reproducible generation.
  - `num_images` integer — The number of images to generate.
  - `resolution` '2048x2048' | '1440x2880' | '2880x1440' | '1664x2496' | '2496x1664' | '1792x2240' | '2240x1792' | '1440x2560' | '2560x1440' | '1600x2560' | '2560x1600' | '1728x2304' | '2304x1728' | '1296x3168' | '3168x1296' | '1152x2944' | '2944x1152' | '1248x3328' | '3328x1248' | '1280x3072' | '3072x1280' | '1024x3072' | '3072x1024' | '1024x1024' | '896x1120' | '1120x896' | '864x1152' | '1152x864' | '832x1248' | '1248x832' | '800x1280' | '1280x800' | '720x1280' | '1280x720' | '720x1440' | '1440x720' | '512x1536' | '1536x512' — The 1K and 2K resolutions supported for Ideogram 4.0 image generation.
  - `rendering_speed` 'TURBO' | 'DEFAULT' | 'QUALITY' — The rendering speed to use.
  - `enable_copyright_detection` boolean, nullable — Optional. Opt this request into post-generation copyright detection. Adds detection latency; flagged images come back with `is_image_safe: false`.
  - `async` boolean — When false (the default), the request blocks until the images are ready and returns them in `data`. When true, the request returns as soon as it is accepted; poll for completion and results with `GET /v1/generations/{generation_id}` using the returned `generation_id`.
  - `webhook_url` string, uri — HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a JSON POST to this URL once all images for the request have finished generating. The body mirrors the synchronous generate response: `request_id`, `created`, and a `data` array containing every generated image (`url`, `prompt`, `resolution`, `seed`, `is_image_safe`). Each delivery is signed with Ed25519 and verifiable against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS; private and loopback hosts and the cloud metadata service are rejected.
  - `private` boolean, nullable — When true or omitted, the output is kept private to your account. Set to false to publish the output to the public feed. Enterprise accounts always generate privately.
  - `target_collection_id` string — A collection you can write to, by its URL-safe base64 collection id. The output images are added to it when the request completes.

## Response `200`

The generated images (synchronous requests), or an acknowledgement to poll with `GET /v1/generations/{generation_id}` (`async` requests).

- GenerateImageIdeogramV4Response — Response returned by `POST /v2/images/generate/ideogram-v4`. Synchronous requests (the default) include the generated images in `data`. Requests with `async` set to true omit `data`; poll for completion and results with `GET /v1/generations/{generation_id}` using the returned `generation_id`. The seed reports the value the request resolved to when the caller left it unset.
  - `generation_id` string, required — URL-safe base64 ID of the accepted generation. Accepted by the `GET /v1/generations/{generation_id}` polling endpoint.
  - `data` GeneratedImageObject[] — The generated images, in generation order. Present only for synchronous requests (`async` omitted or false).
    - `url` string, uri, nullable — The direct link to the generated image. Empty when the image did not pass safety checks.
    - `prompt` string, required — The final prompt the image was generated from.
    - `resolution` string, required — The resolution of the generated image, formatted as "WIDTHxHEIGHT".
    - `is_image_safe` boolean, required — Whether the image passed safety checks. If false, `url` is empty.
    - `seed` integer, required — Random seed. Set for reproducible generation.
  - `seed` integer, required — Random seed. Set for reproducible generation.

## Other responses

- `400` — Invalid input provided.
- `401` — Unauthorized.
- `402` — Insufficient credits or quota.
- `422` — The prompt did not pass safety checks.
- `429` — Too many requests.
- `500` — Internal server error.
- `503` — The endpoint is temporarily unavailable.

## Changes

- **2026-08-27** `3eb3216eed39` — 1 info
  - added the new optional request property `webhook_url`
- **2026-08-26** `204996bf317a` — 1 breaking, 3 warning, 2 info
  - removed the media type `multipart/form-data` from the request body
  - removed the request property `remix_image_weight`
  - removed the request property `remix_source_image`
  - removed the request property `remix_source_image_file`
  - …2 more
- **2026-08-21** `898026c78d68` — 4 info
  - added the new optional request property `remix_image_weight`
  - added the new optional request property `remix_source_image`
  - added the new optional request property `remix_source_image_file`
  - added the media type `multipart/form-data` to the request body
- **2026-08-19** `73707bc35f34` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/images/generate/ideogram-v4/post.md)

---

[API](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0.md) · [All operations](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ideogram/ideogram-openapi-3-0/revisions/3eb3216eed39/schema)
