Submits an image generation request. Credits are deducted immediately from your team balance. The generation is processed asynchronously — poll GET /v1/images/:id to check status, or provide a webhook_url to receive a POST callback when the generation completes or fails. The webhook payload contains { event: "image.completed"|"image.failed", data: {...} } where data has the same shape as the GET /v1/images/:id response. Delivery is attempted up to 3 times with a 2-second delay between retries. Optionally provide a lora_id (from GET /v1/loras — opaque lora_* or slug). If omitted, the platform chooses a suitable style based on your prompt; if no clear match exists, your prompt is generated without a style. Use size presets (e.g. “hd_square”) or specify custom width/height.
Note on prompt processing: the platform may apply additional preprocessing configured per LoRA before dispatching to the underlying model. Outputs may therefore reflect more than just your raw prompt. The enhance_prompt flag controls only the optional LLM rewriting step; other preprocessing is non-configurable from the public API. When lora_id is omitted, your prompt is sent to a third-party LLM (BytePlus ModelArk) to choose an appropriate style — same data path as the enhance_prompt flag.
Output URLs are valid for approximately 24 hours after generation. Download what you want to keep.
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.
Your team API key (starts with al_live_ — legacy keys may start with og_).
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).
Optional API version pin (YYYY-MM-DD). Defaults to your team's pinned version, or the system default 2026-05-15 for unauthenticated requests.
^\d{4}-\d{2}-\d{2}$"2026-05-15"
The text prompt describing the image to generate. 1-4000 characters; whitespace-only is rejected.
1 - 4000"A golden sunset over mountains, cinematic lighting, 8k resolution"
Negative prompt - elements to exclude from the generated image. 1-4000 characters.
1 - 4000"blurry, low quality, watermark, text"
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.
"lora_01HXMQ7Z3K8Y2ABCDEFGHJKM"
Output image width in pixels (ignored if size preset is set)
256 <= x <= 40961024
Output image height in pixels (ignored if size preset is set)
256 <= x <= 40961024
Number of diffusion steps (higher = more detail, slower)
1 <= x <= 10030
Guidance scale - how closely to follow the prompt (higher = more literal)
0.1 <= x <= 307.5
Random seed for reproducible generations. Omit for random.
42
Size preset for the output image. Overrides width/height if set.
square, landscape, portrait, hd_square, hd_landscape, hd_portrait "hd_square"
Number of images to generate in this request
1 <= x <= 41
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.
false
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.
"https://your-server.com/webhooks/aurouslabs"
Up to 6 reference images. Each entry can be either:
file_<ulid> returned by POST /v1/files, orhttps:// 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".6[
"file_01HXMQ7Z3K8Y2NABCDEFGHJKMN",
"https://example.com/ref2.jpg"
]Generation created and queued for processing
Opaque generation ID
"img_01HXMQ7Z3K8Y2ABCDEFGHJKM"
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.)
pending, processing, succeeded, failed, cancelled "succeeded"
The text prompt used for generation
"A golden sunset over mountains, cinematic lighting"
Creation timestamp (ISO 8601)
"2026-05-04T10:00:00Z"
Distinguishes image vs video generation. May be null for older rows minted before this column existed.
image, video "image"
Negative prompt to exclude from generation
"blurry, low quality"
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.
[
"https://api.aurous-labs.com/v1/images/img_01HXMQ7Z3K8Y2ABCDEFGHJKM/output/0?token=..."
]Generated video proxy URL (only present on media_type: video). Same 24h TTL as image output_urls.
"https://api.aurous-labs.com/v1/videos/vid_01HXMQ7Z3K8Y2ABCDEFGHJKM/output?token=..."
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.
["https://example.com/ref1.jpg"]Error message if the generation failed
"Content policy violation"
Processing duration in milliseconds (set on terminal status)
14820
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.
{
"amount": 2,
"currency": "credit",
"breakdown": { "base": 1, "enhance": 1 }
}Image width in pixels (image generations only)
1024
Image height in pixels (image generations only)
1024
Number of images requested in the batch
1
Size preset applied (overrides width/height when set)
"square"
Inference mode actually dispatched. t2i = text-to-image; i2i = image-to-image (when reference_image_urls or character_id are set).
t2i, i2i "t2i"
Random seed used (image generations)
42
Video duration in seconds (video generations only)
5
Video resolution (video generations only)
480p, 720p, 1080p "480p"
Video aspect ratio (video generations only)
16:9, 4:3, 1:1, 3:4, 9:16, 21:9 "16:9"
Whether the camera was held fixed during the video
Opaque character ID if the generation referenced a character (image only)
"char_01HXMQ7Z3K8Y2ABCDEFGHJKM"
Display name of the LoRA bundle, if a bundle was applied. Bundles surface uniformly under the loras array; this field is informational.
"Cinematic Trio"
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.
API contract version applied at the time this row was minted (D25 — frozen for replay across future version bumps).
"2026-05-15"
Aurous-Request-Id of the POST that created this row. Quote in support tickets to trace the original create request.
"req_01HXMQ7Z3K8Y2ABCDEFGHJKM"
Terminal-status timestamp (ISO 8601). NULL until the generation reaches a terminal state.
"2026-05-04T10:00:14Z"