POST /v1/characters/drafts creates a character in draft: no credits are charged and nothing is rendered. A draft is the empty shell the builder fills — file your own photos into its views with PUT /v1/characters/{id}/refs/{view}, then call POST /v1/characters/{id}/build to render whatever is still missing.A draft is not usable for generation: POST /v1/images or POST /v1/videos with its character_id returns 400 character_not_ready.Drafts appear in GET /v1/characters alongside everything else; filter with ?status=draft.
Compare with POST /v1/characters, the one-shot create: it charges for all eight views up front and renders them immediately. Use a draft when you want to supply some of the photos yourself and pay only for the views the platform actually renders.
nude or clothed. Omit to take your team’s default. Changeable with PATCHwhile the character is still a draft; fixed once it leaves draft. On teams that always render clothed, an explicit nude returns 400 nudity_not_allowed.
attributes
no
The same attribute object POST /v1/characters takes. Optional here — but a build needs identity, and attributes supply it only for a draft with no uploaded photos at all. If you will upload any photo, one of them must show the face instead. See Build a character.
client_reference_id
no
Your own id, echoed on every read and every character.* webhook for this character. Immutable after create. Max 256 characters.
201 with the full character resource. On a fresh draft:
status is draft.
views[] has eight entries, every one status: "missing".
build.missing_views lists all eight; build.cost_credits is build.per_view_credits × 8 — what a build would charge right now. Every accepted photo you file takes a view off that list and lowers the quote.
Cost: free. A draft renders nothing and charges nothing. You are charged when you build.
Rate limit: bucket characters_post — 30 requests/min sustained, 60 burst per team. Shared with the other cheap character writes (uploads init/classify, PATCH, DELETE, view removal, save).
Idempotency: pass Idempotency-Key (any opaque value, 1–256 chars). Same key + same body within 24h replays the cached response with Aurous-Idempotent-Replayed: true. Same key + different body returns 409 idempotency_key_in_use. See Idempotency.
Body validation failure; param names the offending field.
nudity_not_allowed
400
nudity: "nude" on a team that always renders clothed. param is nudity.
invalid_api_key
401
Missing, malformed, or revoked X-Api-Key.
insufficient_scope
403
The key does not carry the write scope.
idempotency_key_in_use
409
Same Idempotency-Key used with a different body or route.
too_many_requests
429
Burst > 60 or sustained > 30/min.
provider_unavailable
503
Character rendering is paused for your team; Retry-After is set.
These changes ship on the existing 2026-08-26 contract. No Aurous-Version pin isolates them: the version catalogue carries image and video pricing pointers only, not character pricing or the size of the reference set. Pinning an earlier Aurous-Version restores neither the smaller reference set nor the previous price. A character created before 2026-09-14 keeps the references it already has — add either of the two newer views on demand with POST /v1/characters/{id}/refs/{view}/regenerate; every character created on or after that date carries eight.
A draft is free but not inert — it occupies an id and shows up in GET /v1/characters. Clean up the ones you abandon with DELETE /v1/characters/{id}, which hard-deletes a draft. Photos you uploaded are removed when the draft is deleted or purged; a rejected upload is discarded after its 24-hour ticket window.
nudity is only patchable while draft. Decide it here or with PATCH before you build; after the build there is no way to change it but to create a new character.
Sending attributes is not a substitute for a face once you have uploaded anything. If the draft holds any uploaded photo, one of them must clearly show the face — a faceless body photo plus attributes is still 422 build_requires_identity. attributes stand in for a photo only when the draft has no uploads.
Stripe-style idempotency key (1-256 chars). Same key + same canonical-JSON body returns the cached response with Aurous-Idempotent-Replayed: true. Same key against a different route (e.g. previously used on /v1/images) returns 409 invalid_request / idempotency_key_in_use. Replay window is 24 hours. Absent header is treated as non-idempotent (each call processes anew).
Whether this character's reference set is nude or clothed. Immutable once the character leaves draft — set it here, or with PATCH while still a draft. Omit to accept your team's default. On teams that always render clothed an explicit nude returns 400 nudity_not_allowed.
Character attributes. Optional on a draft. They satisfy the build-time identity rule ONLY for a draft with no uploaded photos at all: once the draft holds any uploaded photo, one of those photos must show the face and attributes are not consulted — see POST /v1/characters/{id}/build.
Optional caller-supplied reference, echoed back on GET /v1/characters/{id} and in every character webhook for this character. Use it to correlate the webhook with the originating record in your system (Stripe-style). Immutable after create. Max 256 chars.
Lifecycle state. draft: references are being assembled; nothing has been charged and the character cannot be used for generation. New lifecycle states may be added in future — treat any status other than ready as "not yet usable". synthesizing: references are being built. ready: usable on POST /v1/images — both create flows advance here on their own. reviewing: reached only after POST /:id/resynthesize or POST /:id/build; call POST /:id/save to return to ready. failed: the build failed; error_message carries the reason and POST /:id/build (builder characters) or POST /:id/resynthesize retries. deleted: soft-deleted (filtered out of the list endpoint).
What the reference set is rendered as — nude unless you chose clothed, or — when you omitted nudity — your team's default is clothed. An explicit value always wins. Fixed once the references are built.
Reference images, one per view the character has. A character built today has eight; an older one can have fewer than eight (typically six, some of the oldest four). Do not assume a count — read views[], the canonical read model for new integrations, or build.missing_views. refs[] lists only the references that exist.
One entry per named view, in canonical order — every reference that maps to a named view, keyed by view, plus what is missing or was rejected. A reference from before named views existed (refs[].view is other) appears only in refs[].
Machine-readable failure code from the most recent synthesize/resynthesize attempt. One of synthesis_failed, synthesis_timeout, provider_unavailable — a closed set to switch on, not customer-facing prose. Null when the most recent attempt succeeded (or none has run yet). Set on failed, but NOT failed-exclusive: a failed resynthesize restores the character to its prior working status (reviewing) rather than overwriting a good generation, so a reviewing row can carry a non-null code here — check this field for failure, not status. Cleared on the next resynthesize attempt and on success.
API contract version applied at the time this row was minted (D25 — frozen for replay across future version bumps).
Example:
"2026-08-26"
{"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/characters/create-draft","slug":"/api-reference/characters/create-draft","pageMetadata":{"title":"Create a character draft","description":"Create an empty character in `draft` — free, renders nothing, and is the starting point of the builder.","openapi":"POST /v1/characters/drafts","href":"/api-reference/characters/create-draft"},"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: [\"Create an empty character in \", _jsx(_components.code, {\n children: \"draft\"\n }), \" — free, renders nothing, and is the starting point of the builder.\"]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Note,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /v1/characters/drafts`}),` creates a character in `,_jsx(_components.code,{children:`draft`}),`: `,_jsx(_components.strong,{children:`no credits are charged and nothing is rendered`}),`. A draft is the empty shell the builder fills — file your own photos into its views with `,_jsx(_components.a,{href:`/api-reference/characters/put-ref`,children:_jsx(_components.code,{children:`PUT /v1/characters/{id}/refs/{view}`})}),`, then call `,_jsx(_components.a,{href:`/api-reference/characters/build-character`,children:_jsx(_components.code,{children:`POST /v1/characters/{id}/build`})}),` to render whatever is still missing.`]}),`\n`,_jsxs(_components.p,{children:[`A draft is `,_jsx(_components.strong,{children:`not`}),` usable for generation: `,_jsx(_components.code,{children:`POST /v1/images`}),` or `,_jsx(_components.code,{children:`POST /v1/videos`}),` with its `,_jsx(_components.code,{children:`character_id`}),` returns `,_jsx(_components.code,{children:`400 character_not_ready`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Drafts appear in `,_jsx(_components.a,{href:`/api-reference/characters/list-characters`,children:_jsx(_components.code,{children:`GET /v1/characters`})}),` alongside everything else; filter with `,_jsx(_components.code,{children:`?status=draft`}),`.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Compare with `,_jsx(_components.a,{href:`/api-reference/characters/create-character`,children:_jsx(_components.code,{children:`POST /v1/characters`})}),`, the one-shot create: it charges for all eight views up front and renders them immediately. Use a draft when you want to supply some of the photos yourself and pay only for the views the platform actually renders.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use`,children:`When to use`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You have your own photos for some views and want the platform to render only the rest.`}),`\n`,_jsx(_components.li,{children:`You are building an upload UI and want a real character id to attach photos to before anything is charged.`}),`\n`,_jsx(_components.li,{children:`You want to stage a character now and decide later whether to build it — an unbuilt draft costs nothing.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`examples`,children:`Examples`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.aurous-labs.com/v1/characters/drafts`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Api-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$AUROUS_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: $(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"name\": \"Aurora\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"nudity\": \"clothed\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"client_reference_id\": \"bot_8472\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`17`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` draft`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.aurous-labs.com/v1/characters/drafts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"POST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Api-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`AUROUS_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"application/json\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` crypto`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`randomUUID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` name:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Aurora\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` nudity:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"clothed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client_reference_id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"bot_8472\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`then`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`r`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` r`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`());`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`draft`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// \"draft\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`draft`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`views`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 8 — every slot \"missing\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`draft`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`missing_views`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// all eight view names`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`12`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os, uuid, requests`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`draft `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` requests.post(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.aurous-labs.com/v1/characters/drafts\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` headers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Api-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"AUROUS_API_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(uuid.uuid4()),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Aurora\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"nudity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"clothed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"client_reference_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"bot_8472\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).json()`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(draft[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`len`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(draft[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"views\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# draft 8`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`body`,children:`Body`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{style:{textAlign:`right`},children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`name`})}),_jsx(_components.td,{style:{textAlign:`right`},children:`yes`}),_jsx(_components.td,{children:`Display name, 1–80 characters.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`nudity`})}),_jsx(_components.td,{style:{textAlign:`right`},children:`no`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`nude`}),` or `,_jsx(_components.code,{children:`clothed`}),`. Omit to take your team’s default. Changeable with `,_jsx(_components.code,{children:`PATCH`}),` `,_jsxs(_components.strong,{children:[`while the character is still a `,_jsx(_components.code,{children:`draft`})]}),`; fixed once it leaves `,_jsx(_components.code,{children:`draft`}),`. On teams that always render clothed, an explicit `,_jsx(_components.code,{children:`nude`}),` returns `,_jsx(_components.code,{children:`400 nudity_not_allowed`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`attributes`})}),_jsx(_components.td,{style:{textAlign:`right`},children:`no`}),_jsxs(_components.td,{children:[`The same attribute object `,_jsx(_components.a,{href:`/api-reference/characters/create-character`,children:_jsx(_components.code,{children:`POST /v1/characters`})}),` takes. Optional here — but a build needs identity, and `,_jsx(_components.code,{children:`attributes`}),` supply it `,_jsx(_components.strong,{children:`only for a draft with no uploaded photos at all`}),`. If you will upload any photo, one of them must show the face instead. See `,_jsx(_components.a,{href:`/api-reference/characters/build-character`,children:`Build a character`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`client_reference_id`})}),_jsx(_components.td,{style:{textAlign:`right`},children:`no`}),_jsxs(_components.td,{children:[`Your own id, echoed on every read and every `,_jsx(_components.code,{children:`character.*`}),` webhook for this character. Immutable after create. Max 256 characters.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`201`}),` with the full character resource. On a fresh draft:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`draft`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`views[]`}),` has `,_jsx(_components.strong,{children:`eight`}),` entries, every one `,_jsx(_components.code,{children:`status: \"missing\"`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`build.missing_views`}),` lists all eight; `,_jsx(_components.code,{children:`build.cost_credits`}),` is `,_jsx(_components.code,{children:`build.per_view_credits`}),` × 8 — what a build would charge `,_jsx(_components.em,{children:`right now`}),`. Every accepted photo you file takes a view off that list and lowers the quote.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cost`}),`: free. A draft renders nothing and charges nothing. You are charged when you `,_jsx(_components.a,{href:`/api-reference/characters/build-character`,children:`build`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rate limit`}),`: bucket `,_jsx(_components.code,{children:`characters_post`}),` — 30 requests/min sustained, 60 burst per team. Shared with the other cheap character writes (uploads init/classify, `,_jsx(_components.code,{children:`PATCH`}),`, `,_jsx(_components.code,{children:`DELETE`}),`, view removal, save).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Idempotency`}),`: pass `,_jsx(_components.code,{children:`Idempotency-Key`}),` (any opaque value, 1–256 chars). Same key + same body within 24h replays the cached response with `,_jsx(_components.code,{children:`Aurous-Idempotent-Replayed: true`}),`. Same key + different body returns `,_jsx(_components.code,{children:`409 idempotency_key_in_use`}),`. See `,_jsx(_components.a,{href:`/idempotency`,children:`Idempotency`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`HTTP`}),_jsx(_components.th,{children:`When`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`invalid_request`}),` / `,_jsx(_components.code,{children:`missing_field`}),` / `,_jsx(_components.code,{children:`invalid_format`})]}),_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsxs(_components.td,{children:[`Body validation failure; `,_jsx(_components.code,{children:`param`}),` names the offending field.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`nudity_not_allowed`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`nudity: \"nude\"`}),` on a team that always renders clothed. `,_jsx(_components.code,{children:`param`}),` is `,_jsx(_components.code,{children:`nudity`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_api_key`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsxs(_components.td,{children:[`Missing, malformed, or revoked `,_jsx(_components.code,{children:`X-Api-Key`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`insufficient_scope`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsxs(_components.td,{children:[`The key does not carry the `,_jsx(_components.code,{children:`write`}),` scope.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`idempotency_key_in_use`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsxs(_components.td,{children:[`Same `,_jsx(_components.code,{children:`Idempotency-Key`}),` used with a different body or route.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`too_many_requests`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`429`}),_jsx(_components.td,{children:`Burst > 60 or sustained > 30/min.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`provider_unavailable`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsxs(_components.td,{children:[`Character rendering is paused for your team; `,_jsx(_components.code,{children:`Retry-After`}),` is set.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`These changes ship on the existing `,_jsx(_components.code,{children:`2026-08-26`}),` contract. No `,_jsx(_components.code,{children:`Aurous-Version`}),` pin isolates them: the version catalogue carries image and video pricing pointers only, not character pricing or the size of the reference set. Pinning an earlier `,_jsx(_components.code,{children:`Aurous-Version`}),` restores neither the smaller reference set nor the previous price. A character created before 2026-09-14 keeps the references it already has — add either of the two newer views on demand with `,_jsx(_components.a,{href:`/api-reference/characters/regenerate-view`,children:_jsx(_components.code,{children:`POST /v1/characters/{id}/refs/{view}/regenerate`})}),`; every character created on or after that date carries eight.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`common-pitfalls`,children:`Common pitfalls`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A draft is free but not inert — it occupies an id and shows up in `,_jsx(_components.code,{children:`GET /v1/characters`}),`. Clean up the ones you abandon with `,_jsx(_components.a,{href:`/api-reference/characters/delete-character`,children:_jsx(_components.code,{children:`DELETE /v1/characters/{id}`})}),`, which `,_jsx(_components.strong,{children:`hard-deletes`}),` a draft. Photos you uploaded are removed when the draft is deleted or purged; a rejected upload is discarded after its 24-hour ticket window.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`nudity`}),` is only patchable while `,_jsx(_components.code,{children:`draft`}),`. Decide it here or with `,_jsx(_components.code,{children:`PATCH`}),` before you build; after the build there is no way to change it but to create a new character.`]}),`\n`,_jsxs(_components.li,{children:[`Sending `,_jsx(_components.code,{children:`attributes`}),` is `,_jsx(_components.strong,{children:`not`}),` a substitute for a face once you have uploaded anything. If the draft holds any uploaded photo, one of them must clearly show the face — a faceless body photo plus `,_jsx(_components.code,{children:`attributes`}),` is still `,_jsx(_components.a,{href:`/errors#build_requires_identity`,children:_jsx(_components.code,{children:`422 build_requires_identity`})}),`. `,_jsx(_components.code,{children:`attributes`}),` stand in for a photo only when the draft has no uploads.`]}),`\n`,_jsxs(_components.li,{children:[`Read the view vocabulary from `,_jsx(_components.a,{href:`/api-reference/characters/list-views`,children:_jsx(_components.code,{children:`GET /v1/characters/views`})}),` and the slot semantics from `,_jsx(_components.a,{href:`/api-reference/characters/views-and-lifecycle`,children:`Views and lifecycle`}),`; don’t hardcode the eight names.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a character draft","description":"Create an empty character in `draft` — free, renders nothing, and is the starting point of the builder.","openapi":"POST /v1/characters/drafts","href":"/api-reference/characters/create-draft"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"When to use","slug":"when-to-use","depth":2,"children":[]},{"title":"Examples","slug":"examples","depth":2,"children":[]},{"title":"Body","slug":"body","depth":2,"children":[]},{"title":"Response","slug":"response","depth":2,"children":[]},{"title":"Limits","slug":"limits","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]},{"title":"Common pitfalls","slug":"common-pitfalls","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Create an empty character in `draft` — free, renders nothing, and is the starting point of the builder.","operationId":"V1CharactersController_createDraft","parameters":["2e27deb3-dac2-4646-aab0-9d3b3221a9d8","fa59aa0d-fb81-4c9b-900c-00b02b5ffc18"],"requestBody":"fbf372ed-c951-4965-9dc0-9b4c50073b5c","responses":{"201":"e1b3a532-1093-4d5c-8494-65aa12bd3414","400":"dd69fc2d-3b32-4336-9e7b-a915231aa184","401":"4ee73827-9d68-4d2b-a1e8-4b7210dd4067","403":"c5e31150-249f-4658-9611-f266d1e63e43","409":"95212113-6184-4807-b04c-8f16a2e18fce","429":"23aab910-c3d2-48f9-9321-447852e7e5cc","503":"cc6b36fc-8e1a-4171-8838-b268cce28559"},"security":["be2b03c7-a652-469e-be89-19683933d331"],"summary":"Create a character draft","tags":["Public API (v1) — Characters"],"method":"post","type":"path","servers":["3c5b35fe-5556-4c2f-b6fe-ccd0ce11e7d4","06ffff55-b13c-4345-afa1-017ab3f24f1d"],"path":"/v1/characters/drafts","baseUrlOptions":["https://api.aurous-labs.com","https://api.preprod.aurous-labs.com"],"title":"Create a character draft","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"2e27deb3-dac2-4646-aab0-9d3b3221a9d8":{"name":"Idempotency-Key","in":"header","description":"Stripe-style idempotency key (1-256 chars). Same key + same canonical-JSON body returns the cached response with `Aurous-Idempotent-Replayed: true`. Same key against a different route (e.g. previously used on /v1/images) returns `409 invalid_request / idempotency_key_in_use`. Replay window is 24 hours. Absent header is treated as non-idempotent (each call processes anew).","required":false,"schema":{"type":"string","isRequired":false,"description":"Stripe-style idempotency key (1-256 chars). Same key + same canonical-JSON body returns the cached response with `Aurous-Idempotent-Replayed: true`. Same key against a different route (e.g. previously used on /v1/images) returns `409 invalid_request / idempotency_key_in_use`. Replay window is 24 hours. Absent header is treated as non-idempotent (each call processes anew).","uniqueKey":"","typeLabel":"string"}},"fa59aa0d-fb81-4c9b-900c-00b02b5ffc18":{"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":{"name":{"type":"string","description":"Display name for the character (1-80 chars).","example":"Aurora the Adventurer","minLength":1,"maxLength":80,"isRequired":true,"uniqueKey":"name","typeLabel":"string"},"nudity":{"type":"string","description":"Whether this character's reference set is nude or clothed. Immutable once the character leaves `draft` — set it here, or with PATCH while still a draft. Omit to accept your team's default. On teams that always render clothed an explicit `nude` returns 400 `nudity_not_allowed`.","enum":["nude","clothed"],"example":"clothed","uniqueKey":"nudity","typeLabel":"enum\u003cstring>"},"attributes":{"type":"object","description":"Character attributes. Optional on a draft. They satisfy the build-time identity rule ONLY for a draft with no uploaded photos at all: once the draft holds any uploaded photo, one of those photos must show the face and `attributes` are not consulted — see POST /v1/characters/{id}/build.","properties":{"gender":{"type":"string","maxLength":40,"example":"female","uniqueKey":"attributes.gender","typeLabel":"string"},"age":{"type":"number","minimum":18,"maximum":120,"example":28,"uniqueKey":"attributes.age","typeLabel":"number"},"ethnicity":{"type":"string","maxLength":40,"example":"east-asian","uniqueKey":"attributes.ethnicity","typeLabel":"string"},"hair_color":{"type":"string","maxLength":40,"example":"black","uniqueKey":"attributes.hair_color","typeLabel":"string"},"hair_style":{"type":"string","maxLength":40,"example":"shoulder-length straight","uniqueKey":"attributes.hair_style","typeLabel":"string"},"eye_color":{"type":"string","maxLength":40,"example":"brown","uniqueKey":"attributes.eye_color","typeLabel":"string"},"body_type":{"type":"string","maxLength":40,"example":"athletic","uniqueKey":"attributes.body_type","typeLabel":"string"},"additional_details":{"type":"string","maxLength":500,"description":"Free-text catch-all for traits that do not fit the typed fields above. Unlike the typed fields, this applies on BOTH flows: on synthesize (`generate: true`) it is part of the full attribute description; on the upload flow it is the only attribute applied to generation (the typed fields are metadata-only there). On the upload flow treat it as a best-effort hint — your uploaded reference images are the primary signal, so supply a reference image for any trait that must be guaranteed. New typed fields land in v1.1 schema bumps.","example":"small scar above right eyebrow; warm smile","uniqueKey":"attributes.additional_details","typeLabel":"string"}},"uniqueKey":"attributes","typeLabel":"object"},"client_reference_id":{"type":"string","description":"Optional caller-supplied reference, echoed back on GET /v1/characters/{id} and in every character webhook for this character. Use it to correlate the webhook with the originating record in your system (Stripe-style). Immutable after create. Max 256 chars.","maxLength":256,"example":"bot_8472","uniqueKey":"client_reference_id","typeLabel":"string"}},"required":["name"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"Aurora the Adventurer","nudity":"clothed","attributes":{"gender":"female","age":28,"ethnicity":"east-asian","hair_color":"black","hair_style":"shoulder-length straight","eye_color":"brown","body_type":"athletic","additional_details":"small scar above right eyebrow; warm smile"},"client_reference_id":"bot_8472"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"e1b3a532-1093-4d5c-8494-65aa12bd3414":{"description":"Draft created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Opaque character ID.","example":"char_01HXMQ7Z3K8Y2NABCDEFGHJKMR","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"object":{"type":"string","description":"Discriminator","example":"character","enum":["character"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Display name.","example":"Aurora the Adventurer","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"status":{"type":"string","description":"Lifecycle state. `draft`: references are being assembled; nothing has been charged and the character cannot be used for generation. New lifecycle states may be added in future — treat any status other than `ready` as \"not yet usable\". `synthesizing`: references are being built. `ready`: usable on POST /v1/images — both create flows advance here on their own. `reviewing`: reached only after POST /:id/resynthesize or POST /:id/build; call POST /:id/save to return to `ready`. `failed`: the build failed; `error_message` carries the reason and POST /:id/build (builder characters) or POST /:id/resynthesize retries. `deleted`: soft-deleted (filtered out of the list endpoint).","example":"ready","enum":["draft","synthesizing","reviewing","ready","failed","deleted"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"nudity":{"type":"string","description":"What the reference set is rendered as — `nude` unless you chose `clothed`, or — when you omitted `nudity` — your team's default is `clothed`. An explicit value always wins. Fixed once the references are built.","enum":["nude","clothed"],"example":"clothed","isRequired":true,"uniqueKey":"nudity","typeLabel":"enum\u003cstring>"},"refs":{"description":"Reference images, one per view the character has. A character built today has eight; an older one can have fewer than eight (typically six, some of the oldest four). Do not assume a count — read `views[]`, the canonical read model for new integrations, or `build.missing_views`. `refs[]` lists only the references that exist.","type":"array","items":{"type":"object","properties":{"pose":{"type":"string","description":"Pose label for this reference image.","enum":["portrait","front","side","back","other"],"example":"front","isRequired":true,"uniqueKey":"refs.items.[INDEX].pose","typeLabel":"enum\u003cstring>"},"view":{"type":"string","description":"One of the eight named views, or `other` for rows created before named views existed. Prefer `view` over `pose` — `pose` is the original five-value label kept for compatibility.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":"full_front","isRequired":true,"uniqueKey":"refs.items.[INDEX].view","typeLabel":"enum\u003cstring>"},"source":{"type":"string","description":"`uploaded` — a photo you supplied for this view with PUT /v1/characters/{id}/refs/{view}, used as-is and never re-rendered (a build skips it, and a per-view regenerate refuses it with 400 `reference_uploaded`). `generated` — rendered by the platform, whether by a create, a build or a regenerate. Both values occur today.","enum":["uploaded","generated"],"example":"generated","isRequired":true,"uniqueKey":"refs.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"url":{"type":"string","description":"Time-limited signed URL for the ref image, on the platform's storage host. TTL is 24h — re-fetch the character (GET /v1/characters/{id}) to mint a fresh URL set when one expires. Treat the host as opaque and do not allowlist by hostname: it is not the API host and it is not part of the contract. Download the bytes, or re-read the character for a fresh URL.","example":"https://storage-host.example/storage/v1/object/sign/characters/full_front.jpg?token=eyJhbGciOi...","isRequired":true,"uniqueKey":"refs.items.[INDEX].url","typeLabel":"string"}},"required":["pose","view","source","url"],"uniqueKey":"refs.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"refs","typeLabel":"object[]"},"views":{"description":"One entry per named view, in canonical order — every reference that maps to a named view, keyed by view, plus what is missing or was rejected. A reference from before named views existed (`refs[].view` is `other`) appears only in `refs[]`.","type":"array","items":{"type":"object","properties":{"view":{"type":"string","description":"The view this slot represents. Always one of the eight; never `other`.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right"],"example":"full_front","isRequired":true,"uniqueKey":"views.items.[INDEX].view","typeLabel":"enum\u003cstring>"},"status":{"type":"string","description":"Slot state. `generated` — holds a platform render. `uploaded` — holds a photo you supplied with PUT /v1/characters/{id}/refs/{view}. `rejected` — your most recent photo for this slot was refused (see `reason`) and no accepted reference took its place; it is surfaced while the character is a `draft` and expires 24 h after the attempt, at which point the slot reads `missing` again. `missing` — empty; it is what a build renders. This is an OPEN set: new states may be added, so treat an unrecognized value as `missing`.","enum":["uploaded","generated","rejected","missing"],"example":"generated","isRequired":true,"uniqueKey":"views.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"url":{"oneOf":[{"type":"string","description":"Time-limited signed URL (24 h TTL) on the platform's storage host when `status` is `uploaded` or `generated`; `null` otherwise. Treat the host as opaque and do not allowlist by hostname — it is not the API host and it is not part of the contract.","example":null,"uniqueKey":"views.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Time-limited signed URL (24 h TTL) on the platform's storage host when `status` is `uploaded` or `generated`; `null` otherwise. Treat the host as opaque and do not allowlist by hostname — it is not the API host and it is not part of the contract.","example":null,"uniqueKey":"views.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].url","typeLabel":"string | null"},"nudity":{"oneOf":[{"type":"string","description":"Whether this specific reference shows nudity. On a `clothed` character EVERY view reads `clothed`, uploaded or generated — the read model reports the set's rendering intent there. On a `nude` character a generated view reads `nude` and an UPLOADED view reports what the photo itself shows, which is how a mixed set arises: a clothed body photo filed onto a `nude` character is accepted deliberately and reads `clothed` while the character's own `nudity` stays `nude`. Compare the two to detect a mixed set. (The reverse is refused at intake: a nude photo on a `clothed` character is 422 `reference_unfit` with `reason: \"nudity_mismatch\"` — except on `head_front`, which carries no nudity rule.) `null` when the slot has no reference.","enum":["nude","clothed"],"example":"clothed","uniqueKey":"views.items.[INDEX].nudity.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Whether this specific reference shows nudity. On a `clothed` character EVERY view reads `clothed`, uploaded or generated — the read model reports the set's rendering intent there. On a `nude` character a generated view reads `nude` and an UPLOADED view reports what the photo itself shows, which is how a mixed set arises: a clothed body photo filed onto a `nude` character is accepted deliberately and reads `clothed` while the character's own `nudity` stays `nude`. Compare the two to detect a mixed set. (The reverse is refused at intake: a nude photo on a `clothed` character is 422 `reference_unfit` with `reason: \"nudity_mismatch\"` — except on `head_front`, which carries no nudity rule.) `null` when the slot has no reference.","enum":["nude","clothed"],"example":"clothed","uniqueKey":"views.items.[INDEX].nudity.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].nudity","typeLabel":"enum\u003cstring> | null"},"reason":{"oneOf":[{"type":"string","description":"Why the most recent upload for this slot was refused. Present only when `status` is `rejected`. The same set as the `reason` on a 422 `reference_unfit`, plus the two byte-level codes (`invalid_format`, `value_out_of_range`) a photo can be refused for before the fit rules run — those two are error codes rather than fit reasons, so the 422 itself carries no `reason` for them. Branch on the value and treat anything unrecognized as a generic refusal.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch","invalid_format","value_out_of_range"],"example":null,"uniqueKey":"views.items.[INDEX].reason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Why the most recent upload for this slot was refused. Present only when `status` is `rejected`. The same set as the `reason` on a 422 `reference_unfit`, plus the two byte-level codes (`invalid_format`, `value_out_of_range`) a photo can be refused for before the fit rules run — those two are error codes rather than fit reasons, so the 422 itself carries no `reason` for them. Branch on the value and treat anything unrecognized as a generic refusal.","enum":["too_small","extreme_aspect","no_person","multiple_people","no_face","wrong_view","nudity_mismatch","invalid_format","value_out_of_range"],"example":null,"uniqueKey":"views.items.[INDEX].reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].reason","typeLabel":"enum\u003cstring> | null"},"detected_view":{"oneOf":[{"type":"string","description":"Which view the refused photo actually looked like. Present only when `reason` is `wrong_view` — offer the customer that slot instead of asking for a new photo: the same upload ticket can be re-sent to that view without re-uploading. `null` on every other slot.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":null,"uniqueKey":"views.items.[INDEX].detected_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Which view the refused photo actually looked like. Present only when `reason` is `wrong_view` — offer the customer that slot instead of asking for a new photo: the same upload ticket can be re-sent to that view without re-uploading. `null` on every other slot.","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right","other"],"example":null,"uniqueKey":"views.items.[INDEX].detected_view.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].detected_view","typeLabel":"enum\u003cstring> | null"},"made_from":{"oneOf":[{"description":"Which of your references this view was rendered from, by view name. `null` for a view you uploaded (it was not rendered from anything) and for a `missing` or `rejected` slot; `[]` for a generated view whose provenance was not recorded (rows predating provenance). Otherwise the view names it was conditioned on.","example":["head_front","full_front"],"type":"array","items":{"type":"string","uniqueKey":"views.items.[INDEX].made_from.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"views.items.[INDEX].made_from.oneOf.0","typeLabel":"string[]"},{"description":"Which of your references this view was rendered from, by view name. `null` for a view you uploaded (it was not rendered from anything) and for a `missing` or `rejected` slot; `[]` for a generated view whose provenance was not recorded (rows predating provenance). Otherwise the view names it was conditioned on.","example":["head_front","full_front"],"type":"null","items":{"type":"string"},"uniqueKey":"views.items.[INDEX].made_from.oneOf.1","typeLabel":"null"}],"uniqueKey":"views.items.[INDEX].made_from","typeLabel":"string[] | null"}},"required":["view","status"],"uniqueKey":"views.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"views","typeLabel":"object[]"},"build":{"type":"object","description":"What a build would render and cost right now. Always present.","required":["missing_views","cost_credits","per_view_credits"],"properties":{"missing_views":{"type":"array","description":"Views with no reference, in canonical view order — what a build (or the equivalent per-view regenerates) would render right now.","example":["full_front","full_right"],"items":{"type":"string","enum":["head_front","upper_front","lower_front","upper_back","lower_back","full_left","full_front","full_right"],"uniqueKey":"build.missing_views.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"build.missing_views","typeLabel":"enum\u003cstring>[]"},"cost_credits":{"type":"number","description":"Credits the next build (or the equivalent per-view regenerates) will charge: `per_view_credits` × `missing_views.length`. Server-computed, and derived from the references that exist RIGHT NOW — so it is meaningful once the character is `ready` or `reviewing`. While it is `synthesizing` no view has been persisted yet, so this quotes every view still to come, not the remaining work.","isRequired":true,"uniqueKey":"build.cost_credits","typeLabel":"number"},"per_view_credits":{"type":"number","description":"Current price of one generated view, in credits (also the per-view regenerate price). Read it; never hard-code it — it is configuration, not a constant. On a `character.completed` webhook payload a `0` here means the price could not be read at the moment the event was emitted, not that views are free — re-read `GET /v1/characters/{id}` for the live value.","isRequired":true,"uniqueKey":"build.per_view_credits","typeLabel":"number"}},"isRequired":true,"uniqueKey":"build","typeLabel":"object"},"created_at":{"type":"string","description":"Creation timestamp (ISO 8601).","example":"2026-05-08T10:00:00Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string"},"updated_at":{"type":"string","description":"Last-update timestamp (ISO 8601).","example":"2026-05-08T10:00:00Z","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string"},"client_reference_id":{"oneOf":[{"type":"string","description":"Caller-supplied reference echoed back (the value sent on create). Null if unset.","example":"bot_8472","uniqueKey":"client_reference_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Caller-supplied reference echoed back (the value sent on create). Null if unset.","example":"bot_8472","uniqueKey":"client_reference_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"client_reference_id","typeLabel":"string | null"},"attributes":{"oneOf":[{"type":"object","description":"Character attributes. Null when unset.","properties":{"gender":{"oneOf":[{"type":"string","example":"female","uniqueKey":"attributes.oneOf.0.gender.oneOf.0","typeLabel":"string"},{"type":"null","example":"female","uniqueKey":"attributes.oneOf.0.gender.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.gender","typeLabel":"string | null"},"age":{"oneOf":[{"type":"number","example":28,"uniqueKey":"attributes.oneOf.0.age.oneOf.0","typeLabel":"number"},{"type":"null","example":28,"uniqueKey":"attributes.oneOf.0.age.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.age","typeLabel":"number | null"},"ethnicity":{"oneOf":[{"type":"string","example":"east-asian","uniqueKey":"attributes.oneOf.0.ethnicity.oneOf.0","typeLabel":"string"},{"type":"null","example":"east-asian","uniqueKey":"attributes.oneOf.0.ethnicity.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.ethnicity","typeLabel":"string | null"},"hair_color":{"oneOf":[{"type":"string","example":"black","uniqueKey":"attributes.oneOf.0.hair_color.oneOf.0","typeLabel":"string"},{"type":"null","example":"black","uniqueKey":"attributes.oneOf.0.hair_color.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.hair_color","typeLabel":"string | null"},"hair_style":{"oneOf":[{"type":"string","example":"shoulder-length straight","uniqueKey":"attributes.oneOf.0.hair_style.oneOf.0","typeLabel":"string"},{"type":"null","example":"shoulder-length straight","uniqueKey":"attributes.oneOf.0.hair_style.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.hair_style","typeLabel":"string | null"},"eye_color":{"oneOf":[{"type":"string","example":"brown","uniqueKey":"attributes.oneOf.0.eye_color.oneOf.0","typeLabel":"string"},{"type":"null","example":"brown","uniqueKey":"attributes.oneOf.0.eye_color.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.eye_color","typeLabel":"string | null"},"body_type":{"oneOf":[{"type":"string","example":"athletic","uniqueKey":"attributes.oneOf.0.body_type.oneOf.0","typeLabel":"string"},{"type":"null","example":"athletic","uniqueKey":"attributes.oneOf.0.body_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.body_type","typeLabel":"string | null"},"additional_details":{"oneOf":[{"type":"string","description":"Free-text catch-all for attributes outside the typed fields.","example":"small scar above right eyebrow; warm smile","uniqueKey":"attributes.oneOf.0.additional_details.oneOf.0","typeLabel":"string"},{"type":"null","description":"Free-text catch-all for attributes outside the typed fields.","example":"small scar above right eyebrow; warm smile","uniqueKey":"attributes.oneOf.0.additional_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes.oneOf.0.additional_details","typeLabel":"string | null"}},"uniqueKey":"attributes.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"attributes.oneOf.1","typeLabel":"null"}],"uniqueKey":"attributes","typeLabel":"object | null"},"error_message":{"oneOf":[{"type":"string","description":"Machine-readable failure code from the most recent synthesize/resynthesize attempt. One of `synthesis_failed`, `synthesis_timeout`, `provider_unavailable` — a closed set to switch on, not customer-facing prose. Null when the most recent attempt succeeded (or none has run yet). Set on `failed`, but NOT failed-exclusive: a failed *resynthesize* restores the character to its prior working status (`reviewing`) rather than overwriting a good generation, so a `reviewing` row can carry a non-null code here — check this field for failure, not `status`. Cleared on the next resynthesize attempt and on success.","example":null,"uniqueKey":"error_message.oneOf.0","typeLabel":"string"},{"type":"null","description":"Machine-readable failure code from the most recent synthesize/resynthesize attempt. One of `synthesis_failed`, `synthesis_timeout`, `provider_unavailable` — a closed set to switch on, not customer-facing prose. Null when the most recent attempt succeeded (or none has run yet). Set on `failed`, but NOT failed-exclusive: a failed *resynthesize* restores the character to its prior working status (`reviewing`) rather than overwriting a good generation, so a `reviewing` row can carry a non-null code here — check this field for failure, not `status`. Cleared on the next resynthesize attempt and on success.","example":null,"uniqueKey":"error_message.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_message","typeLabel":"string | null"},"aurous_version":{"type":"string","description":"API contract version applied at the time this row was minted (D25 — frozen for replay across future version bumps).","example":"2026-08-26","uniqueKey":"aurous_version","typeLabel":"string"}},"required":["id","object","name","status","nudity","refs","views","build","created_at","updated_at"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"char_01HXMQ7Z3K8Y2NABCDEFGHJKMR","object":"character","name":"Aurora the Adventurer","status":"ready","nudity":"clothed","refs":[{"pose":"front","view":"full_front","source":"generated","url":"https://storage-host.example/storage/v1/object/sign/characters/full_front.jpg?token=eyJhbGciOi..."}],"views":[{"view":"full_front","status":"generated","url":null,"nudity":"clothed","reason":null,"detected_view":null,"made_from":["head_front","full_front"]}],"build":{"missing_views":["full_front","full_right"],"cost_credits":123,"per_view_credits":123},"created_at":"2026-05-08T10:00:00Z","updated_at":"2026-05-08T10:00:00Z","client_reference_id":"bot_8472","attributes":{"gender":"female","age":28,"ethnicity":"east-asian","hair_color":"black","hair_style":"shoulder-length straight","eye_color":"brown","body_type":"athletic","additional_details":"small scar above right eyebrow; warm smile"},"error_message":null,"aurous_version":"2026-08-26"}}},"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}},"Aurous-Idempotent-Replayed":{"description":"Present (literal `true`) when this response was served from a stored idempotent replay — the same `Idempotency-Key` + canonical body was seen within the 24h window and the original response is returned WITHOUT re-executing (no second charge, no second task). Absent on the first (fresh) execution and on any request sent without an `Idempotency-Key`. Only on the idempotency-aware create routes.","schema":{"type":"string","enum":["true"],"example":"true"}}},"exampleType":"generated"},"dd69fc2d-3b32-4336-9e7b-a915231aa184":{"description":"Validation error, or `nudity: \"nude\"` was requested on a team that always renders clothed (code: nudity_not_allowed, param: nudity)","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"},"4ee73827-9d68-4d2b-a1e8-4b7210dd4067":{"description":"Unauthorized","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"},"c5e31150-249f-4658-9611-f266d1e63e43":{"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"},"95212113-6184-4807-b04c-8f16a2e18fce":{"description":"Idempotency-Key reuse with a different body","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"},"23aab910-c3d2-48f9-9321-447852e7e5cc":{"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"},"cc6b36fc-8e1a-4171-8838-b268cce28559":{"description":"Character rendering is paused for this team (`provider_unavailable`). Nothing was charged and the character keeps the status it had. Retryable — honour 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":{"be2b03c7-a652-469e-be89-19683933d331":{"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":"Create a character draft - Aurous Labs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-17T15:24:41.664Z","originalFileLocation":"api-reference/characters/create-draft.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=\"Create an empty character in draft — free, renders nothing, and is the starting point of the builder.\">\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=\"Create a character draft - Aurous Labs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create an empty character in draft — free, renders nothing, and is the starting point of the builder.\">\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/characters/create-draft\">\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=Characters\u0026amp;title=Create+a+character+draft\u0026amp;description=Create+an+empty+character+in+%60draft%60+%E2%80%94+free%2C+renders+nothing%2C+and+is+the+starting+point+of+the+builder.\u0026amp;theme=a84e348be4cda03ca3be04c0\u0026amp;signature=9f8b1f37deaad64d4fe622aa1c6ea5a099c3906a6bddf610357ae516b1518f92\">\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=\"Create a character draft - Aurous Labs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create an empty character in draft — free, renders nothing, and is the starting point of the builder.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mayatech.mintlify.app/_mintlify/api/og/v2?division=Characters\u0026amp;title=Create+a+character+draft\u0026amp;description=Create+an+empty+character+in+%60draft%60+%E2%80%94+free%2C+renders+nothing%2C+and+is+the+starting+point+of+the+builder.\u0026amp;theme=a84e348be4cda03ca3be04c0\u0026amp;signature=9f8b1f37deaad64d4fe622aa1c6ea5a099c3906a6bddf610357ae516b1518f92\">\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/characters/create-draft\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/characters/create-draft.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/characters/create-draft#webpage\",\"url\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft\",\"name\":\"Create a character draft\",\"description\":\"Create an empty character in draft — free, renders nothing, and is the starting point of the builder.\",\"dateModified\":\"2026-09-17T15:24:41.664Z\",\"isPartOf\":{\"@id\":\"https://docs.aurous-labs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.aurous-labs.com/api-reference/openapi\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Characters\",\"item\":\"https://docs.aurous-labs.com/api-reference/characters/views-and-lifecycle\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a character draft\",\"item\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft#apireference\",\"headline\":\"Create a character draft\",\"name\":\"Create a character draft\",\"description\":\"Create an empty character in draft — free, renders nothing, and is the starting point of the builder.\",\"url\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft\",\"mainEntityOfPage\":{\"@id\":\"https://docs.aurous-labs.com/api-reference/characters/create-draft#webpage\"},\"dateModified\":\"2026-09-17T15:24:41.664Z\",\"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","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","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","description":"Detect the pose of an image you uploaded via /v1/characters/uploads/init.","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","description":"File one of your own photos as the reference for one named view, after a fit check.","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":"Create a character draft - 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"]}