Skip to main content
POST
/
v1
/
images
Create a new image generation
curl --request POST \
  --url https://api.example.com/v1/images \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "prompt": "A golden sunset over mountains, cinematic lighting, 8k resolution",
  "negative_prompt": "blurry, low quality, watermark, text",
  "lora_id": "lora_01HXMQ7Z3K8Y2ABCDEFGHJKM",
  "width": 1024,
  "height": 1024,
  "steps": 30,
  "guidance_scale": 7.5,
  "seed": 42,
  "size": "hd_square",
  "count": 1,
  "enhance_prompt": false,
  "webhook_url": "https://your-server.com/webhooks/aurouslabs",
  "reference_image_urls": [
    "file_01HXMQ7Z3K8Y2NABCDEFGHJKMN",
    "https://example.com/ref2.jpg"
  ]
}
'
{
  "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": 1024,
  "height": 1024,
  "image_count": 1,
  "size_preset": "square",
  "inference_type": "t2i",
  "seed": 42,
  "video_duration": 5,
  "video_resolution": "480p",
  "video_ratio": "16:9",
  "video_camera_fixed": {},
  "character_id": "char_01HXMQ7Z3K8Y2ABCDEFGHJKM",
  "bundle_name": "Cinematic Trio",
  "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.

Authorizations

X-Api-Key
string
header
required

Your team API key (starts with al_live_ — legacy keys may start with og_).

Headers

Idempotency-Key
string

Stripe-style idempotency key (1-256 chars). Same key + same canonical-JSON body returns the cached response with Aurous-Idempotent-Replayed: true. Same key + different body returns 409 invalid_request / idempotency_key_in_use. UUID v4 recommended. Replay window is 24 hours. Absent header is treated as non-idempotent (each call processes anew).

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"

Body

application/json
prompt
string
required

The text prompt describing the image to generate. 1-4000 characters; whitespace-only is rejected.

Required string length: 1 - 4000
Example:

"A golden sunset over mountains, cinematic lighting, 8k resolution"

negative_prompt
string

Negative prompt - elements to exclude from the generated image. 1-4000 characters.

Required string length: 1 - 4000
Example:

"blurry, low quality, watermark, text"

lora_id
string

Optional. Opaque LoRA identifier (lora_*) or URL-friendly slug, from GET /v1/loras. UUIDs are also accepted for legacy back-compat. If omitted, the platform will choose a suitable style based on your prompt; if none matches, your prompt is generated without a style.

Example:

"lora_01HXMQ7Z3K8Y2ABCDEFGHJKM"

width
number

Output image width in pixels (ignored if size preset is set)

Required range: 256 <= x <= 4096
Example:

1024

height
number

Output image height in pixels (ignored if size preset is set)

Required range: 256 <= x <= 4096
Example:

1024

steps
number

Number of diffusion steps (higher = more detail, slower)

Required range: 1 <= x <= 100
Example:

30

guidance_scale
number

Guidance scale - how closely to follow the prompt (higher = more literal)

Required range: 0.1 <= x <= 30
Example:

7.5

seed
number

Random seed for reproducible generations. Omit for random.

Example:

42

size
enum<string>

Size preset for the output image. Overrides width/height if set.

Available options:
square,
landscape,
portrait,
hd_square,
hd_landscape,
hd_portrait
Example:

"hd_square"

count
number

Number of images to generate in this request

Required range: 1 <= x <= 4
Example:

1

enhance_prompt
boolean

When true, an LLM rewrites your prompt before generation using the LoRA's style template. This is the only customer-facing prompt-shaping toggle in the public API. Pricing: enhanced generations cost a configurable multiplier of the base rate.

Example:

false

webhook_url
string

Optional webhook URL. When provided, a POST request will be sent to this URL when the generation completes or fails. The payload contains an event field ("image.completed" or "image.failed") and a data field with the generation details (same shape as GET /v1/images/:id). Delivery is attempted up to 3 times with a 2-second delay between retries.

Example:

"https://your-server.com/webhooks/aurouslabs"

reference_image_urls
string[]

Up to 6 reference images. Each entry can be either:

  • an opaque file ID file_<ulid> returned by POST /v1/files, or
  • an https:// URL pointing at a public host (max 2048 chars). URLs are server-side fetched through an SSRF-pinned client (rejects private IPs / loopback / link-local / cloud metadata) and materialized as a 24h-TTL file under your team. Pricing matches the reference-image rate (see Pricing). Empty array or omitted is treated as "no references".
Maximum array length: 6
Example:
[
"file_01HXMQ7Z3K8Y2NABCDEFGHJKMN",
"https://example.com/ref2.jpg"
]

Response

Generation created and queued for processing

id
string
required

Opaque generation ID

Example:

"img_01HXMQ7Z3K8Y2ABCDEFGHJKM"

status
enum<string>
required

Current generation status. Lifecycle: pending (created, not yet dispatched) → processing (provider running) → terminal succeeded / failed / cancelled. (P0-4 from api-consumer review: previously listed queued, expired, and moderation_rejected — none of which the v1.0 server actually emits today. Codegen-strict clients would crash on the first pending response. Those values may return in v1.1 once the BullMQ producer and TTL reaper are exposed publicly.)

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. null for legacy rows minted before this field shipped (PR-4 / 2026-05-15+); 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

Image width in pixels (image generations only)

Example:

1024

height
number

Image height in pixels (image generations only)

Example:

1024

image_count
number

Number of images requested in the batch

Example:

1

size_preset
object

Size preset applied (overrides width/height when set)

Example:

"square"

inference_type
enum<string> | null

Inference mode actually dispatched. t2i = text-to-image; i2i = image-to-image (when reference_image_urls or character_id are set).

Available options:
t2i,
i2i
Example:

"t2i"

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

Opaque character ID if the generation referenced a character (image only)

Example:

"char_01HXMQ7Z3K8Y2ABCDEFGHJKM"

bundle_name
object

Display name of the LoRA bundle, if a bundle was applied. Bundles surface uniformly under the loras array; this field is informational.

Example:

"Cinematic Trio"

loras
object[] | null

LoRAs applied to this generation. Populated only on single-LoRA dispatch. For bundle dispatch (when bundle_name is set), loras is null — bundle members are intentionally not unrolled in the public response (catalog uniformity, spec D24). null also 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"