Developer API
Append Block Children
V2

Append Block Children

Append direct child blocks under a block and optionally choose the insertion point.

PATCH /v2/blocks/:block_id/children

Append Block Children

Use Case

Use this endpoint to append new direct children under a block. You can optionally insert after an existing child block.

Endpoint

Item Value
Method PATCH
Path /v2/blocks/:block_id/children
Request body JSON
Returns list of appended block objects
Scope blocks.write

Permissions

Requires blocks.write and write access to the parent block.

Parameters

Parameter Type Required Description
block_id string Yes Parent block ID.
children block input[] Yes Blocks to append.
after string No Existing child block ID to insert after.

Request Example

{
  "children": [
    {
      "object": "block",
      "type": "paragraph",
      "paragraph": {
        "rich_text": [
          {
            "type": "text",
            "text": {
              "content": "Follow-up notes"
            }
          }
        ]
      }
    },
    {
      "object": "block",
      "type": "to_do",
      "to_do": {
        "rich_text": [
          {
            "type": "text",
            "text": {
              "content": "Confirm launch date"
            }
          }
        ],
        "checked": false,
        "color": "default"
      }
    }
  ],
  "after": null
}

Response Example

{
  "object": "list",
  "results": [
    {
      "object": "block",
      "id": "44444444-4444-4444-8444-444444444444",
      "parent": {
        "type": "page_id",
        "page_id": "11111111-1111-4111-8111-111111111111"
      },
      "created_time": "2026-04-09T08:00:00.000Z",
      "last_edited_time": "2026-04-09T09:30:00.000Z",
      "created_by": {
        "object": "user",
        "id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"
      },
      "last_edited_by": {
        "object": "user",
        "id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"
      },
      "has_children": false,
      "in_trash": false,
      "type": "paragraph",
      "paragraph": {
        "rich_text": [
          {
            "type": "text",
            "text": {
              "content": "Project kickoff notes",
              "link": null
            },
            "plain_text": "Project kickoff notes",
            "href": null
          }
        ],
        "color": "default"
      }
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Behavior

  • children is required and can contain up to 100 top-level blocks.
  • Only writable block types are accepted.
  • Nested child blocks are supported for the block types that can contain children, within the supported depth limit.
  • If after is provided, it must refer to an existing direct child of the parent block.

Errors

  • 400 validation_error: invalid children or invalid after value.
  • 400 unsupported_block_type: child block type cannot be written.
  • 401 unauthorized: invalid or expired token.
  • 403 forbidden: missing blocks.write or no access.
  • 404 not_found: parent or after block does not exist.

Prerequisites

Next Steps

References