Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.
Optional. Style identifier (lora_*) or slug, from GET /v1/loras. Tri-state: omit and matching runs automatically when your prompt names a look; send null to disable style matching for this request; send an id to pin that style. Styles now compose with action_id and subjects — a composition-act id in this field cannot be combined with a different action_id. Retired style ids keep working: aliased ids apply their successor style (echoed in response.style); other retired ids generate without a style and add a warnings[] entry.
Optional character ID (char_<ulid> from POST /v1/characters; UUID also accepted for legacy back-compat). When set, the character's reference images are sent to the model as visual anchors for identity consistency. The character must be in status: ready — referencing a synthesizing / reviewing / failed character returns 400 character_not_ready. Cross-team character_ids return 404 (existence is never leaked). Mutually exclusive with reference_image_urls: sending both returns 400 mutually_exclusive_input. The output follows your prompt. Superseded by subjects[]; fully supported — successful responses carry an advisory Deprecation: true header when this field is used.
Custom output image width in pixels. Use with height OR use size (preset), not both. Range [1024, 4096]; snapped server-side to the nearest multiple of 32. Output pixels (width × height) <= 2,360,000 bill the standard tier; above that, the large tier — see GET /v1/models for current per-tier pricing. Sending both size and custom dimensions returns 400 with code parameter_invalid_combination. Sending only one of width/height returns 400 with code missing_field.
Custom output image height in pixels. Use with width OR use size (preset), not both. Range [1024, 4096]; snapped server-side to the nearest multiple of 32. Output pixels (width × height) <= 2,360,000 bill the standard tier; above that, the large tier — see GET /v1/models for current per-tier pricing. Sending both size and custom dimensions returns 400 with code parameter_invalid_combination. Sending only one of width/height returns 400 with code missing_field.
Image size as a named preset. Use this OR custom width/height, not both. Format is <tier>_<ratio> where tier is 1_5k, 2k, or 4k and ratio matches the supported aspect-ratio set. Defaults to 1_5k_1_1 (1472×1472, standard tier) when omitted. Output pixels (width × height) <= 2,360,000 bill the standard tier; above that, the large tier — see GET /v1/models for current per-tier pricing. Sending both size and custom dimensions returns 400 with code parameter_invalid_combination.
Number of images to generate in this request (1-4, whole number). Images generate in parallel and you are billed per image; if some images in the batch fail, you receive the ones that succeeded and the difference is refunded automatically — the response image_count reflects the number actually delivered.
When true, an LLM rewrites your prompt before generation to a more detailed, model-friendly form; the rewritten prompt is what reaches the model. This is the only customer-facing prompt-shaping toggle in the public API. It is price-neutral on image generations: turning it on never adds a surcharge, cost.amount is unaffected, and breakdown carries no line item for it. Styled generations (a pinned or auto-matched style) always shape the prompt around the style through a separate, built-in pass — distinct from this flag, never fails a request, and — like this flag — never bills anything extra.
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. Image files only — a file_<ulid> uploaded with purpose reference_video/reference_audio is rejected (400 invalid_format). Pricing matches the reference-image rate (see Pricing). Empty array or omitted is treated as "no references". Mutually exclusive with character_id — sending both returns 400 mutually_exclusive_input. Superseded by subjects[]; fully supported — successful responses carry an advisory Deprecation: true header when this field is used.
Ordered subjects composed into one image (Image 1, Image 2, …). Max 10 subjects and 10 input images total. Mutually exclusive with character_id/reference_image_urls (both → 400 mutually_exclusive_input). Composes with lora_id when it names a style; the few styles that pick their own model still return 400 parameter_invalid_combination. Omit or [] for text-to-image/style.
Up to 10 loose reference images for multi-image composition, interpreted from your prompt — no identity grouping or per-subject framing is applied, and no identity consistency is guaranteed. Positions follow array order and can be addressed in the prompt as "Image 1" … "Image 10" (e.g. "the outfit in Image 3"). Each entry is a file_<ulid> ID from POST /v1/files or an https URL to a public host (max 2048 chars). Empty array or omitted is treated as "no context images". Mutually exclusive with subjects, character_id, and reference_image_urls (400 mutually_exclusive_input) and with lora_id (400 parameter_invalid_combination — multi-image composition picks its own model; styles cannot be stacked). The response echoes only a count (context_images: { image_count }), never the image URLs.
Pin a composition act from GET /v1/actions. Treat the id as opaque — it comes from the catalog and nowhere else. With subjects, the act must support your subject count (see supported_character_counts) — an unsupported count returns 400 action_not_available. Without subjects, the act renders with a new person described by your prompt. Omit to let act detection run automatically; send null to disable detection for this request. Combinable with lora_id when that id names a prompt style (the act and the style compose); a composition-act id sent in lora_id already acts as the pin, so it cannot be combined with a DIFFERENT action_id (400 parameter_invalid_combination). Mutually exclusive with context_images (400 mutually_exclusive_input). An id that is unknown or not visible to your team returns 404 resource_not_found — the same uniform 404 as GET /v1/actions/{id}.
Non-fatal request adjustments the real create would also report (e.g. a retired style pin that generates without a style, or a parameter with no effect on this generation path). Same shape and codes as the warnings on the POST /v1/images 201 body — the estimate warns exactly when the create would. Omitted when empty. Codes are an OPEN set: ignore unknown codes.
Show child attributes
Example:
[
{
"code": "parameter_ignored",
"param": "seed",
"message": "`seed` has no effect on this generation and was ignored."
}
]
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Aurous Labs","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/mayatech/yW79tCRlCpJDDgoM/logo-light.png?fit=max\u0026auto=format\u0026n=yW79tCRlCpJDDgoM\u0026q=85\u0026s=f3dfa1506dde2b022b4496c2c2f55104","dark":"https://mintcdn.com/mayatech/yW79tCRlCpJDDgoM/logo-dark.png?fit=max\u0026auto=format\u0026n=yW79tCRlCpJDDgoM\u0026q=85\u0026s=fb6dc85c1a2cb23d84e6d8efccdde751"},"favicon":"https://mintcdn.com/mayatech/yW79tCRlCpJDDgoM/favicon.png?fit=max\u0026auto=format\u0026n=yW79tCRlCpJDDgoM\u0026q=85\u0026s=374677cfa3da0cfdc4461950d5e6ec73","api":{"openapi":"api-reference/openapi.json"},"navbar":{"links":[{"href":"https://app.aurous-labs.com/dashboard","label":"Dashboard"}],"primary":{"type":"button","label":"Get an API key","href":"https://app.aurous-labs.com/auth/register"}},"footer":{"socials":{"twitter":"https://twitter.com/aurouslabs"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mayatech","hasAudioNarration":false,"actualSubdomain":"mayatech","customDomains":["docs.aurous-labs.com"],"gitSource":{"type":"github","owner":"mayatech88","repo":"onlygold","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adafc5af4b49ade1f1e2d25","collectionId":"0680f6e9-0a65-4ffe-bb73-02062bd8fd63","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adafc5af4b49ade1f1e2d25"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adafc5af4b49ade1f1e2d25","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API Reference","count":82},{"language":"default","tag":"Characters","count":17},{"language":"default","tag":"Chat completions","count":13},{"language":"default","tag":"Embeddings","count":10},{"language":"default","tag":"Webhooks","count":8},{"language":"default","tag":"Images","count":7},{"language":"default","tag":"Seedance (raw)","count":7},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Usage analytics","count":5},{"language":"default","tag":"Concepts","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation","slug":"/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation","pageMetadata":{"title":"Estimate the credit cost of an image generation","description":"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (`base`, plus the `size_tier` this request would bill — `standard` or `large` — and `discount_factor` when your team has a negotiated discount) without enqueuing the work. `size_tier` is a STRING and `discount_factor` (when present) is a multiplier, not a credit amount — `base` alone equals the total, so skip both when reproducing `amount`. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 `style_retired`), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. `count` multiplies the quote on every request shape — plain, `subjects[]`, and `context_images` alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same `warnings[]` the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (`estimate_post`, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as `reference` subjects. A `context_images` estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an `action_id`, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 `resource_not_found`) and, when subjects are present, the subject-count check (an unsupported count → 400 `action_not_available`, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your `lora_id` is a composition-act id (it acts as the pin). Acts and styles do not change the price.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/images/estimate","href":"/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (\", _jsx(_components.code, {\n children: \"base\"\n }), \", plus the \", _jsx(_components.code, {\n children: \"size_tier\"\n }), \" this request would bill — \", _jsx(_components.code, {\n children: \"standard\"\n }), \" or \", _jsx(_components.code, {\n children: \"large\"\n }), \" — and \", _jsx(_components.code, {\n children: \"discount_factor\"\n }), \" when your team has a negotiated discount) without enqueuing the work. \", _jsx(_components.code, {\n children: \"size_tier\"\n }), \" is a STRING and \", _jsx(_components.code, {\n children: \"discount_factor\"\n }), \" (when present) is a multiplier, not a credit amount — \", _jsx(_components.code, {\n children: \"base\"\n }), \" alone equals the total, so skip both when reproducing \", _jsx(_components.code, {\n children: \"amount\"\n }), \". Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 \", _jsx(_components.code, {\n children: \"style_retired\"\n }), \"), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. \", _jsx(_components.code, {\n children: \"count\"\n }), \" multiplies the quote on every request shape — plain, \", _jsx(_components.code, {\n children: \"subjects[]\"\n }), \", and \", _jsx(_components.code, {\n children: \"context_images\"\n }), \" alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same \", _jsx(_components.code, {\n children: \"warnings[]\"\n }), \" the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (\", _jsx(_components.code, {\n children: \"estimate_post\"\n }), \", 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as \", _jsx(_components.code, {\n children: \"reference\"\n }), \" subjects. A \", _jsx(_components.code, {\n children: \"context_images\"\n }), \" estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an \", _jsx(_components.code, {\n children: \"action_id\"\n }), \", the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 \", _jsx(_components.code, {\n children: \"resource_not_found\"\n }), \") and, when subjects are present, the subject-count check (an unsupported count → 400 \", _jsx(_components.code, {\n children: \"action_not_available\"\n }), \", whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your \", _jsx(_components.code, {\n children: \"lora_id\"\n }), \" is a composition-act id (it acts as the pin). Acts and styles do not change the price.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Estimate the credit cost of an image generation","description":"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (`base`, plus the `size_tier` this request would bill — `standard` or `large` — and `discount_factor` when your team has a negotiated discount) without enqueuing the work. `size_tier` is a STRING and `discount_factor` (when present) is a multiplier, not a credit amount — `base` alone equals the total, so skip both when reproducing `amount`. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 `style_retired`), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. `count` multiplies the quote on every request shape — plain, `subjects[]`, and `context_images` alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same `warnings[]` the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (`estimate_post`, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as `reference` subjects. A `context_images` estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an `action_id`, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 `resource_not_found`) and, when subjects are present, the subject-count check (an unsupported count → 400 `action_not_available`, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your `lora_id` is a composition-act id (it acts as the pin). Acts and styles do not change the price.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/images/estimate","href":"/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (`base`, plus the `size_tier` this request would bill — `standard` or `large` — and `discount_factor` when your team has a negotiated discount) without enqueuing the work. `size_tier` is a STRING and `discount_factor` (when present) is a multiplier, not a credit amount — `base` alone equals the total, so skip both when reproducing `amount`. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 `style_retired`), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. `count` multiplies the quote on every request shape — plain, `subjects[]`, and `context_images` alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same `warnings[]` the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (`estimate_post`, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as `reference` subjects. A `context_images` estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an `action_id`, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 `resource_not_found`) and, when subjects are present, the subject-count check (an unsupported count → 400 `action_not_available`, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your `lora_id` is a composition-act id (it acts as the pin). Acts and styles do not change the price.","operationId":"V1EstimateController_estimateImage","parameters":["c816bdee-90b0-41f1-b1da-0a631dc436e2"],"requestBody":"6b359513-c24a-4de7-8903-ede64b96a595","responses":{"200":"ea4a7926-38a2-4401-a51b-3b611527717e","400":"e278bc16-5547-4005-a301-9d246e42c76a","401":"5c47c58b-f3d6-45ce-bf91-a64b9e3a98c9","403":"0d4bdc38-f1cb-4ba1-8ba5-23ff1f0529d5","404":"93ca3582-87bd-4ed6-9f1e-fa310c0c25ba","429":"a6cfab84-4169-4021-a1b9-6d719aab1964","503":"0b0e774f-bc0d-4107-8a62-1c59765db13a"},"security":["567c0e56-1318-49d2-b098-956d275d2c60"],"summary":"Estimate the credit cost of an image generation","tags":["Public API (v1)"],"method":"post","type":"path","servers":["3c5b35fe-5556-4c2f-b6fe-ccd0ce11e7d4","06ffff55-b13c-4345-afa1-017ab3f24f1d"],"path":"/v1/images/estimate","baseUrlOptions":["https://api.aurous-labs.com","https://api.preprod.aurous-labs.com"],"title":"Estimate the credit cost of an image generation","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c816bdee-90b0-41f1-b1da-0a631dc436e2":{"name":"Aurous-Version","in":"header","required":false,"description":"Optional API version pin (YYYY-MM-DD). Omit the header to receive the platform default, currently `2026-08-26`.","schema":{"type":"string","example":"2026-08-26","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":false,"description":"Optional API version pin (YYYY-MM-DD). Omit the header to receive the platform default, currently `2026-08-26`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"The text prompt describing the image to generate. 1-4000 characters; whitespace-only is rejected.","example":"A golden sunset over mountains, cinematic lighting, 8k resolution","minLength":1,"maxLength":4000,"isRequired":true,"uniqueKey":"prompt","typeLabel":"string"},"lora_id":{"oneOf":[{"type":"string","example":"lora_01HXMQ7Z3K8Y2VNABCDEFGHJKM","description":"Optional. Style identifier (lora_*) or slug, from GET /v1/loras. Tri-state: omit and matching runs automatically when your prompt names a look; send null to disable style matching for this request; send an id to pin that style. Styles now compose with `action_id` and `subjects` — a composition-act id in this field cannot be combined with a different `action_id`. Retired style ids keep working: aliased ids apply their successor style (echoed in `response.style`); other retired ids generate without a style and add a `warnings[]` entry.","uniqueKey":"lora_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"lora_01HXMQ7Z3K8Y2VNABCDEFGHJKM","description":"Optional. Style identifier (lora_*) or slug, from GET /v1/loras. Tri-state: omit and matching runs automatically when your prompt names a look; send null to disable style matching for this request; send an id to pin that style. Styles now compose with `action_id` and `subjects` — a composition-act id in this field cannot be combined with a different `action_id`. Retired style ids keep working: aliased ids apply their successor style (echoed in `response.style`); other retired ids generate without a style and add a `warnings[]` entry.","uniqueKey":"lora_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"lora_id","typeLabel":"string | null"},"character_id":{"type":"string","description":"Optional character ID (`char_\u003culid>` from POST /v1/characters; UUID also accepted for legacy back-compat). When set, the character's reference images are sent to the model as visual anchors for identity consistency. The character must be in `status: ready` — referencing a `synthesizing` / `reviewing` / `failed` character returns 400 `character_not_ready`. Cross-team character_ids return 404 (existence is never leaked). Mutually exclusive with `reference_image_urls`: sending both returns 400 `mutually_exclusive_input`. The output follows your prompt. Superseded by `subjects[]`; fully supported — successful responses carry an advisory `Deprecation: true` header when this field is used.","example":"char_01HXMQ7Z3K8Y2VNABCDEFGHJKM","deprecated":true,"uniqueKey":"character_id","typeLabel":"string"},"width":{"type":"number","description":"Custom output image width in pixels. Use with `height` OR use `size` (preset), not both. Range [1024, 4096]; snapped server-side to the nearest multiple of 32. Output pixels (width × height) \u003c= 2,360,000 bill the standard tier; above that, the large tier — see `GET /v1/models` for current per-tier pricing. Sending both `size` and custom dimensions returns 400 with code `parameter_invalid_combination`. Sending only one of `width`/`height` returns 400 with code `missing_field`.","example":1472,"minimum":1024,"maximum":4096,"uniqueKey":"width","typeLabel":"number"},"height":{"type":"number","description":"Custom output image height in pixels. Use with `width` OR use `size` (preset), not both. Range [1024, 4096]; snapped server-side to the nearest multiple of 32. Output pixels (width × height) \u003c= 2,360,000 bill the standard tier; above that, the large tier — see `GET /v1/models` for current per-tier pricing. Sending both `size` and custom dimensions returns 400 with code `parameter_invalid_combination`. Sending only one of `width`/`height` returns 400 with code `missing_field`.","example":1472,"minimum":1024,"maximum":4096,"uniqueKey":"height","typeLabel":"number"},"size":{"type":"string","description":"Image size as a named preset. Use this OR custom `width`/`height`, not both. Format is `\u003ctier>_\u003cratio>` where tier is `1_5k`, `2k`, or `4k` and ratio matches the supported aspect-ratio set. Defaults to `1_5k_1_1` (1472×1472, standard tier) when omitted. Output pixels (width × height) \u003c= 2,360,000 bill the standard tier; above that, the large tier — see `GET /v1/models` for current per-tier pricing. Sending both `size` and custom dimensions returns 400 with code `parameter_invalid_combination`.","example":"1_5k_1_1","enum":["1_5k_1_1","1_5k_3_2","1_5k_2_3","1_5k_4_3","1_5k_3_4","1_5k_16_9","1_5k_9_16","1_5k_21_9","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"],"uniqueKey":"size","typeLabel":"enum\u003cstring>"},"count":{"type":"number","description":"Number of images to generate in this request (1-4, whole number). Images generate in parallel and you are billed per image; if some images in the batch fail, you receive the ones that succeeded and the difference is refunded automatically — the response `image_count` reflects the number actually delivered.","example":1,"minimum":1,"maximum":4,"uniqueKey":"count","typeLabel":"number"},"enhance_prompt":{"type":"boolean","description":"When true, an LLM rewrites your prompt before generation to a more detailed, model-friendly form; the rewritten prompt is what reaches the model. This is the only customer-facing prompt-shaping toggle in the public API. It is price-neutral on image generations: turning it on never adds a surcharge, `cost.amount` is unaffected, and `breakdown` carries no line item for it. Styled generations (a pinned or auto-matched style) always shape the prompt around the style through a separate, built-in pass — distinct from this flag, never fails a request, and — like this flag — never bills anything extra.","example":false,"uniqueKey":"enhance_prompt","typeLabel":"boolean"},"reference_image_urls":{"description":"Up to 6 reference images. Each entry can be either:\n - an opaque file ID `file_\u003culid>` returned by `POST /v1/files`, or\n - an `https://` URL pointing at a public host (max 2048 chars).\nURLs 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. Image files only — a `file_\u003culid>` uploaded with purpose `reference_video`/`reference_audio` is rejected (400 `invalid_format`). Pricing matches the reference-image rate (see Pricing). Empty array or omitted is treated as \"no references\". Mutually exclusive with `character_id` — sending both returns 400 `mutually_exclusive_input`. Superseded by `subjects[]`; fully supported — successful responses carry an advisory `Deprecation: true` header when this field is used.","example":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN","https://example.com/ref2.jpg"],"minItems":0,"maxItems":6,"deprecated":true,"type":"array","items":{"type":"string","uniqueKey":"reference_image_urls.items.[INDEX]","typeLabel":"string"},"uniqueKey":"reference_image_urls","typeLabel":"string[]"},"subjects":{"maxItems":10,"description":"Ordered subjects composed into one image (Image 1, Image 2, …). Max 10 subjects and 10 input images total. Mutually exclusive with character_id/reference_image_urls (both → 400 mutually_exclusive_input). Composes with `lora_id` when it names a style; the few styles that pick their own model still return 400 parameter_invalid_combination. Omit or [] for text-to-image/style.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["character","reference"],"example":"character","description":"Subject kind.","isRequired":true,"uniqueKey":"subjects.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"character_id":{"type":"string","example":"char_01HXMQ7Z3K8Y2VNABCDEFGHJKM","description":"Required for `character` subjects. `char_\u003culid>` or legacy UUID; must be a ready character your team owns.","uniqueKey":"subjects.items.[INDEX].character_id","typeLabel":"string"},"image_urls":{"minItems":1,"maxItems":10,"example":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN"],"description":"Required for `reference` subjects. 1–10 `file_\u003culid>` or https URLs.","type":"array","items":{"type":"string","uniqueKey":"subjects.items.[INDEX].image_urls.items.[INDEX]","typeLabel":"string"},"uniqueKey":"subjects.items.[INDEX].image_urls","typeLabel":"string[]"}},"required":["type"],"uniqueKey":"subjects.items.[INDEX]","typeLabel":"object"},"uniqueKey":"subjects","typeLabel":"object[]"},"context_images":{"minItems":0,"maxItems":10,"example":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN","https://example.com/outfit.jpg"],"description":"Up to 10 loose reference images for multi-image composition, interpreted from your prompt — no identity grouping or per-subject framing is applied, and no identity consistency is guaranteed. Positions follow array order and can be addressed in the prompt as \"Image 1\" … \"Image 10\" (e.g. \"the outfit in Image 3\"). Each entry is a `file_\u003culid>` ID from POST /v1/files or an https URL to a public host (max 2048 chars). Empty array or omitted is treated as \"no context images\". Mutually exclusive with `subjects`, `character_id`, and `reference_image_urls` (400 `mutually_exclusive_input`) and with `lora_id` (400 `parameter_invalid_combination` — multi-image composition picks its own model; styles cannot be stacked). The response echoes only a count (`context_images: { image_count }`), never the image URLs.","type":"array","items":{"type":"string","uniqueKey":"context_images.items.[INDEX]","typeLabel":"string"},"uniqueKey":"context_images","typeLabel":"string[]"},"action_id":{"oneOf":[{"type":"string","example":"3f2b6c1e-8a4d-4e2b-9c7a-1d5e8f0a2b3c","description":"Pin a composition act from `GET /v1/actions`. Treat the id as opaque — it comes from the catalog and nowhere else. With subjects, the act must support your subject count (see `supported_character_counts`) — an unsupported count returns 400 `action_not_available`. Without subjects, the act renders with a new person described by your prompt. Omit to let act detection run automatically; send `null` to disable detection for this request. Combinable with `lora_id` when that id names a prompt style (the act and the style compose); a composition-act id sent in `lora_id` already acts as the pin, so it cannot be combined with a DIFFERENT `action_id` (400 `parameter_invalid_combination`). Mutually exclusive with `context_images` (400 `mutually_exclusive_input`). An id that is unknown or not visible to your team returns 404 `resource_not_found` — the same uniform 404 as `GET /v1/actions/{id}`.","uniqueKey":"action_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"3f2b6c1e-8a4d-4e2b-9c7a-1d5e8f0a2b3c","description":"Pin a composition act from `GET /v1/actions`. Treat the id as opaque — it comes from the catalog and nowhere else. With subjects, the act must support your subject count (see `supported_character_counts`) — an unsupported count returns 400 `action_not_available`. Without subjects, the act renders with a new person described by your prompt. Omit to let act detection run automatically; send `null` to disable detection for this request. Combinable with `lora_id` when that id names a prompt style (the act and the style compose); a composition-act id sent in `lora_id` already acts as the pin, so it cannot be combined with a DIFFERENT `action_id` (400 `parameter_invalid_combination`). Mutually exclusive with `context_images` (400 `mutually_exclusive_input`). An id that is unknown or not visible to your team returns 404 `resource_not_found` — the same uniform 404 as `GET /v1/actions/{id}`.","uniqueKey":"action_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"action_id","typeLabel":"string | null"},"output_format":{"type":"string","enum":["jpeg","png"],"example":"jpeg","description":"Output format. `png` yields a transparent background where the composition supports it. Default `jpeg`.","uniqueKey":"output_format","typeLabel":"enum\u003cstring>"}},"required":["prompt"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"prompt":"A golden sunset over mountains, cinematic lighting, 8k resolution","lora_id":"lora_01HXMQ7Z3K8Y2VNABCDEFGHJKM","character_id":"char_01HXMQ7Z3K8Y2VNABCDEFGHJKM","width":1472,"height":1472,"size":"1_5k_1_1","count":1,"enhance_prompt":false,"reference_image_urls":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN","https://example.com/ref2.jpg"],"subjects":[{"type":"character","character_id":"char_01HXMQ7Z3K8Y2VNABCDEFGHJKM","image_urls":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN"]}],"context_images":["file_01HXMQ7Z3K8Y2NABCDEFGHJKMN","https://example.com/outfit.jpg"],"action_id":"3f2b6c1e-8a4d-4e2b-9c7a-1d5e8f0a2b3c","output_format":"jpeg"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"ea4a7926-38a2-4401-a51b-3b611527717e":{"description":"Cost estimate","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","description":"Discriminator","example":"estimate","enum":["estimate"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"estimated_cost":{"type":"object","description":"Cost breakdown for this would-be generation.","required":["amount","breakdown"],"properties":{"amount":{"type":"number","description":"Total credit cost. For images, the price depends on the output size tier — see the `size_tier` line in `breakdown` (`standard` or `large`). `amount` equals the sum of the numeric line items in `breakdown` other than `discount_factor` (a multiplier, not a credit amount). For videos the price is token-based (per-model rate table): `breakdown` carries the token input (`tokens_max`, plus optional `enhance_flat_credits`/`discount_factor`), NOT additive line items — do not sum it, trust `amount`. For an adaptive video (`adaptive: true`) this equals `amount_max` — the ceiling reserved up front; you are billed for the delivered length and refunded the difference. In all cases trust `amount` as the authoritative figure held/charged — it matches the live hold to 4 decimals.","example":2,"isRequired":true,"uniqueKey":"estimated_cost.amount","typeLabel":"number"},"breakdown":{"type":"object","description":"Cost inputs, keyed by source. Image estimates carry `base` (credits, always present, summable) and `size_tier` (a STRING — `standard` for output \u003c= 2.36 MP, `large` above; never summable, skip it when reproducing `amount`). Reference images are free and do not add line items. When the team has a negotiated discount, an additional `discount_factor` line is present — it is a multiplier (e.g. `0.9` for 10% off), not a credit amount; `amount` is the post-discount total. Video estimates carry token-model inputs: `tokens_max` (the ceiling token count used for pricing), plus optional `enhance_flat_credits` and `discount_factor` lines. Video estimate breakdowns are NOT additive — `amount` is the authoritative figure. For adaptive video estimates (`duration: -1`), also check the top-level `amount_min`/`amount_max` range. Example image breakdown: `{ \"base\": 6.5, \"size_tier\": \"standard\" }`; example video estimate breakdown: `{ \"tokens_max\": 108000, \"enhance_flat_credits\": 0.5 }`. Values are typed `number | string | boolean` — image estimates already mix a numeric `base` with the string `size_tier`, and the field set is OPEN and shares its contract with the settled generation `cost.breakdown` (which can additionally carry boolean metadata, e.g. on video) — so read by name and tolerate non-numeric values on unknown keys.","example":{"base":6.5,"size_tier":"standard"},"isRequired":true,"uniqueKey":"estimated_cost.breakdown","typeLabel":"object"},"adaptive":{"type":"boolean","description":"True only for an adaptive (variable-length) video estimate (`duration: -1`, the default — see POST /v1/videos). When true the price is a range: render `amount_min`–`amount_max`. When false (every image estimate, and any video estimate with a fixed duration), `amount` is exact.","example":false,"uniqueKey":"estimated_cost.adaptive","typeLabel":"boolean"},"amount_min":{"type":"number","description":"Adaptive video estimates only: the minimum charge (shortest supported length, currently 4 s).","example":10,"uniqueKey":"estimated_cost.amount_min","typeLabel":"number"},"amount_max":{"type":"number","description":"Adaptive video estimates only: the maximum charge (longest supported length, currently 15 s) — equals `amount`.","example":37.5,"uniqueKey":"estimated_cost.amount_max","typeLabel":"number"}},"isRequired":true,"uniqueKey":"estimated_cost","typeLabel":"object"},"currency":{"type":"string","description":"Currency unit. All amounts in this response are in `credit`.","example":"credit","enum":["credit"],"isRequired":true,"uniqueKey":"currency","typeLabel":"enum\u003cstring>"},"warnings":{"description":"Non-fatal request adjustments the real create would also report (e.g. a retired style pin that generates without a style, or a parameter with no effect on this generation path). Same shape and codes as the `warnings` on the `POST /v1/images` 201 body — the estimate warns exactly when the create would. Omitted when empty. Codes are an OPEN set: ignore unknown codes.","example":[{"code":"parameter_ignored","param":"seed","message":"`seed` has no effect on this generation and was ignored."}],"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable warning code. Current values: `parameter_ignored` (a parameter you sent has no effect on this generation path and was ignored) and `style_retired_plain` (the pinned `lora_id` is retired — the generation proceeded without a style). This is an OPEN set: new codes may be added without a version bump, so ignore unknown codes rather than failing on them.","example":"style_retired_plain","isRequired":true,"uniqueKey":"warnings.items.[INDEX].code","typeLabel":"string"},"param":{"type":"string","description":"Machine-readable name of the request field the warning is about (e.g. `lora_id`, `seed`).","example":"lora_id","isRequired":true,"uniqueKey":"warnings.items.[INDEX].param","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Wording may change; branch on `code`/`param`, not on this text.","example":"Style lora_06AAAAAAAAAAAAAAAAAAAAAAAA is retired and no longer applies a style — this request generates without one.","isRequired":true,"uniqueKey":"warnings.items.[INDEX].message","typeLabel":"string"}},"required":["code","param","message"],"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"warnings","typeLabel":"object[]"}},"required":["object","estimated_cost","currency"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"estimate","estimated_cost":{"amount":2,"breakdown":{"base":6.5,"size_tier":"standard"},"adaptive":false,"amount_min":10,"amount_max":37.5},"currency":"credit","warnings":[{"code":"parameter_ignored","param":"seed","message":"`seed` has no effect on this generation and was ignored."}]}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}},"Deprecation":{"description":"Present (always the literal string `true`) on a 2xx response in two cases: (1) POST /v1/images, /v1/images/estimate, /v1/videos or /v1/videos/estimate when the request body used the legacy `character_id` or `reference_image_urls` field instead of `subjects[]`; (2) every 2xx of POST /v1/characters/{id}/refs/regenerate, whose whole body form is superseded by POST /v1/characters/{id}/refs/{view}/regenerate. Absent otherwise — in particular the per-view route never carries it. No removal date is set in either case — see the linked page.","schema":{"type":"string","enum":["true"],"example":"true"}},"Link":{"description":"Paired with `Deprecation` — an RFC 8288 link to what replaces the deprecated thing. `rel=\"deprecation\"` pointing at the subjects[] migration guide for the legacy identity FIELDS; `rel=\"successor-version\"` pointing at the per-view regenerate page for the deprecated regenerate ROUTE. Same presence rule as `Deprecation`.","schema":{"type":"string","example":"\u003chttps://docs.aurous-labs.com/guides/subjects>; rel=\"deprecation\"; type=\"text/html\""}}},"exampleType":"generated"},"e278bc16-5547-4005-a301-9d246e42c76a":{"description":"Validation failed, a retired style was pinned (code: `style_retired`), an invalid parameter combination (e.g. `context_images` with `lora_id`, or a composition-act `lora_id` with a different `action_id`), or a pinned composition act that does not support the subject count (code: `action_not_available`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}}},"exampleType":"generated"},"5c47c58b-f3d6-45ce-bf91-a64b9e3a98c9":{"description":"Unauthorized — missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}}},"exampleType":"generated"},"0d4bdc38-f1cb-4ba1-8ba5-23ff1f0529d5":{"description":"Account not approved for closed beta. error.code is one of `account_pending`, `account_rejected`, `account_suspended`. There is no retry — contact support to be approved.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}}},"exampleType":"generated"},"93ca3582-87bd-4ed6-9f1e-fa310c0c25ba":{"description":"Style, character, or composition act not found / inaccessible","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}}},"exampleType":"generated"},"a6cfab84-4169-4021-a1b9-6d719aab1964":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}},"Retry-After":{"description":"Seconds to wait before retrying. Present on 429 (rate limit), on 503 provider_unavailable, and on 409 character_busy. Prefer this over computing X-RateLimit-Reset − now.","schema":{"type":"integer","example":12}}},"exampleType":"generated"},"0b0e774f-bc0d-4107-8a62-1c59765db13a":{"description":"Character generation is temporarily unavailable, or the platform could not verify your account/billing state or prepare the request (for example, reference images) before dispatch — error.code is `provider_unavailable` in every case. Retry after the number of seconds in the `Retry-After` header.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"Error payload","required":["type","code","message","doc_url","request_id"],"properties":{"type":{"type":"string","description":"Broad error category","example":"invalid_request","enum":["invalid_request","authentication","not_found","rate_limit","server_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Stable error code (programmatic discriminator). Closed-beta gate emits one of `account_pending`, `account_rejected`, `account_suspended` on 403.","example":"balance_too_low","enum":["invalid_request","missing_field","invalid_format","value_out_of_range","unsupported_lora_for_mode","generation_not_cancellable","prompt_blocked","reference_blocked","output_moderation_rejected","unknown_version","mutually_exclusive_input","character_not_ready","parameter_invalid_combination","character_status_invalid","character_busy","nudity_not_allowed","reference_unfit","reference_uploaded","build_requires_identity","style_retired","parameter_invalid","too_many_reference_images","action_not_available","upload_invalid","balance_too_low","idempotency_key_in_use","api_key_not_found","payload_too_large","missing_api_key","invalid_api_key","revoked_api_key","resource_not_found","forbidden_resource","account_pending","account_rejected","account_suspended","already_approved","already_rejected","already_suspended","invalid_reinstate_target","invalid_suspend_target","payment_not_reviewable","page_out_of_date","trial_already_used","cannot_moderate_admin","too_many_requests","concurrency_limit_exceeded","tpm_rate_limit_exceeded","internal_error","provider_unavailable","reference_check_unavailable","provider_timeout","provider_not_configured","invalid_time_range","invalid_bucket_width","too_many_buckets","too_many_group_by","invalid_filter","invalid_page_token","export_too_large","user_already_exists","self_invite_forbidden","invite_link_failed","invite_rate_limited","model_not_found","model_disabled","model_wrong_kind","max_tokens_exceeds_hard_cap","chat_model_misconfigured","embeddings_input_too_large","embeddings_unsupported_dimensions","pricing_frozen","provider_rate_limited","chat_provider_request_invalid","chat_provider_auth_failed","chat_provider_unavailable","max_input_tokens_exceeded","chat_provider_unknown_error","embeddings_provider_unknown_error","embeddings_batch_not_supported","embeddings_input_too_many_items","embeddings_video_unsupported","encoding_format_unsupported","missing_max_tokens_no_model_default","chat_cancel_target_not_found","chat_completion_not_found","chat_cancel_target_already_terminal","chat_cancel_target_not_cancellable","tool_choice_required_unsupported","response_format_too_large","response_format_too_deep","invalid_cursor","invalid_cursor_for_endpoint","model_slug_exists","output_expired","output_not_available","content_filtered","image_generation_failed","reference_media_invalid","reference_media_cap_reached","reference_fetch_failed","unsupported_auth_method","insufficient_scope","uploads_expired","character_resynthesize_in_progress","provider_unknown_error","first_frame_too_small"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable message","example":"Team available balance is 1.5 credits, generation requires 2.0.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","description":"Documentation link for this error code","example":"https://docs.aurous-labs.com/errors#balance_too_low","isRequired":true,"uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","description":"Echoes Aurous-Request-Id — quote in support tickets","example":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"param":{"oneOf":[{"type":"object","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.0","typeLabel":"object"},{"type":"null","description":"Field name when the error is parameter-scoped","example":"prompt","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Sub-code refining `code`, for codes that document one. Present today only on `reference_unfit`; `null` otherwise. Branch on `code` first and treat an unrecognized `reason` as a generic failure of that code.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch"],"example":"wrong_view","uniqueKey":"error.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Present only on `reference_unfit` with `reason: \"wrong_view\"`: the view the rejected image actually depicts. Offer the customer that view instead of asking for a new photo — the same upload can be re-sent to it.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_left","uniqueKey":"error.detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.detected_view","typeLabel":"enum\u003cstring> | null"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request","code":"balance_too_low","message":"Team available balance is 1.5 credits, generation requires 2.0.","doc_url":"https://docs.aurous-labs.com/errors#balance_too_low","request_id":"req_01HXMQ7Z3K8Y2VNABCDEFGHJKM","param":"prompt","reason":"wrong_view","detected_view":"full_left"}}}},"exampleType":"generated"}},"headers":{"Aurous-Request-Id":{"description":"Server-minted request id. Quote this in support tickets.","schema":{"type":"string","example":"req_01HXMQ7Z3K8Y2NABCDEFGHJKMP"}},"Aurous-Version":{"description":"API version pin applied to this response (YYYY-MM-DD).","schema":{"type":"string","example":"2026-08-26"}},"X-RateLimit-Limit":{"description":"Bucket capacity (max tokens) for this endpoint class.","schema":{"type":"integer","example":120}},"X-RateLimit-Remaining":{"description":"Tokens remaining after this request.","schema":{"type":"integer","example":119}},"X-RateLimit-Reset":{"description":"Epoch seconds when the bucket would be full again, assuming no further requests.","schema":{"type":"integer","example":1700000060}},"Retry-After":{"description":"Seconds to wait before retrying. Present on 429 (rate limit), on 503 provider_unavailable, and on 409 character_busy. Prefer this over computing X-RateLimit-Reset − now.","schema":{"type":"integer","example":12}}},"exampleType":"generated"}},"security":{"567c0e56-1318-49d2-b098-956d275d2c60":{"api-key":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Your team API key (starts with `al_live_`).","scopes":[],"schemeName":"api-key"}}},"servers":{"3c5b35fe-5556-4c2f-b6fe-ccd0ce11e7d4":{"url":"https://api.aurous-labs.com","description":"Production"},"06ffff55-b13c-4345-afa1-017ab3f24f1d":{"url":"https://api.preprod.aurous-labs.com","description":"Preprod (staging)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Your team API key (starts with `al_live_`).","scopes":[],"schemeName":"api-key"},"schema":{"title":"X-Api-Key","type":"string","description":"Your team API key (starts with `al_live_`).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"api-key","name":"X-Api-Key"}],"title":"api-key"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"mayatech","siteName":"Aurous Labs","title":"Estimate the credit cost of an image generation - Aurous Labs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T06:19:12.528Z","originalFileLocation":"api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Aurous Labs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Estimate the credit cost of an image generation - Aurous Labs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Aurous Labs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mayatech.mintlify.app/_mintlify/api/og/v2?division=Images\u0026amp;title=Estimate+the+credit+cost+of+an+image+generation\u0026amp;description=Same+DTO+as+POST+%2Fv1%2Fimages.+Returns+the+projected+credit+cost+and+a+per-line-item+breakdown+%28%60base%60%2C+plus+the+%60size_tier%60+this+request+would+bill+%E2%80%94+%60standard%60+\u0026amp;theme=a84e348be4cda03ca3be04c0\u0026amp;signature=6b584866f8aa3a9682c7c85adf3149857b65141ecb0c1e70faf655d452788465\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Estimate the credit cost of an image generation - Aurous Labs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mayatech.mintlify.app/_mintlify/api/og/v2?division=Images\u0026amp;title=Estimate+the+credit+cost+of+an+image+generation\u0026amp;description=Same+DTO+as+POST+%2Fv1%2Fimages.+Returns+the+projected+credit+cost+and+a+per-line-item+breakdown+%28%60base%60%2C+plus+the+%60size_tier%60+this+request+would+bill+%E2%80%94+%60standard%60+\u0026amp;theme=a84e348be4cda03ca3be04c0\u0026amp;signature=6b584866f8aa3a9682c7c85adf3149857b65141ecb0c1e70faf655d452788465\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mayatech/EexJ-zapST-7nua7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Aurous Labs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.aurous-labs.com/#organization\",\"name\":\"Aurous Labs\",\"url\":\"https://docs.aurous-labs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mayatech/yW79tCRlCpJDDgoM/logo-light.png?fit=max\u0026auto=format\u0026n=yW79tCRlCpJDDgoM\u0026q=85\u0026s=f3dfa1506dde2b022b4496c2c2f55104\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.aurous-labs.com#website\",\"name\":\"Aurous Labs\",\"url\":\"https://docs.aurous-labs.com\",\"publisher\":{\"@id\":\"https://docs.aurous-labs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation#webpage\",\"url\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation\",\"name\":\"Estimate the credit cost of an image generation\",\"description\":\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.\",\"dateModified\":\"2026-10-23T06:19:12.528Z\",\"isPartOf\":{\"@id\":\"https://docs.aurous-labs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.aurous-labs.com/api-reference/openapi\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Images\",\"item\":\"https://docs.aurous-labs.com/api-reference/images/models-and-pricing\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Estimate the credit cost of an image generation\",\"item\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation#apireference\",\"headline\":\"Estimate the credit cost of an image generation\",\"name\":\"Estimate the credit cost of an image generation\",\"description\":\"Same DTO as POST /v1/images. Returns the projected credit cost and a per-line-item breakdown (base, plus the size_tier this request would bill — standard or large — and discount_factor when your team has a negotiated discount) without enqueuing the work. size_tier is a STRING and discount_factor (when present) is a multiplier, not a credit amount — base alone equals the total, so skip both when reproducing amount. Reference images are free and do not affect price. Inputs are validated with the same rules as the create path — a private style from another team, a retired style that no longer generates (400 style_retired), a foreign or not-ready character subject, an over-budget subjects[] all return the same error a real POST /v1/images would — with one difference: the estimate never fetches inline https reference URLs, so a problem specific to a URL (unreachable host, non-image content) only surfaces at create. count multiplies the quote on every request shape — plain, subjects[], and context_images alike: images generate in parallel and you are billed per image, with partial failures delivering fewer images and auto-refunding the difference, so estimate(count: 4) equals 4 × estimate(count: 1). The response carries the same warnings[] the real create would return — a retired style that generates without a style, or a parameter with no effect on the selected generation path — so you can surface them before spending credits. Isolated rate-limit bucket (estimate_post, 120/min) so pricing-check loops do not crowd out real generations. Reference images can be supplied via reference_image_urls (mutually exclusive with character_id) or as reference subjects. A context_images estimate fires the same 400 combination errors a real POST /v1/images would, and never fetches inline https entries (file IDs are still ownership-checked). When you pin an action_id, the estimate runs the identical composition-act gates as POST /v1/images — existence/visibility (an unknown or inaccessible act → 404 resource_not_found) and, when subjects are present, the subject-count check (an unsupported count → 400 action_not_available, whose message names the counts the act supports) — but never picks or signs a reference still. The same gates run when your lora_id is a composition-act id (it acts as the pin). Acts and styles do not change the price.\",\"url\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.aurous-labs.com/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation#webpage\"},\"dateModified\":\"2026-10-23T06:19:12.528Z\",\"publisher\":{\"@id\":\"https://docs.aurous-labs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.aurous-labs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Aurous Labs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Aurous Labs","nav":{"global":null,"groups":[{"group":"Get started","pages":[{"title":"Quickstart","href":"/quickstart"},{"title":"Authentication","href":"/authentication"}]},{"group":"Guides","pages":[{"title":"Drop in for OpenAI","href":"/guides/openai-drop-in"},{"title":"Choose a model","href":"/guides/model-comparison"},{"title":"How we count tokens","href":"/guides/how-we-count-tokens"},{"title":"Cost transparency","href":"/guides/cost-transparency"},{"title":"Error handling","href":"/guides/error-handling"},{"title":"Composition acts","href":"/guides/actions"}]},{"group":"Concepts","pages":[{"title":"Errors","href":"/errors"},{"title":"Idempotency","href":"/idempotency"},{"title":"Rate limits","href":"/rate-limits"},{"title":"Webhooks","href":"/webhooks"}]},{"group":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/openapi"},{"group":"Images","pages":[{"title":"Models \u0026 pricing","href":"/api-reference/images/models-and-pricing"},{"title":"Create an image","openapi":"POST /v1/images","href":"/api-reference/images/create-image"},{"title":"List your generation history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/images","href":"/api-reference/public-api-v1/list-your-generation-history"},{"title":"Retrieve an image","openapi":"GET /v1/images/{id}","href":"/api-reference/images/retrieve-image"},{"title":"Cancel a pending or processing generation","description":"Cancels a generation that has not yet completed. Returns the cancelled generation resource. On a generation already in `cancelled` state this is a no-op (idempotent). On a generation already in `succeeded` or `failed` this returns `400 invalid_request / generation_not_cancellable` (terminal states cannot be undone). Hold-released or refund-applied credits are reflected on the next `GET /v1/balance`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/images/{id}/cancel","href":"/api-reference/public-api-v1/cancel-a-pending-or-processing-generation"},{"title":"Estimate the credit cost of an image generation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/images/estimate","href":"/api-reference/public-api-v1/estimate-the-credit-cost-of-an-image-generation"},{"title":"Get a single generated image","description":"Returns the generated image. Outputs are kept for up to 30 days after generation (an output that could not be copied expires with the provider link: ~7 days for images, ~24 hours for videos); after that the endpoint returns `410 Gone` with `code: output_expired`. If the generation never produced an output (status `failed`, `cancelled`, `moderation_rejected`, or polling-timeout `expired`), this endpoint returns `422 Unprocessable Entity` with `code: output_not_available` — check `GET /v1/images/{id}` for the failure reason. Save what you want to keep for longer.\n\nThis route is anonymous-read: knowing the URL is sufficient to fetch the bytes. Browser `\u003cimg>` tags work directly without auth headers. API consumers can still send `Authorization: Bearer …` or `X-Api-Key: …` — these are accepted but not required.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/images/{id}/output/{n}","href":"/api-reference/images-proxy/get-a-single-generated-image"}]},{"group":"Chat completions","pages":[{"title":"Chat completions","href":"/api-reference/chat/overview"},{"title":"Streaming","href":"/api-reference/chat/streaming"},{"title":"Tools and function calling","href":"/api-reference/chat/tools"},{"title":"Multimodal input","href":"/api-reference/chat/multimodal"},{"title":"Reasoning effort","href":"/api-reference/chat/reasoning"},{"title":"Structured output","href":"/api-reference/chat/structured-output"},{"title":"Chat idempotency","href":"/api-reference/chat/idempotency"},{"title":"Chat cancellation","href":"/api-reference/chat/cancellation"},{"title":"Pricing","href":"/api-reference/chat/pricing"},{"title":"Create a chat completion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/chat/completions","href":"/api-reference/chat/create-a-chat-completion"},{"title":"Retrieve a stored chat completion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/chat/completions/{id}","href":"/api-reference/chat/retrieve-a-stored-chat-completion"},{"title":"Cancel an in-flight chat completion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/chat/completions/{id}/cancel","href":"/api-reference/chat/cancel-an-in-flight-chat-completion"},{"title":"List chat, embedding, video, and image models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/models","href":"/api-reference/models/list-chat-embedding-video-and-image-models"}]},{"group":"Embeddings","pages":[{"title":"Embeddings","href":"/api-reference/embeddings/overview"},{"title":"Multimodal embeddings","href":"/api-reference/embeddings/multimodal"},{"title":"Output Dimensions","href":"/api-reference/embeddings/dimensions"},{"title":"Embedding limits","href":"/api-reference/embeddings/limits"},{"title":"URL fetching for image_url","href":"/api-reference/embeddings/url-fetching"},{"title":"OpenAI batch input is not supported","href":"/api-reference/embeddings/openai-batch-incompat"},{"title":"Pricing","href":"/api-reference/embeddings/pricing"},{"title":"Estimate Cost Before Embedding","href":"/api-reference/embeddings/estimate"},{"title":"Create embeddings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/embeddings","href":"/api-reference/embeddings/create-embeddings"},{"title":"Estimate embedding credits","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/embeddings/estimate","href":"/api-reference/embeddings/estimate-embedding-credits"}]},{"group":"Characters","pages":[{"title":"Views and lifecycle","href":"/api-reference/characters/views-and-lifecycle"},{"title":"List character views","openapi":"GET /v1/characters/views","href":"/api-reference/characters/list-views"},{"title":"Mint a character upload URL","openapi":"POST /v1/characters/uploads/init","href":"/api-reference/characters/upload-init"},{"title":"Classify an uploaded ref","openapi":"POST /v1/characters/uploads/classify","href":"/api-reference/characters/upload-classify"},{"title":"Create a character draft","openapi":"POST /v1/characters/drafts","href":"/api-reference/characters/create-draft"},{"title":"Put a photo into a view","openapi":"PUT /v1/characters/{id}/refs/{view}","href":"/api-reference/characters/put-ref"},{"title":"Remove a view from a draft","openapi":"DELETE /v1/characters/{id}/refs/{view}","href":"/api-reference/characters/delete-ref"},{"title":"Build a character","openapi":"POST /v1/characters/{id}/build","href":"/api-reference/characters/build-character"},{"title":"Create a character","openapi":"POST /v1/characters","href":"/api-reference/characters/create-character"},{"title":"List characters","openapi":"GET /v1/characters","href":"/api-reference/characters/list-characters"},{"title":"Retrieve a character","openapi":"GET /v1/characters/{id}","href":"/api-reference/characters/retrieve-character"},{"title":"Update a character","openapi":"PATCH /v1/characters/{id}","href":"/api-reference/characters/update-character"},{"title":"Delete a character","openapi":"DELETE /v1/characters/{id}","href":"/api-reference/characters/delete-character"},{"title":"Regenerate a single ref pose","openapi":"POST /v1/characters/{id}/refs/regenerate","href":"/api-reference/characters/regenerate-ref"},{"title":"Regenerate a view","openapi":"POST /v1/characters/{id}/refs/{view}/regenerate","href":"/api-reference/characters/regenerate-view"},{"title":"Save a reviewing character","openapi":"POST /v1/characters/{id}/save","href":"/api-reference/characters/save-character"},{"title":"Resynthesize a character","openapi":"POST /v1/characters/{id}/resynthesize","href":"/api-reference/characters/resynthesize-character"}]},{"group":"Videos","pages":[{"title":"Create a video","openapi":"POST /v1/videos","href":"/api-reference/videos/create-video"},{"title":"Estimate the credit cost of a video generation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/videos/estimate","href":"/api-reference/public-api-v1/estimate-the-credit-cost-of-a-video-generation"},{"title":"Get the generated video","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/videos/{id}/output","href":"/api-reference/videos-proxy/get-the-generated-video"}]},{"group":"Seedance (raw)","pages":[{"title":"Seedance raw API","href":"/api-reference/seedance/overview"},{"title":"Models \u0026 pricing","href":"/api-reference/seedance/models-and-pricing"},{"title":"Create a task","href":"/api-reference/seedance/create-task"},{"title":"Retrieve a task","href":"/api-reference/seedance/retrieve-task"},{"title":"List tasks","href":"/api-reference/seedance/list-tasks"},{"title":"Cancel or delete a task","href":"/api-reference/seedance/cancel-delete"},{"title":"Differences from the native API","href":"/api-reference/seedance/differences"}]},{"group":"Files","pages":[{"title":"Upload a reference file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/files","href":"/api-reference/public-api-v1/upload-a-reference-file"},{"title":"Get a file (re-mints a fresh 1h signed URL)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/files/{id}","href":"/api-reference/public-api-v1/get-a-file-re-mints-a-fresh-1h-signed-url"},{"title":"Immediately purge a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/files/{id}","href":"/api-reference/public-api-v1/immediately-purge-a-file"}]},{"group":"LoRAs","pages":[{"title":"List available LoRA styles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/loras","href":"/api-reference/public-api-v1/list-available-lora-styles"},{"title":"Get a LoRA style by ID or slug","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/loras/{id}","href":"/api-reference/public-api-v1/get-a-lora-style-by-id-or-slug"},{"title":"List available video models","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/video_loras","href":"/api-reference/public-api-v1/list-available-video-models"},{"title":"Get a video model by ID or slug","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/video_loras/{id}","href":"/api-reference/public-api-v1/get-a-video-model-by-id-or-slug"}]},{"group":"Composition acts","pages":[{"title":"List available composition acts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/actions","href":"/api-reference/public-api-v1/list-available-composition-acts"},{"title":"Get a composition act by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/actions/{id}","href":"/api-reference/public-api-v1/get-a-composition-act-by-id"}]},{"group":"Webhooks","pages":[{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/webhook_endpoints","href":"/api-reference/public-api-v1/register-a-webhook-endpoint"},{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/webhook_endpoints","href":"/api-reference/public-api-v1/list-webhook-endpoints"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/webhook_endpoints/{id}","href":"/api-reference/public-api-v1/get-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /v1/webhook_endpoints/{id}","href":"/api-reference/public-api-v1/update-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /v1/webhook_endpoints/{id}","href":"/api-reference/public-api-v1/delete-a-webhook-endpoint"},{"title":"Fire a synthetic test delivery","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/webhook_endpoints/{id}/test","href":"/api-reference/public-api-v1/fire-a-synthetic-test-delivery"},{"title":"Rotate the signing secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /v1/webhook_endpoints/{id}/rotate_secret","href":"/api-reference/public-api-v1/rotate-the-signing-secret"},{"title":"List delivery attempts for a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/webhook_endpoints/{id}/deliveries","href":"/api-reference/public-api-v1/list-delivery-attempts-for-a-webhook-endpoint"}]},{"group":"Usage analytics","pages":[{"title":"Usage analytics","href":"/api-reference/usage/overview"},{"title":"Usage pagination","href":"/api-reference/usage/pagination"},{"title":"Per-request usage event stream","href":"/api-reference/usage/event-stream"},{"title":"Aggregated usage metrics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/usage","href":"/api-reference/public-api-v1/aggregated-usage-metrics"},{"title":"List credit-ledger events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/usage/events","href":"/api-reference/public-api-v1/list-credit-ledger-events"}]},{"group":"Account","pages":[{"title":"Get your team info","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/team","href":"/api-reference/public-api-v1/get-your-team-info"},{"title":"Get credit balance","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /v1/balance","href":"/api-reference/public-api-v1/get-credit-balance"}]}]},{"group":"Resources","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Estimate the credit cost of an image generation - Aurous Labs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}