Notion
Overview
Section titled “Overview”Notion centralizes notes, docs, wikis, and tasks in a unified workspace, letting teams build custom workflows for collaboration and knowledge management. With the Notion integration in SquadOS, your agents can create and edit pages, manage databases, search content, and automate documentation workflows directly in your team’s workspace.
- Official website: https://www.notion.so/
- Composio documentation: docs.composio.dev/toolkits/notion
Authentication
Section titled “Authentication”This tool supports OAuth 2.0 (OAUTH2) and API key (API_KEY) to connect.
OAuth 2.0 is recommended for access on behalf of users. The API key (integration token) is used for internal Notion integrations, where page access is controlled manually in the integration settings.
You will need the following fields (for API_KEY):
| Field | Required | Description |
|---|---|---|
api_key | Yes | Internal Notion integration token, generated in the workspace integration settings. |
How to get credentials
Section titled “How to get credentials”OAuth 2.0
Section titled “OAuth 2.0”When connecting via OAuth, you will be redirected to Notion’s authorization page, where you can select the pages and databases the integration will have access to.
API key (integration token)
Section titled “API key (integration token)”- Go to notion.so and log in.
- Navigate to Settings & Members → Connections → Develop or manage integrations.
- Click New integration and fill in the name and desired capabilities.
- Copy the Internal Integration Secret (starts with
secret_). - Share the desired pages or databases with the integration in Notion (use the Connect button on each page).
How to connect in SquadOS
Section titled “How to connect in SquadOS”- Go to Tools in the side menu (
/admin/tools). - Open the Available tab and search for
Notion. - Click the card to open the details modal and hit Connect.
- You’re taken to the secure connection page hosted by Composio, where you authorize access (OAuth) or enter the credentials obtained above.
- Once done, you’re sent back to SquadOS with the account connected and the tool available for agents. (Connection-flow details in Organization Tools.)
Why do Notion operations show “Composio” instead of the user’s name?
Section titled “Why do Notion operations show “Composio” instead of the user’s name?”Notion attributes actions to the integration itself, not the individual user. The name and logo shown come from the integration configuration. To use a custom name or logo, create your own Notion integration. See Notion integration docs.
How do I grant access to more Notion pages?
Section titled “How do I grant access to more Notion pages?”Open Notion, go to Settings & Members, then Connections. Select the integration (Composio or your custom integration), click “Select pages” or “Manage access”, and add or remove pages as needed.
Does Notion use OAuth scopes?
Section titled “Does Notion use OAuth scopes?”No. Notion controls access by granting integrations access to specific pages and databases, not through scopes. You don’t need to pass scopes when creating an auth config.
How does Notion’s access model work?
Section titled “How does Notion’s access model work?”It depends on the integration type. OAuth apps (public) let users select which pages to share during authorization. Internal integrations (API key) have page access managed in the integration settings.
Available actions
Section titled “Available actions”Add multiple content blocks (bulk, user-friendly)
Section titled “Add multiple content blocks (bulk, user-friendly)”NOTION_ADD_MULTIPLE_PAGE_CONTENT
Bulk-add content blocks to Notion. Text >2000 chars auto-splits. Parses markdown formatting. PARENT BLOCK TYPES: Content is added AS CHILDREN of parent_block_id. To add content AFTER a heading, use PAGE ID as parent + heading ID in the after param. Headings CANNOT have children unless is_toggleable=True.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Block ID to insert content AFTER (as siblings). Use this to add content after a heading: set parent_block_id to the PAGE ID and after to the HEADING block ID. If omitted, blocks are appended to the end of the parent’s children list. |
content_blocks | array | Yes | List of blocks to add (max 100). Each item can use the simplified format: {'content': 'text', 'block_property': 'paragraph'} or full Notion format. Auto-features: Markdown parsing. Valid block_property values: paragraph, heading_1-3, callout, to_do, toggle, quote, bulleted/numbered_list_item, divider. |
parent_block_id | string | Yes | UUID of the parent page or block where content will be added AS CHILDREN. Common mistake: to add content AFTER a block (as siblings), use the page ID as parent_block_id and specify the block ID in after. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Add single content block to Notion page (Deprecated)
Section titled “Add single content block to Notion page (Deprecated)”NOTION_ADD_PAGE_CONTENT
DEPRECATED: Use add_multiple_page_content for better performance. Adds a single content block to a Notion page/block. The content field is required for text blocks. The 2000-character limit per text.content field is automatically handled (content exceeding the limit is split into multiple blocks).
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Identifier of an existing block. The new content block will be appended immediately after this block. If omitted, appended to the end of the parent’s children list. |
content_block | string | Yes | Simplified format: {'content': 'text', 'block_property': 'type'}. The content field is mandatory for: paragraph, heading_1-3, callout, to_do, toggle, quote, bulleted_list_item, numbered_list_item. Max 2000 chars per content field. Also accepts full Notion block format. |
parent_block_id | string | Yes | Identifier of the parent page or block. Parent must be: Page, Toggle, To-do, List Item, Callout, or Quote. Also accepts page_id or block_id as aliases. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append raw Notion blocks (advanced API)
Section titled “Append raw Notion blocks (advanced API)”NOTION_APPEND_BLOCK_CHILDREN
DEPRECATED: Use NOTION_APPEND_TEXT_BLOCKS, NOTION_APPEND_TASK_BLOCKS, NOTION_APPEND_CODE_BLOCKS, NOTION_APPEND_MEDIA_BLOCKS, NOTION_APPEND_LAYOUT_BLOCKS, or NOTION_APPEND_TABLE_BLOCKS instead. Appends raw Notion API blocks to parent. Text limited to 2000 chars per text.content field. Each block MUST have object: 'block' and type.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The unique identifier (UUID) of the parent block or page to append children to. |
children | array | Yes | Array of block objects (max 100 per request). 2000 char limit per text.content field. Each block MUST include object: 'block' and type. Text blocks must use rich_text array structure. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append code blocks (code, quote, equation)
Section titled “Append code blocks (code, quote, equation)”NOTION_APPEND_CODE_BLOCKS
Append code and technical blocks (code, quote, equation) to a Notion page. Use for: code snippets and programming examples (code); citations and highlighted quotes (quote); mathematical formulas and equations (equation). Code content is limited to 2000 characters per text.content field.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The UUID of the parent block or page to append children to. |
children | array | Yes | Array of code/technical block objects. Supported types: code (syntax highlighting, 70+ languages), quote (block quote for citations), equation (mathematical equation using LaTeX/KaTeX). Max 100 blocks per request. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append layout blocks (divider, TOC, columns)
Section titled “Append layout blocks (divider, TOC, columns)”NOTION_APPEND_LAYOUT_BLOCKS
Append layout blocks (divider, TOC, breadcrumb, columns) to a Notion page. Supported types: divider (horizontal line separator), table_of_contents (auto-generated from headings), breadcrumb (page hierarchy navigation), column_list (multi-column layout, requires 2+ columns each with 1+ child block).
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The UUID of the parent block or page to append children to. |
children | array | Yes | Array of layout/structural block objects. Supported types: divider, table_of_contents, breadcrumb, column_list (requires at least 2 columns, each with at least 1 child block), column. Column_list blocks must include their column children in the same request. Max 100 blocks per request. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append media blocks (image, video, audio, files)
Section titled “Append media blocks (image, video, audio, files)”NOTION_APPEND_MEDIA_BLOCKS
Append media blocks (image, video, audio, file, pdf, embed, bookmark) to a Notion page. Use for: images and screenshots (image); YouTube/Vimeo videos or direct video URLs (video); audio files and podcasts (audio); file downloads (file); PDF documents (pdf); embedded content from Twitter, Figma, CodePen, etc. (embed); link previews with metadata (bookmark). All media blocks require external URLs.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The UUID of the parent block or page to append children to. |
children | array | Yes | Array of media block objects. Supported types: image, video, audio, file, pdf, embed, bookmark. All media types require an external URL. Max 100 blocks per request. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append table blocks
Section titled “Append table blocks”NOTION_APPEND_TABLE_BLOCKS
Append table blocks to a Notion page. Use for structured tabular data like spreadsheets, comparison charts, and status trackers. Cell content is limited to 2000 characters per text.content field.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
tables | array | Yes | Array of tables to append. Each table includes: table_width (number of columns, 1-100), has_column_header (style first row as header, default false), has_row_header (style first column as header, default false), rows (array of row objects, at least one required). Each row contains a cells array where each cell is an array of rich text objects. The number of cells in each row MUST match table_width. Max 100 tables per request. |
block_id | string | Yes | The UUID of the parent block or page to append children to. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append task blocks (to-do, toggle, callout)
Section titled “Append task blocks (to-do, toggle, callout)”NOTION_APPEND_TASK_BLOCKS
Append task blocks (to-do, toggle, callout) to a Notion page or block. Supported block types: to_do (checkbox items), toggle (collapsible sections), callout (highlighted boxes with emoji icons). All three types support nested children (up to 2 levels of nesting). Limits: 2000 chars per text.content, max 100 blocks per request.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The UUID of the parent page or block to append children to. Must be a page or block type that supports children (e.g., page, toggle, paragraph, list items, quote, callout, to_do). Blocks like divider, breadcrumb, equation do NOT support children. |
children | array | Yes | Array of task/interactive block objects. Supported types: to_do (checkbox task item), toggle (collapsible section), callout (highlighted box with emoji icon). Max 2 levels of nesting. Max 100 blocks per request. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Append text blocks (paragraphs, headings, lists)
Section titled “Append text blocks (paragraphs, headings, lists)”NOTION_APPEND_TEXT_BLOCKS
Append text blocks (paragraphs, headings, lists) to a Notion page. This is the most commonly used action for adding content to Notion. Use for: documentation, notes, articles, outlines, lists. Supported block types: paragraph, heading_1/2/3, bulleted_list_item, numbered_list_item. Text content is limited to 2000 characters per text.content field.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Optional UUID of an existing child block. New blocks will be inserted after this block. |
block_id | string | Yes | The UUID of the parent block or page to append children to. |
children | array | Yes | Array of text block objects (also accepts blocks as parameter name). Supported types: paragraph, heading_1/2/3, bulleted_list_item, numbered_list_item. Max 2000 chars per text.content. Max 100 blocks per request. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Archive Notion Page
Section titled “Archive Notion Page”NOTION_ARCHIVE_NOTION_PAGE
Archives (moves to trash) or unarchives (restores from trash) a specified Notion page. Limitation: Workspace-level pages (top-level pages with no parent page or database) cannot be archived via the API and must be archived manually in the Notion UI.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
archive | boolean | No | Set to true to move the page to trash (archive), or false to restore it from trash (unarchive). Defaults to true. |
page_id | string | Yes | The unique identifier (UUID) of the Notion page to be archived or unarchived. Must be a page ID, not a database ID. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create comment
Section titled “Create comment”NOTION_CREATE_COMMENT
Adds a comment to a Notion page (via parent_page_id) OR to an existing discussion thread (via discussion_id); cannot create new discussion threads on specific blocks (inline comments).
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
comment | object | Yes | Content of the comment as a NotionRichText object or a JSON string. Simplest form: {'content': 'Looks good!'}. The link field is for external URLs only, NOT for page IDs. |
discussion_id | string | No | The ID of an existing discussion thread to which the comment will be added. Required if parent_page_id is not provided. |
parent_page_id | string | No | The ID of the Notion page where the comment will be added. Required if discussion_id is not provided. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Notion Database
Section titled “Create Notion Database”NOTION_CREATE_DATABASE
Creates a new Notion database as a subpage under a specified parent page with a defined properties schema. IMPORTANT: The parent page MUST be shared with your integration. For relation properties, you MUST provide the database_id of the related database.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | The desired title for the new database. |
parent_id | string | Yes | MUST BE A PAGE ID, NOT A DATABASE ID. Databases can only be created as children of pages. Use NOTION_SEARCH_NOTION_PAGE with filter_value='page' to find valid pages. UUID with or without hyphens. The page must be shared with your integration. |
properties | array | No | Optional list defining the schema (columns) for the new database. Each item is an object with name and type. If not provided, Notion creates a default database with a single Name column of type title. The list must include at least one property of type title. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Notion file upload
Section titled “Create Notion file upload”NOTION_CREATE_FILE_UPLOAD
Creates a Notion FileUpload object and retrieves an upload URL. Use when you need to automate attaching local or external files directly into Notion without external hosting.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
mode | string | No | Upload mode: single_part for direct upload (default, up to 20 MB), multi_part for chunked uploads (requires paid Notion workspace), or external_url to import from a public URL. Free workspaces are limited to 5 MB and cannot use multi_part mode. |
filename | string | No | Human-readable file name with extension. Required for external_url. |
content_type | string | No | MIME type of the file. Required in multi_part if filename lacks extension. |
external_url | string | No | Public HTTPS URL to import. Required when mode='external_url'. |
number_of_parts | integer | No | Total parts for a multi-part upload; required when mode='multi_part'. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Create Notion page
Section titled “Create Notion page”NOTION_CREATE_NOTION_PAGE
Creates a new page in a Notion workspace under a specified parent page or database. Supports creating pages with markdown content using the native markdown parameter, or as an empty page to populate later. PREREQUISITES: parent page/database must exist and be accessible. The markdown parameter is mutually exclusive with children/content parameters.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
icon | string | No | An emoji to be used as the icon for the new page. Must be a single emoji character. |
cover | string | No | The URL of an image to be used as the cover for the new page. The URL must be publicly accessible. |
title | string | Yes | The title of the new page to be created. |
markdown | string | No | Page content as Notion-flavored Markdown. When provided, the page will be created from this markdown string. The first # h1 heading will be extracted as the page title if properties.title is omitted. |
parent_id | string | Yes | Valid Notion UUID in dashed or dashless format of an existing Notion page or database. Always use search_pages or list_databases first to obtain valid parent IDs. Also accepts parent_page_id as an alias. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Delete a block
Section titled “Delete a block”NOTION_DELETE_BLOCK
Archives a Notion block, page, or database using its ID, setting its archived property to true (like moving to “Trash” in the UI). The operation will fail if the block has an archived parent or ancestor. LIMITATION: Workspace-level pages cannot be archived via the Notion API.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
block_id | string | Yes | Identifier of the block, page, or database to be deleted (archived). Must be a valid Notion block/page/database ID in UUID format (with or without hyphens). |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Duplicate page
Section titled “Duplicate page”NOTION_DUPLICATE_PAGE
Duplicates a Notion page, including all its content, properties, and nested blocks, under a specified parent page or workspace.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | No | An optional new title for the duplicated page. If not provided, the title of the original page will be used, prefixed with ‘Copy of’. |
page_id | string | Yes | The unique identifier (UUID v4) of the Notion page to be duplicated. |
parent_id | string | Yes | The unique identifier (UUID v4) of the Notion page or database that will serve as the parent for the duplicated page. Cannot be the same as page_id. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch All Notion Block Contents
Section titled “Fetch All Notion Block Contents”NOTION_FETCH_ALL_BLOCK_CONTENTS
Fetches all child blocks for a given Notion block. Use when you need a complete listing of a block’s children beyond a single page; supports optional recursive expansion of nested blocks.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
block_id | string | No | Identifier (UUID) of the parent Notion block or page whose children to list. Accepts UUIDs with or without hyphens. Either block_id or page_url must be provided. |
page_url | string | No | Notion page URL from which to extract the page/block ID. NOTE: Database view URLs (containing ?v=) are NOT supported. Use NOTION_QUERY_DATABASE for database content. |
max_depth | integer | No | Maximum recursion depth when recursive=true. Defaults to 10. |
page_size | integer | No | Maximum number of child blocks to return per request. Defaults to 100 (maximum allowed). |
recursive | boolean | No | If true, fetches nested children for blocks with has_children set to true. |
max_blocks | integer | No | Maximum total blocks to return when recursive=true. Defaults to 5000. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch Notion Block Children
Section titled “Fetch Notion Block Children”NOTION_FETCH_BLOCK_CONTENTS
Retrieves a paginated list of direct, first-level child block objects along with contents for a given parent Notion block or page ID.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
block_id | string | Yes | UUID of the parent Notion block or page whose children are to be fetched. Accepts both hyphenated and non-hyphenated UUID formats. |
page_size | integer | No | The maximum number of child blocks to return in a single response. Maximum allowed value is 100. |
start_cursor | string | No | Pagination cursor from next_cursor in a previous API response. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch Notion block metadata
Section titled “Fetch Notion block metadata”NOTION_FETCH_BLOCK_METADATA
Fetches metadata for a Notion block (including pages, which are special blocks) using its UUID. Returns block type, properties, and basic info but not child content. For child blocks, use fetch_block_contents instead.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
block_id | string | Yes | The unique UUID identifier for the Notion block to be retrieved. Must be a valid 32-character UUID (with or without hyphens). |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch comments
Section titled “Fetch comments”NOTION_FETCH_COMMENTS
Fetches unresolved comments for a specified Notion block or page ID. The block/page must be shared with your Notion integration and the integration must have ‘Read comments’ capability enabled.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | No | Identifier for a Notion page from which to fetch comments. Alias for block_id. Provide either page_id or block_id, but not both. |
block_id | string | No | Identifier for a Notion block from which to fetch comments. Provide either block_id or page_id, but not both. |
page_size | integer | No | The number of comments to return in a single response page. Between 1 and 100. Default is 100. |
start_cursor | string | No | A pagination cursor. If provided, the response will contain the page of results starting after this cursor. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch Notion Data
Section titled “Fetch Notion Data”NOTION_FETCH_DATA
Fetches Notion items (pages and/or databases) from the Notion workspace. Use to get minimal data about items in the workspace with a query or to list all items with minimal data.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
query | string | No | An optional search query to filter pages and/or databases by their title or content. If not provided, all accessible items matching the selected type are returned. |
page_size | integer | No | The maximum number of items per page (1-100). Notion API enforces a hard maximum of 100 — values above 100 will be capped. Defaults to 100. |
fetch_type | string | Yes | Specifies what type of Notion data to fetch: pages (only pages), databases (only databases), or all (both). |
start_cursor | string | No | Pagination cursor to fetch the next page of results. |
original_page_size | integer | No | The original page size value before it was capped. |
page_size_was_capped | boolean | No | Indicates whether the page size was capped to the maximum allowed value. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch Database
Section titled “Fetch Database”NOTION_FETCH_DATABASE
Fetches a Notion database’s structural metadata (properties, title, etc.) via its database_id, not the data entries. The database_id must reference an existing database.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
database_id | string | Yes | The unique identifier of the Notion database in UUID format. Must be a DATABASE ID, not a page ID. To find database IDs, use NOTION_SEARCH_NOTION_PAGE with filter_value='database'. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Fetch database row
Section titled “Fetch database row”NOTION_FETCH_ROW
Retrieves a Notion database row’s properties and metadata; use fetch_block_contents for page content blocks.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | Yes | The UUID of the Notion page (which represents a row in a database) to retrieve. Must be a page ID, not a database ID. Use NOTION_FETCH_DATA or NOTION_QUERY_DATABASE to get page IDs from databases. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get About Me (Deprecated)
Section titled “Get About Me (Deprecated)”NOTION_GET_ABOUT_ME
DEPRECATED: Use GetAboutUser instead. Retrieves the User object for the bot associated with the current Notion integration token, typically to obtain the bot’s user ID for other API operations.
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get about user
Section titled “Get about user”NOTION_GET_ABOUT_USER
Retrieves detailed information about a specific Notion user, such as their name, avatar, and email, based on their unique user ID.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
user_id | string | Yes | The unique identifier of the Notion user whose details are to be retrieved. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get page markdown
Section titled “Get page markdown”NOTION_GET_PAGE_MARKDOWN
Retrieve a Notion page’s full content rendered as Notion-flavored Markdown in a single API call. Use when you need the readable content of a page without recursive block-children fetching.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | Yes | The UUID of the Notion page to retrieve as markdown. Accepts both hyphenated (8-4-4-4-12) and unhyphenated (32 characters) UUID formats. IMPORTANT: Only page IDs are accepted — database IDs will be rejected. |
include_transcript | boolean | No | Set to true to include meeting note transcripts in the markdown response. Defaults to false. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Get page property
Section titled “Get page property”NOTION_GET_PAGE_PROPERTY_ACTION
Call this to get a specific property from a Notion page when you have a valid page_id and property_id; handles pagination for properties returning multiple items.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | Yes | Identifier of the Notion page from which to retrieve the property. |
page_size | integer | No | For paginated property types (e.g., relation, rollup, rich_text), specifies the number of items to return per request. |
property_id | string | Yes | Identifier or name of the property to retrieve. For title properties, the ID is always title. For other properties, this can be the property’s name as displayed in Notion or its unique programmatic ID. |
start_cursor | string | No | For paginated properties, if a previous response indicated has_more: true, provide the next_cursor value here to fetch the next set of items. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Insert row database
Section titled “Insert row database”NOTION_INSERT_ROW_DATABASE
Creates a new page (row) in a specified Notion database. PREREQUISITES: database must be shared with your integration; property names AND types must match schema exactly (case-sensitive). Common errors: 404 (database not shared), 400 “not a property” (wrong property name), 400 “expected to be X” (wrong property type).
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
icon | string | No | Emoji to be used as the page icon. Must be a single emoji character. |
cover | string | No | URL of an external image to set as the page cover. |
properties | array | No | Property values for the new page. Accepts a LIST of objects or a JSON-encoded string. Each object must include: name (exact property name, case-sensitive), type (property data type), and value (string-formatted value). Each database has exactly ONE title type property; all other text properties use rich_text. Use NOTION_FETCH_DATA with fetch_type='databases' to find exact property names and types. |
database_id | string | Yes | Identifier (UUID) of the Notion database where the new page (row) will be inserted. The database must be shared with your integration. |
child_blocks | array | No | A list of NotionRichText objects defining content blocks to append to the new page’s body. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Insert Row From Natural Language
Section titled “Insert Row From Natural Language”NOTION_INSERT_ROW_FROM_NL
Creates a new row (page) in a Notion database from a natural language description. Fetches the database schema at runtime, uses an LLM to generate the correctly-formatted property payload, and creates the page.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
icon | string | No | Optional emoji icon for the page. |
cover | string | No | Optional cover image URL for the page. |
nl_query | string | Yes | Natural language description of the row to create. Example: ‘Add task: Review PR #14143, priority High, status In Progress, due tomorrow’. |
database_id | string | Yes | Notion database UUID where the new row will be inserted. Can be provided with or without hyphens. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List data source templates
Section titled “List data source templates”NOTION_LIST_DATA_SOURCE_TEMPLATES
Lists all templates for a Notion data source. Use when needing to discover template IDs/names for bulk page creation. Use after confirming the data_source_id.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_size | integer | No | Number of templates to return per page (1-100). Defaults to 100 if omitted. |
start_cursor | string | No | Cursor for pagination. Use the next_cursor value from a previous response. |
data_source_id | string | Yes | Data source ID (UUIDv4). Path parameter identifying the data source to list templates from. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List Notion file uploads
Section titled “List Notion file uploads”NOTION_LIST_FILE_UPLOADS
Retrieves file uploads for the current bot integration, sorted by most recent first. Use when you need to list all file uploads or paginate through file upload history.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_size | integer | No | Controls how many items the response includes from the complete list. Maximum 100, default 100. |
start_cursor | string | No | Accepts a next_cursor value from a previous response to retrieve subsequent result pages. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
List users
Section titled “List users”NOTION_LIST_USERS
Retrieves a paginated list of users (excluding guests) from the Notion workspace; the number of users returned per page may be less than the requested page_size.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_size | integer | No | The desired number of users to retrieve per page. Maximum value is 100. |
start_cursor | string | No | If omitted, retrieves the first page of users. Use the next_cursor value from a previous response to get the next page. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Move Page
Section titled “Move Page”NOTION_MOVE_PAGE
Moves a Notion page to a new parent (page or database). IMPORTANT: To move to a database, use data_source_id (NOT database_id). Get the data source ID from the database object using NOTION_FETCH_DATABASE.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
parent | string | Yes | Parent destination for the page. Use type='page_id' with page_id to move under another page. Use type='data_source_id' with data_source_id to move into a database. Common mistake: using type='page_id' with a database ID will fail. |
page_id | string | Yes | The ID of the page to move. UUID format with or without dashes is supported. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Query database
Section titled “Query database”NOTION_QUERY_DATABASE
Queries a Notion database to retrieve pages (rows). In Notion, databases are collections where each row is a page and columns are properties. Returns paginated results with metadata. The database must be shared with your integration.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
sorts | array | No | List of sort rules to order the database query results. Each sort rule must specify property_name and ascending (True/False). |
page_size | integer | No | Number of items to return per request. Valid range: 1-100. Default is 100. |
database_id | string | Yes | The UUID of the Notion DATABASE to query. Must be a DATABASE ID, not a page ID. |
start_cursor | string | No | A pagination cursor for fetching the next page of results. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Query database with filter
Section titled “Query database with filter”NOTION_QUERY_DATABASE_WITH_FILTER
Queries a Notion database with server-side filtering, sorting, and pagination. Use when you need to retrieve a subset of rows by property, date, status, or other conditions.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
sorts | array | No | List of sort criteria in order of precedence. Use PropertySort for database properties (with property field) and TimestampSort for system timestamps (created_time or last_edited_time). |
filter | object | No | Filter object to limit returned entries. PREREQUISITE: Call NOTION_FETCH_DATABASE first to discover property names and types. Supports single-property filters or compound filters using and/or. SELECT/STATUS/MULTI_SELECT values are case-sensitive and must match EXACTLY as defined in the database schema. |
page_size | integer | No | Maximum number of items to return (1-100). Defaults to 100 if omitted. |
database_id | string | Yes | The UUID of the Notion database to query. Must be a DATABASE ID, not a page ID. |
start_cursor | string | No | Cursor from a prior response’s next_cursor for fetching the next page. |
composio_execution_message | string | No | Internal message about any automatic conversions made during execution. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Query data source
Section titled “Query data source”NOTION_QUERY_DATA_SOURCE
Queries a Notion data source. Use when you need to retrieve pages or child data sources with filters, sorts, and pagination. Make paginated requests using cursors and optional property filters for efficient data retrieval.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
sorts | array | No | List of sort criteria in order of precedence. Use PropertySort for property fields or TimestampSort for creation/edit times. |
filter | object | No | Filter object to limit returned entries. Supports single-property filters or compound filters using and/or. |
page_size | integer | No | Maximum number of items to return (1-100). Defaults to 100 if omitted. |
start_cursor | string | No | Cursor from a prior response’s next_cursor for fetching the next page. |
data_source_id | string | Yes | UUID of the Notion data source to query (with or without hyphens). |
filter_properties | array | No | List of property IDs to include in each returned item. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Replace page content (with backup)
Section titled “Replace page content (with backup)”NOTION_REPLACE_PAGE_CONTENT
Safely replaces a page’s child blocks by optionally backing up current content, deleting existing children, then appending new children in batches. Use when you need to rebuild a page without leaving partial states.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
dry_run | boolean | No | If True, returns what would be deleted and appended without making any changes. Use to preview the operation. |
page_id | string | Yes | The unique identifier (UUID) of the page whose content will be replaced. |
new_children | array | Yes | Array of block objects to append to the page after clearing existing content. Will be appended in batches of up to 100 blocks. |
backup_parent | object | No | Parent specification for backup page creation. |
create_backup | boolean | No | Whether to create a backup page with the current content before replacing it. Strongly recommended when replacing important content. |
backup_title_suffix | string | No | Suffix to append to the original page title when creating a backup page. |
archive_existing_children | boolean | No | Whether to delete (archive) existing child blocks before appending new content. Set to False to keep existing content and only append new blocks. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Retrieve Comment
Section titled “Retrieve Comment”NOTION_RETRIEVE_COMMENT
Retrieves a specific comment by its ID. Use when you have a comment ID and need to fetch its details.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
comment_id | string | Yes | Identifier for the comment to retrieve. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Retrieve Database Property
Section titled “Retrieve Database Property”NOTION_RETRIEVE_DATABASE_PROPERTY
Retrieves a specific property object of a Notion database. Use when you need to get details about a single database column/property.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
database_id | string | Yes | Identifier for the database. |
property_id | string | Yes | Identifier or name of the property. Can be the property ID (e.g., GZtn) or the property name (e.g., Status). Supports URL-encoded values. Property name matching is case-sensitive. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Retrieve Notion file upload
Section titled “Retrieve Notion file upload”NOTION_RETRIEVE_FILE_UPLOAD
Retrieves details of a Notion File Upload object by its identifier. Use when you need to check the status or details of an existing file upload.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
file_upload_id | string | Yes | The unique identifier (UUID) of the file upload to retrieve. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Retrieve page
Section titled “Retrieve page”NOTION_RETRIEVE_PAGE
Retrieves a Notion page’s properties/metadata (not block content) by page_id. Use when you have a page URL/ID and need to access its properties; for page content use block-children tools.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
page_id | string | Yes | The UUID of the Notion page to retrieve. Accepts both hyphenated (8-4-4-4-12) and unhyphenated (32 characters) UUID formats. IMPORTANT: Must be a PAGE ID, not a database ID. For pages with properties containing more than 25 references, use NOTION_GET_PAGE_PROPERTY_ACTION to retrieve complete property values. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Search Notion pages and databases
Section titled “Search Notion pages and databases”NOTION_SEARCH_NOTION_PAGE
Searches Notion pages and databases by title. KNOWN LIMITATIONS: (1) Search indexing is not immediate — recently shared items may not appear. (2) Search is not exhaustive. (3) Database pages return all custom properties — use filter_properties to reduce response size.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
query | string | No | Text to search for in page and database titles. If empty, returns all accessible items. |
direction | string | No | Sort direction for the results. Required if timestamp is provided. Valid values: ascending or descending. |
page_size | integer | No | The number of items to include in the response. Between 1 and 100. Defaults to 25. |
timestamp | string | No | The timestamp field to sort the results by. Currently the only supported value is last_edited_time. |
filter_value | string | No | Filters results by object type: page or database. |
start_cursor | string | No | An opaque cursor value from a previous response’s next_cursor field. |
filter_property | string | No | The property to filter the search results by. Currently the only supported value is object. |
filter_properties | array | No | List of property names to include in the response for page results. Useful for databases with many custom properties. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Send file upload
Section titled “Send file upload”NOTION_SEND_FILE_UPLOAD
Transmits file contents to Notion for a file upload object. Use after creating a file upload object to send the actual file data.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
file | object | Yes | File information including name and mimetype. FileInfo object where name is the filename (e.g., document.pdf, test.txt). |
part_number | integer | No | Required when the file upload mode is multi_part. Indicates which part is being sent (parts are numbered starting from 1). For single-part uploads, omit this parameter. |
file_upload_id | string | Yes | Identifier of the file upload object to send data for. Obtained from the Create File Upload action. |
file_content_base64 | string | No | Optional base64-encoded file content. If provided, used instead of downloading from S3 or reading from file_path. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update block
Section titled “Update block”NOTION_UPDATE_BLOCK
Updates existing Notion block’s text content. CRITICAL: Content limited to 2000 chars. Cannot change block type or archive blocks. For longer content, split across multiple blocks using add_multiple_page_content.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
content | string | Yes | The new text content for the block. Replaces existing text content entirely. CRITICAL: Notion API enforces a HARD LIMIT of 2000 characters per text.content field. |
block_id | string | Yes | Identifier of the Notion block to be updated. Must be a valid UUID (with or without dashes). |
language | string | No | Programming language for code blocks. Required when block_type='code'. |
block_type | string | No | The type of the block being updated. If not provided, the action will automatically detect it (adds 1 extra API call). Must match the EXISTING block’s type — you cannot change a block’s type. |
additional_properties | object | No | Optional dictionary of type-specific properties. Examples: checked (boolean) for to_do blocks, color for text styling, is_toggleable for heading blocks. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update Page
Section titled “Update Page”NOTION_UPDATE_PAGE
Update page properties, icon, cover, or archive status. IMPORTANT: Property names are workspace-specific and case-sensitive. Use NOTION_FETCH_ROW or NOTION_FETCH_DATABASE first to discover exact property names and valid select/status options.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
icon | object | No | Page icon object. At least one of properties, archived, icon, or cover is required. |
cover | object | No | Page cover image. Must contain either external (with url) or file_upload key. At least one of properties, archived, icon, or cover is required. |
page_id | string | Yes | Identifier for the Notion page to be updated. Use page_id as the parameter name (not id). |
archived | boolean | No | Set to true to archive (trash) the page, false to restore. At least one of properties, archived, icon, or cover is required. |
properties | object | No | Dictionary mapping property names to property value objects. Names are case-sensitive and workspace-specific. Values must be wrapped in property type objects — never send plain values. Example: {'Status': {'select': {'name': 'Done'}}}. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update Database Row (Page)
Section titled “Update Database Row (Page)”NOTION_UPDATE_ROW_DATABASE
Updates a specific row/page within a Notion database by its page UUID (row_id). IMPORTANT: This action updates INDIVIDUAL ROWS (pages) in a database, NOT the database structure. To update DATABASE SCHEMA, use NOTION_UPDATE_SCHEMA_DATABASE with database_id.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
icon | string | No | The emoji to be used as the icon for the page. Must be a single emoji character. |
cover | string | No | URL of an external image to be used as the cover for the page. |
row_id | string | Yes | REQUIRED: The page UUID of the database row to update. This is a PAGE ID (not a database ID). Format: 32-character UUID with hyphens. NOT a URL or page title. |
delete_row | boolean | No | If true, the row (page) will be archived, effectively deleting it from the active view. |
properties | array | No | List of properties to update. Each property requires: name (exact property name), type (property type), and value (formatted according to type). Use status type for Status properties, NOT select. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Update database schema
Section titled “Update database schema”NOTION_UPDATE_SCHEMA_DATABASE
Updates an existing Notion database’s schema including title, description, and/or properties (columns). IMPORTANT: At least one update must be provided; the database must be shared with your integration; property names are case-sensitive; when changing a property to relation type, you MUST provide the database_id of the target database; removing properties will permanently delete that column and its data.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | No | New title for the database. Leave as None to keep the existing title unchanged. At least one of title, description, or properties must be provided. |
properties | array | No | List of property (column) updates for the database schema. Each PropertySchemaUpdate must specify: name (exact case-sensitive name) and one of: rename, new_type, or remove. |
database_id | string | Yes | REQUIRED: The UUID identifier of the Notion database to update. Must be a DATABASE ID, not a page ID. |
description | string | No | New description for the database. Leave as None to keep the existing description unchanged. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |
Upsert database rows
Section titled “Upsert database rows”NOTION_UPSERT_ROW_DATABASE
Upserts rows in a Notion database by querying for existing rows and creating or updating them. Use when you need to sync data to Notion without creating duplicates. Each item is matched by a filter, then either created (if no match) or updated (if match found). Supports bulk operations with per-item error handling.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
items | array | Yes | Array of items to upsert. Each item contains match criteria and create/update payloads. |
options | object | No | Options controlling upsert behavior. |
database_id | string | No | UUID of the Notion database (legacy). If provided without data_source_id, will attempt to resolve to data_source_id. Only safe for single-source databases. |
data_source_id | string | No | UUID of the Notion data source (preferred). Required if database_id is not provided. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution. |
error | string | No | Error if any occurred during the execution of the action. |
successful | boolean | Yes | Whether or not the action execution was successful. |