V2
Append Block Children
Append direct child blocks under a block and optionally choose the insertion point.
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
childrenis 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
afteris provided, it must refer to an existing direct child of the parent block.
Errors
400 validation_error: invalid children or invalidaftervalue.400 unsupported_block_type: child block type cannot be written.401 unauthorized: invalid or expired token.403 forbidden: missingblocks.writeor no access.404 not_found: parent orafterblock does not exist.