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

# Append block children

> Add blocks to a document or inside a block. Requires Insert content.

Adds blocks to a document, or inside a block. Requires **Insert content**. If any block is rejected, nothing is saved.

**Authorization** `string` *required*

`Bearer <token>`. See [Tokens](https://developers.bottari.ai/auth/tokens.md).

**Bottari-Version** `string`

Optional. Only `2026-03-11` is accepted. Without it, the current version is used. A different value returns 400.

**id** `string` *required*

A document ID or block ID.

**children** `object[]` *required*

Up to 100 blocks. See [Block values](https://developers.bottari.ai/api-reference/block-values.md).

**position** `object`

Where to add them. The default is the end.

* `{ "type": "end" }`
* `{ "type": "start" }`
* `{ "type": "after_block", "after_block": { "id": "..." } }`

**notifications** `object`

`{ "mode": "silent" }` sends no notifications for mentions in these blocks. The default is `default`.

## Position

* `after_block` needs a direct child of the target. A block elsewhere returns 400, and an ID that doesn't exist returns 404.
* If the `after_block` block was deleted through the API, the new blocks go to the end. If its parent was deleted, the response is 400.
* If a document ends with the empty line the editor adds, the new blocks go before it.

## What each target accepts

`table_row` and `column` only go in a `table` and a `column_list`. Elsewhere the response is 400.

| Target | Accepts |
| - | - |
| Document, subpage | Any block type. |
| `toggle`, list items, `to_do`, `quote`, `callout`, `column` | Any block type. |
| `paragraph` | Any block type. The children appear indented. |
| Heading | Any block type if `is_toggleable` is `true`. Otherwise 400 `Block does not support children.` |
| `table` | `table_row` only, with as many cells as `table_width`. |
| `column_list` | `column` only. A list holds at most 5 columns. |
| `tab` | `paragraph` only. Each one is a new tab. |
| Original `synced_block` | Any block type except `synced_block`. |
| Copy of a `synced_block` | Goes to the original, and the new blocks' `parent` is the original. `after_block` returns 400. |

## Response

A list of block objects: the new blocks first, then the siblings after them, up to 100. If there are more siblings, `has_more` is `true`. To read the rest, use [List block children](https://developers.bottari.ai/api-reference/blocks/children.md).

Sending `children: []` adds nothing and returns the target's current children.

## Errors

| Status | `code` | Cause |
| - | - | - |
| 400 | `validation_error` | A block value is wrong, a limit was exceeded, or the target can't take these blocks. A document in the trash, or a deleted block or its descendant, also returns this. |
| 400 | `validation_error` | The content would be over the document limit: `The page content is too large.` |
| 403 | `restricted_resource` | **Insert content** is off, the database has a task agent attached, or the team reached its block limit. |
| 404 | `object_not_found` | The target or anchor doesn't exist, or the integration can't read it. A `file_upload` value also returns this. |

See [Common rules](https://developers.bottari.ai/api-reference/overview.md#errors) for shared errors.

```bash curl theme={null}
curl https://api.bottari.ai/v1/blocks/exampleRow01/children \
  -X PATCH \
  -H "Authorization: Bearer $BOTTARI_TOKEN" \
  -H "Bottari-Version: 2026-03-11" \
  -H "Content-Type: application/json" \
  -d '{
    "children": [
      {
        "paragraph": {
          "rich_text": [
            { "text": { "content": "Ask the team to review it." } }
          ]
        }
      }
    ]
  }'
```

```json 200 theme={null}
{
  "object": "list",
  "results": [
    {
      "object": "block",
      "id": "exampleRow01.exampleBlk02",
      "parent": {
        "type": "page_id",
        "page_id": "exampleRow01"
      },
      "created_time": "2026-01-15T02:30:00.000Z",
      "last_edited_time": "2026-01-15T03:10:00.000Z",
      "created_by": {
        "object": "user",
        "id": "22222222-2222-4222-8222-222222222222"
      },
      "last_edited_by": {
        "object": "user",
        "id": "22222222-2222-4222-8222-222222222222"
      },
      "has_children": false,
      "in_trash": false,
      "type": "paragraph",
      "paragraph": {
        "rich_text": [
          {
            "type": "text",
            "text": {
              "content": "Ask the team to review it.",
              "link": null
            },
            "annotations": {
              "bold": false,
              "italic": false,
              "strikethrough": false,
              "underline": false,
              "code": false,
              "color": "default"
            },
            "plain_text": "Ask the team to review it.",
            "href": null
          }
        ],
        "icon": null,
        "color": "default"
      }
    }
  ],
  "next_cursor": null,
  "has_more": false,
  "type": "block",
  "block": {},
  "request_id": "33333333-3333-4333-8333-333333333333"
}
```

```json 400 theme={null}
{
  "object": "error",
  "status": 400,
  "code": "validation_error",
  "message": "Block does not support children.",
  "request_id": "33333333-3333-4333-8333-333333333333"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.