Skip to main content
PATCH
Update page content

Authorizations

Authorization
string
header
required

Bearer authentication: a shop API key (WEAVERSE_API_KEY), a scoped API key, a delegated MCP OAuth token, or (translation-unit routes only) a project-bound translation agent token. Scopes: content:read — Read projects, pages, theme settings, versions, drafts and translation units. content:write — Save drafts and make non-destructive edits (page items, metadata, SEO, assignments, languages, glossary). Never publishes or deletes. content:publish — Publish drafts, schedule/reschedule/cancel publications, restore versions, publish global sections. content:delete — Delete pages, global sections, languages, static keys, override reverts; required with project:manage for project deletion. project:manage — Create/copy/delete projects, settings, variants, hierarchy, backups, restore-as-new, previews, hostname policy. translations:read — Read translation units only (no general content access). translations:write — Apply translation units only; never mutates page content. A legacy unscoped API key keeps read/write/translation baseline access and every pre-scope endpoint, but never gains publish/delete/project-manage implicitly.

Path Parameters

projectId
string
required
type
string
required

Page type (e.g. PRODUCT, INDEX, CUSTOM)

handle
string
required

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).

Body

application/json
items
object[]
required
Maximum array length: 100
locale
string

Optional. Same resolution as GET; defaults to the stored default locale.

expectedUpdatedAt
string<date-time> | null

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.

exact
boolean

Refuse locale/handle fallback; 404 instead

Response

Update result with per-item accounting

object
enum<string>
Available options:
page_update
pageId
string
locale
string
requested
integer
updated
integer
created
integer
notFound
integer
failed
integer
updatedIds
string[]
createdIds
string[]
notFoundIds
string[]
failedIds
string[]