Access the Notion API with managed OAuth authentication. Query databases, search pages, and read workspace content. All write operations (creating, updating, or deleting pages, blocks, and databases) require explicit user confirmation specifying the target resource and connection before execution.
Reference
Search
Search for pages:
POST /notion/v1/search
Content-Type: application/json
Notion-Version: 2025-09-03
{
"query": "meeting notes",
"filter": {"property": "object", "value": "page"}
}maton notion search 'meeting notes' --filter pageSearch for data sources:
POST /notion/v1/search
Content-Type: application/json
Notion-Version: 2025-09-03
{
"filter": {"property": "object", "value": "data_source"}
}maton notion search --filter data_sourceGet Data Source
GET /notion/v1/data_sources/{dataSourceId}
Notion-Version: 2025-09-03maton notion data-source view <dataSourceId>Query Data Source
POST /notion/v1/data_sources/{dataSourceId}/query
Content-Type: application/json
Notion-Version: 2025-09-03
{
"filter": {
"property": "Status",
"select": {"equals": "Active"}
},
"sorts": [
{"property": "Created", "direction": "descending"}
],
"page_size": 100
}maton notion data-source query <dataSourceId> \
--filter '{"property":"Status","select":{"equals":"Active"}}' \
--sorts '[{"property":"Created","direction":"descending"}]' \
--page-size 100Update Data Source
PATCH /notion/v1/data_sources/{dataSourceId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"title": [{"type": "text", "text": {"content": "Updated Title"}}],
"properties": {
"NewColumn": {"rich_text": {}}
}
}maton notion data-source update <dataSourceId> \
--body '{"title":[{"type":"text","text":{"content":"Updated Title"}}],"properties":{"NewColumn":{"rich_text":{}}}}'Get Database
GET /notion/v1/databases/{databaseId}
Notion-Version: 2025-09-03maton notion database view <databaseId>Create Database
POST /notion/v1/databases
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"type": "page_id", "page_id": "PARENT_PAGE_ID"},
"title": [{"type": "text", "text": {"content": "New Database"}}],
"properties": {
"Name": {"title": {}}
}
}maton notion database create --parent-page PARENT_PAGE_ID --title 'New Database'In API version 2025-09-03, POST /databases only accepts the title property — any other entries in properties are silently dropped. To define a schema, follow up with PATCH /data_sources/{dataSourceId} (see Update Data Source) using the data_sources[0].id returned by the create call.
Get Page
GET /notion/v1/pages/{pageId}
Notion-Version: 2025-09-03maton notion page view <pageId>Create Page
POST /notion/v1/pages
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"page_id": "PARENT_PAGE_ID"},
"properties": {
"title": {"title": [{"text": {"content": "New Page"}}]}
}
}maton notion page create --parent-page PARENT_PAGE_ID --title 'New Page'Create Page in Data Source
POST /notion/v1/pages
Content-Type: application/json
Notion-Version: 2025-09-03
{
"parent": {"data_source_id": "DATA_SOURCE_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "New Page"}}]},
"Status": {"select": {"name": "Active"}}
}
}maton notion page create --data-source DATA_SOURCE_ID --title 'New Page' \
--properties '{"Status":{"select":{"name":"Active"}}}'Update Page Properties
PATCH /notion/v1/pages/{pageId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"properties": {
"Status": {"select": {"name": "Done"}}
}
}maton notion page update {pageId} --properties '{"Status":{"select":{"name":"Done"}}}'Update Page Icon
PATCH /notion/v1/pages/{pageId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"icon": {"type": "emoji", "emoji": "🚀"}
}maton notion page update {pageId} --icon 🚀Or with an image URL:
maton notion page update {pageId} --icon https://example.com/icon.pngArchive Page
PATCH /notion/v1/pages/{pageId}
Content-Type: application/json
Notion-Version: 2025-09-03
{
"archived": true
}maton notion page archive {pageId}Get Block Children
GET /notion/v1/blocks/{blockId}/children
Notion-Version: 2025-09-03maton notion block children <blockId>Append Block Children
PATCH /notion/v1/blocks/{blockId}/children
Content-Type: application/json
Notion-Version: 2025-09-03
{
"children": [
{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{"type": "text", "text": {"content": "New paragraph"}}]
}
}
]
}maton notion block append <blockId> \
--children '[{"object":"block","type":"paragraph","paragraph":{"rich_text":[{"type":"text","text":{"content":"New paragraph"}}]}}]'Delete Block
DELETE /notion/v1/blocks/{blockId}
Notion-Version: 2025-09-03maton notion block delete <blockId>List Users
GET /notion/v1/users
Notion-Version: 2025-09-03maton notion user listGet Current User
GET /notion/v1/users/me
Notion-Version: 2025-09-03maton notion whoamiMaton Events
page.created
Parameters
parent_id(string, optional): Database or page ID to scope to pages created inside it. Leave blank to match any parent.
page.content_updated
Parameters
page_id(string, optional): Page ID to match only that page for block changes. Leave blank to match all pages.
comment.created
Parameters
parent_id(string, optional): Page ID to receive comment events only from that page. Leave blank to match any page.