📄 block-types.md

← Vault

Notion Block Types

Reference for creating and reading all common Notion block types via the API.

Creating blocks

Use PATCH /v1/blocks/{page_id}/children with a children array. Each block follows this structure:

`json

{"object": "block", "type": "", "": { ... }}

`

Paragraph

`json

{"type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello world"}}]}}

`

Headings

`json

{"type": "heading_1", "heading_1": {"rich_text": [{"text": {"content": "Title"}}]}}

{"type": "heading_2", "heading_2": {"rich_text": [{"text": {"content": "Section"}}]}}

{"type": "heading_3", "heading_3": {"rich_text": [{"text": {"content": "Subsection"}}]}}

`

Bulleted list

`json

{"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"text": {"content": "Item"}}]}}

`

Numbered list

`json

{"type": "numbered_list_item", "numbered_list_item": {"rich_text": [{"text": {"content": "Step 1"}}]}}

`

To-do / checkbox

`json

{"type": "to_do", "to_do": {"rich_text": [{"text": {"content": "Task"}}], "checked": false}}

`

Quote

`json

{"type": "quote", "quote": {"rich_text": [{"text": {"content": "Something wise"}}]}}

`

Callout

`json

{"type": "callout", "callout": {"rich_text": [{"text": {"content": "Important note"}}], "icon": {"emoji": "💡"}}}

`

Code

`json

{"type": "code", "code": {"rich_text": [{"text": {"content": "print('hello')"}}], "language": "python"}}

`

Toggle

`json

{"type": "toggle", "toggle": {"rich_text": [{"text": {"content": "Click to expand"}}]}}

`

Divider

`json

{"type": "divider", "divider": {}}

`

Bookmark

`json

{"type": "bookmark", "bookmark": {"url": "https://example.com"}}

`

Image (external URL)

`json

{"type": "image", "image": {"type": "external", "external": {"url": "https://example.com/photo.png"}}}

`

Reading blocks

When reading blocks from GET /v1/blocks/{page_id}/children, each block has a type field. Extract readable text like this:

TypeText locationExtra fields
----------------------------------
paragraph.paragraph.rich_text
heading_1/2/3.heading_N.rich_text
bulleted_list_item.bulleted_list_item.rich_text
numbered_list_item.numbered_list_item.rich_text
to_do.to_do.rich_text.to_do.checked (bool)
toggle.toggle.rich_texthas children
code.code.rich_text.code.language
quote.quote.rich_text
callout.callout.rich_text.callout.icon.emoji
divider
image.image.caption.image.file.url or .image.external.url
bookmark.bookmark.caption.bookmark.url
child_page.child_page.title
child_database.child_database.title

Rich text arrays contain objects with .plain_text — concatenate them for readable output.


Contributed by @dogiladeveloper