Skip to content

Notion

Notion

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.

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):

FieldRequiredDescription
api_keyYesInternal Notion integration token, generated in the workspace integration settings.

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.

  1. Go to notion.so and log in.
  2. Navigate to Settings & MembersConnectionsDevelop or manage integrations.
  3. Click New integration and fill in the name and desired capabilities.
  4. Copy the Internal Integration Secret (starts with secret_).
  5. Share the desired pages or databases with the integration in Notion (use the Connect button on each page).
  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Notion.
  3. Click the card to open the details modal and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you authorize access (OAuth) or enter the credentials obtained above.
  5. 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.

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.

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.

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.

NameTypeRequiredDescription
afterstringNoBlock 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_blocksarrayYesList 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_idstringYesUUID 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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).

NameTypeRequiredDescription
afterstringNoIdentifier 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_blockstringYesSimplified 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_idstringYesIdentifier 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe unique identifier (UUID) of the parent block or page to append children to.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe UUID of the parent block or page to append children to.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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).

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe UUID of the parent block or page to append children to.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe UUID of the parent block or page to append children to.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
tablesarrayYesArray 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_idstringYesThe UUID of the parent block or page to append children to.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe 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.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether 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.

NameTypeRequiredDescription
afterstringNoOptional UUID of an existing child block. New blocks will be inserted after this block.
block_idstringYesThe UUID of the parent block or page to append children to.
childrenarrayYesArray 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
archivebooleanNoSet to true to move the page to trash (archive), or false to restore it from trash (unarchive). Defaults to true.
page_idstringYesThe unique identifier (UUID) of the Notion page to be archived or unarchived. Must be a page ID, not a database ID.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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).

NameTypeRequiredDescription
commentobjectYesContent 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_idstringNoThe ID of an existing discussion thread to which the comment will be added. Required if parent_page_id is not provided.
parent_page_idstringNoThe ID of the Notion page where the comment will be added. Required if discussion_id is not provided.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
titlestringYesThe desired title for the new database.
parent_idstringYesMUST 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.
propertiesarrayNoOptional 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
modestringNoUpload 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.
filenamestringNoHuman-readable file name with extension. Required for external_url.
content_typestringNoMIME type of the file. Required in multi_part if filename lacks extension.
external_urlstringNoPublic HTTPS URL to import. Required when mode='external_url'.
number_of_partsintegerNoTotal parts for a multi-part upload; required when mode='multi_part'.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
iconstringNoAn emoji to be used as the icon for the new page. Must be a single emoji character.
coverstringNoThe URL of an image to be used as the cover for the new page. The URL must be publicly accessible.
titlestringYesThe title of the new page to be created.
markdownstringNoPage 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_idstringYesValid 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
block_idstringYesIdentifier 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).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

NOTION_DUPLICATE_PAGE

Duplicates a Notion page, including all its content, properties, and nested blocks, under a specified parent page or workspace.

NameTypeRequiredDescription
titlestringNoAn optional new title for the duplicated page. If not provided, the title of the original page will be used, prefixed with ‘Copy of’.
page_idstringYesThe unique identifier (UUID v4) of the Notion page to be duplicated.
parent_idstringYesThe 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
block_idstringNoIdentifier (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_urlstringNoNotion 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_depthintegerNoMaximum recursion depth when recursive=true. Defaults to 10.
page_sizeintegerNoMaximum number of child blocks to return per request. Defaults to 100 (maximum allowed).
recursivebooleanNoIf true, fetches nested children for blocks with has_children set to true.
max_blocksintegerNoMaximum total blocks to return when recursive=true. Defaults to 5000.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
block_idstringYesUUID of the parent Notion block or page whose children are to be fetched. Accepts both hyphenated and non-hyphenated UUID formats.
page_sizeintegerNoThe maximum number of child blocks to return in a single response. Maximum allowed value is 100.
start_cursorstringNoPagination cursor from next_cursor in a previous API response.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
block_idstringYesThe unique UUID identifier for the Notion block to be retrieved. Must be a valid 32-character UUID (with or without hyphens).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_idstringNoIdentifier for a Notion page from which to fetch comments. Alias for block_id. Provide either page_id or block_id, but not both.
block_idstringNoIdentifier for a Notion block from which to fetch comments. Provide either block_id or page_id, but not both.
page_sizeintegerNoThe number of comments to return in a single response page. Between 1 and 100. Default is 100.
start_cursorstringNoA pagination cursor. If provided, the response will contain the page of results starting after this cursor.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
querystringNoAn 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_sizeintegerNoThe 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_typestringYesSpecifies what type of Notion data to fetch: pages (only pages), databases (only databases), or all (both).
start_cursorstringNoPagination cursor to fetch the next page of results.
original_page_sizeintegerNoThe original page size value before it was capped.
page_size_was_cappedbooleanNoIndicates whether the page size was capped to the maximum allowed value.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
database_idstringYesThe 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'.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

NOTION_FETCH_ROW

Retrieves a Notion database row’s properties and metadata; use fetch_block_contents for page content blocks.

NameTypeRequiredDescription
page_idstringYesThe 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
user_idstringYesThe unique identifier of the Notion user whose details are to be retrieved.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_idstringYesThe 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_transcriptbooleanNoSet to true to include meeting note transcripts in the markdown response. Defaults to false.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_idstringYesIdentifier of the Notion page from which to retrieve the property.
page_sizeintegerNoFor paginated property types (e.g., relation, rollup, rich_text), specifies the number of items to return per request.
property_idstringYesIdentifier 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_cursorstringNoFor paginated properties, if a previous response indicated has_more: true, provide the next_cursor value here to fetch the next set of items.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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).

NameTypeRequiredDescription
iconstringNoEmoji to be used as the page icon. Must be a single emoji character.
coverstringNoURL of an external image to set as the page cover.
propertiesarrayNoProperty 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_idstringYesIdentifier (UUID) of the Notion database where the new page (row) will be inserted. The database must be shared with your integration.
child_blocksarrayNoA list of NotionRichText objects defining content blocks to append to the new page’s body.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
iconstringNoOptional emoji icon for the page.
coverstringNoOptional cover image URL for the page.
nl_querystringYesNatural language description of the row to create. Example: ‘Add task: Review PR #14143, priority High, status In Progress, due tomorrow’.
database_idstringYesNotion database UUID where the new row will be inserted. Can be provided with or without hyphens.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_sizeintegerNoNumber of templates to return per page (1-100). Defaults to 100 if omitted.
start_cursorstringNoCursor for pagination. Use the next_cursor value from a previous response.
data_source_idstringYesData source ID (UUIDv4). Path parameter identifying the data source to list templates from.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_sizeintegerNoControls how many items the response includes from the complete list. Maximum 100, default 100.
start_cursorstringNoAccepts a next_cursor value from a previous response to retrieve subsequent result pages.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_sizeintegerNoThe desired number of users to retrieve per page. Maximum value is 100.
start_cursorstringNoIf omitted, retrieves the first page of users. Use the next_cursor value from a previous response to get the next page.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
parentstringYesParent 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_idstringYesThe ID of the page to move. UUID format with or without dashes is supported.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
sortsarrayNoList of sort rules to order the database query results. Each sort rule must specify property_name and ascending (True/False).
page_sizeintegerNoNumber of items to return per request. Valid range: 1-100. Default is 100.
database_idstringYesThe UUID of the Notion DATABASE to query. Must be a DATABASE ID, not a page ID.
start_cursorstringNoA pagination cursor for fetching the next page of results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
sortsarrayNoList 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).
filterobjectNoFilter 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_sizeintegerNoMaximum number of items to return (1-100). Defaults to 100 if omitted.
database_idstringYesThe UUID of the Notion database to query. Must be a DATABASE ID, not a page ID.
start_cursorstringNoCursor from a prior response’s next_cursor for fetching the next page.
composio_execution_messagestringNoInternal message about any automatic conversions made during execution.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
sortsarrayNoList of sort criteria in order of precedence. Use PropertySort for property fields or TimestampSort for creation/edit times.
filterobjectNoFilter object to limit returned entries. Supports single-property filters or compound filters using and/or.
page_sizeintegerNoMaximum number of items to return (1-100). Defaults to 100 if omitted.
start_cursorstringNoCursor from a prior response’s next_cursor for fetching the next page.
data_source_idstringYesUUID of the Notion data source to query (with or without hyphens).
filter_propertiesarrayNoList of property IDs to include in each returned item.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
dry_runbooleanNoIf True, returns what would be deleted and appended without making any changes. Use to preview the operation.
page_idstringYesThe unique identifier (UUID) of the page whose content will be replaced.
new_childrenarrayYesArray of block objects to append to the page after clearing existing content. Will be appended in batches of up to 100 blocks.
backup_parentobjectNoParent specification for backup page creation.
create_backupbooleanNoWhether to create a backup page with the current content before replacing it. Strongly recommended when replacing important content.
backup_title_suffixstringNoSuffix to append to the original page title when creating a backup page.
archive_existing_childrenbooleanNoWhether to delete (archive) existing child blocks before appending new content. Set to False to keep existing content and only append new blocks.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

NOTION_RETRIEVE_COMMENT

Retrieves a specific comment by its ID. Use when you have a comment ID and need to fetch its details.

NameTypeRequiredDescription
comment_idstringYesIdentifier for the comment to retrieve.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
database_idstringYesIdentifier for the database.
property_idstringYesIdentifier 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
file_upload_idstringYesThe unique identifier (UUID) of the file upload to retrieve.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
page_idstringYesThe 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
querystringNoText to search for in page and database titles. If empty, returns all accessible items.
directionstringNoSort direction for the results. Required if timestamp is provided. Valid values: ascending or descending.
page_sizeintegerNoThe number of items to include in the response. Between 1 and 100. Defaults to 25.
timestampstringNoThe timestamp field to sort the results by. Currently the only supported value is last_edited_time.
filter_valuestringNoFilters results by object type: page or database.
start_cursorstringNoAn opaque cursor value from a previous response’s next_cursor field.
filter_propertystringNoThe property to filter the search results by. Currently the only supported value is object.
filter_propertiesarrayNoList of property names to include in the response for page results. Useful for databases with many custom properties.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
fileobjectYesFile information including name and mimetype. FileInfo object where name is the filename (e.g., document.pdf, test.txt).
part_numberintegerNoRequired 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_idstringYesIdentifier of the file upload object to send data for. Obtained from the Create File Upload action.
file_content_base64stringNoOptional base64-encoded file content. If provided, used instead of downloading from S3 or reading from file_path.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
contentstringYesThe 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_idstringYesIdentifier of the Notion block to be updated. Must be a valid UUID (with or without dashes).
languagestringNoProgramming language for code blocks. Required when block_type='code'.
block_typestringNoThe 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_propertiesobjectNoOptional dictionary of type-specific properties. Examples: checked (boolean) for to_do blocks, color for text styling, is_toggleable for heading blocks.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
iconobjectNoPage icon object. At least one of properties, archived, icon, or cover is required.
coverobjectNoPage cover image. Must contain either external (with url) or file_upload key. At least one of properties, archived, icon, or cover is required.
page_idstringYesIdentifier for the Notion page to be updated. Use page_id as the parameter name (not id).
archivedbooleanNoSet to true to archive (trash) the page, false to restore. At least one of properties, archived, icon, or cover is required.
propertiesobjectNoDictionary 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'}}}.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
iconstringNoThe emoji to be used as the icon for the page. Must be a single emoji character.
coverstringNoURL of an external image to be used as the cover for the page.
row_idstringYesREQUIRED: 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_rowbooleanNoIf true, the row (page) will be archived, effectively deleting it from the active view.
propertiesarrayNoList 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
titlestringNoNew title for the database. Leave as None to keep the existing title unchanged. At least one of title, description, or properties must be provided.
propertiesarrayNoList 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_idstringYesREQUIRED: The UUID identifier of the Notion database to update. Must be a DATABASE ID, not a page ID.
descriptionstringNoNew description for the database. Leave as None to keep the existing description unchanged.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.

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.

NameTypeRequiredDescription
itemsarrayYesArray of items to upsert. Each item contains match criteria and create/update payloads.
optionsobjectNoOptions controlling upsert behavior.
database_idstringNoUUID 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_idstringNoUUID of the Notion data source (preferred). Required if database_id is not provided.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError if any occurred during the execution of the action.
successfulbooleanYesWhether or not the action execution was successful.