> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r28.ai/charter/llms.txt
> Use this file to discover all available pages before exploring further.

# pages_update

> Update a page's property values, icon, cover, or trash state. Properties not named are left alone, and a value set to null is cleared. This cannot move a page — use `pages_move`.

<div className="tool-route"><span className="tool-row-method" data-method="PATCH">PATCH</span><code>{"https://api.notion.com/v1/pages/{pageId}"}</code></div>

```python notion_pages_update.py theme={null}
from charter.packs import notion

result = await notion.pages_update.ainvoke({"pageId": ..., "body": ...})
```

<Note>
  Requires `Update content`.
</Note>

<Warning>
  This tool's JSON schema is 19 KB, because it models the whole resource this endpoint writes.
  That is more context than most tasks. Narrow it at the call site
  with [`Tool.derived`](/charter/charter/reference/tool#tool-derived):

  ```python theme={null}
  narrowed = notion.pages_update.derived(
      name="pages_update_narrowed",
      drop={"body.icon", "body.cover", "body.template"},
  )
  ```

  Those are its heaviest branches by schema size, not a recommendation: which ones you can spare is yours to decide. The tool underneath is unchanged.
  See [Projections](/charter/charter/tools/projections).
</Warning>

## Path parameters

<div className="reference-table">
  | Field                                                          | Type     | Description         |
  | -------------------------------------------------------------- | -------- | ------------------- |
  | `pageId` <span className="required" title="required">\*</span> | `string` | The ID of the page. |
</div>

## Query parameters

<div className="reference-table">
  | Field              | Type        | Description                                                                                                                                                                                |
  | ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | `filterProperties` | `string`\[] | Property IDs to return on the page that comes back, instead of all of them. A page that does not have a listed property omits it. <span className="field-constraints">max 100 items</span> |
</div>

## Body

<div className="reference-table">
  | Field                                                        | Type                                                                 | Description           |
  | ------------------------------------------------------------ | -------------------------------------------------------------------- | --------------------- |
  | `body` <span className="required" title="required">\*</span> | [PageUpdateBody](/charter/charter/packs/notion/pages/objects#pageupdatebody) | The fields to change. |
</div>
