{
"object": "error",
"code": "STALE_PAGE",
"message": "Page \"PRODUCT/blue-shirt\" changed since your last read (expectedUpdatedAt mismatch). Re-read the page and reapply your patch on top of the newer content.",
"status": 409
}
Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one.
data is shallow-merged into the item’s existing data: send only changed top-level keys. Nested objects are replaced wholesale.
Up to 100 items per request; item ids must be unique within the request.
An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds.
children replaces an item’s top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.
A page inherited from a parent project returns 409; edit it on the source project.
exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact.
Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys.
On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST.
{
"object": "error",
"code": "STALE_PAGE",
"message": "Page \"PRODUCT/blue-shirt\" changed since your last read (expectedUpdatedAt mismatch). Re-read the page and reapply your patch on top of the newer content.",
"status": 409
}
Bearer token: a shop API key (WEAVERSE_API_KEY), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.
Page handle. Final greedy path component; may include /. Leave empty to target a singleton type's default page (e.g. the home page for INDEX, or the /collections index COLLECTION_LIST). A handle is required for CUSTOM pages and for per-resource templated types (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE).
Optimistic-concurrency token: the updatedAt value from the GET read this patch was based on. Required for delegated (MCP OAuth) tokens — omitted → 428 PRECONDITION_REQUIRED; optional for API keys. When the page changed since (e.g. a concurrent studio save), the whole request is rejected with 409 STALE_PAGE before any item is written; once an earlier item was written or may have been (its outcome unconfirmed), a move reports that item and the remaining ones as failed (not confirmed applied) with 200 instead. null matches a page whose revision was never set. Re-read and reapply on top of the newer content instead of retrying the same patch.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Weaverse","colors":{"primary":"#246aff","light":"#599aff","dark":"#1e40af"},"logo":{"light":"https://mintcdn.com/weaverse/UqDg35noNYU1xQJr/logo/light.svg?fit=max\u0026auto=format\u0026n=UqDg35noNYU1xQJr\u0026q=85\u0026s=03570de959edb471a7177f81be24d246","dark":"https://mintcdn.com/weaverse/UqDg35noNYU1xQJr/logo/dark.svg?fit=max\u0026auto=format\u0026n=UqDg35noNYU1xQJr\u0026q=85\u0026s=37c6ba54acdc2f2fec124b27d05ac379","href":"https://weaverse.io"},"favicon":"https://mintcdn.com/weaverse/EOrmVdYBR-QCAvXJ/favicon.ico?fit=max\u0026auto=format\u0026n=EOrmVdYBR-QCAvXJ\u0026q=85\u0026s=fee3d7a85f68c8b9e62d849017c3c087","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://weaverse.io","label":"Weaverse.io"},{"href":"https://github.com/weaverse","label":"GitHub"},{"href":"https://wvse.cc/weaverse-slack","label":"Community"}],"primary":{"type":"button","label":"Studio","href":"https://studio.weaverse.io/dashboard"}},"footer":{"socials":{"x":"https://x.com/WeaverseIO","github":"https://github.com/weaverse","slack":"https://wvse.cc/weaverse-slack"}},"seo":{"metatags":{"og:site_name":"Weaverse Docs","twitter:site":"@WeaverseIO","keywords":"Weaverse, Shopify Hydrogen, headless commerce, visual page builder, React Router, Next.js"},"organization":{"name":"Weaverse","url":"https://weaverse.io","logo":"https://docs.weaverse.io/logo/light.svg","sameAs":["https://github.com/weaverse","https://x.com/WeaverseIO","https://wvse.cc/weaverse-slack"]}},"integrations":{"posthog":{"apiKey":"phc_BnZAhY8ELZCZukEErb6ab9T7txSsMolcgGIIhMj5oSP","apiHost":"https://posthog.weaverse.io"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","add-mcp","download-spec","cursor","vscode"],"display":"header"},"thumbnails":{"preset":"headline","appearance":"dark"},"metadata":{"timestamp":true},"markdown":{"instructions":["Weaverse component configuration uses `settings`. `inspector` is deprecated; never generate it.","Weaverse Hydrogen themes use React Router v7: import from `react-router`, never `react-router-dom` or `@remix-run/*`.","The current SDK is `@weaverse/hydrogen` 6 for Shopify Hydrogen 2026.10 and later. React Router themes import from `@weaverse/hydrogen/react-router`; the root `@weaverse/hydrogen` entry only exports `createSchema()`, data helpers and types.","Some examples still show 5.x imports and type names. In 6.x, `HydrogenComponentProps` is `WeaverseComponentProps` and `HydrogenComponentSchema` is `WeaverseComponentSchema`; run `npx @weaverse/cli@latest migrate v6` to convert code. Projects on Hydrogen 2026.4 or earlier stay on 5.x. Do not mix major versions.","Next.js themes use `@weaverse/next` 1.x.","For live project data (pages, theme settings, translations), use the Weaverse MCP server: https://weaverse.io/docs/developer-tools/weaverse-mcp"]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"weaverse","hasAudioNarration":false,"actualSubdomain":"weaverse","customDomains":["weaverse.io"],"gitSource":{"type":"github","owner":"weaverse","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6af195982da007b7b71ce667","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Content API","count":54},{"language":"default","tag":"React Router","count":43},{"language":"default","tag":"Guides","count":42},{"language":"default","tag":"Ecosystem","count":22},{"language":"default","tag":"Next.js","count":21},{"language":"default","tag":"SDKs","count":18},{"language":"default","tag":"Drafts and publishing","count":12},{"language":"default","tag":"Hooks","count":10},{"language":"default","tag":"Help \u0026 Community","count":10},{"language":"default","tag":"Building Components","count":7}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"content-api/pages/update-page-content","slug":"/content-api/pages/update-page-content","pageMetadata":{"title":"Update page content","description":"Edits component items on the page resolved for `type` / `handle` / `locale`, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include `/`. Singleton types accept an empty handle; `CUSTOM` and per-resource types require one.\n\n- `data` is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale.\n- Up to 100 items per request; item ids must be unique within the request.\n- An unknown item id is created only when `type` is supplied; otherwise it is returned in `notFoundIds`.\n- `children` replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.\n- A page inherited from a parent project returns `409`; edit it on the source project.\n- `exact: true` writes only the assignment whose stored type, handle and locale match exactly, returning `404` instead of falling back. Delegated writes are always exact.\n\nConcurrency: pass the `updatedAt` from your GET as `expectedUpdatedAt`. If the page changed since, the whole request is rejected with `409 STALE_PAGE` before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (`428 PRECONDITION_REQUIRED` otherwise); it is optional for API keys.\n\nOn success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send `PATCH` bodies may send `POST`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/update-page-content","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 li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Edits component items on the page resolved for \", _jsx(_components.code, {\n children: \"type\"\n }), \" / \", _jsx(_components.code, {\n children: \"handle\"\n }), \" / \", _jsx(_components.code, {\n children: \"locale\"\n }), \", using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include \", _jsx(_components.code, {\n children: \"/\"\n }), \". Singleton types accept an empty handle; \", _jsx(_components.code, {\n children: \"CUSTOM\"\n }), \" and per-resource types require one.\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"data\"\n }), \" is shallow-merged into the item’s existing data: send only changed top-level keys. Nested objects are replaced wholesale.\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Up to 100 items per request; item ids must be unique within the request.\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"An unknown item id is created only when \", _jsx(_components.code, {\n children: \"type\"\n }), \" is supplied; otherwise it is returned in \", _jsx(_components.code, {\n children: \"notFoundIds\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"children\"\n }), \" replaces an item’s top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A page inherited from a parent project returns \", _jsx(_components.code, {\n children: \"409\"\n }), \"; edit it on the source project.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"exact: true\"\n }), \" writes only the assignment whose stored type, handle and locale match exactly, returning \", _jsx(_components.code, {\n children: \"404\"\n }), \" instead of falling back. Delegated writes are always exact.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Concurrency: pass the \", _jsx(_components.code, {\n children: \"updatedAt\"\n }), \" from your GET as \", _jsx(_components.code, {\n children: \"expectedUpdatedAt\"\n }), \". If the page changed since, the whole request is rejected with \", _jsx(_components.code, {\n children: \"409 STALE_PAGE\"\n }), \" before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (\", _jsx(_components.code, {\n children: \"428 PRECONDITION_REQUIRED\"\n }), \" otherwise); it is optional for API keys.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send \", _jsx(_components.code, {\n children: \"PATCH\"\n }), \" bodies may send \", _jsx(_components.code, {\n children: \"POST\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required scope: \", _jsx(_components.code, {\n children: \"content:write\"\n })]\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":"Update page content","description":"Edits component items on the page resolved for `type` / `handle` / `locale`, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include `/`. Singleton types accept an empty handle; `CUSTOM` and per-resource types require one.\n\n- `data` is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale.\n- Up to 100 items per request; item ids must be unique within the request.\n- An unknown item id is created only when `type` is supplied; otherwise it is returned in `notFoundIds`.\n- `children` replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.\n- A page inherited from a parent project returns `409`; edit it on the source project.\n- `exact: true` writes only the assignment whose stored type, handle and locale match exactly, returning `404` instead of falling back. Delegated writes are always exact.\n\nConcurrency: pass the `updatedAt` from your GET as `expectedUpdatedAt`. If the page changed since, the whole request is rejected with `409 STALE_PAGE` before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (`428 PRECONDITION_REQUIRED` otherwise); it is optional for API keys.\n\nOn success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send `PATCH` bodies may send `POST`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/update-page-content","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/weaverse/0543a9a70b6f3643/snitcher.js","/docs/_mintlify/custom/weaverse/20987ec1c9b2ceb6/same-tab-nav.js"],"openApiReferenceData":{"operation":{"operationId":"updatePage","summary":"Update page content","description":"Edits component items on the page resolved for `type` / `handle` / `locale`, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include `/`. Singleton types accept an empty handle; `CUSTOM` and per-resource types require one.\n\n- `data` is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale.\n- Up to 100 items per request; item ids must be unique within the request.\n- An unknown item id is created only when `type` is supplied; otherwise it is returned in `notFoundIds`.\n- `children` replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.\n- A page inherited from a parent project returns `409`; edit it on the source project.\n- `exact: true` writes only the assignment whose stored type, handle and locale match exactly, returning `404` instead of falling back. Delegated writes are always exact.\n\nConcurrency: pass the `updatedAt` from your GET as `expectedUpdatedAt`. If the page changed since, the whole request is rejected with `409 STALE_PAGE` before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (`428 PRECONDITION_REQUIRED` otherwise); it is optional for API keys.\n\nOn success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send `PATCH` bodies may send `POST`.\n\nRequired scope: `content:write`","parameters":["9c19d8c8-990b-4b36-8f64-e9a620ad6cd8","b93e18a4-0850-47ac-a9ef-46a64eeed44c","6325fafd-0aa4-4e34-bf84-005f2bdceaba"],"requestBody":"a2dae717-1b82-418b-a093-62ca4a65907c","responses":{"200":"59924cf5-b904-4124-960c-41cb54e5b84d","400":"a70b6cb8-f593-4335-8b61-884c000cbfb7","401":"16f91086-2eae-46fd-b86d-9fe19dae8532","403":"57b3a231-59ae-4c08-a64b-db81f89f5a9d","404":"25d84668-0c9f-4da0-918a-5122af2f4d5b","409":"477bd96e-f5df-43ec-a00c-f00efef6c02f","428":"37047a0f-9cdf-4f7f-b5da-142ff6b01237"},"tags":["Pages"],"x-mint":{"metadata":{"playground":"simple"}},"method":"patch","type":"path","servers":["06e8abcf-d98e-4c65-a1d0-4fa031893726"],"security":["15700b4d-44b3-4c88-a94b-4706f3058ff6"],"path":"/projects/{projectId}/pages/{type}/{handle}","baseUrlOptions":["https://studio.weaverse.io/api/v1/content"],"title":"Update page content","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"9c19d8c8-990b-4b36-8f64-e9a620ad6cd8":{"name":"projectId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"b93e18a4-0850-47ac-a9ef-46a64eeed44c":{"name":"type","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Page type (e.g. PRODUCT, INDEX, CUSTOM)","uniqueKey":"","typeLabel":"string"},"description":"Page type (e.g. PRODUCT, INDEX, CUSTOM)"},"6325fafd-0aa4-4e34-bf84-005f2bdceaba":{"name":"handle","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"Page handle. Final greedy path component; may include `/`. Leave empty to target a singleton type's default page (e.g. the home page for `INDEX`, or the `/collections` index `COLLECTION_LIST`). A handle is required for `CUSTOM` pages and for per-resource templated types (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`).","uniqueKey":"","typeLabel":"string"},"description":"Page handle. Final greedy path component; may include `/`. Leave empty to target a singleton type's default page (e.g. the home page for `INDEX`, or the `/collections` index `COLLECTION_LIST`). A handle is required for `CUSTOM` pages and for per-resource templated types (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`)."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","maxItems":100,"items":{"type":"object","required":["id","data"],"properties":{"id":{"type":"string","description":"Item id. Existing ids are updated; unknown ids are created only when `type` is supplied.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].id","typeLabel":"string"},"data":{"type":"object","additionalProperties":true,"description":"Top-level keys to merge into the item's existing data.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].data","typeLabel":"object"},"type":{"type":"string","description":"Component type. Required only when creating a new item id. Ignored for existing item updates.","uniqueKey":"\\items.items.[INDEX].type","typeLabel":"string"},"children":{"oneOf":[{"type":"array","description":"Optional top-level child references. Each entry must include an `id` that already belongs to the page or is created in the same request.","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"\\items.items.[INDEX].children.oneOf.0.items.[INDEX].id","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"\\items.items.[INDEX].children.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"\\items.items.[INDEX].children.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Optional top-level child references. Each entry must include an `id` that already belongs to the page or is created in the same request.","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}},"additionalProperties":true},"uniqueKey":"\\items.items.[INDEX].children.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].children","typeLabel":"object[] | null"}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"locale":{"type":"string","description":"Optional. Same resolution as GET; defaults to the stored default locale.","uniqueKey":"locale","typeLabel":"string"},"expectedUpdatedAt":{"oneOf":[{"type":"string","format":"date-time","description":"Optimistic-concurrency token: the `updatedAt` value from the GET read this patch was based on. Required for delegated (MCP OAuth) tokens — omitted → 428 PRECONDITION_REQUIRED; optional for API keys. When the page changed since (e.g. a concurrent studio save), the whole request is rejected with 409 STALE_PAGE before any item is written; once an earlier item was written or may have been (its outcome unconfirmed), a move reports that item and the remaining ones as `failed` (not confirmed applied) with 200 instead. `null` matches a page whose revision was never set. Re-read and reapply on top of the newer content instead of retrying the same patch.","uniqueKey":"expectedUpdatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Optimistic-concurrency token: the `updatedAt` value from the GET read this patch was based on. Required for delegated (MCP OAuth) tokens — omitted → 428 PRECONDITION_REQUIRED; optional for API keys. When the page changed since (e.g. a concurrent studio save), the whole request is rejected with 409 STALE_PAGE before any item is written; once an earlier item was written or may have been (its outcome unconfirmed), a move reports that item and the remaining ones as `failed` (not confirmed applied) with 200 instead. `null` matches a page whose revision was never set. Re-read and reapply on top of the newer content instead of retrying the same patch.","uniqueKey":"expectedUpdatedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"expectedUpdatedAt","typeLabel":"string\u003cdate-time> | null"},"exact":{"type":"boolean","description":"Refuse locale/handle fallback; 404 instead","uniqueKey":"exact","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"locale":"en-us","expectedUpdatedAt":"2026-10-18T14:22:05.000Z","items":[{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82","data":{"title":"Summer Sale"}},{"id":"019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01","type":"rich-text","data":{"content":"\u003cp>Free shipping on orders over $50.\u003c/p>"}},{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a81","data":{},"children":[{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82"},{"id":"019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01"},{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a83"}]}]},"examples":{"Example":{"title":"Example","value":{"locale":"en-us","expectedUpdatedAt":"2026-10-18T14:22:05.000Z","items":[{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82","data":{"title":"Summer Sale"}},{"id":"019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01","type":"rich-text","data":{"content":"\u003cp>Free shipping on orders over $50.\u003c/p>"}},{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a81","data":{},"children":[{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82"},{"id":"019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01"},{"id":"019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a83"}]}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"59924cf5-b904-4124-960c-41cb54e5b84d":{"description":"Update result with per-item accounting","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["page_update"],"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"pageId":{"type":"string","uniqueKey":"pageId","typeLabel":"string"},"locale":{"type":"string","uniqueKey":"locale","typeLabel":"string"},"requested":{"type":"integer","uniqueKey":"requested","typeLabel":"integer"},"updated":{"type":"integer","uniqueKey":"updated","typeLabel":"integer"},"created":{"type":"integer","uniqueKey":"created","typeLabel":"integer"},"notFound":{"type":"integer","uniqueKey":"notFound","typeLabel":"integer"},"failed":{"type":"integer","uniqueKey":"failed","typeLabel":"integer"},"updatedIds":{"type":"array","items":{"type":"string","uniqueKey":"updatedIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"updatedIds","typeLabel":"string[]"},"createdIds":{"type":"array","items":{"type":"string","uniqueKey":"createdIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"createdIds","typeLabel":"string[]"},"notFoundIds":{"type":"array","items":{"type":"string","uniqueKey":"notFoundIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"notFoundIds","typeLabel":"string[]"},"failedIds":{"type":"array","items":{"type":"string","uniqueKey":"failedIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"failedIds","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"object":"page_update","pageId":"clz2r7t5w0002mnop9012qrst","locale":"en-us","requested":3,"updated":2,"created":1,"notFound":0,"failed":0,"updatedIds":["019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82","019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a81"],"createdIds":["019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01"],"notFoundIds":[],"failedIds":[]},"examples":{"Example":{"title":"Example","value":{"object":"page_update","pageId":"clz2r7t5w0002mnop9012qrst","locale":"en-us","requested":3,"updated":2,"created":1,"notFound":0,"failed":0,"updatedIds":["019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a82","019a3c2e-5b7d-7f10-8a2b-3c4d5e6f7a81"],"createdIds":["019a3c2f-1a2b-7c3d-9e4f-5a6b7c8d9e01"],"notFoundIds":[],"failedIds":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"a70b6cb8-f593-4335-8b61-884c000cbfb7":{"description":"Invalid params or body","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"16f91086-2eae-46fd-b86d-9fe19dae8532":{"description":"Missing or invalid token","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"57b3a231-59ae-4c08-a64b-db81f89f5a9d":{"description":"Token's shop does not own the project (FORBIDDEN), or INSUFFICIENT_SCOPE: a delegated token without `content:write`","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"25d84668-0c9f-4da0-918a-5122af2f4d5b":{"description":"Page not found","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"477bd96e-f5df-43ec-a00c-f00efef6c02f":{"description":"Page is inherited from a parent project, or STALE_PAGE: the page changed since the caller's read (expectedUpdatedAt mismatch — re-read and reapply)","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"example":{"object":"error","code":"STALE_PAGE","message":"Page \"PRODUCT/blue-shirt\" changed since your last read (expectedUpdatedAt mismatch). Re-read the page and reapply your patch on top of the newer content.","status":409},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"STALE_PAGE","message":"Page \"PRODUCT/blue-shirt\" changed since your last read (expectedUpdatedAt mismatch). Re-read the page and reapply your patch on top of the newer content.","status":409}}},"exampleType":"examples"}},"exampleType":"examples"},"37047a0f-9cdf-4f7f-b5da-142ff6b01237":{"description":"PRECONDITION_REQUIRED: a delegated (MCP OAuth) token omitted `expectedUpdatedAt`. API keys never receive this.","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"15700b4d-44b3-4c88-a94b-4706f3058ff6":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"WEAVERSE_API_KEY","description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"06e8abcf-d98e-4c65-a1d0-4fa031893726":{"url":"https://studio.weaverse.io/api/v1/content","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"WEAVERSE_API_KEY","description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://studio.weaverse.io/api/v1/content/openapi.json"},"subdomain":"weaverse","siteName":"Weaverse","title":"Update page content - Weaverse","navMaps":{"firstHrefInVersion":{"v5.x":{"href":"/content-api/pages/update-page-content","matchLevel":0}},"firstHrefInLanguage":{}},"originalFileLocation":"content-api/pages/update-page-content.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one. - data is shallow-merged into the item\u0026#x27;s existing data: send only changed top-level keys. Nested objects are replaced wholesale. - Up to 100 items per request; item ids must be unique within the request. - An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds. - children replaces an item\u0026#x27;s top-level child references. Each reference must point to an existing page item or a typed new item created in the same request. - A page inherited from a parent project returns 409; edit it on the source project. - exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact. Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys. On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST. Required scope: content:write\">\u003cmeta data-mint-head name=\"keywords\" content=\"Weaverse, Shopify Hydrogen, headless commerce, visual page builder, React Router, Next.js\">\u003cmeta data-mint-head name=\"application-name\" content=\"Weaverse\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_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=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update page content - Weaverse\">\u003cmeta data-mint-head property=\"og:description\" content=\"Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one. - data is shallow-merged into the item\u0026#x27;s existing data: send only changed top-level keys. Nested objects are replaced wholesale. - Up to 100 items per request; item ids must be unique within the request. - An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds. - children replaces an item\u0026#x27;s top-level child references. Each reference must point to an existing page item or a typed new item created in the same request. - A page inherited from a parent project returns 409; edit it on the source project. - exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact. Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys. On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST. Required scope: content:write\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Weaverse Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://weaverse.io/docs/content-api/pages/update-page-content\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://weaverse.mintlify.site/docs/_mintlify/api/og/v2?division=Pages\u0026amp;title=Update+page+content\u0026amp;description=Edits+component+items+on+the+page+resolved+for+%60type%60+%2F+%60handle%60+%2F+%60locale%60%2C+using+the+same+fallback+as+the+GET+endpoint.+Pass+the+exact+handle+from+the+pages+l\u0026amp;theme=0d100f7670b454d40a653506\u0026amp;signature=de3774f17cad62c6643bb47f7364bc19c04233827fcb65f7cccf2d7fae8b0929\">\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=\"Update page content - Weaverse\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one. - data is shallow-merged into the item\u0026#x27;s existing data: send only changed top-level keys. Nested objects are replaced wholesale. - Up to 100 items per request; item ids must be unique within the request. - An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds. - children replaces an item\u0026#x27;s top-level child references. Each reference must point to an existing page item or a typed new item created in the same request. - A page inherited from a parent project returns 409; edit it on the source project. - exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact. Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys. On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST. Required scope: content:write\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://weaverse.mintlify.site/docs/_mintlify/api/og/v2?division=Pages\u0026amp;title=Update+page+content\u0026amp;description=Edits+component+items+on+the+page+resolved+for+%60type%60+%2F+%60handle%60+%2F+%60locale%60%2C+using+the+same+fallback+as+the+GET+endpoint.+Pass+the+exact+handle+from+the+pages+l\u0026amp;theme=0d100f7670b454d40a653506\u0026amp;signature=de3774f17cad62c6643bb47f7364bc19c04233827fcb65f7cccf2d7fae8b0929\">\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=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Weaverse\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#246aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://weaverse.io/docs/content-api/pages/update-page-content\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/content-api/pages/update-page-content.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://weaverse.io/#organization\",\"name\":\"Weaverse\",\"url\":\"https://weaverse.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.weaverse.io/logo/light.svg\"},\"sameAs\":[\"https://github.com/weaverse\",\"https://x.com/WeaverseIO\",\"https://wvse.cc/weaverse-slack\"]},{\"@type\":\"WebSite\",\"@id\":\"https://weaverse.io/docs#website\",\"name\":\"Weaverse\",\"url\":\"https://weaverse.io/docs\",\"publisher\":{\"@id\":\"https://weaverse.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://weaverse.io/docs/content-api/pages/update-page-content#webpage\",\"url\":\"https://weaverse.io/docs/content-api/pages/update-page-content\",\"name\":\"Update page content\",\"description\":\"Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one. - data is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale. - Up to 100 items per request; item ids must be unique within the request. - An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds. - children replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request. - A page inherited from a parent project returns 409; edit it on the source project. - exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact. Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys. On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST. Required scope: content:write\",\"isPartOf\":{\"@id\":\"https://weaverse.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://weaverse.io/docs/content-api/pages/update-page-content#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://weaverse.io/docs/content-api/pages/update-page-content#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pages\",\"item\":\"https://weaverse.io/docs/content-api/pages/list-page-assignments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update page content\",\"item\":\"https://weaverse.io/docs/content-api/pages/update-page-content\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://weaverse.io/docs/content-api/pages/update-page-content#apireference\",\"headline\":\"Update page content\",\"name\":\"Update page content\",\"description\":\"Edits component items on the page resolved for type / handle / locale, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include /. Singleton types accept an empty handle; CUSTOM and per-resource types require one. - data is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale. - Up to 100 items per request; item ids must be unique within the request. - An unknown item id is created only when type is supplied; otherwise it is returned in notFoundIds. - children replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request. - A page inherited from a parent project returns 409; edit it on the source project. - exact: true writes only the assignment whose stored type, handle and locale match exactly, returning 404 instead of falling back. Delegated writes are always exact. Concurrency: pass the updatedAt from your GET as expectedUpdatedAt. If the page changed since, the whole request is rejected with 409 STALE_PAGE before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (428 PRECONDITION_REQUIRED otherwise); it is optional for API keys. On success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send PATCH bodies may send POST. Required scope: content:write\",\"url\":\"https://weaverse.io/docs/content-api/pages/update-page-content\",\"mainEntityOfPage\":{\"@id\":\"https://weaverse.io/docs/content-api/pages/update-page-content#webpage\"},\"publisher\":{\"@id\":\"https://weaverse.io/#organization\"},\"isPartOf\":{\"@id\":\"https://weaverse.io/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Weaverse\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Weaverse","nav":{"global":null,"versions":[{"version":"v5.x","default":true,"tag":"Latest","tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Guides","dropdowns":[{"dropdown":"React Router","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/react-router.svg","groups":[{"group":"Environment","pages":[{"title":"Environment Variables","href":"/development-guide/environment-setup"},{"title":"Studio vs. Live Environment","href":"/development-guide/design-mode"}]},{"group":"Building Components","pages":[{"title":"Creating Components","href":"/development-guide/creating-components"},{"title":"Component Schema","href":"/development-guide/component-schema"},{"title":"Input Settings","href":"/development-guide/input-settings"},{"title":"Weaverse Hydrogen Component","href":"/development-guide/weaverse-component"},{"title":"Styling \u0026 Theming","href":"/development-guide/styling-theming"},{"title":"Section Data Fetching","href":"/development-guide/data-fetching"},{"title":"Data Connectors","href":"/development-guide/data-connectors"}]},{"group":"Content Management","pages":[{"title":"Global Sections","href":"/features/global-sections"},{"title":"Scheduled Publishing","href":"/features/schedule-publish"},{"title":"Navigation Configuration","href":"/features/navigation-menus"},{"title":"Third-party Integration","href":"/features/third-party-integrations"},{"title":"Installable Mobile App (PWA)","href":"/features/mobile-app-pwa"}]},{"group":"Internationalization","pages":[{"title":"Markets and Localization","href":"/features/markets-localization"},{"title":"Translation Feature Guide","href":"/features/translation-feature-guide"},{"title":"i18next Integration","href":"/features/i18next-integration"}]},{"group":"Security \u0026 Privacy","pages":[{"title":"Content Security Policy","href":"/features/content-security"},{"title":"Cookie Consent Banner","href":"/features/cookie-consent-banner"},{"title":"Analytics \u0026 Conversion Tracking","href":"/features/analytics-tracking"},{"title":"Security \u0026 Deployment Practices","href":"/features/security-deployment-practices"}]},{"group":"Pages \u0026 Routing","pages":[{"title":"Custom Pages","href":"/features/custom-pages"},{"title":"Page SEO","href":"/features/page-seo"},{"title":"Custom Templates","href":"/features/custom-templates"},{"title":"Custom Routing","href":"/features/custom-routing"}]},{"group":"Advanced","pages":[{"title":"Rendering Weaverse Pages","href":"/guides/rendering-page"},{"title":"Advanced Localization Guide","href":"/guides/localization-advanced"},{"title":"Multi-Project Architecture","href":"/guides/multi-project-architecture"},{"title":"Customer Account API Local Development","href":"/development-guide/customer-account-local-dev"},{"title":"Multipass in Hydrogen","href":"/development-guide/multipass-in-hydrogen"}]},{"group":"Deployment","root":{"title":"Deployment","href":"/guides/deployment/index"},"directory":"card","pages":[{"title":"Deploy to Shopify Oxygen","href":"/guides/deployment/oxygen"},{"title":"Custom Domain \u0026 DNS Setup","href":"/guides/deployment/custom-domain-and-dns"},{"title":"Deploy with Docker","href":"/guides/deployment/docker"},{"title":"Deploy to Cloudflare Workers","href":"/guides/deployment/workers"}]}]},{"dropdown":"Next.js","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/nextjs.svg","groups":[{"group":"Getting started","pages":[{"title":"Weaverse for Next.js","href":"/nextjs/overview"},{"title":"Next.js Quickstart","href":"/nextjs/quickstart"}]},{"group":"Next.js","pages":[{"title":"Rendering Pages in Next.js","href":"/nextjs/rendering-pages"},{"title":"Data Fetching in Next.js","href":"/nextjs/data-fetching"},{"title":"Connect Weaverse Studio","href":"/nextjs/studio"},{"title":"Markets \u0026 Translations","href":"/nextjs/markets-translations"}]},{"group":"Content Management","pages":[{"title":"Global Sections","href":"/features/global-sections"},{"title":"Navigation Configuration","href":"/features/navigation-menus"},{"title":"Third-party Integrations in Next.js","href":"/nextjs/third-party-integrations"},{"title":"Installable Mobile App (PWA)","href":"/features/mobile-app-pwa"}]},{"group":"Deployment","pages":[{"title":"Deploy to Vercel","href":"/guides/deployment/vercel"}]}]}]},{"tab":"SDKs","dropdowns":[{"dropdown":"React Router","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/react-router.svg","groups":[{"group":"Overview","pages":[{"title":"Introduction","sidebarTitle":"Overview","href":"/api-reference/introduction"}]},{"group":"Hooks","pages":[{"title":"useWeaverse","href":"/api-reference/use-weaverse"},{"title":"useItemInstance","href":"/api-reference/use-item-instance"},{"title":"useParentInstance","href":"/api-reference/use-parent-instance"},{"title":"useChildInstances","href":"/api-reference/use-child-instances"},{"title":"useThemeSettings","href":"/api-reference/use-theme-settings"}]},{"group":"Components","pages":[{"title":"WeaverseHydrogenRoot","href":"/api-reference/weaverse-root"},{"title":"WeaverseClient","href":"/api-reference/weaverse-client"},{"title":"withWeaverse","href":"/api-reference/with-weaverse"}]},{"group":"Utilities \u0026 Types","pages":[{"title":"getSelectedProductOptions","href":"/api-reference/get-selected-product-options"},{"title":"IMAGES_PLACEHOLDERS","href":"/api-reference/images-placeholders"},{"title":"Types","href":"/api-reference/types"}]}]},{"dropdown":"Next.js","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/nextjs.svg","groups":[{"group":"Overview","pages":[{"title":"@weaverse/next API Reference","href":"/nextjs/api-reference"}]},{"group":"Hooks","pages":[{"title":"useWeaverse","href":"/nextjs/api/use-weaverse"},{"title":"useItemInstance","href":"/nextjs/api/use-item-instance"},{"title":"useParentInstance","href":"/nextjs/api/use-parent-instance"},{"title":"useChildInstances","href":"/nextjs/api/use-child-instances"},{"title":"useThemeSettings","href":"/nextjs/api/use-theme-settings"}]}]}]},{"tab":"Content API","groups":[{"group":"Get started","pages":[{"title":"Content API","sidebarTitle":"Overview","href":"/content-api/overview"},{"title":"Portable Text Format","href":"/content-api/portable-text"},{"title":"List Public Custom Pages","href":"/content-api/public-custom-pages"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects","href":"/content-api/projects/list-projects"},{"title":"Run a project lifecycle operation","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects","href":"/content-api/projects/run-a-project-lifecycle-operation"},{"title":"Get project","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}","href":"/content-api/projects/get-project"},{"title":"Update project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}","href":"/content-api/projects/update-project"}]},{"group":"Pages","pages":[{"title":"List page assignments","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/pages","href":"/content-api/pages/list-page-assignments"},{"title":"Create a page","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/pages","href":"/content-api/pages/create-a-page"},{"title":"Bulk delete pages","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /projects/{projectId}/pages","href":"/content-api/pages/bulk-delete-pages"},{"title":"Get page content","description":"Returns a page's full content: its component items, revision and inheritance metadata. This is the primary endpoint for rendering Weaverse pages in external applications.\n\nUse the exact `type`, `handle` and `locale` from `GET /projects/{projectId}/pages`. Custom page handles may include `/` (for example `pages/gift-shop`, fetched at `/projects/{projectId}/pages/CUSTOM/pages/gift-shop`). Singleton types (`INDEX`, `ALL_PRODUCTS`, `COLLECTION_LIST`, `CART`, `CUSTOMER`, `NOT_FOUND`, `PASSWORD`, `SEARCH`) accept an empty handle; `CUSTOM` and the per-resource types require one. An unknown `type` returns `400`.\n\n**Always pass `locale` on localized projects.** Content is stored per locale: a page edited while a market such as `en-us` is selected in Studio is saved on the `en-us` assignment, not the base locale (`\"\"`). Without `locale` the base locale is requested first and may resolve to a different, unedited assignment. This is the most common reason a published change looks missing from the API.\n\nResolution order, evaluated at each project level:\n\n1. The requested handle's market match, when the project uses market-first resolution\n2. The requested handle with the exact locale\n3. The requested handle with the empty locale (`\"\"`)\n4. The requested handle with the legacy `en-us` locale\n5. For a non-`CUSTOM` request with a non-empty handle, the type's shared default template (empty handle), in the same market, exact-locale, empty-locale, then `en-us` order\n\nIf the project has no match, the same sequence runs for its parent and then grandparent project (`meta.inherited`, `meta.depth`, `meta.sourceProjectId` tell you where the content came from). Nothing found returns `404 PAGE_NOT_FOUND`.\n\n`items` is a flat list. Rebuild the tree from each item's `children` references, starting at the root item. With `format=portable-text` (or `Accept: application/portable-text+json`), `items` is replaced by a `content` array of Portable Text blocks. `includeDefaults=true` fills settings the merchant never customized with their schema defaults.\n\nRequired scope: `content:read`","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/get-page-content"},{"title":"Update page content","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/update-page-content"}]},{"group":"Assignments","pages":[{"title":"Assign resources to a shared template page","description":"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at `pageId`, so the template content stays shared, not copied. To create an independent, editable copy per resource, use `POST /projects/{projectId}/pages` instead.\n\n- The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`); any other type returns `400`.\n- Send 1-100 entries in `assignments`. `handle` is the Shopify resource handle (trimmed, kept verbatim); `locale` defaults to the global assignment (`\"\"`).\n- A resource already assigned to this page is an idempotent no-op, reported under `existing`.\n- **All-or-nothing.** Every handle is checked first. If any handle already belongs to a different live page, the whole request returns `409 CONFLICT` with the clashing handles in `details.conflicts`, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.\n- New rows are created in a single transaction. All lookups and writes are scoped to `projectId`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/template-assignments/{pageId}","href":"/content-api/assignments/assign-resources-to-a-shared-template-page"},{"title":"List page assignments","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/assignments","href":"/content-api/assignments/list-page-assignments"},{"title":"Update, localize or remove page assignments","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/assignments","href":"/content-api/assignments/update-localize-or-remove-page-assignments"}]},{"group":"Theme settings","pages":[{"title":"Get theme settings","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/theme-settings","href":"/content-api/theme-settings/get-theme-settings"},{"title":"Update theme settings","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/theme-settings","href":"/content-api/theme-settings/update-theme-settings"}]},{"group":"Languages and localization","pages":[{"title":"List project languages","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/languages","href":"/content-api/languages-and-localization/list-project-languages"},{"title":"Get languages, glossary or static text","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/localization","href":"/content-api/languages-and-localization/get-languages-glossary-or-static-text"},{"title":"Manage languages, glossary and static text","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/localization","href":"/content-api/languages-and-localization/manage-languages-glossary-and-static-text"}]},{"group":"Specification","pages":[{"title":"Get the OpenAPI specification","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /openapi.json","href":"/content-api/specification/get-the-openapi-specification"}]},{"group":"Translations","pages":[{"title":"Read a page's translations for one locale","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-translations/{pageId}","href":"/content-api/translations/read-a-pages-translations-for-one-locale"},{"title":"Apply translations for one page and locale","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/page-translations/{pageId}","href":"/content-api/translations/apply-translations-for-one-page-and-locale"},{"title":"List translation units for a target locale","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/translation-units","href":"/content-api/translations/list-translation-units-for-a-target-locale"},{"title":"Validate or apply a translation batch","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/translations/{operation}","href":"/content-api/translations/validate-or-apply-a-translation-batch"}]},{"group":"Drafts and publishing","pages":[{"title":"Get a page's editable content and revision tokens","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/get-a-pages-editable-content-and-revision-tokens"},{"title":"Save a page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json put /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/save-a-page-draft"},{"title":"Discard a page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/discard-a-page-draft"},{"title":"Publish a saved page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /publish-versions/{versionId}","href":"/content-api/drafts-and-publishing/publish-a-saved-page-draft"},{"title":"List page versions, theme versions or the schedule","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/versions","href":"/content-api/drafts-and-publishing/list-page-versions-theme-versions-or-the-schedule"},{"title":"Get one page or theme version","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /versions/{versionId}","href":"/content-api/drafts-and-publishing/get-one-page-or-theme-version"},{"title":"Replace a version's pending content","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json put /versions/{versionId}","href":"/content-api/drafts-and-publishing/replace-a-versions-pending-content"},{"title":"Cancel a scheduled publication","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /versions/{versionId}","href":"/content-api/drafts-and-publishing/cancel-a-scheduled-publication"},{"title":"Reschedule a scheduled version","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /versions/{versionId}","href":"/content-api/drafts-and-publishing/reschedule-a-scheduled-version"},{"title":"Schedule a version for publication","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/schedule","href":"/content-api/drafts-and-publishing/schedule-a-version-for-publication"},{"title":"Publish a scheduled version immediately","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/publish-now","href":"/content-api/drafts-and-publishing/publish-a-scheduled-version-immediately"},{"title":"Restore a version to live","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/restore","href":"/content-api/drafts-and-publishing/restore-a-version-to-live"}]},{"group":"Global sections","pages":[{"title":"List global sections","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/global-sections","href":"/content-api/global-sections/list-global-sections"},{"title":"Promote an item to a global section","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/global-sections","href":"/content-api/global-sections/promote-an-item-to-a-global-section"},{"title":"Get a global section's draft","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/global-sections/{sectionId}","href":"/content-api/global-sections/get-a-global-sections-draft"},{"title":"Rename, delete, or draft and publish a global section","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/global-sections/{sectionId}","href":"/content-api/global-sections/rename-delete-or-draft-and-publish-a-global-section"}]},{"group":"Page settings","pages":[{"title":"Get page settings","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-settings/{pageId}","href":"/content-api/page-settings/get-page-settings"},{"title":"Rename a page or update its SEO","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/page-settings/{pageId}","href":"/content-api/page-settings/rename-a-page-or-update-its-seo"}]},{"group":"Project structure","pages":[{"title":"Get project hierarchy","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/hierarchy","href":"/content-api/project-structure/get-project-hierarchy"},{"title":"Manage variants and page overrides","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/hierarchy","href":"/content-api/project-structure/manage-variants-and-page-overrides"}]},{"group":"Backups and portability","pages":[{"title":"List, download or diff project backups","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/backups","href":"/content-api/backups-and-portability/list-download-or-diff-project-backups"},{"title":"Create a backup or restore one as a new project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/backups","href":"/content-api/backups-and-portability/create-a-backup-or-restore-one-as-a-new-project"},{"title":"Export the live project","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/export","href":"/content-api/backups-and-portability/export-the-live-project"},{"title":"Import an export file into this project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/import","href":"/content-api/backups-and-portability/import-an-export-file-into-this-project"},{"title":"Restore an uploaded backup file as a new project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /backup-restores","href":"/content-api/backups-and-portability/restore-an-uploaded-backup-file-as-a-new-project"}]},{"group":"Previews and hostnames","pages":[{"title":"List preview URLs","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/previews","href":"/content-api/previews-and-hostnames/list-preview-urls"},{"title":"Create, update or delete a preview URL","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/previews","href":"/content-api/previews-and-hostnames/create-update-or-delete-a-preview-url"},{"title":"List observed storefront hostnames","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/hostnames","href":"/content-api/previews-and-hostnames/list-observed-storefront-hostnames"},{"title":"Block or unblock a storefront hostname","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/hostnames","href":"/content-api/previews-and-hostnames/block-or-unblock-a-storefront-hostname"}]}]},{"tab":"Ecosystem","pages":[{"title":"Ecosystem","href":"/ecosystem"}]},{"tab":"Help \u0026 Community","pages":[{"title":"Help \u0026 Community","href":"/resources"}]}]}]},"basePath":"","title":"Update page content - Weaverse","buildId":"dpl_6dVqRXFR2Go5vF5RLvAdHuv189oT","deploymentId":"dpl_6dVqRXFR2Go5vF5RLvAdHuv189oT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-D_7my4bd.js","utils-Cq_itTNA.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B5KPEvGz.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DBX-JepP.js","snippetPresets-Bsspz-Ge.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-jcs-2nGf.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Dp53in7F.js","shallow-Dv9eUdUd.js","getApiPlaygroundDisplay-D8cDwNhi.js","CodeSnippet-DkwXLQor.js","CodeSnippets-DcSgKqs5.js","Page-t8ynOKTD.js","getPastedJson-I2RjoApV.js","icon-BIj57rZC.js","MethodPill-CTwLPWXC.js","DuplicateIcon-BJpFwygY.js","createIcon-C7PorfAe.js","DynamicMarkdown-BBht_uEs.js","SectionHeading-YIBwxbzj.js","axios-vUo_bRtp.js","Markdown--YCeFtOs.js","clsx-CrPa459s.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BWxsj3I0.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fBzVvq7k.js"]}