Update page metadata (title, icon, move, archive, change space)
Setting workspaceId moves the page to another space the caller can access — the entire subtree moves with it and the page becomes a root of the target space unless the same request also names a parent inside it. A sidebar drag sends all three move fields at once (space, parent, position), so parentId is validated: - the parent must be a page the caller can see (404 otherwise — never a confirmation that an id exists in another org) - the parent must be in the space the page ends up in, so a page is never nested under a parent that space's readers cannot open (400) - the parent must not be the page itself or one of its own descendants (400) — a cycle detaches the whole branch from every root and it stops appearing in the tree archived=true trashes the page and every live sub-page with the same timestamp; archived=false restores the page and exactly that batch (sub-pages trashed separately stay in the trash). A page restored under a parent that is still trashed comes back at the space root. `parentId: ""` clears the parent, putting the page at the top level of its space. `position` is a float, so a page can be dropped between two siblings by writing one row instead of renumbering the list. A move into a space with a wider audience — Private to a team or everyone, a team to everyone, or one team to another — exposes the page and its sub-pages to people who could not read them before. It needs the same authority as changing a space's audience: the owner of the space the page is leaving, or a workspace owner/admin (403 `widening_move` otherwise). Callers who have that authority must also send `confirmWiden: true` (409 `confirm_widen` otherwise, with the target space so the client can name it in a prompt). Narrowing and same-audience moves need neither. Every cross-space move is written to the platform audit log as `notes.page.moved`.
View as MarkdownAuthorization
bearer In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/pages/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "page": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c", "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43", "title": "string", "icon": "string", "position": 0, "createdBy": "25a02396-1048-48f9-bf93-102d2fb7895e", "created": "2019-08-24T14:15:22Z", "updated": "2019-08-24T14:15:22Z", "archivedAt": "2019-08-24T14:15:22Z", "source": "string", "sourceRef": "string", "publishedRev": 0, "publishedAt": "2019-08-24T14:15:22Z", "docRev": 0, "excerpt": "string", "published": true, "openComments": 0, "internalOverride": true, "internal": true }}Get a page with its legacy blocks
Previous Page
Delete a trashed page permanently
Only a page that is already in the trash (archived) can be deleted forever; a live page returns 409. The page goes with its trashed sub-pages. A sub-page that is still live is kept and moved up to the deleted page's parent (or the space root if that parent is trashed).