---
title: "Get a generation"
method: GET
path: "/generations/{generation_id}"
tags: ["Generations"]
---

# Get a generation

`GET /generations/{generation_id}`

Poll for generation status and output. On completion, the response includes presigned URLs to download the generated images.

## Path parameters

- `generation_id` string, uuid, required

## Response `200`

Generation status

- GenerationResponse — Generation status and output
  - `id` string, uuid, required — Generation identifier
  - `type` 'image' | 'image_edit' | 'video' | 'video_edit' | 'video_reframe' | 'layering', required — The kind of generation to perform
  - `state` 'queued' | 'processing' | 'completed' | 'failed', required — Current state of the generation
  - `model` 'uni-1' | 'uni-1-max' | 'ray-3.2', required — Model identifier. `uni-1` is the default image tier; `uni-1-max` produces higher-quality output than `uni-1` at a higher per-image price. `ray-3.2` is the public video model for text-to-video, image-to-video, and video-to-video editing.
  - `created_at` string, required — Creation timestamp
  - `output` GenerationOutput[] — Generated outputs (populated on completion)
    - `type` string, required — Media type (e.g. image, video)
    - `url` string, uri, required — Presigned URL (1hr expiry)
    - `layer` GenerationOutputLayer — Per-layer semantics for a type=layering output
      - `index` integer, required — Layer position, front-to-back; the last layer is the background
      - `label` string, required — Short (1-2 word) layer name
      - `description` string, required — Complete-element caption for the layer's content
      - `alpha_hint` string, required — Edge treatment of the layer's transparency — soft (hair/fur/glass), hard (solid edges), or none (the opaque background)
  - `failure_reason` string, nullable — Human-readable failure description
  - `failure_code` 'content_moderated' | 'generation_failed' | 'budget_exhausted' | 'output_not_found' | 'image_too_large' | 'unsupported_format' | 'corrupt_input' | 'invalid_request' | 'rate_limited' — Machine-readable failure code for programmatic handling

## Other responses

- `401` — Missing or invalid API key
- `404` — Generation not found or belongs to another client

## Changes

- **2026-08-04** `2135bbde249c` — 1 warning, 1 info
  - added the new `layering` enum value to the `type` response property for the response status `200`
  - added the optional property `output/items/layer` to the response with the `200` status
- **2026-06-08** `1a4de7fe8bec` — 4 warning
  - added the new `ray-3.2` enum value to the `model` response property for the response status `200`
  - added the new `video` enum value to the `type` response property for the response status `200`
  - added the new `video_edit` enum value to the `type` response property for the response status `200`
  - added the new `video_reframe` enum value to the `type` response property for the response status `200`
- **2026-05-04** `1eba0307c5e2` — 2 warning
  - added the new `uni-1` enum value to the `model` response property for the response status `200`
  - added the new `uni-1-max` enum value to the `model` response property for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/lumalabs/apis/luma-agents-api/changes/generations/:generation_id/get.md)

---

[API](https://skmtc.dev/lumalabs/apis/luma-agents-api.md) · [All operations](https://skmtc.dev/lumalabs/apis/luma-agents-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lumalabs/luma-agents-api/revisions/2135bbde249c/schema)
