Duplicate a canvas and optionally apply edits with AI.
Always returns a Task(kind="remix") envelope — uniform across the
prompted and promptless paths. The promptless path completes
synchronously and returns status="succeeded" inline, so the returned
id is a synthetic (non-queryable) UUID and retry_after_ms is
None. The prompted path returns the in-flight task envelope; callers
poll GET /v1/tasks/{id} to observe completion.
Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.
Prefixed cvs_ ID of the source canvas to duplicate. The source canvas may belong to a different team. The copy is created in the team specified by team_id.
Prefixed bk_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working), as is the prefix over a UUID body (bk_00000000-0000-4000-8000-000000000000). All three are permanent, supported inputs; only the canonical form is ever emitted.
If true, no brand kit is applied — every brand-kit source is suppressed, including the canvas's own kit, the team default, and any explicit brand_kit_id override. Use only when the design must be unbranded; to merely leave the source canvas's kit alone, omit brand_kit_id instead.
Response
Successful Response
Canonical wire-format for every async design operation.
All consumers -- REST, webhooks, SSE, MCP -- serialize through
Task.from_db() so the shape is always consistent.
Number of attempts STARTED (claimed by a worker) — never attempts completed. 0 means the task has never been claimed. The claim itself increments the counter, so a task on its first attempt reports 1 while RUNNING and stays at 1 through that attempt's retry backoff. The retry signal is therefore status == "queued" && attempts_started >= 1 (a queued task that has already burned an attempt), NOT >= 2. Unlike attempt, this is the raw counter and is not floored to 1.
ISO 8601 timestamp of when the FIRST attempt was claimed. null means unknown — either the task has never started, or it predates this field being recorded. started_at remains the CURRENT attempt's start, so on a retried task the two differ and the gap is the real wall-clock age of the work.
Populated when status is succeeded, and partially populated for
some in-flight tasks (a remix surfaces its source canvas before the design
task finishes). Extra keys are permitted so synchronous-completion payloads
pass through without schema churn.
Error info: {message, retryable, attempt}. Present for failed tasks, and also for a NON-terminal task that carries an error from an earlier attempt — on a non-terminal task this always describes the PREVIOUS, already-dead attempt, never the one currently in flight. attempt is the attempts_started value the error is tied to (0 when the failure happened before any claim).
Suggested milliseconds to wait before the next poll. Null for terminal tasks.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Moda","description":"Guides, API reference, and MCP server docs for Moda — the AI design tool for social posts, slide decks, and visual content.","colors":{"primary":"#850AC2","light":"#C155F6","dark":"#420561"},"logo":{"light":"https://mintcdn.com/moda-997c0526/_eKavTfp2ZbkSuMz/images/chameleon.svg?fit=max\u0026auto=format\u0026n=_eKavTfp2ZbkSuMz\u0026q=85\u0026s=d0de9a6ddda2829d62cfe525fbb38722","dark":"https://mintcdn.com/moda-997c0526/_eKavTfp2ZbkSuMz/images/chameleon.svg?fit=max\u0026auto=format\u0026n=_eKavTfp2ZbkSuMz\u0026q=85\u0026s=d0de9a6ddda2829d62cfe525fbb38722","href":"https://moda.app"},"favicon":"https://mintcdn.com/moda-997c0526/_eKavTfp2ZbkSuMz/images/chameleon.svg?fit=max\u0026auto=format\u0026n=_eKavTfp2ZbkSuMz\u0026q=85\u0026s=d0de9a6ddda2829d62cfe525fbb38722","appearance":{"default":"light"},"footer":{"socials":{"x":"https://x.com/trymoda","linkedin":"https://www.linkedin.com/company/trymoda","instagram":"https://www.instagram.com/modacanvas"}},"search":{"prompt":"Search Moda docs"},"seo":{"indexing":"all"},"fonts":{"family":"Inter","weight":400},"integrations":{"posthog":{"apiKey":"phc_5H829H6PUnXGRYUhogPS4rBboCirSiz0SqaEvB5OUco","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Moda app","icon":"arrow-up-right-from-square","href":"https://moda.app"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@moda.app"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"moda-997c0526","hasAudioNarration":false,"actualSubdomain":"moda-997c0526","customDomains":["docs.moda.app"],"gitSource":{"type":"github","owner":"nullframe","repo":"studio","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af6000d2cb39c06ba022de9","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"API Reference","count":183},{"language":"default","tag":"Help Center","count":28},{"language":"default","tag":"canvas-actions","count":28},{"language":"default","tag":"cloud-computers","count":24},{"language":"default","tag":"media","count":22},{"language":"default","tag":"websites","count":12},{"language":"default","tag":"MCP Server (Legacy)","count":11},{"language":"default","tag":"canvases","count":11},{"language":"default","tag":"drive","count":10},{"language":"default","tag":"voices","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"rbac-expansion","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":"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":"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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/remix/remix-canvas","slug":"/api-reference/remix/remix-canvas","pageMetadata":{"title":"Remix Canvas","description":"Duplicate a canvas and optionally apply edits with AI.\n\nAlways returns a ``Task(kind=\"remix\")`` envelope — uniform across the\nprompted and promptless paths. The promptless path completes\nsynchronously and returns ``status=\"succeeded\"`` inline, so the returned\n``id`` is a synthetic (non-queryable) UUID and ``retry_after_ms`` is\n``None``. The prompted path returns the in-flight task envelope; callers\npoll ``GET /v1/tasks/{id}`` to observe completion.","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /remix","href":"/api-reference/remix/remix-canvas","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, 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(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Duplicate a canvas and optionally apply edits with AI.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Always returns a \", _jsx(_components.code, {\n children: \"Task(kind=\\\"remix\\\")\"\n }), \" envelope — uniform across the\\nprompted and promptless paths. The promptless path completes\\nsynchronously and returns \", _jsx(_components.code, {\n children: \"status=\\\"succeeded\\\"\"\n }), \" inline, so the returned\\n\", _jsx(_components.code, {\n children: \"id\"\n }), \" is a synthetic (non-queryable) UUID and \", _jsx(_components.code, {\n children: \"retry_after_ms\"\n }), \" is\\n\", _jsx(_components.code, {\n children: \"None\"\n }), \". The prompted path returns the in-flight task envelope; callers\\npoll \", _jsx(_components.code, {\n children: \"GET /v1/tasks/{id}\"\n }), \" to observe completion.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Remix Canvas","description":"Duplicate a canvas and optionally apply edits with AI.\n\nAlways returns a ``Task(kind=\"remix\")`` envelope — uniform across the\nprompted and promptless paths. The promptless path completes\nsynchronously and returns ``status=\"succeeded\"`` inline, so the returned\n``id`` is a synthetic (non-queryable) UUID and ``retry_after_ms`` is\n``None``. The prompted path returns the in-flight task envelope; callers\npoll ``GET /v1/tasks/{id}`` to observe completion.","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /remix","href":"/api-reference/remix/remix-canvas","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["remix"],"summary":"Remix Canvas","description":"Duplicate a canvas and optionally apply edits with AI.\n\nAlways returns a ``Task(kind=\"remix\")`` envelope — uniform across the\nprompted and promptless paths. The promptless path completes\nsynchronously and returns ``status=\"succeeded\"`` inline, so the returned\n``id`` is a synthetic (non-queryable) UUID and ``retry_after_ms`` is\n``None``. The prompted path returns the in-flight task envelope; callers\npoll ``GET /v1/tasks/{id}`` to observe completion.","operationId":"remixCanvas","requestBody":"e3e04524-a45b-403d-943c-81df62aa596c","responses":{"200":"d8c97d6c-f6d7-4f46-b81f-c768d1c3c253","401":"84287f6e-25a5-44b5-92e9-495f16c2b0fd","402":"1375afaa-bd17-4e8a-a3c3-ac7c9ee7d448","403":"33c11991-9242-4167-af38-67a23a5cd363","404":"304fce23-57fa-4250-8131-9e00be63490d","409":"72da90dd-bc24-4c35-acd1-d505c0f8629f","422":"4560e3f9-1151-4b1c-822d-2c7403965f77","429":"9baf5213-0854-4f0c-b52c-9d7fb7119b60","500":"921fefdd-5729-408a-a512-c4c5981487a2"},"security":["a3ca5c0c-ab0a-46c4-9b0b-7b734de69e75"],"parameters":["6472fdb6-2c3a-423f-9209-cc48439171aa"],"method":"post","type":"path","servers":["900bd1dd-1657-41cc-9e95-57b7af147e04"],"path":"/remix","baseUrlOptions":["https://api.moda.app/v1"],"title":"Remix Canvas","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6472fdb6-2c3a-423f-9209-cc48439171aa":{"name":"Moda-Version","in":"header","required":false,"description":"Calendar-dated API version pin. New integrations should pin `2026-05-01` to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: `2026-04-12`); that default advances on each [sunset date](/api-reference/versioning). Any unsupported value returns 400 `unsupported_version`.","example":"2026-05-01","schema":{"type":"string","enum":["2026-04-12","2026-05-01"],"default":"2026-05-01","example":"2026-05-01","isRequired":false,"description":"Calendar-dated API version pin. New integrations should pin `2026-05-01` to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: `2026-04-12`); that default advances on each [sunset date](/api-reference/versioning). Any unsupported value returns 400 `unsupported_version`.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"canvas_id":{"type":"string","pattern":"^cvs_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$","title":"Canvas Id","description":"Prefixed ``cvs_`` ID of the source canvas to duplicate. The source canvas may belong to a different team. The copy is created in the team specified by team_id.","example":"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV","isRequired":true,"uniqueKey":"canvas_id","typeLabel":"string"},"prompt":{"oneOf":[{"type":"string","title":"Prompt","description":"Optional natural-language edit prompt to apply to the copy. If omitted, the canvas is duplicated without modifications.","uniqueKey":"prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Prompt","description":"Optional natural-language edit prompt to apply to the copy. If omitted, the canvas is duplicated without modifications.","uniqueKey":"prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"prompt","typeLabel":"string | null"},"new_name":{"oneOf":[{"type":"string","title":"New Name","description":"Name for the new canvas. Defaults to the source canvas name.","maxLength":255,"uniqueKey":"new_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"New Name","description":"Name for the new canvas. Defaults to the source canvas name.","uniqueKey":"new_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"new_name","typeLabel":"string | null"},"brand_kit_id":{"oneOf":[{"type":"string","title":"Brand Kit Id","description":"Prefixed ``bk_`` wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, **a bare UUID string is also accepted** in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working), as is **the prefix over a UUID body** (``bk_00000000-0000-4000-8000-000000000000``). All three are permanent, supported inputs; only the canonical form is ever emitted.","pattern":"^bk_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$","example":"bk_01HT9WK8N3M2J4A5Z6P7Q8R9TV","uniqueKey":"brand_kit_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Brand Kit Id","description":"Prefixed ``bk_`` ID of a brand kit to apply. The agent uses these colors, fonts, and guidelines. If omitted, the remix preserves the source canvas's brand kit (with the team's default brand kit as a fallback only when the source has no kit of its own and same-team remixes; cross-team remixes strip the brand kit automatically). To run without any brand kit (overriding the preserved kit and the team default), set skip_brand_kit=true.","uniqueKey":"brand_kit_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"brand_kit_id","typeLabel":"string | null"},"skip_brand_kit":{"type":"boolean","title":"Skip Brand Kit","description":"If true, no brand kit is applied — every brand-kit source is suppressed, including the canvas's own kit, the team default, and any explicit ``brand_kit_id`` override. Use only when the design must be unbranded; to merely leave the source canvas's kit alone, omit ``brand_kit_id`` instead.","default":false,"uniqueKey":"skip_brand_kit","typeLabel":"boolean"}},"additionalProperties":false,"type":"object","required":["canvas_id"],"title":"RemixRequest","uniqueKey":"","typeLabel":"RemixRequest · object"},"examples":{"Example":{"title":"Example","value":{"canvas_id":"cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV","prompt":"\u003cstring>","new_name":"\u003cstring>","brand_kit_id":"bk_01HT9WK8N3M2J4A5Z6P7Q8R9TV","skip_brand_kit":false}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"d8c97d6c-f6d7-4f46-b81f-c768d1c3c253":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"id":{"type":"string","pattern":"^task_[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$","title":"Id","description":"Prefixed ``task_...`` identifier.","example":"task_01HT9WK8N3M2J4A5Z6P7Q8R9TV","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"kind":{"type":"string","enum":["design","export","remix","brand_kit_extract","layerize_assets"],"title":"TaskKind","description":"Discriminator for the kind-specific ``result`` payload.","isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled","expired"],"title":"PublicTaskStatus","description":"Current lifecycle status.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"attempt":{"type":"integer","title":"Attempt","description":"Current attempt number (1-based).","isRequired":true,"uniqueKey":"attempt","typeLabel":"integer"},"max_attempts":{"type":"integer","title":"Max Attempts","description":"Maximum attempts before dead-lettering.","isRequired":true,"uniqueKey":"max_attempts","typeLabel":"integer"},"attempts_started":{"type":"integer","title":"Attempts Started","description":"Number of attempts STARTED (claimed by a worker) — never attempts completed. ``0`` means the task has never been claimed. The claim itself increments the counter, so a task on its first attempt reports ``1`` while RUNNING and stays at ``1`` through that attempt's retry backoff. The retry signal is therefore ``status == \"queued\" \u0026\u0026 attempts_started >= 1`` (a queued task that has already burned an attempt), NOT ``>= 2``. Unlike ``attempt``, this is the raw counter and is not floored to 1.","isRequired":true,"uniqueKey":"attempts_started","typeLabel":"integer"},"links":{"properties":{"self":{"type":"string","title":"Self","description":"Canonical URL of this task resource.","isRequired":true,"uniqueKey":"links.self","typeLabel":"string"},"events":{"oneOf":[{"type":"string","title":"Events","description":"Reserved for a future event-stream URL; currently always ``null``. Moda does not expose a task event stream — poll ``GET /v1/tasks/{id}`` using ``retry_after_ms`` instead.","uniqueKey":"links.events.oneOf.0","typeLabel":"string"},{"type":"null","title":"Events","description":"Reserved for a future event-stream URL; currently always ``null``. Moda does not expose a task event stream — poll ``GET /v1/tasks/{id}`` using ``retry_after_ms`` instead.","uniqueKey":"links.events.oneOf.1","typeLabel":"null"}],"uniqueKey":"links.events","typeLabel":"string | null"},"cancel":{"oneOf":[{"type":"string","title":"Cancel","description":"URL to POST a cancellation request.","uniqueKey":"links.cancel.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cancel","description":"URL to POST a cancellation request.","uniqueKey":"links.cancel.oneOf.1","typeLabel":"null"}],"uniqueKey":"links.cancel","typeLabel":"string | null"},"canvas":{"oneOf":[{"type":"string","title":"Canvas","description":"URL to open the canvas in the Moda editor.","uniqueKey":"links.canvas.oneOf.0","typeLabel":"string"},{"type":"null","title":"Canvas","description":"URL to open the canvas in the Moda editor.","uniqueKey":"links.canvas.oneOf.1","typeLabel":"null"}],"uniqueKey":"links.canvas","typeLabel":"string | null"}},"type":"object","required":["self"],"title":"TaskLinks","description":"HATEOAS links for this task.","isRequired":true,"uniqueKey":"links","typeLabel":"TaskLinks · object"},"created_at":{"oneOf":[{"type":"string","title":"Created At","description":"ISO 8601 timestamp.","uniqueKey":"created_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Created At","description":"ISO 8601 timestamp.","uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"created_at","typeLabel":"string | null"},"started_at":{"oneOf":[{"type":"string","title":"Started At","description":"ISO 8601 timestamp.","uniqueKey":"started_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Started At","description":"ISO 8601 timestamp.","uniqueKey":"started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"started_at","typeLabel":"string | null"},"completed_at":{"oneOf":[{"type":"string","title":"Completed At","description":"ISO 8601 timestamp.","uniqueKey":"completed_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"Completed At","description":"ISO 8601 timestamp.","uniqueKey":"completed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"completed_at","typeLabel":"string | null"},"progress":{"oneOf":[{"type":"object","title":"TaskProgress","description":"Live progress for running tasks. Null when not applicable.","properties":{"percent":{"oneOf":[{"type":"integer","title":"Percent","description":"Estimated completion percentage (0-100).","uniqueKey":"progress.oneOf.0.percent.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Percent","description":"Estimated completion percentage (0-100).","uniqueKey":"progress.oneOf.0.percent.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.percent","typeLabel":"integer | null"},"step":{"oneOf":[{"type":"string","title":"Step","description":"Machine-readable step name the agent is executing.","uniqueKey":"progress.oneOf.0.step.oneOf.0","typeLabel":"string"},{"type":"null","title":"Step","description":"Machine-readable step name the agent is executing.","uniqueKey":"progress.oneOf.0.step.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.step","typeLabel":"string | null"},"message":{"oneOf":[{"type":"string","title":"Message","description":"Human-readable progress message.","uniqueKey":"progress.oneOf.0.message.oneOf.0","typeLabel":"string"},{"type":"null","title":"Message","description":"Human-readable progress message.","uniqueKey":"progress.oneOf.0.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress.oneOf.0.message","typeLabel":"string | null"}},"uniqueKey":"progress.oneOf.0","typeLabel":"TaskProgress · object"},{"type":"null","description":"Live progress for running tasks. Null when not applicable.","uniqueKey":"progress.oneOf.1","typeLabel":"null"}],"uniqueKey":"progress","typeLabel":"TaskProgress · object | null"},"first_started_at":{"oneOf":[{"type":"string","title":"First Started At","description":"ISO 8601 timestamp of when the FIRST attempt was claimed. ``null`` means unknown — either the task has never started, or it predates this field being recorded. ``started_at`` remains the CURRENT attempt's start, so on a retried task the two differ and the gap is the real wall-clock age of the work.","uniqueKey":"first_started_at.oneOf.0","typeLabel":"string"},{"type":"null","title":"First Started At","description":"ISO 8601 timestamp of when the FIRST attempt was claimed. ``null`` means unknown — either the task has never started, or it predates this field being recorded. ``started_at`` remains the CURRENT attempt's start, so on a retried task the two differ and the gap is the real wall-clock age of the work.","uniqueKey":"first_started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"first_started_at","typeLabel":"string | null"},"input":{"oneOf":[{"type":"object","title":"Input","description":"Sanitized echo of the original request.","additionalProperties":true,"uniqueKey":"input.oneOf.0","typeLabel":"Input · object"},{"type":"null","title":"Input","description":"Sanitized echo of the original request.","uniqueKey":"input.oneOf.1","typeLabel":"null"}],"uniqueKey":"input","typeLabel":"Input · object | null"},"result":{"oneOf":[{"type":"object","title":"TaskResult","description":"Result payload of a design or remix task.\n\nPopulated when ``status`` is ``succeeded``, and partially populated for\nsome in-flight tasks (a remix surfaces its source canvas before the design\ntask finishes). Extra keys are permitted so synchronous-completion payloads\npass through without schema churn.","properties":{"canvas_id":{"oneOf":[{"type":"string","title":"Canvas Id","description":"Prefixed ``cvs_...`` id of the resulting canvas.","uniqueKey":"result.oneOf.0.canvas_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Canvas Id","description":"Prefixed ``cvs_...`` id of the resulting canvas.","uniqueKey":"result.oneOf.0.canvas_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.canvas_id","typeLabel":"string | null"},"canvas_url":{"oneOf":[{"type":"string","title":"Canvas Url","description":"URL to open the canvas in the Moda editor.","uniqueKey":"result.oneOf.0.canvas_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Canvas Url","description":"URL to open the canvas in the Moda editor.","uniqueKey":"result.oneOf.0.canvas_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.canvas_url","typeLabel":"string | null"},"canvas_name":{"oneOf":[{"type":"string","title":"Canvas Name","description":"Display name of the resulting canvas.","uniqueKey":"result.oneOf.0.canvas_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Canvas Name","description":"Display name of the resulting canvas.","uniqueKey":"result.oneOf.0.canvas_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.canvas_name","typeLabel":"string | null"},"conversation_id":{"oneOf":[{"type":"string","title":"Conversation Id","description":"Prefixed ``conv_...`` id — pass to a later task to keep iterating with full context.","uniqueKey":"result.oneOf.0.conversation_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Conversation Id","description":"Prefixed ``conv_...`` id — pass to a later task to keep iterating with full context.","uniqueKey":"result.oneOf.0.conversation_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.conversation_id","typeLabel":"string | null"},"source_canvas_id":{"oneOf":[{"type":"string","title":"Source Canvas Id","description":"Prefixed ``cvs_...`` id of the source canvas, for template-remix tasks.","uniqueKey":"result.oneOf.0.source_canvas_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source Canvas Id","description":"Prefixed ``cvs_...`` id of the source canvas, for template-remix tasks.","uniqueKey":"result.oneOf.0.source_canvas_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.source_canvas_id","typeLabel":"string | null"},"source_canvas_url":{"oneOf":[{"type":"string","title":"Source Canvas Url","description":"Editor URL of the source canvas, for template-remix tasks.","uniqueKey":"result.oneOf.0.source_canvas_url.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source Canvas Url","description":"Editor URL of the source canvas, for template-remix tasks.","uniqueKey":"result.oneOf.0.source_canvas_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.source_canvas_url","typeLabel":"string | null"},"theme_canvas_id":{"oneOf":[{"type":"string","title":"Theme Canvas Id","description":"Prefixed ``cvs_...`` id of the theme canvas attached to the resulting canvas, when a brand kit default theme was applied. Null when the deck is unthemed.","uniqueKey":"result.oneOf.0.theme_canvas_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Theme Canvas Id","description":"Prefixed ``cvs_...`` id of the theme canvas attached to the resulting canvas, when a brand kit default theme was applied. Null when the deck is unthemed.","uniqueKey":"result.oneOf.0.theme_canvas_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.theme_canvas_id","typeLabel":"string | null"},"export":{"oneOf":[{"type":"object","title":"TaskExport","description":"The finished design, auto-exported and cached. Populated once the design task has rendered its result — use this artifact instead of calling the export endpoint again for the same canvas.","required":["url","format","status","page_count"],"properties":{"url":{"type":"string","title":"Url","description":"Signed, time-limited URL to download the rendered file.","isRequired":true,"uniqueKey":"result.oneOf.0.export.oneOf.0.url","typeLabel":"string"},"format":{"type":"string","title":"Format","description":"Delivered format — ``png``, ``jpeg``, ``pdf``, ``pptx``, or ``zip``. Multi-page PNG/JPEG exports are bundled into a ``.zip`` of per-page files named after the pages (``01-Cover@2x.png``, ``02-Page-2@2x.png``, …) since a single image container can't carry multiple pages.","isRequired":true,"uniqueKey":"result.oneOf.0.export.oneOf.0.format","typeLabel":"string"},"status":{"type":"string","title":"Status","description":"Render status; ``completed`` when the file is ready at ``url``.","isRequired":true,"uniqueKey":"result.oneOf.0.export.oneOf.0.status","typeLabel":"string"},"page_count":{"type":"integer","title":"Page Count","description":"Number of pages in the exported file.","isRequired":true,"uniqueKey":"result.oneOf.0.export.oneOf.0.page_count","typeLabel":"integer"}},"uniqueKey":"result.oneOf.0.export.oneOf.0","typeLabel":"TaskExport · object"},{"type":"null","description":"The finished design, auto-exported and cached. Populated once the design task has rendered its result — use this artifact instead of calling the export endpoint again for the same canvas.","uniqueKey":"result.oneOf.0.export.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.0.export","typeLabel":"TaskExport · object | null"}},"additionalProperties":true,"uniqueKey":"result.oneOf.0","typeLabel":"TaskResult · object"},{"type":"object","title":"PublicLayerizeAssetsResult","description":"Result payload. Present only for succeeded tasks.","required":["mode","outcome","width","height","layers"],"properties":{"mode":{"type":"string","enum":["full","text"],"title":"Mode","isRequired":true,"uniqueKey":"result.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"outcome":{"type":"string","enum":["complete","partial"],"title":"Outcome","isRequired":true,"uniqueKey":"result.oneOf.1.outcome","typeLabel":"enum\u003cstring>"},"width":{"type":"integer","exclusiveMinimum":0,"title":"Width","isRequired":true,"uniqueKey":"result.oneOf.1.width","typeLabel":"integer"},"height":{"type":"integer","exclusiveMinimum":0,"title":"Height","isRequired":true,"uniqueKey":"result.oneOf.1.height","typeLabel":"integer"},"layers":{"items":{"properties":{"id":{"type":"string","title":"Id","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].id","typeLabel":"string"},"kind":{"type":"string","enum":["background","image","shape","text","composite"],"title":"Kind","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"z_index":{"type":"integer","minimum":0,"title":"Z Index","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].z_index","typeLabel":"integer"},"file_id":{"type":"string","title":"File Id","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].file_id","typeLabel":"string"},"width":{"type":"integer","exclusiveMinimum":0,"title":"Width","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].width","typeLabel":"integer"},"height":{"type":"integer","exclusiveMinimum":0,"title":"Height","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].height","typeLabel":"integer"},"url":{"type":"string","title":"Url","readOnly":true,"isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].url","typeLabel":"string"},"content_type":{"type":"string","const":"image/png","title":"Content Type","default":"image/png","uniqueKey":"result.oneOf.1.layers.items.[INDEX].content_type","typeLabel":"string"},"x":{"type":"integer","const":0,"title":"X","default":0,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].x","typeLabel":"integer"},"y":{"type":"integer","const":0,"title":"Y","default":0,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].y","typeLabel":"integer"},"text":{"oneOf":[{"type":"object","title":"LayerizeText","required":["content","bounds","transform","layout_width","layout_height","paragraphs"],"properties":{"content":{"type":"string","title":"Content","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.content","typeLabel":"string"},"bounds":{"additionalProperties":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.bounds.additionalProperties","typeLabel":"number"},"type":"object","title":"Bounds","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.bounds","typeLabel":"Bounds · object"},"transform":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[0]","typeLabel":"number"},"[1]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[1]","typeLabel":"number"},"[2]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[2]","typeLabel":"number"},"[3]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[3]","typeLabel":"number"},"[4]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[4]","typeLabel":"number"},"[5]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform.[5]","typeLabel":"number"}},"title":"Transform","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.transform","typeLabel":"Transform · tuple"},"layout_width":{"type":"number","title":"Layout Width","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.layout_width","typeLabel":"number"},"layout_height":{"type":"number","title":"Layout Height","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.layout_height","typeLabel":"number"},"paragraphs":{"items":{"properties":{"alignment":{"oneOf":[{"type":"string","title":"Alignment","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].alignment.oneOf.0","typeLabel":"string"},{"type":"null","title":"Alignment","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].alignment.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].alignment","typeLabel":"string | null"},"line_height":{"oneOf":[{"type":"number","title":"Line Height","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].line_height.oneOf.0","typeLabel":"number"},{"type":"null","title":"Line Height","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].line_height.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].line_height","typeLabel":"number | null"},"spans":{"items":{"properties":{"text":{"type":"string","title":"Text","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].text","typeLabel":"string"},"font_family":{"oneOf":[{"type":"string","title":"Font Family","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_family.oneOf.0","typeLabel":"string"},{"type":"null","title":"Font Family","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_family.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_family","typeLabel":"string | null"},"font_size":{"oneOf":[{"type":"number","title":"Font Size","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_size.oneOf.0","typeLabel":"number"},{"type":"null","title":"Font Size","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_size","typeLabel":"number | null"},"font_weight":{"oneOf":[{"type":"integer","title":"Font Weight","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_weight.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Font Weight","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_weight.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_weight","typeLabel":"integer | null"},"font_style":{"oneOf":[{"type":"string","title":"Font Style","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_style.oneOf.0","typeLabel":"string"},{"type":"null","title":"Font Style","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_style.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].font_style","typeLabel":"string | null"},"color":{"oneOf":[{"type":"string","title":"Color","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].color.oneOf.0","typeLabel":"string"},{"type":"null","title":"Color","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].color.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].color","typeLabel":"string | null"},"letter_spacing":{"oneOf":[{"type":"number","title":"Letter Spacing","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing.oneOf.0","typeLabel":"number"},{"type":"null","title":"Letter Spacing","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing","typeLabel":"number | null"},"decoration":{"oneOf":[{"type":"string","title":"Decoration","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].decoration.oneOf.0","typeLabel":"string"},{"type":"null","title":"Decoration","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].decoration.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX].decoration","typeLabel":"string | null"}},"additionalProperties":false,"type":"object","required":["text"],"title":"LayerizeAssetTextSpan","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans.items.[INDEX]","typeLabel":"LayerizeAssetTextSpan · object"},"type":"array","title":"Spans","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX].spans","typeLabel":"LayerizeAssetTextSpan · object[]"}},"additionalProperties":false,"type":"object","title":"LayerizeAssetTextParagraph","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs.items.[INDEX]","typeLabel":"LayerizeAssetTextParagraph · object"},"type":"array","title":"Paragraphs","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.paragraphs","typeLabel":"LayerizeAssetTextParagraph · object[]"},"vertical_align":{"oneOf":[{"type":"string","title":"Vertical Align","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.vertical_align.oneOf.0","typeLabel":"string"},{"type":"null","title":"Vertical Align","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.vertical_align.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0.vertical_align","typeLabel":"string | null"}},"additionalProperties":false,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.0","typeLabel":"LayerizeText · object"},{"type":"null","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text","typeLabel":"LayerizeText · object | null"},"text_items":{"items":{"properties":{"content":{"type":"string","title":"Content","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].content","typeLabel":"string"},"bounds":{"additionalProperties":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].bounds.additionalProperties","typeLabel":"number"},"type":"object","title":"Bounds","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].bounds","typeLabel":"Bounds · object"},"transform":{"type":"object","_tupleOriginal":true,"properties":{"[0]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[0]","typeLabel":"number"},"[1]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[1]","typeLabel":"number"},"[2]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[2]","typeLabel":"number"},"[3]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[3]","typeLabel":"number"},"[4]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[4]","typeLabel":"number"},"[5]":{"type":"number","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform.[5]","typeLabel":"number"}},"title":"Transform","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].transform","typeLabel":"Transform · tuple"},"layout_width":{"type":"number","title":"Layout Width","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].layout_width","typeLabel":"number"},"layout_height":{"type":"number","title":"Layout Height","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].layout_height","typeLabel":"number"},"paragraphs":{"items":{"properties":{"alignment":{"oneOf":[{"type":"string","title":"Alignment","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].alignment.oneOf.0","typeLabel":"string"},{"type":"null","title":"Alignment","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].alignment.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].alignment","typeLabel":"string | null"},"line_height":{"oneOf":[{"type":"number","title":"Line Height","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].line_height.oneOf.0","typeLabel":"number"},{"type":"null","title":"Line Height","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].line_height.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].line_height","typeLabel":"number | null"},"spans":{"items":{"properties":{"text":{"type":"string","title":"Text","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].text","typeLabel":"string"},"font_family":{"oneOf":[{"type":"string","title":"Font Family","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_family.oneOf.0","typeLabel":"string"},{"type":"null","title":"Font Family","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_family.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_family","typeLabel":"string | null"},"font_size":{"oneOf":[{"type":"number","title":"Font Size","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_size.oneOf.0","typeLabel":"number"},{"type":"null","title":"Font Size","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_size","typeLabel":"number | null"},"font_weight":{"oneOf":[{"type":"integer","title":"Font Weight","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_weight.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Font Weight","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_weight.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_weight","typeLabel":"integer | null"},"font_style":{"oneOf":[{"type":"string","title":"Font Style","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_style.oneOf.0","typeLabel":"string"},{"type":"null","title":"Font Style","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_style.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].font_style","typeLabel":"string | null"},"color":{"oneOf":[{"type":"string","title":"Color","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].color.oneOf.0","typeLabel":"string"},{"type":"null","title":"Color","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].color.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].color","typeLabel":"string | null"},"letter_spacing":{"oneOf":[{"type":"number","title":"Letter Spacing","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing.oneOf.0","typeLabel":"number"},{"type":"null","title":"Letter Spacing","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].letter_spacing","typeLabel":"number | null"},"decoration":{"oneOf":[{"type":"string","title":"Decoration","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].decoration.oneOf.0","typeLabel":"string"},{"type":"null","title":"Decoration","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].decoration.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX].decoration","typeLabel":"string | null"}},"additionalProperties":false,"type":"object","required":["text"],"title":"LayerizeAssetTextSpan","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans.items.[INDEX]","typeLabel":"LayerizeAssetTextSpan · object"},"type":"array","title":"Spans","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX].spans","typeLabel":"LayerizeAssetTextSpan · object[]"}},"additionalProperties":false,"type":"object","title":"LayerizeAssetTextParagraph","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs.items.[INDEX]","typeLabel":"LayerizeAssetTextParagraph · object"},"type":"array","title":"Paragraphs","isRequired":true,"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].paragraphs","typeLabel":"LayerizeAssetTextParagraph · object[]"},"vertical_align":{"oneOf":[{"type":"string","title":"Vertical Align","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].vertical_align.oneOf.0","typeLabel":"string"},{"type":"null","title":"Vertical Align","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].vertical_align.oneOf.1","typeLabel":"null"}],"uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX].vertical_align","typeLabel":"string | null"}},"additionalProperties":false,"type":"object","required":["content","bounds","transform","layout_width","layout_height","paragraphs"],"title":"LayerizeText","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items.items.[INDEX]","typeLabel":"LayerizeText · object"},"type":"array","title":"Text Items","uniqueKey":"result.oneOf.1.layers.items.[INDEX].text_items","typeLabel":"LayerizeText · object[]"}},"additionalProperties":false,"type":"object","required":["id","kind","z_index","file_id","width","height","url"],"title":"PublicLayerizeAssetLayer","uniqueKey":"result.oneOf.1.layers.items.[INDEX]","typeLabel":"PublicLayerizeAssetLayer · object"},"type":"array","title":"Layers","isRequired":true,"uniqueKey":"result.oneOf.1.layers","typeLabel":"PublicLayerizeAssetLayer · object[]"},"schema_version":{"type":"string","const":"1","title":"Schema Version","default":"1","uniqueKey":"result.oneOf.1.schema_version","typeLabel":"string"},"coordinate_system":{"type":"string","const":"pixels_top_left","title":"Coordinate System","default":"pixels_top_left","uniqueKey":"result.oneOf.1.coordinate_system","typeLabel":"string"},"warnings":{"items":{"properties":{"code":{"type":"string","title":"Code","isRequired":true,"uniqueKey":"result.oneOf.1.warnings.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"result.oneOf.1.warnings.items.[INDEX].message","typeLabel":"string"},"layer_ids":{"items":{"type":"string","uniqueKey":"result.oneOf.1.warnings.items.[INDEX].layer_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Layer Ids","uniqueKey":"result.oneOf.1.warnings.items.[INDEX].layer_ids","typeLabel":"string[]"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"LayerizeWarning","uniqueKey":"result.oneOf.1.warnings.items.[INDEX]","typeLabel":"LayerizeWarning · object"},"type":"array","title":"Warnings","uniqueKey":"result.oneOf.1.warnings","typeLabel":"LayerizeWarning · object[]"}},"additionalProperties":false,"uniqueKey":"result.oneOf.1","typeLabel":"PublicLayerizeAssetsResult · object"},{"type":"null","title":"Result","description":"Result payload. Present only for succeeded tasks.","uniqueKey":"result.oneOf.2","typeLabel":"null"}],"uniqueKey":"result","typeLabel":"TaskResult · object | PublicLayerizeAssetsResult · object | null"},"error":{"oneOf":[{"type":"object","title":"Error","description":"Error info: ``{message, retryable, attempt}``. Present for failed tasks, and also for a NON-terminal task that carries an error from an earlier attempt — on a non-terminal task this always describes the PREVIOUS, already-dead attempt, never the one currently in flight. ``attempt`` is the ``attempts_started`` value the error is tied to (``0`` when the failure happened before any claim).","additionalProperties":true,"uniqueKey":"error.oneOf.0","typeLabel":"Error · object"},{"type":"null","title":"Error","description":"Error info: ``{message, retryable, attempt}``. Present for failed tasks, and also for a NON-terminal task that carries an error from an earlier attempt — on a non-terminal task this always describes the PREVIOUS, already-dead attempt, never the one currently in flight. ``attempt`` is the ``attempts_started`` value the error is tied to (``0`` when the failure happened before any claim).","uniqueKey":"error.oneOf.1","typeLabel":"null"}],"uniqueKey":"error","typeLabel":"Error · object | null"},"credits":{"oneOf":[{"type":"object","title":"CreditUsage","description":"Credit usage. Present only for completed tasks when billing is enabled.","properties":{"credits_used":{"oneOf":[{"type":"integer","title":"Credits Used","description":"Number of credits consumed by this operation. Null if billing is not enabled or the job hasn't completed yet.","uniqueKey":"credits.oneOf.0.credits_used.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Credits Used","description":"Number of credits consumed by this operation. Null if billing is not enabled or the job hasn't completed yet.","uniqueKey":"credits.oneOf.0.credits_used.oneOf.1","typeLabel":"null"}],"uniqueKey":"credits.oneOf.0.credits_used","typeLabel":"integer | null"},"credits_remaining":{"oneOf":[{"type":"integer","title":"Credits Remaining","description":"Credit balance after this operation. Null if billing is not enabled.","uniqueKey":"credits.oneOf.0.credits_remaining.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Credits Remaining","description":"Credit balance after this operation. Null if billing is not enabled.","uniqueKey":"credits.oneOf.0.credits_remaining.oneOf.1","typeLabel":"null"}],"uniqueKey":"credits.oneOf.0.credits_remaining","typeLabel":"integer | null"}},"uniqueKey":"credits.oneOf.0","typeLabel":"CreditUsage · object"},{"type":"null","description":"Credit usage. Present only for completed tasks when billing is enabled.","uniqueKey":"credits.oneOf.1","typeLabel":"null"}],"uniqueKey":"credits","typeLabel":"CreditUsage · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Suggested milliseconds to wait before the next poll. Null for terminal tasks.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Suggested milliseconds to wait before the next poll. Null for terminal tasks.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"}},"type":"object","required":["id","kind","status","attempt","max_attempts","attempts_started","links"],"title":"Task","description":"Canonical wire-format for every async design operation.\n\nAll consumers -- REST, webhooks, SSE, MCP -- serialize through\n``Task.from_db()`` so the shape is always consistent.","uniqueKey":"","typeLabel":"Task · object"},"examples":{"Example":{"title":"Example","value":{"id":"task_01HT9WK8N3M2J4A5Z6P7Q8R9TV","kind":"design","status":"queued","attempt":123,"max_attempts":123,"attempts_started":123,"links":{"self":"\u003cstring>","events":"\u003cstring>","cancel":"\u003cstring>","canvas":"\u003cstring>"},"created_at":"\u003cstring>","started_at":"\u003cstring>","completed_at":"\u003cstring>","progress":{"percent":123,"step":"\u003cstring>","message":"\u003cstring>"},"first_started_at":"\u003cstring>","input":{},"result":{"canvas_id":"\u003cstring>","canvas_url":"\u003cstring>","canvas_name":"\u003cstring>","conversation_id":"\u003cstring>","source_canvas_id":"\u003cstring>","source_canvas_url":"\u003cstring>","theme_canvas_id":"\u003cstring>","export":{"url":"\u003cstring>","format":"\u003cstring>","status":"\u003cstring>","page_count":123}},"error":{},"credits":{"credits_used":123,"credits_remaining":123},"retry_after_ms":123}}},"exampleType":"generated"}},"exampleType":"generated"},"84287f6e-25a5-44b5-92e9-495f16c2b0fd":{"description":"Authentication required.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"1375afaa-bd17-4e8a-a3c3-ac7c9ee7d448":{"description":"Insufficient credits for a metered operation.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"33c11991-9242-4167-af38-67a23a5cd363":{"description":"Permission denied for this scope.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"304fce23-57fa-4250-8131-9e00be63490d":{"description":"Resource not found.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"72da90dd-bc24-4c35-acd1-d505c0f8629f":{"description":"Conflict (idempotency / resource state).","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"4560e3f9-1151-4b1c-822d-2c7403965f77":{"description":"Request validation failed.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"9baf5213-0854-4f0c-b52c-9d7fb7119b60":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"},"921fefdd-5729-408a-a512-c4c5981487a2":{"description":"Internal error.","content":{"application/json":{"schema":{"properties":{"type":{"type":"string","enum":["invalid_request","authentication","permission","not_found","conflict","rate_limited","idempotency_conflict","unprocessable","upstream_error","internal_error"],"title":"ErrorType","description":"Closed set of high-level categories SDKs branch on.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","title":"Code","description":"Stable machine string keyed to doc_url. Never changes once published.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","title":"Message","description":"Human-readable message, for developers. Not localized, not user-facing.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"doc_url":{"type":"string","title":"Doc Url","description":"Permalink to the docs page for this code.","isRequired":true,"uniqueKey":"doc_url","typeLabel":"string"},"request_id":{"oneOf":[{"type":"string","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Request Id","description":"Correlator for logs/Sentry/audit.","uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"request_id","typeLabel":"string | null"},"causes":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"causes.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Causes","description":"Aggregated upstream failures (e.g. per-page export errors).","uniqueKey":"causes.oneOf.1","typeLabel":"null"}],"uniqueKey":"causes","typeLabel":"any[] | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Code-specific detail payload (e.g. validation field list). Callers should pass ``None`` rather than ``{}`` to omit the key from the response.","uniqueKey":"details.oneOf.1","typeLabel":"null"}],"uniqueKey":"details","typeLabel":"Details · object | null"},"retry_after_ms":{"oneOf":[{"type":"integer","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Retry After Ms","description":"Hint for rate-limited or transient errors.","uniqueKey":"retry_after_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"retry_after_ms","typeLabel":"integer | null"},"retryable":{"oneOf":[{"type":"boolean","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Retryable","description":"Explicit retryability for this code, from the error-code registry: ``false`` means retrying the same request cannot succeed (fix the input / resource first); ``true`` means the condition is transient and a retry (with backoff / after the blocker clears) can succeed. For a code whose retryability is context-dependent (the registry declares none), the raising site sets it per response when it knows the cause (e.g. ``source_url_unreachable``: a timeout is retryable, a 404 is not) and omits it otherwise — do not derive it from ``type`` or the HTTP status when this field is present.","uniqueKey":"retryable.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryable","typeLabel":"boolean | null"}},"type":"object","required":["type","code","message","doc_url"],"title":"ErrorEnvelope","description":"Canonical error payload, nested under the top-level ``{\"error\": ...}`` key.","uniqueKey":"","typeLabel":"ErrorEnvelope · object"},"examples":{"Example":{"title":"Example","value":{"type":"invalid_request","code":"\u003cstring>","message":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>","causes":["\u003cunknown>"],"details":{},"retry_after_ms":123,"retryable":true}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"a3ca5c0c-ab0a-46c4-9b0b-7b734de69e75":{"API Key":{"type":"http","description":"API key from Settings > Developer > REST API","scheme":"bearer","scopes":[],"schemeName":"API Key"}}},"servers":{"900bd1dd-1657-41cc-9e95-57b7af147e04":{"url":"https://api.moda.app/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","description":"API key from Settings > Developer > REST API","scheme":"bearer","scopes":[],"schemeName":"API Key"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key from Settings > Developer > REST API","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"API Key","name":"Authorization"}],"title":"API Key"}]},"originalFileLocation":"openapi/moda-public-api.yaml"},"subdomain":"moda-997c0526","siteName":"Moda","title":"Remix Canvas - Moda","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T18:06:15.169Z","originalFileLocation":"api-reference/remix/remix-canvas.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=\"light\"}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=\"Duplicate a canvas and optionally apply edits with AI. Always returns a Task(kind=\u0026quot;remix\u0026quot;) envelope — uniform across the prompted and promptless paths. The promptless path completes synchronously and returns status=\u0026quot;succeeded\u0026quot; inline, so the returned id is a synthetic (non-queryable) UUID and retry_after_ms is None. The prompted path returns the in-flight task envelope; callers poll GET /v1/tasks/{id} to observe completion.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Moda\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_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/moda-997c0526/hX3OHBAQBvwpegoX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Remix Canvas - Moda\">\u003cmeta data-mint-head property=\"og:description\" content=\"Duplicate a canvas and optionally apply edits with AI. Always returns a Task(kind=\u0026quot;remix\u0026quot;) envelope — uniform across the prompted and promptless paths. The promptless path completes synchronously and returns status=\u0026quot;succeeded\u0026quot; inline, so the returned id is a synthetic (non-queryable) UUID and retry_after_ms is None. The prompted path returns the in-flight task envelope; callers poll GET /v1/tasks/{id} to observe completion.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Moda\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.moda.app/api-reference/remix/remix-canvas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://moda-997c0526.mintlify.site/_mintlify/api/og/v2?division=remix\u0026amp;title=Remix+Canvas\u0026amp;description=Duplicate+a+canvas+and+optionally+apply+edits+with+AI.%0A%0AAlways+returns+a+%60%60Task%28kind%3D%22remix%22%29%60%60+envelope+%E2%80%94+uniform+across+the%0Aprompted+and+promptless+paths.+The\u0026amp;theme=b22501ae2719082997928ddd\u0026amp;signature=6b6627bcd8c27357e5ccee0e840956c23ade83ec0359fe2ed25569c27410d427\">\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=\"Remix Canvas - Moda\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Duplicate a canvas and optionally apply edits with AI. Always returns a Task(kind=\u0026quot;remix\u0026quot;) envelope — uniform across the prompted and promptless paths. The promptless path completes synchronously and returns status=\u0026quot;succeeded\u0026quot; inline, so the returned id is a synthetic (non-queryable) UUID and retry_after_ms is None. The prompted path returns the in-flight task envelope; callers poll GET /v1/tasks/{id} to observe completion.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://moda-997c0526.mintlify.site/_mintlify/api/og/v2?division=remix\u0026amp;title=Remix+Canvas\u0026amp;description=Duplicate+a+canvas+and+optionally+apply+edits+with+AI.%0A%0AAlways+returns+a+%60%60Task%28kind%3D%22remix%22%29%60%60+envelope+%E2%80%94+uniform+across+the%0Aprompted+and+promptless+paths.+The\u0026amp;theme=b22501ae2719082997928ddd\u0026amp;signature=6b6627bcd8c27357e5ccee0e840956c23ade83ec0359fe2ed25569c27410d427\">\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/moda-997c0526/hX3OHBAQBvwpegoX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Moda\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#850AC2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.moda.app/api-reference/remix/remix-canvas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/remix/remix-canvas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.moda.app/#organization\",\"name\":\"Moda\",\"url\":\"https://docs.moda.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/moda-997c0526/_eKavTfp2ZbkSuMz/images/chameleon.svg?fit=max\u0026auto=format\u0026n=_eKavTfp2ZbkSuMz\u0026q=85\u0026s=d0de9a6ddda2829d62cfe525fbb38722\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.moda.app#website\",\"name\":\"Moda\",\"url\":\"https://docs.moda.app\",\"publisher\":{\"@id\":\"https://docs.moda.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.moda.app/api-reference/remix/remix-canvas#webpage\",\"url\":\"https://docs.moda.app/api-reference/remix/remix-canvas\",\"name\":\"Remix Canvas\",\"description\":\"Duplicate a canvas and optionally apply edits with AI. Always returns a Task(kind=\\\"remix\\\") envelope — uniform across the prompted and promptless paths. The promptless path completes synchronously and returns status=\\\"succeeded\\\" inline, so the returned id is a synthetic (non-queryable) UUID and retry_after_ms is None. The prompted path returns the in-flight task envelope; callers poll GET /v1/tasks/{id} to observe completion.\",\"dateModified\":\"2026-11-12T18:06:15.169Z\",\"isPartOf\":{\"@id\":\"https://docs.moda.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.moda.app/api-reference/remix/remix-canvas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.moda.app/api-reference/remix/remix-canvas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Moda\",\"item\":\"https://docs.moda.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Remix Canvas\",\"item\":\"https://docs.moda.app/api-reference/remix/remix-canvas\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.moda.app/api-reference/remix/remix-canvas#apireference\",\"headline\":\"Remix Canvas\",\"name\":\"Remix Canvas\",\"description\":\"Duplicate a canvas and optionally apply edits with AI. Always returns a Task(kind=\\\"remix\\\") envelope — uniform across the prompted and promptless paths. The promptless path completes synchronously and returns status=\\\"succeeded\\\" inline, so the returned id is a synthetic (non-queryable) UUID and retry_after_ms is None. The prompted path returns the in-flight task envelope; callers poll GET /v1/tasks/{id} to observe completion.\",\"url\":\"https://docs.moda.app/api-reference/remix/remix-canvas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.moda.app/api-reference/remix/remix-canvas#webpage\"},\"dateModified\":\"2026-11-12T18:06:15.169Z\",\"publisher\":{\"@id\":\"https://docs.moda.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.moda.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Moda\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Moda\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/remix/remix-canvas.md","siteName":"Moda","nav":{"global":{"anchors":[{"anchor":"Moda app","icon":"arrow-up-right-from-square","href":"https://moda.app"},{"anchor":"Support","icon":"life-ring","href":"mailto:support@moda.app"}]},"tabs":[{"tab":"Help Center","icon":"circle-question","pages":[{"title":"Help Center","href":"/help"}]},{"tab":"Moda for Agents","icon":"robot","pages":[{"title":"Moda for Agents","href":"/agents/setup"}]},{"tab":"MCP Server (Legacy)","icon":"box-archive","pages":[{"title":"MCP Server (Legacy)","href":"/mcp/getting-started"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Overview","icon":"book-open","pages":[{"title":"Getting Started","href":"/api-reference"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Versioning","href":"/api-reference/versioning"},{"title":"Usage Limits","href":"/api-reference/usage-limits"},{"title":"Design Task Recipes","href":"/api-reference/design-task-recipes"},{"title":"Large file uploads","href":"/api-reference/large-file-uploads"},{"title":"Webhooks","href":"/api-reference/webhooks"},{"title":"Error codes","href":"/api-reference/errors"},{"title":"Layerize images","href":"/api-reference/layerize"}]},{"group":"canvases","pages":[{"title":"List Canvases","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases","href":"/api-reference/canvases/list-canvases"},{"title":"Search Canvases","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/search","href":"/api-reference/canvases/search-canvases"},{"title":"Get Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_id}","href":"/api-reference/canvases/get-canvas"},{"title":"Update Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml patch /canvases/{canvas_id}","href":"/api-reference/canvases/update-canvas"},{"title":"Get Canvas Tokens","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_id}/tokens","href":"/api-reference/canvases/get-canvas-tokens"},{"title":"List Canvas Pages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_id}/pages","href":"/api-reference/canvases/list-canvas-pages"},{"title":"Export Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_id}/export","href":"/api-reference/canvases/export-canvas"},{"title":"Get Export Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_id}/export-status","href":"/api-reference/canvases/get-export-status"},{"title":"Make a canvas public","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_id}/share","href":"/api-reference/canvases/make-a-canvas-public"},{"title":"Import Pptx","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/import-pptx","href":"/api-reference/canvases/import-pptx"},{"title":"Get Import Pptx Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/import-pptx/{job_id}","href":"/api-reference/canvases/get-import-pptx-status"}]},{"group":"canvas-actions","pages":[{"title":"Create Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases","href":"/api-reference/canvas-actions/create-canvas"},{"title":"Delete Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /canvases/{canvas_ref}","href":"/api-reference/canvas-actions/delete-canvas"},{"title":"Read Canvas State","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/state","href":"/api-reference/canvas-actions/read-canvas-state"},{"title":"Read Canvas State Summary","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/state/summary","href":"/api-reference/canvas-actions/read-canvas-state-summary"},{"title":"Screenshot Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/screenshot","href":"/api-reference/canvas-actions/screenshot-canvas"},{"title":"Create From Markup","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/markup","href":"/api-reference/canvas-actions/create-from-markup"},{"title":"Read Canvas Edit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/edit","href":"/api-reference/canvas-actions/read-canvas-edit"},{"title":"Edit Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/edit","href":"/api-reference/canvas-actions/edit-canvas"},{"title":"Delete Canvas Items","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/delete-items","href":"/api-reference/canvas-actions/delete-canvas-items"},{"title":"Create Canvas Pages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/pages","href":"/api-reference/canvas-actions/create-canvas-pages"},{"title":"Validate Canvas Edit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/edit/validate","href":"/api-reference/canvas-actions/validate-canvas-edit"},{"title":"Apply Canvas Edit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/edit/apply","href":"/api-reference/canvas-actions/apply-canvas-edit"},{"title":"Export Canvas Edit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/edit/export","href":"/api-reference/canvas-actions/export-canvas-edit"},{"title":"Import Canvas Edit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/edit/import","href":"/api-reference/canvas-actions/import-canvas-edit"},{"title":"List Canvas Animations","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/animations","href":"/api-reference/canvas-actions/list-canvas-animations"},{"title":"Add Canvas Animations","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/animations","href":"/api-reference/canvas-actions/add-canvas-animations"},{"title":"Update Canvas Animations","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/animations/update","href":"/api-reference/canvas-actions/update-canvas-animations"},{"title":"Remove Canvas Animations","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/animations/remove","href":"/api-reference/canvas-actions/remove-canvas-animations"},{"title":"Import Canvas Pages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /canvases/{canvas_ref}/import-pages","href":"/api-reference/canvas-actions/import-canvas-pages"},{"title":"Read Canvas Instructions","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/instructions","href":"/api-reference/canvas-actions/read-canvas-instructions"},{"title":"Read Canvas Comments","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /canvases/{canvas_ref}/comments","href":"/api-reference/canvas-actions/read-canvas-comments"},{"title":"Whoami","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /whoami","href":"/api-reference/canvas-actions/whoami"},{"title":"Get Brand Kit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits/{brand_kit_ref}","href":"/api-reference/canvas-actions/get-brand-kit"},{"title":"List Brand Kit Guides","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits/{brand_kit_ref}/guides","href":"/api-reference/canvas-actions/list-brand-kit-guides"},{"title":"Get Brand Kit Guide","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits/{brand_kit_ref}/guides/{guide_id}","href":"/api-reference/canvas-actions/get-brand-kit-guide"},{"title":"List Templates","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /templates","href":"/api-reference/canvas-actions/list-templates"},{"title":"Search Template Pages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /templates/pages","href":"/api-reference/canvas-actions/search-template-pages"},{"title":"Search Assets","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /assets/search","href":"/api-reference/canvas-actions/search-assets"}]},{"group":"tasks","pages":[{"title":"List Tasks","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Start Design Task","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /tasks","href":"/api-reference/tasks/start-design-task"},{"title":"Get Task Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /tasks/{task_id}","href":"/api-reference/tasks/get-task-status"},{"title":"Cancel Task","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /tasks/{task_id}/cancel","href":"/api-reference/tasks/cancel-task"}]},{"group":"organizations","pages":[{"title":"List Organizations","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /organizations","href":"/api-reference/organizations/list-organizations"}]},{"group":"credits","pages":[{"title":"Get Credits","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /credits","href":"/api-reference/credits/get-credits"},{"title":"Check Media Credits","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /credits/check","href":"/api-reference/credits/check-media-credits"}]},{"group":"model-access","pages":[{"title":"Request Model Access","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /model-access/{access_key}/request","href":"/api-reference/model-access/request-model-access"}]},{"group":"brand-kits","pages":[{"title":"List Brand Kits","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits","href":"/api-reference/brand-kits/list-brand-kits"},{"title":"Create Brand Kit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /brand-kits","href":"/api-reference/brand-kits/create-brand-kit"},{"title":"Start Brand Extraction","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /brand-kits/extractions","href":"/api-reference/brand-kits/start-brand-extraction"},{"title":"Get Brand Extraction","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits/extractions/{job_id}","href":"/api-reference/brand-kits/get-brand-extraction"},{"title":"List Brand Kit Images","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /brand-kits/{brand_kit_id}/images","href":"/api-reference/brand-kits/list-brand-kit-images"},{"title":"Add Brand Kit Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /brand-kits/{brand_kit_id}/images","href":"/api-reference/brand-kits/add-brand-kit-image"},{"title":"Remove Brand Kit Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /brand-kits/{brand_kit_id}/images/{image_id}","href":"/api-reference/brand-kits/remove-brand-kit-image"},{"title":"Delete Brand Kit","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /brand-kits/{brand_kit_id}","href":"/api-reference/brand-kits/delete-brand-kit"},{"title":"Update Brand Kit","description":"Update a brand kit: palette, fonts, voice fields, title, default theme, team default.\n\n``colors`` / ``fonts`` are replace-all writes (send the full desired list).\n``is_default: true`` promotes this kit to the team default (clearing\nwhichever kit held it) in the same transaction as the field writes, so a\ncorrect-and-promote never lands half-applied; ``is_default: false`` is a\n``400`` — promote the replacement kit instead of leaving the team with no\ndefault. Returns ``404 not_found`` if the brand kit does not exist, has been\ndeleted, or the caller lacks team access — collapsed like the sibling\nendpoints so the update path does not leak existence of brand kits in\nother teams. Invalid field values (a color entry without ``color``, a\nfont without ``family``) are a ``400``.","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml patch /brand-kits/{brand_kit_id}","href":"/api-reference/brand-kits/update-brand-kit"}]},{"group":"remix","pages":[{"title":"Remix Canvas","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /remix","href":"/api-reference/remix/remix-canvas"}]},{"group":"share-links","pages":[{"title":"Resolve Share Link","description":"Resolve a share URL to its canvas_id and share metadata.\n\nDistinguishes ``share_link_revoked`` (the share row exists but is\ndisabled) from ``share_link_not_found`` (no live row — includes\nnever-existed, soft-deleted, and deleted-canvas cases; we don't\nleak which). Share tokens are shareable by design — surfacing\nrevocation state for active rows is intentional.","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /share_links/resolve","href":"/api-reference/share-links/resolve-share-link"}]},{"group":"uploads","pages":[{"title":"Get Upload Limits","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /uploads/limits","href":"/api-reference/uploads/get-upload-limits"},{"title":"Upload File","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /uploads","href":"/api-reference/uploads/upload-file"},{"title":"Create Upload Url","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /uploads/url","href":"/api-reference/uploads/create-upload-url"},{"title":"Register Upload","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /uploads/register","href":"/api-reference/uploads/register-upload"},{"title":"Upload From Url","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /uploads/from-url","href":"/api-reference/uploads/upload-from-url"}]},{"group":"voices","pages":[{"title":"Get Voice Capabilities","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voices/capabilities","href":"/api-reference/voices/get-voice-capabilities"},{"title":"List Voices","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voices","href":"/api-reference/voices/list-voices"},{"title":"Find Similar Voices","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voices/similar","href":"/api-reference/voices/find-similar-voices"},{"title":"Get Voice","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voices/{voice_id}","href":"/api-reference/voices/get-voice"},{"title":"List Voice Favorites","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voice-favorites","href":"/api-reference/voices/list-voice-favorites"},{"title":"Put Voice Favorite","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml put /voice-favorites","href":"/api-reference/voices/put-voice-favorite"},{"title":"List Pronunciation Dictionaries","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /pronunciation-dictionaries","href":"/api-reference/voices/list-pronunciation-dictionaries"},{"title":"Create Pronunciation Dictionary","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /pronunciation-dictionaries","href":"/api-reference/voices/create-pronunciation-dictionary"},{"title":"Get Pronunciation Dictionary","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /pronunciation-dictionaries/{dictionary_id}","href":"/api-reference/voices/get-pronunciation-dictionary"},{"title":"Create Pronunciation Dictionary Revision","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /pronunciation-dictionaries/{dictionary_id}/revisions","href":"/api-reference/voices/create-pronunciation-dictionary-revision"}]},{"group":"usage","pages":[{"title":"Get Api Usage","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /usage","href":"/api-reference/usage/get-api-usage"},{"title":"List Api Events","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /events","href":"/api-reference/usage/list-api-events"}]},{"group":"webhooks","pages":[{"title":"List Deliveries","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /webhook_deliveries","href":"/api-reference/webhooks/list-deliveries"},{"title":"Redeliver Webhook","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /webhook_deliveries/{delivery_id}/redeliver","href":"/api-reference/webhooks/redeliver-webhook"}]},{"group":"feedback","pages":[{"title":"Submit Feedback","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /feedback","href":"/api-reference/feedback/submit-feedback"},{"title":"Submit Feedback Bundle","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /feedback/bundle","href":"/api-reference/feedback/submit-feedback-bundle"}]},{"group":"voyager","pages":[{"title":"Notify Review Ready","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/review-ready","href":"/api-reference/voyager/notify-review-ready"},{"title":"Notify Conversation Alert","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/conversation-alert","href":"/api-reference/voyager/notify-conversation-alert"},{"title":"Voyager Auth Config","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voyager/auth/config","href":"/api-reference/voyager/voyager-auth-config"},{"title":"Voyager Auth Register","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/auth/register","href":"/api-reference/voyager/voyager-auth-register"},{"title":"Voyager Auth Revoke","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/auth/revoke","href":"/api-reference/voyager/voyager-auth-revoke"},{"title":"Voyager Me","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voyager/me","href":"/api-reference/voyager/voyager-me"},{"title":"Voyager Save Onboarding Survey","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml put /voyager/me/onboarding-survey","href":"/api-reference/voyager/voyager-save-onboarding-survey"},{"title":"Voyager List Devices","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voyager/devices","href":"/api-reference/voyager/voyager-list-devices"},{"title":"Voyager Revoke Device","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /voyager/devices/{device_ref}","href":"/api-reference/voyager/voyager-revoke-device"},{"title":"Voyager Redeem Promo","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/promo/redeem","href":"/api-reference/voyager/voyager-redeem-promo"}]},{"group":"voyager-games","pages":[{"title":"List Games","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voyager/games","href":"/api-reference/voyager-games/list-games"},{"title":"Create Game","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/games","href":"/api-reference/voyager-games/create-game"},{"title":"Get Game","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /voyager/games/{game_id}","href":"/api-reference/voyager-games/get-game"},{"title":"Rename Game","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml patch /voyager/games/{game_id}","href":"/api-reference/voyager-games/rename-game"},{"title":"Unpublish Game","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/games/{game_id}/unpublish","href":"/api-reference/voyager-games/unpublish-game"},{"title":"Publish Game","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /voyager/games/{game_id}/publish","href":"/api-reference/voyager-games/publish-game"}]},{"group":"media","pages":[{"title":"Layerize Assets","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/layerize-assets","href":"/api-reference/media/layerize-assets"},{"title":"List Models","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /media/models","href":"/api-reference/media/list-models"},{"title":"Generate Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/generate-image","href":"/api-reference/media/generate-image"},{"title":"Edit Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/edit-image","href":"/api-reference/media/edit-image"},{"title":"Generate Audio","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/generate-audio","href":"/api-reference/media/generate-audio"},{"title":"Get Audio Generation Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /media/generate-audio/{task_id}","href":"/api-reference/media/get-audio-generation-status"},{"title":"Cancel Audio Generation","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/generate-audio/{task_id}/cancel","href":"/api-reference/media/cancel-audio-generation"},{"title":"Generate 3D","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/generate-3d","href":"/api-reference/media/generate-3d"},{"title":"Get 3D Generation Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /media/generate-3d/{task_id}","href":"/api-reference/media/get-3d-generation-status"},{"title":"Generate Video","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/generate-video","href":"/api-reference/media/generate-video"},{"title":"Get Video Generation Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /media/generate-video/{task_id}","href":"/api-reference/media/get-video-generation-status"},{"title":"Upscale Video","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/upscale-video","href":"/api-reference/media/upscale-video"},{"title":"Reframe Video","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/reframe-video","href":"/api-reference/media/reframe-video"},{"title":"Video Frames","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/video-frames","href":"/api-reference/media/video-frames"},{"title":"Upscale Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/upscale","href":"/api-reference/media/upscale-image"},{"title":"Vectorize Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/vectorize","href":"/api-reference/media/vectorize-image"},{"title":"Precise Edit Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/precise-edit","href":"/api-reference/media/precise-edit-image"},{"title":"Remove Background","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/remove-background","href":"/api-reference/media/remove-background"},{"title":"Outpaint Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/outpaint","href":"/api-reference/media/outpaint-image"},{"title":"Fetch Logo","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/fetch-logo","href":"/api-reference/media/fetch-logo"},{"title":"Layerize Image","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /media/layerize","href":"/api-reference/media/layerize-image"},{"title":"Get Layerize Status","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /media/layerize/{task_id}","href":"/api-reference/media/get-layerize-status"}]},{"group":"provider-proxy","pages":[{"title":"Provider Proxy","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /provider-proxy","href":"/api-reference/provider-proxy/provider-proxy"},{"title":"Provider Proxy Lookup","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /provider-proxy/lookup","href":"/api-reference/provider-proxy/provider-proxy-lookup"}]},{"group":"inference","pages":[{"title":"Models","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /inference/models","href":"/api-reference/inference/models"},{"title":"Openai Responses","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /inference/openai/responses","href":"/api-reference/inference/openai-responses"},{"title":"Anthropic Messages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /inference/anthropic/messages","href":"/api-reference/inference/anthropic-messages"},{"title":"Openrouter Chat Completions","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /inference/openrouter/chat/completions","href":"/api-reference/inference/openrouter-chat-completions"},{"title":"Voyager Chat Completions","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /inference/voyager/chat/completions","href":"/api-reference/inference/voyager-chat-completions"},{"title":"Typesafe Systemone","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /inference/typesafe/systemone","href":"/api-reference/inference/typesafe-systemone"}]},{"group":"cloud-computers","pages":[{"title":"List Computers","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/","href":"/api-reference/cloud-computers/list-computers"},{"title":"Create","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/","href":"/api-reference/cloud-computers/create"},{"title":"List Computers","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers","href":"/api-reference/cloud-computers/list-computers-1"},{"title":"Create","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers","href":"/api-reference/cloud-computers/create-1"},{"title":"Offers","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/offers","href":"/api-reference/cloud-computers/offers"},{"title":"Relay List","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/relay/","href":"/api-reference/cloud-computers/relay-list"},{"title":"Relay List","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/relay","href":"/api-reference/cloud-computers/relay-list-1"},{"title":"Verify Host","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/relay/verify-host","href":"/api-reference/cloud-computers/verify-host"},{"title":"Relay Get","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/relay/{computer_id}","href":"/api-reference/cloud-computers/relay-get"},{"title":"Relay Wake","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/relay/{computer_id}/wake","href":"/api-reference/cloud-computers/relay-wake"},{"title":"Relay Update","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/relay/{computer_id}/update","href":"/api-reference/cloud-computers/relay-update"},{"title":"Host Credentials","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/host/{computer_id}/credentials","href":"/api-reference/cloud-computers/host-credentials"},{"title":"Host Heartbeat","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/host/{computer_id}/heartbeat","href":"/api-reference/cloud-computers/host-heartbeat"},{"title":"Host Admit Work","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/host/{computer_id}/admit-work","href":"/api-reference/cloud-computers/host-admit-work"},{"title":"Get Computer","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/{computer_id}","href":"/api-reference/cloud-computers/get-computer"},{"title":"Delete","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /cloud-computers/{computer_id}","href":"/api-reference/cloud-computers/delete"},{"title":"Update","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml patch /cloud-computers/{computer_id}","href":"/api-reference/cloud-computers/update"},{"title":"Wake","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/{computer_id}/wake","href":"/api-reference/cloud-computers/wake"},{"title":"Apply Update","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/{computer_id}/update","href":"/api-reference/cloud-computers/apply-update"},{"title":"Sleep","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/{computer_id}/sleep","href":"/api-reference/cloud-computers/sleep"},{"title":"Resize","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/{computer_id}/resize","href":"/api-reference/cloud-computers/resize"},{"title":"Usage","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/{computer_id}/usage","href":"/api-reference/cloud-computers/usage"},{"title":"Files","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /cloud-computers/{computer_id}/files","href":"/api-reference/cloud-computers/files"},{"title":"Download","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /cloud-computers/{computer_id}/downloads","href":"/api-reference/cloud-computers/download"}]},{"group":"drive","pages":[{"title":"List Folders","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/folders","href":"/api-reference/drive/list-folders"},{"title":"Create Folder","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /drive/folders","href":"/api-reference/drive/create-folder"},{"title":"Get Tree","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/tree","href":"/api-reference/drive/get-tree"},{"title":"List Files","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/files","href":"/api-reference/drive/list-files"},{"title":"List Items","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/items","href":"/api-reference/drive/list-items"},{"title":"Get File","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/files/{file_id}","href":"/api-reference/drive/get-file"},{"title":"Download File","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /drive/files/{file_id}/download","href":"/api-reference/drive/download-file"},{"title":"Move Item","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /drive/items/{item_ref}/move","href":"/api-reference/drive/move-item"},{"title":"Delete Item","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /drive/items/{item_ref}","href":"/api-reference/drive/delete-item"},{"title":"Update Item","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml patch /drive/items/{item_ref}","href":"/api-reference/drive/update-item"}]},{"group":"web","pages":[{"title":"Web Search","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /web/search","href":"/api-reference/web/web-search"},{"title":"Web Read","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /web/read","href":"/api-reference/web/web-read"}]},{"group":"websites","pages":[{"title":"List Websites","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /websites","href":"/api-reference/websites/list-websites"},{"title":"Create Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /websites","href":"/api-reference/websites/create-website"},{"title":"Get Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /websites/{website_id}","href":"/api-reference/websites/get-website"},{"title":"Delete Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /websites/{website_id}","href":"/api-reference/websites/delete-website"},{"title":"Update Website Content","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml put /websites/{website_id}/content","href":"/api-reference/websites/update-website-content"},{"title":"List Website Pages","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml get /websites/{website_id}/pages","href":"/api-reference/websites/list-website-pages"},{"title":"Add Website Page","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /websites/{website_id}/pages","href":"/api-reference/websites/add-website-page"},{"title":"Delete Website Page","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml delete /websites/{website_id}/pages","href":"/api-reference/websites/delete-website-page"},{"title":"Update Website Page Content","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml put /websites/{website_id}/pages/content","href":"/api-reference/websites/update-website-page-content"},{"title":"Screenshot Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /websites/{website_id}/screenshot","href":"/api-reference/websites/screenshot-website"},{"title":"Publish Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /websites/{website_id}/publish","href":"/api-reference/websites/publish-website"},{"title":"Unpublish Website","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /websites/{website_id}/unpublish","href":"/api-reference/websites/unpublish-website"}]},{"group":"ask-expert","pages":[{"title":"Ask Expert","deprecated":null,"version":null,"openapi":"/openapi/moda-public-api.yaml post /ask","href":"/api-reference/ask-expert/ask-expert"}]}]},{"tab":"Canvas Embed SDK","icon":"window","hidden":true,"pages":[{"title":"Canvas Embed SDK","href":"/canvas-embed/overview"}]}]},"basePath":"","title":"Remix Canvas - Moda","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CDiBsYGW.js","utils-KF9rPlmF.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C26urKTX.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BdjmJAC1.js","snippetPresets-3IpDBjt3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-D4x_2vvo.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BIWdc5Pa.js","shallow-LQqfiMNd.js","getApiPlaygroundDisplay-DryzlOZG.js","CodeSnippet-tcJujU4r.js","CodeSnippets-BHp0nVLL.js","Page-1CZdsdAn.js","getPastedJson-DU-1ayUv.js","icon-CZK2hPr4.js","MethodPill-DOaqmTFC.js","DuplicateIcon-B5-nUxxl.js","createIcon-CDP_U77G.js","DynamicMarkdown-GHvayGOn.js","SectionHeading-BYvpkmUD.js","axios-vUo_bRtp.js","Markdown-uxhlayGT.js","clsx-B35qUV0p.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BvrGG8gU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CAf0yVYe.js"]}