---
title: "Generate images from a prompt, letting the server pick the best model"
method: POST
path: "/v2/tool/text-to-image"
tags: ["auto-model"]
---

# Generate images from a prompt, letting the server pick the best model

`POST /v2/tool/text-to-image`

Generate one or more images from a prompt without choosing a model.
The server selects the model best suited to the request — the prompt,
the requested output size, and any style references all inform the
choice — and may route different requests to different models.

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

## Request body

- ToolTextToImageRequest
  - `prompt` string, required — The prompt to generate images from.
  - `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.
  - `aspect_ratio` 'AUTO' | '1x4' | '1x3' | '1x2' | '9x16' | '10x16' | '2x3' | '3x4' | '4x5' | '1x1' | '5x4' | '4x3' | '3x2' | '16x10' | '16x9' | '2x1' | '3x1' | '4x1' — The aspect ratio for an Ideogram 4.0 magic prompt. `AUTO` lets the model select the most suitable ratio from the prompt; any other value pins the ratio. The non-AUTO values are the buckets the 4.0 model supports.
  - `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.
  - `style_reference_asset_identifiers` AssetIdentifier[] — Existing upload or generated image assets whose style should guide the generation, by reference.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `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.
  - `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).

- ToolTextToImageResponse — Response returned by `POST /v2/tool/text-to-image`. 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.

---

[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)
