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

# blocks_children_append

> Append blocks to a page or a block. At most 100 per call and two levels of nesting; build deeper trees by appending to the blocks that come back. Append-only — it cannot move or reorder what is already there, though `position` chooses where the new blocks land.

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

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

result = await notion.blocks_children_append.ainvoke({"blockId": ..., "body": ...})
```

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

<Warning>
  This tool's JSON schema is 66 KB, because `body.children` carries 45 kinds of edit behind one method.
  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.blocks_children_append.derived(
      name="blocks_children_append_narrowed",
      keep={"body.children.object", "body.children.type", "body.children.code"},
  )
  ```

  Three of the 45 are kept here. Which ones your agent needs is yours to pick. The tool underneath is unchanged.
  See [Projections](/charter/charter/tools/projections).
</Warning>

## Path parameters

<div className="reference-table">
  | Field                                                           | Type     | Description                                                                               |
  | --------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------- |
  | `blockId` <span className="required" title="required">\*</span> | `string` | The ID of the block, or of a page — a page is the block its top-level content hangs from. |
</div>

## Body

<div className="reference-table">
  | Field                                                        | Type                                                                                    | Description           |
  | ------------------------------------------------------------ | --------------------------------------------------------------------------------------- | --------------------- |
  | `body` <span className="required" title="required">\*</span> | [BlockChildrenAppendBody](/charter/charter/packs/notion/blocks/objects#blockchildrenappendbody) | The blocks to append. |
</div>
