{
"object": "version",
"version": {
"id": "clz8hst3b5d7f9h1j3l5n7p9",
"pageId": "clz7pg9k2m4n6p8r0t2v4x6z",
"projectId": "clz7prj0a1b2c3d4e5f6g7h8",
"userId": null,
"snapshot": {
"pageData": {
"id": "clz7pg9k2m4n6p8r0t2v4x6z",
"name": "Home",
"rootId": "root-1",
"items": [
{
"id": "root-1",
"type": "main",
"children": [
{
"id": "hero-1"
}
],
"data": {}
},
{
"id": "hero-1",
"type": "hero-image",
"data": {
"heading": "Summer collection",
"height": "large"
}
}
],
"expectedUpdatedAt": "2026-10-08T10:00:00.000Z"
},
"pageAssignment": {
"type": "INDEX",
"handle": "",
"locale": ""
}
},
"kind": "HISTORY",
"draftBasePageUpdatedAt": null,
"draftBaseProjectUpdatedAt": null,
"publishedPageUpdatedAt": null,
"publishedProjectUpdatedAt": null,
"assignedType": "INDEX",
"assignedHandle": "",
"assignedLocale": "",
"assignedMarket": null,
"assignmentDeferred": false,
"scheduleRevision": 2,
"createdAt": "2026-10-08T10:05:00.000Z",
"publishAt": "2026-12-01T09:00:00.000Z",
"publishedAt": null,
"status": "SCHEDULED"
}
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "STALE_PAGE",
"message": "This page changed after it was loaded. Re-read and retry.",
"status": 409,
"details": {
"pageId": "clz7pg9k2m4n6p8r0t2v4x6z"
}
}Replace a version's pending content
Replaces the stored content of a version, typically one that is scheduled, so the new content goes live when the schedule fires. The schedule time stays the same. Send projectId and type in the body, not the query. type chooses the shape:
type: "page": a full pagesnapshot(pageDatawithname,rootId,items, andpageAssignment).snapshot.pageDatais the page itself, not a{ page }wrapper. The write is fenced onsnapshot.pageData.expectedUpdatedAt: if the version’s page changed since then, the response is 409STALE_PAGEand the stored snapshot stays the same.type: "theme": a full themesnapshot(theme,recentColors,previewHost,defaultLocale), fenced onexpectedProjectUpdatedAt. If the project revision moved, the response is 409STALE_PROJECT.type: "deferred-page": for a catch-all page version that has no live assignment yet. Send the page save payload aspageData(pageandpageAssignment;page.idandpage.expectedUpdatedAtare required), optionaltranslationsandstaticTextChanges, the version’s currentscheduleRevisionasexpectedScheduleRevision, andexpectedProjectUpdatedAt. The response isversion_recaptured, and itsversionIdmay name a new successor version; use that id from then on.
Refusals (409 CONFLICT). Draft versions cannot be changed; save a new draft through PUT /projects/{projectId}/page-drafts/{pageId} instead. Sending page for a deferred version, or deferred-page for a normal one, is also refused. An invalid snapshot is 400.
Required scope: content:publish
{
"object": "version",
"version": {
"id": "clz8hst3b5d7f9h1j3l5n7p9",
"pageId": "clz7pg9k2m4n6p8r0t2v4x6z",
"projectId": "clz7prj0a1b2c3d4e5f6g7h8",
"userId": null,
"snapshot": {
"pageData": {
"id": "clz7pg9k2m4n6p8r0t2v4x6z",
"name": "Home",
"rootId": "root-1",
"items": [
{
"id": "root-1",
"type": "main",
"children": [
{
"id": "hero-1"
}
],
"data": {}
},
{
"id": "hero-1",
"type": "hero-image",
"data": {
"heading": "Summer collection",
"height": "large"
}
}
],
"expectedUpdatedAt": "2026-10-08T10:00:00.000Z"
},
"pageAssignment": {
"type": "INDEX",
"handle": "",
"locale": ""
}
},
"kind": "HISTORY",
"draftBasePageUpdatedAt": null,
"draftBaseProjectUpdatedAt": null,
"publishedPageUpdatedAt": null,
"publishedProjectUpdatedAt": null,
"assignedType": "INDEX",
"assignedHandle": "",
"assignedLocale": "",
"assignedMarket": null,
"assignmentDeferred": false,
"scheduleRevision": 2,
"createdAt": "2026-10-08T10:05:00.000Z",
"publishAt": "2026-12-01T09:00:00.000Z",
"publishedAt": null,
"status": "SCHEDULED"
}
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "STALE_PAGE",
"message": "This page changed after it was loaded. Re-read and retry.",
"status": 409,
"details": {
"pageId": "clz7pg9k2m4n6p8r0t2v4x6z"
}
}Authorizations
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.
Path Parameters
Body
Response
Updated version
The response is of type object.
Was this page helpful?