---
title: "Poll a generation"
method: GET
path: "/v1/generations/{generation_id}"
tags: ["generate"]
---

# Poll a generation

`GET /v1/generations/{generation_id}`

Retrieves the current status of an asynchronous generation, and its results once complete. Use the `generation_id` returned by the async generation endpoint. While the generation is `pending` or has `failed`, the response contains only `generation_id`, `status`, and `created`. Once `status` is `completed`, the response includes `response_type` and `data`, and may include `usage_cost_usd_micros` when the request uses variable usage-based pricing.

## Path parameters

- `generation_id` string, required

## Headers

- `Api-Key` string, required

## Response `200`

Generation status retrieved successfully.

- GenerationResponse — The current status and, when complete, result data for an asynchronous generation.
  - `generation_id` string, required — URL-safe base64 ID of the generation.
  - `status` 'pending' | 'completed' | 'failed', required — Current status of the generation. `pending`: still in progress; the response contains only `generation_id`, `status`, and `created`. `completed`: finished successfully; the response includes `response_type` and `data`, and may include `usage_cost_usd_micros` when the request uses variable usage-based pricing. `failed`: generation did not succeed; the response contains only `generation_id`, `status`, and `created`.
  - `created` string, date-time, required — The time the generation was created.
  - `response_type` 'url' — Present when `status` is `completed`; always "url" for this shape.
  - `usage_cost_usd_micros` integer — The total variable usage-based cost charged for the completed request, in millionths of a US dollar. Present only when `status` is `completed` and the request uses variable usage-based pricing; omitted otherwise.
  - `failure_reason` string — A short machine-readable reason the generation failed, for example `content_policy_violation`. Present only when `status` is `failed`.
  - `data` GenerationResponseDataInner[] — A list of generated images or videos. Present when `status` is `completed`. Video entries carry an `object_type` of `video.generation`; entries without an `object_type` are images.
    - union
      - object — An image result that does not expose its prompt or seed.
        - `object_type` 'image.without-prompt-or-seed', required — Discriminator value: image.without-prompt-or-seed
        - `url` string, uri, nullable — The direct link to the reframed image.
        - `asset_id` string, nullable — The base64url-encoded identifier of the generated image asset. Present for safe workflow-owned outputs.
        - `resolution` string, required — The exact dimensions of the reframed image, formatted as "{width}x{height}".
        - `is_image_safe` boolean, required — Whether this image passes safety checks. If false, the url field is empty.
      - object — A single generated image. Model-agnostic shape returned by the generation polling endpoint.
        - `object_type` 'image.generation', required — Discriminator value: image.generation
        - `url` string, uri, nullable — The direct link to the image generated.
        - `prompt` string, required — The prompt used for the generation. This may be different from the original prompt.
        - `resolution` string, required — The resolution of the generated image, formatted as "{width}x{height}".
        - `is_image_safe` boolean, required — Whether this image passes safety checks. If false, the url field will be empty.
        - `seed` integer, required — Random seed. Set for reproducible generation.
      - object — A single generated video returned by the generation polling endpoint.
        - `object_type` 'video.generation', required — Discriminator value: video.generation
        - `url` string, uri, nullable — The direct link to the generated video.
        - `prompt` string, required — The prompt used for the generation.
        - `resolution` string, required — The resolution tier of the generated video.
        - `aspect_ratio` string, required — The actual aspect ratio of the produced video, formatted as "{width}:{height}".
        - `duration` integer, required — The actual measured length of the produced video in seconds.

## Other responses

- `400` — Invalid request ID provided.
- `401` — Not authorized.
- `404` — Request not found.
- `429` — Too many requests.

## Changes

> 7 revisions in range; 2 could not be searched.

- **2026-08-13** `1ad90b66d646` — 1 info
  - added the optional property `usage_cost_usd_micros` to the response with the `200` status
- **2026-08-10** `1e406c70e481` — 1 info
  - added the optional property `data` to the response with the `200` status

[Change history](https://skmtc.dev/ideogram/apis/api-reference/changes/v1/generations/:generation_id/get.md)

---

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