PATCH updates draft content and/or metadata for an existing page. Pass base_revision to avoid overwriting concurrent edits. Moving pages via API is not supported in v1.
Required scope:content:writeAt least one of content or metadata must be provided.
Optimistic concurrency
When you last read a page, note the revision field. Send it back as:
Body field: "base_revision": "{revision}" — preferred, or
Header: If-Match: "{revision}"
Prefer the body field. If-Match is a real HTTP precondition header, so proxies and CDNs between you and the API may evaluate it themselves against the response's ETag and answer 412 Precondition Failed — potentially after the write has already committed. base_revision carries no HTTP semantics, so only this endpoint ever interprets it. If you do use the header, quote the value: If-Match takes an entity-tag, not a bare id.If someone else edited the page since your read, the API returns 409 REVISION_CONFLICT with the current revision in error.details. Re-fetch, merge, and retry — or omit the precondition entirely to force an overwrite.
200 OK — same shape as Create a page ({ page: { … } }). When new content is valid but reads off-dialect (button rows, hand-rolled heroes, bare link lists where a Collection or OgCard belongs), the response also carries an advisory recommendations array — see Create a page for the format. The update has already succeeded; the entries describe suggested rewrites toward Aveiro's linear editorial dialect.
Limitations
Path moves are not supported — sending path returns 400 VALIDATION_ERROR
Updates are draft-only — publish in the editor
MDX must pass server-side validation (422 INVALID_MDX on failure)