---
title: "Generate or transform images, letting the server pick the best model"
method: POST
path: "/v2/image/generate/auto"
tags: ["auto-model"]
---

# Generate or transform images, letting the server pick the best model

`POST /v2/image/generate/auto`

Generate one or more images without choosing a model. The server
selects the model best suited to the request and may route different
requests to different models.

Supplying source images turns the request into a transform: the server
picks a model that can edit, and the prompt describes the change to
apply. Provide the sources either as `image_asset_identifiers`
references (images already stored with Ideogram) or as raw `images`
bytes (multipart requests only) — if both are supplied, the references
win and the bytes are ignored. `negative_prompt` and
`style_reference_asset_identifiers` only apply without source images;
combining them with sources is rejected with a 422 rather than
silently ignored.

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`.

## Query parameters

- `dry_run` boolean

## Request body

- GenerateImageV2AutoRequest — Source images are optional. When supplied (as `image_asset_identifiers` references, or as raw `images` bytes in multipart requests), the server picks a model that can transform them and the prompt describes the change; if both forms are given, the references are used and the bytes are ignored. `negative_prompt` and `style_reference_asset_identifiers` cannot be combined with source images.
  - `prompt` string, required — The prompt to generate images from, or the instruction describing how to transform the source images when sources are supplied.
  - `image_asset_identifiers` AssetIdentifier[] — Existing upload or generated image assets to transform, by reference. Takes priority over `images` if both are supplied. Supplying sources turns the request into a transform.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `images` string[] — The source images to transform (max 10, max size 25MB per image), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Multipart requests only; ignored if `image_asset_identifiers` is also supplied.
  - `negative_prompt` string — Description of what to exclude from the images. Descriptions in the prompt take precedence over descriptions in the negative prompt. Not every model consults it. Cannot be combined with source images.
  - `style_reference_asset_identifiers` AssetIdentifier[] — Existing upload or generated image assets whose style should guide the generation, by reference. Cannot be combined with source images.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `aspect_ratio` string — The output aspect ratio. `auto` (the default) picks the most suitable ratio from the request. Without source images the value must be one of the supported ratio buckets (for example "16x9" or "1x1"); with source images any "WIDTHxHEIGHT" shape hint is accepted and the selected model serves the closest shape it supports. Omit `resolution` when supplying a non-`auto` value.
  - `resolution` string — The requested output resolution, formatted as "WIDTHxHEIGHT" (for example "1280x800"). The output is served at the closest resolution the selected model supports. Omit `aspect_ratio` (or leave it `auto`) when supplying a resolution.
  - `resolution_tier` '1k' | '2k' | '4k' — The output resolution tier. Influences which model serves the request; not every model offers every tier. When omitted the server uses the selected model's default tier.
  - `magic_prompt` 'auto' | 'on' | 'off' — Determine if MagicPrompt should be used in generating the request or not.
  - `num_images` integer — The number of images to generate.
  - `seed` integer — Random seed. Set for reproducible generation.
  - `private` boolean — Whether the generated images should be kept private. When omitted, the default follows the caller's plan; some plans 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.
  - `category_id` string — The internal generation category to attribute to the output, as a URL-safe base64 UUID without padding. Only applies when source images are supplied.
  - `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`.

## Response `200`

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

- GenerateImageV2AutoResponse — Response returned by `POST /v2/image/generate/auto`. 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.
- `404` — A referenced source asset was not found.
- `422` — The prompt did not pass safety checks, or the request combined source images with text-to-image-only fields.
- `429` — Too many requests.
- `500` — Internal server error.
- `503` — The endpoint is temporarily unavailable.

## Changes

- **2026-09-19** `4e95197be44a` — 8 breaking, 4 warning, 10 info
  - added `#/components/schemas/MagicPromptMode` to the `magic_prompt` request property `allOf` list (media type: multipart/form-data)
  - added `#/components/schemas/MagicPromptMode` to the `magic_prompt` request property `allOf` list (media type: application/json)
  - removed the enum value `1K` of the request property `resolution_tier` (media type: multipart/form-data)
  - removed the enum value `1K` of the request property `resolution_tier` (media type: application/json)
  - …18 more
- **2026-09-16** `a235a15c0235` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/image/generate/auto/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.dev/ideogram/apis/ideogram-openapi-3-0/revisions/4e95197be44a?raw)
