Authentication
| Method | Properties | When to Use |
| ApiToken | ApiToken — Internal Integration Token from notion.so/my-integrations | Single workspace, internal automations. Simplest setup. |
| OAuth2 | ClientId, ClientSecret, AccessToken | Multi-workspace or public integrations requiring user-level authorisation. |
database/get
| Property | Required | Description |
DatabaseId | Required | The Notion database ID. Found in the database URL: notion.so/workspace/DATABASE_ID?v=.... Can also be obtained from database/getMany. |
database/getMany
| Property | Required | Description |
PageSize | Optional | Integer. Number of databases to return per page. Max: 100. Default: 100. |
StartCursor | Optional | Pagination cursor from a previous response's next_cursor field to fetch the next page of results. |
database/search
| Property | Required | Description |
Query | Required | Text string to search for in database titles. Case-insensitive substring match. |
PageSize | Optional | Integer. Maximum results to return. Default: 100. |
database/query
| Property | Required | Description |
DatabaseId | Required | The ID of the database to query. |
Filter | Optional | Notion filter JSON object. Uses the Notion filter syntax with property, filter_type, and condition keys. See filter example below. |
Sorts | Optional | JSON array of sort objects. Each object specifies a property and direction ("ascending" or "descending"). |
PageSize | Optional | Integer. Results per page. Max: 100. |
StartCursor | Optional | Pagination cursor for the next page of results. |
ReturnAll | Optional | Boolean. When true, automatically paginates through all results and returns the full set regardless of database size. |
database/createPage
| Property | Required | Description |
DatabaseId | Required | The ID of the database to add the new page (row) to. |
Properties | Required | JSON object of page properties matching the database schema. Each key is a property name; each value is formatted according to its Notion property type (see Property Types section below). |
Blocks | Optional | JSON array of Notion block objects to add as the page body content. Appended after the database properties. |
Icon | Optional | Emoji character (e.g. "📋") or external image URL to use as the page icon. |
page/createStandalone
| Property | Required | Description |
ParentPageId | Required | The ID of the parent page under which the new page will be created. |
Title | Required | The page title as a plain text string. Supports BizFirst expressions. |
Blocks | Optional | JSON array of block objects for the page body content. |
Icon | Optional | Emoji or image URL for the page icon. |
page/get
| Property | Required | Description |
PageId | Required | The Notion page ID to retrieve. |
Simplify | Optional | Boolean. When true, flattens the verbose Notion property format into plain key-value pairs. Recommended for most workflows. |
page/update
| Property | Required | Description |
PageId | Required | The ID of the page to update. |
Properties | Optional | JSON object of properties to update. Only specified properties are changed; all others are preserved. |
Archived | Optional | Boolean. Set to true to archive the page (hide from workspace). Set to false to restore an archived page. |
page/archive
| Property | Required | Description |
PageId | Required | The ID of the page to archive. Sets archived=true on the page. |
block/getChildren
| Property | Required | Description |
BlockId | Required | The ID of the page or block whose children to retrieve. A page ID is also a valid block ID. |
PageSize | Optional | Integer. Number of child blocks to return per page. Max: 100. |
ReturnAll | Optional | Boolean. When true, returns all child blocks regardless of page count. |
block/appendChildren
| Property | Required | Description |
BlockId | Required | The ID of the page or block to append content to. |
Blocks | Required | JSON array of Notion block objects to append. Blocks are added at the end of existing content. |
user/get
| Property | Required | Description |
UserId | Required | The Notion user ID (UUID format). Obtain user IDs from user/getMany. |
user/getMany
| Property | Required | Description |
PageSize | Optional | Integer. Number of users per page. Max: 100. |
ReturnAll | Optional | Boolean. When true, paginates through all workspace members. |
trigger/pageAdded & trigger/pageUpdated
| Property | Required | Description |
DatabaseId | Required | The database to monitor for new or updated pages. |
PollingInterval | Optional | How frequently to poll the database for changes, in seconds. Default: 60 seconds. |
trigger/webhook
| Property | Required | Description |
WebhookUrl | Required | The BizFirst webhook endpoint URL to register with the webhook source. |
Headers | Optional | JSON object of expected request headers for validation. |
Authentication | Optional | Authentication method for validating inbound webhook requests. |
Notion Property Types
When using database/createPage or page/update, the Properties JSON must use the correct format for each Notion property type:
| Type | JSON Format Example |
title | "Name": {"title": [{"text": {"content": "My Task"}}]} |
rich_text | "Notes": {"rich_text": [{"text": {"content": "Meeting recap"}}]} |
number | "Priority": {"number": 3} |
select | "Status": {"select": {"name": "In Progress"}} |
multi_select | "Tags": {"multi_select": [{"name": "frontend"}, {"name": "urgent"}]} |
date | "Due Date": {"date": {"start": "2026-06-01"}} |
people | "Assignee": {"people": [{"id": "user-uuid-here"}]} |
checkbox | "Done": {"checkbox": false} |
url | "Link": {"url": "https://example.com"} |
email | "Contact": {"email": "user@example.com"} |
relation | "Project": {"relation": [{"id": "related-page-uuid"}]} |
formula | Read-only — computed by Notion. Cannot be set via API. |
rollup | Read-only — aggregated from related records. Cannot be set via API. |
Tip: Run database/get first to inspect the exact property names and types of a database before building your Properties JSON. Property names are case-sensitive and must match exactly as they appear in the database schema.
database/query Filter Example
{
"and": [
{
"property": "Status",
"select": { "equals": "In Progress" }
},
{
"property": "Due Date",
"date": { "on_or_before": "{{ now() }}" }
},
{
"property": "Assigned To",
"people": { "contains": "{{ vars.user_id }}" }
}
]
}