Skip to main content
GET
/
v1
/
images
/
{id}
Get a single generation by ID
curl --request GET \
  --url https://api.aurous-labs.com/v1/images/{id} \
  --header 'X-Api-Key: <api-key>'
{
  "id": "img_01HXMQ7Z3K8Y2ABCDEFGHJKM",
  "status": "succeeded",
  "prompt": "A golden sunset over mountains, cinematic lighting",
  "created_at": "2026-05-04T10:00:00Z",
  "media_type": "image",
  "negative_prompt": "blurry, low quality",
  "output_urls": [
    "https://api.aurous-labs.com/v1/images/img_01HXMQ7Z3K8Y2ABCDEFGHJKM/output/0?token=..."
  ],
  "output_video_url": "https://api.aurous-labs.com/v1/videos/vid_01HXMQ7Z3K8Y2ABCDEFGHJKM/output?token=...",
  "reference_image_urls": [
    "https://example.com/ref1.jpg"
  ],
  "error_message": "Content policy violation",
  "duration_ms": 14820,
  "cost": {
    "amount": 2,
    "currency": "credit",
    "breakdown": {
      "base": 1,
      "enhance": 1
    }
  },
  "width": 2048,
  "height": 2048,
  "image_count": 1,
  "size_preset": "2k_1_1",
  "inference_type": "t2i",
  "cfg_rescale": 0.7,
  "denoise_strength": 0.6,
  "seed": 42,
  "video_duration": 5,
  "video_resolution": "480p",
  "video_ratio": "16:9",
  "video_camera_fixed": {},
  "character_id": "char_01HXMQ7Z3K8Y2ABCDEFGHJKM",
  "loras": [
    {
      "id": "lora_01HXMQ7Z3K8Y2ABCDEFGHJKM",
      "name": "Sunset Style"
    }
  ],
  "aurous_version": "2026-05-15",
  "creation_request_id": "req_01HXMQ7Z3K8Y2ABCDEFGHJKM",
  "completed_at": "2026-05-04T10:00:14Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.aurous-labs.com/llms.txt

Use this file to discover all available pages before exploring further.

GET /v1/images/{id} returns the current state of a generation. Poll it to track async progress until status reaches a terminal value: succeeded, failed, cancelled, expired, or moderation_rejected. The same endpoint serves both image generations (img_*) and video generations (vid_*) — they share a status surface. See the Videos overview for the polling pattern.

Reading the loras array

The loras field reports the styles applied to this generation. Each entry is a { id, name } pair where id is the opaque LoRA ID resolved at dispatch time. The array is null for prompt-only generations (no LoRA picked) and for pure-reference generations. When you dispatch with a “bundle” style (a multi-style stack the dashboard exposes as a single pick), the loras array carries one entry — the bundle, surfaced as a LoRA. The V1 surface presents bundles and single LoRAs uniformly: one entry, one ID, one name.

Output URLs

output_urls is populated when status === "succeeded". Each URL is a signed proxy URL on api.aurous-labs.com:
  • No X-Api-Key header needed — the signature is in the query string.
  • URLs expire ~24 hours after generation (410 Gone after that).
  • Save what you want to keep — long-term storage is intentionally not part of the platform.
For video generations, output_video_url is the polled URL; output_urls may or may not be populated depending on the video flow used.

Polling cadence

Most image generations finish in 10–30 seconds. Poll on a 2-second interval with light exponential backoff. Tighter polling burns rate-limit budget without finishing your generation any faster — see Rate limits.
cURL
curl https://api.aurous-labs.com/v1/images/img_01HXMQ7Z3K8Y2ABCDEFGHJKM \
  -H "X-Api-Key: $AUROUS_API_KEY"

Cost on the response

Once status is terminal, cost.amount reports the credits actually charged. For pending and processing generations, cost.amount reports the held amount — the upper bound that will be deducted on success. Cancelled generations refund any held credits.

Authorizations

X-Api-Key
string
header
required

Your team API key (starts with al_live_).

Headers

Aurous-Version
string

Optional API version pin (YYYY-MM-DD). Defaults to your team's pinned version, or the system default 2026-05-15 for unauthenticated requests.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-05-15"

Path Parameters

id
string
required

Opaque generation ID (img_* for image, vid_* for video)

Example:

"img_01HXMQ7Z3K8Y2ABCDEFGHJKM"

Response

Generation details

id
string
required

Opaque generation ID

Example:

"img_01HXMQ7Z3K8Y2ABCDEFGHJKM"

status
enum<string>
required

Current generation status. Lifecycle: pending (created, awaiting dispatch) → processing (running) → one of the terminal values succeeded / failed / cancelled. Additional terminal values may be introduced in future API versions and will be announced via the changelog before they appear on the wire.

Available options:
pending,
processing,
succeeded,
failed,
cancelled
Example:

"succeeded"

prompt
string
required

The text prompt used for generation

Example:

"A golden sunset over mountains, cinematic lighting"

created_at
string
required

Creation timestamp (ISO 8601)

Example:

"2026-05-04T10:00:00Z"

media_type
enum<string> | null

Distinguishes image vs video generation. May be null for older rows minted before this column existed.

Available options:
image,
video
Example:

"image"

negative_prompt
object

Negative prompt to exclude from generation

Example:

"blurry, low quality"

output_urls
string[] | null

Generated image proxy URLs. Available for ~24 hours after generation. Save what you want to keep — long-term storage is intentionally not part of the platform. URLs return 410 Gone after expiry.

Example:
[
"https://api.aurous-labs.com/v1/images/img_01HXMQ7Z3K8Y2ABCDEFGHJKM/output/0?token=..."
]
output_video_url
object

Generated video proxy URL (only present on media_type: video). Same 24h TTL as image output_urls.

Example:

"https://api.aurous-labs.com/v1/videos/vid_01HXMQ7Z3K8Y2ABCDEFGHJKM/output?token=..."

reference_image_urls
string[] | null

Reference image URLs that were used as visual anchors for this generation, if any. Snapshotted at inference time — for character-attached generations, these are the resolved character refs at submission, not the live character state.

Example:
["https://example.com/ref1.jpg"]
error_message
object

Error message if the generation failed

Example:

"Content policy violation"

duration_ms
object

Processing duration in milliseconds (set on terminal status)

Example:

14820

cost
object

Per-generation cost breakdown — same shape as the estimated_cost returned by POST /v1/{images,videos}/estimate. May be null for older rows from before this field existed; populated for all new generations. The amount reflects the committed charge for terminal-status rows.

Example:
{
"amount": 2,
"currency": "credit",
"breakdown": { "base": 1, "enhance": 1 }
}
width
number

Resolved output image width in pixels (image generations only). Reflects the post-snap dimension actually generated; may differ from a custom-requested width by up to 31 px due to multiple-of-32 snapping.

Example:

2048

height
number

Resolved output image height in pixels (image generations only). Reflects the post-snap dimension actually generated; may differ from a custom-requested height by up to 31 px due to multiple-of-32 snapping.

Example:

2048

image_count
number

Number of images requested in the batch

Example:

1

size_preset
enum<string> | null

Named size preset applied to this generation. null when the request used custom width/height instead of a preset.

Available options:
2k_1_1,
2k_3_2,
2k_2_3,
2k_4_3,
2k_3_4,
2k_16_9,
2k_9_16,
2k_21_9,
4k_1_1,
4k_3_2,
4k_2_3,
4k_4_3,
4k_3_4,
4k_16_9,
4k_9_16,
4k_21_9
Example:

"2k_1_1"

inference_type
enum<string> | null

Inference mode dispatched. t2i (text-to-image) for every current image generation — reference images and characters are supplementary inputs to the t2i flow, not a separate mode. i2i is reserved for a future image-edit endpoint.

Available options:
t2i,
i2i
Example:

"t2i"

cfg_rescale
object

CFG rescale factor the customer supplied on the request body, echoed back here. Range 0.0-1.0. Omitted when the customer did not supply a per-request value (the platform applied a precedence-chain default — LoRA, character override, or the global 0.7 — which is not exposed on the response).

Example:

0.7

denoise_strength
object

Denoising strength the customer supplied on the request body, echoed back here. Range 0.0-1.0. Omitted when the customer did not supply a value or when the generation was a bare text-to-image request (denoise is only applied when reference_image_urls is non-empty).

Example:

0.6

seed
object

Random seed used (image generations)

Example:

42

video_duration
object

Video duration in seconds (video generations only)

Example:

5

video_resolution
enum<string> | null

Video resolution (video generations only)

Available options:
480p,
720p,
1080p
Example:

"480p"

video_ratio
enum<string> | null

Video aspect ratio (video generations only)

Available options:
16:9,
4:3,
1:1,
3:4,
9:16,
21:9
Example:

"16:9"

video_camera_fixed
object

Whether the camera was held fixed during the video

character_id
object

Character ID supplied on the request (char_<ulid> or legacy UUID), echoed back. null when no character was attached to this generation.

Example:

"char_01HXMQ7Z3K8Y2ABCDEFGHJKM"

loras
object[] | null

LoRAs applied to this generation. null for prompt-only and pure-reference generations.

aurous_version
string

API contract version applied at the time this row was minted (D25 — frozen for replay across future version bumps).

Example:

"2026-05-15"

creation_request_id
string

Aurous-Request-Id of the POST that created this row. Quote in support tickets to trace the original create request.

Example:

"req_01HXMQ7Z3K8Y2ABCDEFGHJKM"

completed_at
object

Terminal-status timestamp (ISO 8601). NULL until the generation reaches a terminal state.

Example:

"2026-05-04T10:00:14Z"