Skip to main content
notion icon

Notion Connector

SourceAPI DocsAPI ChangelogConnector Changelog

Description​

Notion is a productivity and collaboration platform that combines note taking, project management, and database capabilities. This component allows managing pages, databases, and users within a Notion workspace.

API Documentation​

This component was built using the Notion API.

Connections​

Internal Integration Secret​

key: notionInternalIntegration

To create an internal integration for Notion, set up a private integration that works within a single Notion workspace. Internal integrations are ideal for testing or for integrations that will only be used within one workspace.

For detailed information about Notion integrations, refer to the Notion Integration Documentation.

Prerequisites​

  • A Notion account with permission to create integrations in the workspace
  • Access to the Notion integration settings
  • Permission to connect the integration to specific pages or databases in the workspace

Setup Steps​

  1. Visit Notion's integrations settings and log into Notion.
  2. Click Create new integration.
  3. Fill in the required integration details:
    • Name: Enter a descriptive name for the integration
    • Logo: Optionally upload a logo
    • Associated workspace: Select the workspace where the integration will be created
  4. Under Capabilities, select the permissions needed for the integration:
    • Read content: Allows reading pages, databases, and other content
    • Update content: Allows modifying existing content
    • Insert content: Allows creating new content
  5. Under Content Capabilities, choose specific content types if needed (pages, databases, comments, etc.).
  6. Save the integration settings.

Get the Integration Token​

  1. Navigate to the Secrets tab in the integration settings.
  2. Copy the Internal Integration Token value.
    • The token format is: secret_ followed by a series of alphanumeric characters
    • Example format: secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configure the Connection​

  • Enter the Internal Integration Secret into the connection configuration.

Connect to Content​

After creating the integration and configuring the connection, the integration must be explicitly connected to specific pages or databases in Notion:

  1. Navigate to the Notion page or database that the integration should access.
  2. Click the ... (more) menu in the top right corner of the page.
  3. Select Connect to from the menu.
  4. Choose the integration from the list.

The integration will now have access to that content based on the capabilities configured during setup. Repeat this process for each page or database that the integration needs to access.

InputNotesExample
Internal Integration Secret

The Notion Internal Integration Secret. Create an integration in the Notion integrations settings to obtain this token.

secret_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3

OAuth 2.0​

key: notionOauth

To create an OAuth 2.0 integration for Notion, set up a public integration that allows users to authenticate with their Notion workspaces.

For detailed information about Notion integrations, refer to the Notion Integration Documentation.

Prerequisites​

Setup Steps​

  1. Visit Notion's integrations settings and log into Notion.
  2. Click Create new integration.
  3. Fill in the required integration details:
    • Name: Enter a descriptive name for the integration
    • Logo: Optionally upload a logo
    • Associated workspace: Select the workspace where the integration will be created
  4. Under Capabilities, select the permissions needed for the integration:
    • Read content: Allows reading pages, databases, and other content
    • Update content: Allows modifying existing content
    • Insert content: Allows creating new content
  5. Under Content Capabilities, choose specific content types if needed (pages, databases, comments, etc.).
  6. Save the integration settings.

Configure OAuth Settings​

  1. Navigate to the Distribution tab in the integration settings.
  2. Select Public integration to enable OAuth 2.0 authentication.
  3. Under Redirect URIs, add the OAuth callback URL: https://oauth2.prismatic.io/callback
  4. Configure any additional OAuth settings as needed.
  5. Review and save the distribution settings.

Get OAuth Credentials​

  1. Navigate to the Secrets tab in the integration settings.
  2. Locate the OAuth credentials section.
  3. Copy the OAuth client ID value.
  4. Copy the OAuth client secret value.

Configure the Connection​

  • Enter the OAuth client ID into the Client ID field.
  • Enter the OAuth client secret into the Client Secret field.

When users authenticate through OAuth 2.0, they will be redirected to Notion's authorization page where they can select which pages and databases to share with the integration. The integration will have access only to the content explicitly shared by the user, within the capabilities configured during integration setup.

Content Access and Permissions​

Notion uses a page-scoped consent model. During authorization, users select specific pages and databases to share with the integration. The integration does not automatically gain access to all content in the workspace.

If actions fail with permission errors or return no results for content that exists in Notion, the user may not have shared the relevant pages during authorization. To grant the integration access to additional content:

  1. Navigate to the Notion page or database that needs to be accessible
  2. Click ... (menu) in the upper right corner of the page
  3. Select Connections and locate the integration
  4. Click to confirm access

Alternatively, the user can re-authorize the integration and select the additional pages during the OAuth flow.

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for Notion

https://api.notion.com/v1/oauth/authorize?owner=user
Client ID

The Client ID of the Notion app. Find this in the Notion integrations settings.

92a00a2f6f6a4f84bbaae2a991b0c0a2
Client Secret

The Client Secret of the Notion app. Find this in the Notion integrations settings.

secret_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3
Scopes

Scopes are not used for Notion

Token URL

The OAuth 2.0 Token URL for Notion

https://api.notion.com/v1/oauth/token

Triggers​

New and Updated Data Source Items​

Retrieves existing and ongoing items for a specified Notion data source. Load history once, check for changes on a schedule, or both. | key: dataSourceItemsPollingTrigger

InputNotesExample
Connection

The Notion connection to use.

Data Source ID

The unique identifier of the data source. Find this in the Notion URL or database settings menu. See Notion API Data Sources.

668d797c76fa49349b05ad288df2d136
Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the first recurrence returns every record created or last edited on or after this date.

2026-01-01

The Data Source Items trigger monitors records within a specific Notion database for new and updated items on a configured schedule. This is the most efficient polling trigger for monitoring database records.

Unlike the Pages and Data Sources triggers that search the entire workspace, this trigger queries a specific data source using server-side filtering, making it significantly more performant for database record monitoring.

How It Works​

  1. Runs on the configured schedule (e.g., every 5 minutes)
  2. Queries the Query Data Source API with a server-side filter of last_edited_time on or after the window start, walking up to its page budget
  3. Splits that one result set into the two arrays: every record returned is an updated item, and the records created since lastPolledAt are also new items
  4. Returns separate arrays for new and updated items
  5. Advances its cursor to the newest last_edited_time it saw, and carries the ids sitting exactly on that instant into the next recurrence so they are not sent twice

Note: Newly created items appear in both newItems and updatedItems arrays since creation time equals last edited time for new records. With batching enabled the item is handed downstream once, not twice.

Initial Sync

An initial sync seeds a complete starting state rather than a change feed. It runs once when the instance is deployed, before any scheduled recurrence, and seeds every item edited on or after the Look-back Date (YYYY-MM-DD) exactly once. Left empty, the sync opens at the deploy itself, so nothing historical is seeded.

The sync runs on deploy whether or not a Look-back Date is set, because it is declared on the trigger rather than switched on per flow. Redeploying an instance that has already synced does not replay it.

The window has no fixed upper bound, so an item edited mid-drain is swept into the sync rather than deferred to the schedule. The position advances to the newest last_edited_time actually received, never to the wall clock, and the first scheduled recurrence resumes from exactly there; nothing in the payload marks the handoff.

The sync walks up to 20 pages per round, and a scheduled recurrence up to 50. With batching on, a round that reaches its budget continues immediately within the same recurrence until the backlog is drained. With batching off it resumes on the next recurrence instead, so a large backlog spans several. Either way the position is committed only once the walk finishes, so an interrupted drain is re-read from where that window opened rather than leaving records behind a cursor that already passed them; entries can therefore arrive more than once, and a flow should treat each as delivered at least once.

If the deploy-time sync exhausts its page budget, it hands the first scheduled recurrence the start of its window rather than the point it reached. Nothing is skipped, and what the sync already sent is sent again. Narrow the Look-back Date to avoid it.

No input is suppressed while the sync runs: the trigger has no toggles that narrow which changes are reported, Data Source ID applies throughout, and there is no page-size or field-selection input.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Notion.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off a downstream step reads body.data.newItems and body.data.updatedItems. With batching on those fields do not exist: each execution receives one { "changeType": "new" | "updated", "record": ... } item, or an array of them when the batch size is greater than 1. Any step reading the older shape must be updated before batching is enabled, or it breaks the moment the switch is flipped. Because batching is enabled per flow, that change is scoped to the flow rather than to the component or to other flows using the same trigger.

Finding Data Source IDs​

  1. Open the database as a full page in Notion
  2. Navigate to Database settings > Manage Data Sources
  3. Click the menu (⋯) next to the data source > Copy data source ID

Alternatively, use the List Data Sources action to retrieve IDs programmatically.

Returned Data​

Fields shown are representative. The full response object includes additional properties.

Example Response
{
"data": {
"newItems": [
{
"object": "page",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"parent": {
"type": "data_source_id",
"data_source_id": "87654321-4321-4321-4321-210987654321"
},
"properties": {
"Name": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "New Record" }]
},
"Status": {
"id": "status",
"type": "select",
"select": { "name": "Active", "color": "green" }
}
},
"url": "https://www.notion.so/New-Record-12345678123412341234123456789012"
}
],
"updatedItems": [
{
"object": "page",
"id": "11111111-1111-1111-1111-111111111111",
"created_time": "2026-01-20T14:30:00.000Z",
"last_edited_time": "2026-01-23T11:15:00.000Z",
"properties": {
"Name": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "Updated Record" }]
},
"Status": {
"id": "status",
"type": "select",
"select": { "name": "Completed", "color": "blue" }
}
},
"url": "https://www.notion.so/Updated-Record-11111111111111111111111111111111"
}
]
}
}

With batching on, each execution receives one record tagged with how it changed, or an array of such items when the batch size is greater than 1. The newItems and updatedItems arrays are not part of this shape, and a newly created item is handed downstream once rather than twice.

Batched Item
{
"changeType": "new",
"record": {
"object": "page",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"parent": {
"type": "data_source_id",
"data_source_id": "87654321-4321-4321-4321-210987654321"
},
"properties": {
"Name": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "New Record" }]
},
"Status": {
"id": "status",
"type": "select",
"select": { "name": "Active", "color": "green" }
}
},
"url": "https://www.notion.so/New-Record-12345678123412341234123456789012"
}
}

The properties structure depends on the schema defined in the parent data source. See the Notion Property Values documentation for details.

Example Payload for New and Updated Data Source Items⤓
Loading…

New and Updated Data Sources​

Retrieves existing and ongoing data sources from Notion. Load history once, check for changes on a schedule, or both. | key: dataSourcesPollingTrigger

InputNotesExample
Connection

The Notion connection to use.

Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the first recurrence returns every record created or last edited on or after this date.

2026-01-01

The Data Sources trigger monitors all data sources (database tables) shared with the Notion integration for new and updated schemas on a configured schedule.

In Notion's data model, a database is a container that holds one or more data sources (tables of records). This trigger monitors data source schema changes, not individual records within them. For record-level monitoring, use the Data Source Items trigger.

How It Works​

  1. Runs on the configured schedule (e.g., every 5 minutes)
  2. Calls the Notion Search API with a filter for data source objects, sorted by last edited time, newest first
  3. Stops paginating at the first data source older than the window, or at its page budget, so a quiet workspace costs one request rather than a full walk
  4. Categorizes data sources as "new" (created within the window) or "updated" (edited but not created within it)
  5. Advances its cursor to the newest last_edited_time it saw, and carries the ids sitting exactly on that instant into the next recurrence so they are not sent twice

Initial Sync

An initial sync seeds a complete starting state rather than a change feed. It runs once when the instance is deployed, before any scheduled recurrence, and seeds every data source edited on or after the Look-back Date (YYYY-MM-DD) exactly once. Left empty, the sync opens at the deploy itself, so nothing historical is seeded.

The sync runs on deploy whether or not a Look-back Date is set, because it is declared on the trigger rather than switched on per flow. Redeploying an instance that has already synced does not replay it.

The window has no fixed upper bound, so a data source edited mid-drain is swept into the sync rather than deferred to the schedule. The position advances to the newest last_edited_time actually received, never to the wall clock, and the first scheduled recurrence resumes from exactly there; nothing in the payload marks the handoff.

The sync walks up to 20 pages per round, and a scheduled recurrence up to 50. With batching on, a round that reaches its budget continues immediately within the same recurrence until the backlog is drained. With batching off it resumes on the next recurrence instead, so a large backlog spans several. Either way the position is committed only once the walk finishes, so an interrupted drain is re-read from where that window opened rather than leaving records behind a cursor that already passed them; entries can therefore arrive more than once, and a flow should treat each as delivered at least once.

If the deploy-time sync exhausts its page budget, it hands the first scheduled recurrence the start of its window rather than the point it reached. Nothing is skipped, and what the sync already sent is sent again. Narrow the Look-back Date to avoid it.

No input is suppressed while the sync runs: the trigger has no toggles that narrow which changes are reported, and it has no page-size or field-selection input.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Notion.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off a downstream step reads body.data.newDataSources and body.data.updatedDataSources. With batching on those fields do not exist: each execution receives one { "changeType": "new" | "updated", "record": ... } item, or an array of them when the batch size is greater than 1. Any step reading the older shape must be updated before batching is enabled, or it breaks the moment the switch is flipped. Because batching is enabled per flow, that change is scoped to the flow rather than to the component or to other flows using the same trigger.

Returned Data​

Fields shown are representative. The full response object includes additional properties.

Example Response
{
"data": {
"newDataSources": [
{
"object": "data_source",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"title": [{ "plain_text": "New Database" }],
"properties": {
"Name": { "id": "title", "type": "title" },
"Status": { "id": "abc123", "type": "select" }
},
"url": "https://www.notion.so/12345678123412341234123456789012"
}
],
"updatedDataSources": [
{
"object": "data_source",
"id": "87654321-4321-4321-4321-210987654321",
"created_time": "2026-01-20T14:30:00.000Z",
"last_edited_time": "2026-01-23T11:15:00.000Z",
"title": [{ "plain_text": "Updated Database" }],
"properties": {
"Name": { "id": "title", "type": "title" }
},
"url": "https://www.notion.so/87654321432143214321210987654321"
}
]
}
}

With batching on, each execution receives one record tagged with how it changed, or an array of such items when the batch size is greater than 1. The newDataSources and updatedDataSources arrays are not part of this shape.

Batched Item
{
"changeType": "new",
"record": {
"object": "data_source",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"title": [{ "plain_text": "New Database" }],
"properties": {
"Name": { "id": "title", "type": "title" },
"Status": { "id": "abc123", "type": "select" }
},
"url": "https://www.notion.so/12345678123412341234123456789012"
}
}

For complete data source object structure, see the Notion Data Source documentation.

Example Payload for New and Updated Data Sources⤓
Loading…

New and Updated Pages​

Retrieves existing and ongoing pages from Notion. Load history once, check for changes on a schedule, or both. | key: pagesPollingTrigger

InputNotesExample
Connection

The Notion connection to use.

Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the first recurrence returns every record created or last edited on or after this date.

2026-01-01

The Pages trigger monitors all pages shared with the Notion integration for new and updated content on a configured schedule.

This trigger is best for workspace-wide page monitoring. For monitoring records within a specific database, use the Data Source Items trigger instead, which is more efficient.

How It Works​

  1. Runs on the configured schedule (e.g., every 5 minutes)
  2. Calls the Notion Search API for pages, sorted by last edited time, newest first
  3. Stops paginating at the first page older than the window, or at its page budget, so a quiet workspace costs one request rather than a full walk
  4. Categorizes pages as "new" (created within the window) or "updated" (edited but not created within it)
  5. Advances its cursor to the newest last_edited_time it saw, and carries the ids sitting exactly on that instant into the next recurrence so they are not sent twice

Initial Sync

An initial sync seeds a complete starting state rather than a change feed. It runs once when the instance is deployed, before any scheduled recurrence, and seeds every page edited on or after the Look-back Date (YYYY-MM-DD) exactly once. Left empty, the sync opens at the deploy itself, so nothing historical is seeded.

The sync runs on deploy whether or not a Look-back Date is set, because it is declared on the trigger rather than switched on per flow. Redeploying an instance that has already synced does not replay it.

The window has no fixed upper bound, so a page edited mid-drain is swept into the sync rather than deferred to the schedule. The position advances to the newest last_edited_time actually received, never to the wall clock, and the first scheduled recurrence resumes from exactly there; nothing in the payload marks the handoff.

The sync walks up to 20 pages per round, and a scheduled recurrence up to 50. With batching on, a round that reaches its budget continues immediately within the same recurrence until the backlog is drained. With batching off it resumes on the next recurrence instead, so a large backlog spans several. Either way the position is committed only once the walk finishes, so an interrupted drain is re-read from where that window opened rather than leaving records behind a cursor that already passed them; entries can therefore arrive more than once, and a flow should treat each as delivered at least once.

If the deploy-time sync exhausts its page budget, it hands the first scheduled recurrence the start of its window rather than the point it reached. Nothing is skipped, and what the sync already sent is sent again. Narrow the Look-back Date to avoid it.

No input is suppressed while the sync runs: the trigger has no toggles that narrow which changes are reported, and it has no page-size or field-selection input.

Batching

Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Notion.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off a downstream step reads body.data.newPages and body.data.updatedPages. With batching on those fields do not exist: each execution receives one { "changeType": "new" | "updated", "record": ... } item, or an array of them when the batch size is greater than 1. Any step reading the older shape must be updated before batching is enabled, or it breaks the moment the switch is flipped. Because batching is enabled per flow, that change is scoped to the flow rather than to the component or to other flows using the same trigger.

Returned Data​

Fields shown are representative. The full response object includes additional properties.

Example Response
{
"data": {
"newPages": [
{
"object": "page",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "New Page Title" }]
}
},
"url": "https://www.notion.so/New-Page-12345678123412341234123456789012"
}
],
"updatedPages": [
{
"object": "page",
"id": "87654321-4321-4321-4321-210987654321",
"created_time": "2026-01-20T14:30:00.000Z",
"last_edited_time": "2026-01-23T11:15:00.000Z",
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "Updated Page Title" }]
}
},
"url": "https://www.notion.so/Updated-Page-87654321432143214321210987654321"
}
]
}
}

With batching on, each execution receives one record tagged with how it changed, or an array of such items when the batch size is greater than 1. The newPages and updatedPages arrays are not part of this shape.

Batched Item
{
"changeType": "new",
"record": {
"object": "page",
"id": "12345678-1234-1234-1234-123456789012",
"created_time": "2026-01-23T10:00:00.000Z",
"last_edited_time": "2026-01-23T10:00:00.000Z",
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [{ "plain_text": "New Page Title" }]
}
},
"url": "https://www.notion.so/New-Page-12345678123412341234123456789012"
}
}

For complete page object structure, see the Notion Page Object documentation.

Example Payload for New and Updated Pages⤓
Loading…

Data Sources​

Select Data Source​

Select a Notion data source from a picklist. | key: selectDataSource | type: picklist

InputNotesExample
Connection

The Notion connection to use.

Example Payload for Select Data Source⤓
Loading…

Select Database (Deprecated)​

Select a Notion database from a picklist. | key: selectDatabase | type: picklist

InputNotesExample
Connection

The Notion connection to use.

Example Payload for Select Database (Deprecated)⤓
Loading…

Select Page​

Select a Notion page from a picklist. | key: selectPage | type: picklist

InputNotesExample
Connection

The Notion connection to use.

Example Payload for Select Page⤓
Loading…

Select User​

Select a Notion user from a picklist. | key: selectUser | type: picklist

InputNotesExample
Connection

The Notion connection to use.

Example Payload for Select User⤓
Loading…

Actions​

Create Data Source​

Add an additional data source to an existing database. A standard table view is created alongside the new data source. | key: createDataSource

InputNotesExample
Connection

The Notion connection to use.

Database ID

The unique identifier of the database. For single-source databases, this is also the data source ID. Find this in the Notion URL or database settings menu. See Notion API Database Reference.

d9824bdc84454327be8b5b47500af6ce
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Properties

Property schema of the data source. The keys are the names of properties as they appear in Notion.

{
  "Name": {
    "title": {}
  },
  "Description": {
    "rich_text": {}
  }
}
Title

The title of the database as it appears in Notion, formatted as a rich text array.

[
  {
    "type": "text",
    "text": {
      "content": "Some words ",
      "link": null
    },
    "annotations": {
      "bold": false,
      "italic": false,
      "strikethrough": false,
      "underline": false,
      "code": false,
      "color": "default"
    },
    "plain_text": "Some words ",
    "href": null
  }
]
Example Payload for Create Data Source⤓
Loading…

Create Database​

Creates a database as a subpage in the specified parent page, with the specified properties schema set on its initial data source. | key: updatedCreateDatabase

InputNotesExample
Connection

The Notion connection to use.

Cover Image

The cover image of the new page, represented as a file object.

{
  "type": "file",
  "file": {
    "url": "https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7b8b0713-dbd4-4962-b38b-955b6c49a573/My_test_image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221024%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221024T205211Z&X-Amz-Expires=3600&X-Amz-Signature=208aa971577ff05e75e68354e8a9488697288ff3fb3879c2d599433a7625bf90&X-Amz-SignedHeaders=host&x-id=GetObject",
    "expiry_time": "2022-10-24T22:49:22.765Z"
  }
}
Description

The description of the data source formatted as a rich text array. See Notion Rich Text Reference.

[
  {
    "annotations": {
      "bold": false,
      "italic": false,
      "strikethrough": false,
      "underline": false,
      "code": false,
      "color": "\"default\""
    }
  }
]
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Initial Data Source Properties

Property schema for the initial data source. The keys are the names of properties as they appear in Notion.

{
  "Name": {
    "title": {}
  },
  "Description": {
    "rich_text": {}
  },
  "In stock": {
    "checkbox": {}
  },
  "Food group": {
    "select": {
      "options": [
        {
          "name": "Vegetable",
          "color": "green"
        },
        {
          "name": "Fruit",
          "color": "red"
        },
        {
          "name": "Protein",
          "color": "yellow"
        }
      ]
    }
  },
  "Price": {
    "number": {
      "format": "dollar"
    }
  },
  "Last ordered": {
    "date": {}
  },
  "Meals": {
    "relation": {
      "data_source_id": "668d797c-76fa-4934-9b05-ad288df2d136",
      "single_property": {}
    }
  },
  "Number of meals": {
    "rollup": {
      "rollup_property_name": "Name",
      "relation_property_name": "Meals",
      "function": "count"
    }
  },
  "Store availability": {
    "type": "multi_select",
    "multi_select": {
      "options": [
        {
          "name": "Duc Loi Market",
          "color": "blue"
        },
        {
          "name": "Rainbow Grocery",
          "color": "gray"
        },
        {
          "name": "Nijiya Market",
          "color": "purple"
        },
        {
          "name": "Gus's Community Market",
          "color": "yellow"
        }
      ]
    }
  },
  "+1": {
    "people": {}
  },
  "Photo": {
    "files": {}
  }
}
Parent

The parent page where the database will be created. Format: {"type": "page_id", "page_id": "..."} or {"type": "workspace", "workspace": true} for workspace-level.

{
  "type": "page_id",
  "page_id": "d9824bdc84454327be8b5b47500af6ce"
}
Title

The title of the database as it appears in Notion, formatted as a rich text array.

[
  {
    "type": "text",
    "text": {
      "content": "Some words ",
      "link": null
    },
    "annotations": {
      "bold": false,
      "italic": false,
      "strikethrough": false,
      "underline": false,
      "code": false,
      "color": "default"
    },
    "plain_text": "Some words ",
    "href": null
  }
]
Example Payload for Create Database⤓
Loading…

Create Database Item​

Creates an Item on a database. | key: createDatabaseItem

InputNotesExample
Children

The content to be rendered on the new page, represented as an array of block objects. Block reference

[
  {
    "object": "block",
    "heading_2": {
      "rich_text": [
        {
          "text": {
            "content": "Lacinato kale"
          }
        }
      ]
    }
  },
  {
    "object": "block",
    "paragraph": {
      "rich_text": [
        {
          "text": {
            "content": "Lacinato kale is a variety of kale with a long tradition in Italian cuisine, especially that of Tuscany. It is also known as Tuscan kale, Italian kale, dinosaur kale, kale, flat back kale, palm tree kale, or black Tuscan palm.",
            "link": {
              "url": "https://en.wikipedia.org/wiki/Lacinato_kale"
            }
          },
          "href": "https://en.wikipedia.org/wiki/Lacinato_kale"
        }
      ],
      "color": "default"
    }
  }
]
Connection

The Notion connection to use.

Cover Image

The cover image of the new page, represented as a file object.

{
  "type": "file",
  "file": {
    "url": "https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7b8b0713-dbd4-4962-b38b-955b6c49a573/My_test_image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221024%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221024T205211Z&X-Amz-Expires=3600&X-Amz-Signature=208aa971577ff05e75e68354e8a9488697288ff3fb3879c2d599433a7625bf90&X-Amz-SignedHeaders=host&x-id=GetObject",
    "expiry_time": "2022-10-24T22:49:22.765Z"
  }
}
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Parent

The parent database where the new page is inserted. Recommended format: {"type": "data_source_id", "data_source_id": "..."}. Legacy format {"database_id": "..."} is supported for single-source databases.

{
  "type": "data_source_id",
  "data_source_id": "d9824bdc84454327be8b5b47500af6ce"
}
Properties

The values of the page's properties. <strong>Important:</strong> If the parent is a database, the schema must match the parent database's properties. If the parent is a page, only 'title' is valid. Learn more

{
  "Name": {
    "title": [
      {
        "text": {
          "content": "Tuscan kale"
        }
      }
    ]
  },
  "Description": {
    "rich_text": [
      {
        "text": {
          "content": "A dark green leafy vegetable"
        }
      }
    ]
  },
  "Food group": {
    "select": {
      "name": "🥬 Vegetable"
    }
  }
}
Example Payload for Create Database Item⤓
Loading…

Create Page​

Creates a new page that is a child of an existing page or database. | key: createPage

InputNotesExample
Children

The content to be rendered on the new page, represented as an array of block objects. Block reference

[
  {
    "object": "block",
    "heading_2": {
      "rich_text": [
        {
          "text": {
            "content": "Lacinato kale"
          }
        }
      ]
    }
  },
  {
    "object": "block",
    "paragraph": {
      "rich_text": [
        {
          "text": {
            "content": "Lacinato kale is a variety of kale with a long tradition in Italian cuisine, especially that of Tuscany. It is also known as Tuscan kale, Italian kale, dinosaur kale, kale, flat back kale, palm tree kale, or black Tuscan palm.",
            "link": {
              "url": "https://en.wikipedia.org/wiki/Lacinato_kale"
            }
          },
          "href": "https://en.wikipedia.org/wiki/Lacinato_kale"
        }
      ],
      "color": "default"
    }
  }
]
Connection

The Notion connection to use.

Cover Image

The cover image of the new page, represented as a file object.

{
  "type": "file",
  "file": {
    "url": "https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7b8b0713-dbd4-4962-b38b-955b6c49a573/My_test_image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221024%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221024T205211Z&X-Amz-Expires=3600&X-Amz-Signature=208aa971577ff05e75e68354e8a9488697288ff3fb3879c2d599433a7625bf90&X-Amz-SignedHeaders=host&x-id=GetObject",
    "expiry_time": "2022-10-24T22:49:22.765Z"
  }
}
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Parent

The parent where the new page is inserted. <strong>For page parents:</strong> {"type": "page_id", "page_id": "..."}. <strong>For database parents (recommended):</strong> {"type": "data_source_id", "data_source_id": "..."}. Legacy format {"database_id": "..."} is supported for single-source databases.

{
  "type": "page_id",
  "page_id": "d9824bdc84454327be8b5b47500af6ce"
}
Properties

The values of the page's properties. <strong>Important:</strong> If the parent is a database, the schema must match the parent database's properties. If the parent is a page, only 'title' is valid. Learn more

{
  "Name": {
    "title": [
      {
        "text": {
          "content": "Tuscan kale"
        }
      }
    ]
  },
  "Description": {
    "rich_text": [
      {
        "text": {
          "content": "A dark green leafy vegetable"
        }
      }
    ]
  },
  "Food group": {
    "select": {
      "name": "🥬 Vegetable"
    }
  }
}
Example Payload for Create Page⤓
Loading…

Get Current User​

Get the currently logged in user | key: getCurrentUser

InputNotesExample
Connection

The Notion connection to use.

Example Payload for Get Current User⤓
Loading…

Get Page​

Retrieve a page by ID with optional property filters | key: getPage

InputNotesExample
Connection

The Notion connection to use.

Filter Properties

Comma-separated list of page property IDs to include in the response. Use this to limit the response to specific page properties.

title,tags,status
Page ID

The unique identifier of the page in Notion. Find this in the page URL. See Notion API Page Reference.

d9824bdc84454327be8b5b47500af6ce
Example Payload for Get Page⤓
Loading…

Get User by ID​

Get a user by their ID | key: getUser

InputNotesExample
Connection

The Notion connection to use.

User ID

The unique identifier of the user in Notion. See Notion API User Reference.

d9824bdc84454327be8b5b47500af6ce
Example Payload for Get User by ID⤓
Loading…

List Data Sources​

List all data sources accessible to the integration. | key: listDataSources

InputNotesExample
Connection

The Notion connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. This ignores the Start Cursor input.

false
Start Cursor

The start cursor returned from a previous list or query action when at least one more page of records is available. Used for pagination.

d9824bdc84454327be8b5b47500af6ce
Example Payload for List Data Sources⤓
Loading…

List Pages​

List all pages | key: listPages

InputNotesExample
Connection

The Notion connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. This ignores the Start Cursor input.

false
Start Cursor

The start cursor returned from a previous list or query action when at least one more page of records is available. Used for pagination.

d9824bdc84454327be8b5b47500af6ce
Example Payload for List Pages⤓
Loading…

List Users​

List all users in the workspace with optional page size | key: listUsers

InputNotesExample
Connection

The Notion connection to use.

Fetch All

When true, automatically fetches all pages of results using pagination. This ignores the Start Cursor and Page Size inputs.

false
Pagination

Cursor and page-size controls for paging through results.

Example Payload for List Users⤓
Loading…

Query Data Source​

Query a data source to retrieve pages with optional filtering and sorting. | key: queryDataSource

InputNotesExample
Connection

The Notion connection to use.

Data Source ID

The unique identifier of the data source. Find this in the Notion URL or database settings menu. See Notion API Data Sources.

668d797c76fa49349b05ad288df2d136
Fetch All

When true, automatically fetches all pages of results using pagination. This ignores the Start Cursor input.

false
Filter Object

Filter conditions to apply to the database query. Supports compound filters using 'and' and 'or' operators. See Notion API Filter Documentation.

{
  "and": [
    {
      "property": "Done",
      "checkbox": {
        "equals": true
      }
    },
    {
      "or": [
        {
          "property": "Tags",
          "contains": "A"
        },
        {
          "property": "Tags",
          "contains": "B"
        }
      ]
    }
  ]
}
Filter Properties

Limit the properties included in the response. Provide an object where keys are property names and values are property values or arrays of values.

{
  "Name": "example",
  "Tag": [
    "tag1",
    "tag2"
  ]
}
Pagination

Cursor and page-size controls for paging through results.

Result Type

Type of results to return. Use 'data_source' (recommended) for the new API or 'database' for legacy support.

database
Sort

Array of sort objects defining the order of query results. Earlier sorts take precedence. See Notion API Sort Documentation.

[
  {
    "property": "Last ordered",
    "direction": "ascending"
  }
]
Example Payload for Query Data Source⤓
Loading…

Raw Request​

Send raw HTTP request to Notion | key: rawRequest

InputNotesExample
Connection

The Notion connection to use.

Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/users/me), The base URL is already included (https://api.notion.com/v1). For example, to connect to https://api.notion.com/v1/users/me, only /users/me is entered in this field.

/users/me
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false
Example Payload for Raw Request⤓
Loading…

Retrieve Data Source​

Retrieve a data source object containing structural information about columns and configuration. | key: retrieveDataSource

InputNotesExample
Connection

The Notion connection to use.

Data Source ID

The unique identifier of the data source. Find this in the Notion URL or database settings menu. See Notion API Data Sources.

668d797c76fa49349b05ad288df2d136
Example Payload for Retrieve Data Source⤓
Loading…

Retrieve Database​

Retrieve a database object by ID. Returns database-level information including child data sources. | key: retrieveDatabase

InputNotesExample
Connection

The Notion connection to use.

Database ID

The unique identifier of the database. For single-source databases, this is also the data source ID. Find this in the Notion URL or database settings menu. See Notion API Database Reference.

d9824bdc84454327be8b5b47500af6ce
Example Payload for Retrieve Database⤓
Loading…

Update Data Source​

Update a data source object including its property schema, title, icon, and parent database. | key: updateDataSource

InputNotesExample
Connection

The Notion connection to use.

Database ID

If provided, the parent of the data source will be changed to the specified database ID.

d9824bdc84454327be8b5b47500af6ce
Data Source ID

The unique identifier of the data source. Find this in the Notion URL or database settings menu. See Notion API Data Sources.

668d797c76fa49349b05ad288df2d136
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Properties

Property schema of the data source. The keys are the names of properties as they appear in Notion.

{
  "Name": {
    "title": {}
  },
  "Description": {
    "rich_text": {}
  }
}
Title

The title of the database as it appears in Notion, formatted as a rich text array.

[
  {
    "type": "text",
    "text": {
      "content": "Some words ",
      "link": null
    },
    "annotations": {
      "bold": false,
      "italic": false,
      "strikethrough": false,
      "underline": false,
      "code": false,
      "color": "default"
    },
    "plain_text": "Some words ",
    "href": null
  }
]
Example Payload for Update Data Source⤓
Loading…

Update Database​

Update database-level attributes such as title, icon, cover, and inline status. To update data source properties, use the Update Data Source action. | key: updatedUpdateDatabase

InputNotesExample
Connection

The Notion connection to use.

Cover Image

The cover image of the new page, represented as a file object.

{
  "type": "file",
  "file": {
    "url": "https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7b8b0713-dbd4-4962-b38b-955b6c49a573/My_test_image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221024%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221024T205211Z&X-Amz-Expires=3600&X-Amz-Signature=208aa971577ff05e75e68354e8a9488697288ff3fb3879c2d599433a7625bf90&X-Amz-SignedHeaders=host&x-id=GetObject",
    "expiry_time": "2022-10-24T22:49:22.765Z"
  }
}
Database ID

The unique identifier of the database. For single-source databases, this is also the data source ID. Find this in the Notion URL or database settings menu. See Notion API Database Reference.

d9824bdc84454327be8b5b47500af6ce
Icon

The icon of the new page. Either an emoji object or an external file object.

{
  "type": "external",
  "external": {
    "url": "https://images.unsplash.com/photo-1525310072745-f49212b5ac6d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1065&q=80"
  }
}
Is Inline

Whether the database should be displayed inline in the parent page. If not provided, the inline status will not be updated.

Parent

If provided, the parent of the database will be changed to the specified page ID or workspace.

{
  "type": "page_id",
  "page_id": "d9824bdc84454327be8b5b47500af6ce"
}
Title

The title of the database as it appears in Notion, formatted as a rich text array.

[
  {
    "type": "text",
    "text": {
      "content": "Some words ",
      "link": null
    },
    "annotations": {
      "bold": false,
      "italic": false,
      "strikethrough": false,
      "underline": false,
      "code": false,
      "color": "default"
    },
    "plain_text": "Some words ",
    "href": null
  }
]
Example Payload for Update Database⤓
Loading…

Changelog​

2026-09-22​

Reworked the polling triggers and updated what the actions offer during step configuration:

  • Fixed the polling triggers permanently skipping records: a record changed in the same minute a recurrence ran was never reported, on that recurrence or any later one
  • Added opt-in batching across all polling triggers, dispatching each changed record as its own flow execution or in configured batches rather than one execution carrying every record; enabling it changes the shape a downstream step receives
  • Added an optional Look-back Date input across all polling triggers for performing an initial sync of records. The initial sync begins when the instance is deployed, backfilling every record modified on or after the specified date and seeding each once; later recurrences are unaffected. Leave it empty to start from the deployment with no backfill
  • Updated New and Updated Pages and New and Updated Data Sources to stop reading once they reach records older than the polling window, instead of walking every page and data source in the workspace on every recurrence
  • Updated the label of the New and Updated Databases trigger to New and Updated Data Sources, matching the data source records it returns
  • Updated Query Data Source and List Users to group their Start Cursor and Page Size inputs under Pagination; Fetch All stays a top-level toggle
  • Added output schemas to 15 actions for improved field mapping during configuration
  • Added inline action calling support to 15 actions for improved example output during configuration

2026-09-14​

Removed the Create Database (Deprecated), Get Database (Deprecated), List Databases (Deprecated), and Query Database (Deprecated) actions that are no longer in use; use Create Database, Retrieve Database, List Data Sources, and Query Data Source instead

2026-04-30​

Updated spectral version

2026-02-26​

Added inline data source for users to enable dynamic dropdown selection

2026-01-23​

Updated Notion component to support API v2025-09-03 with backward compatibility:

  • Updated API Version - Now using Notion API v2025-09-03
  • Enhanced Query Database - Added Data Source ID input to support databases with multiple data sources. Uses new /data_sources/{id}/query endpoint when Data Source ID is provided, falls back to legacy /databases/{id}/query endpoint for backward compatibility
  • Enhanced List Databases - Added Result Type input to choose between data sources (recommended) and databases (legacy)
  • Updated Create Database Item - Parent format now supports data_source_id type for database parents
  • Updated Create Database - Fixed parent format to use page_id type (databases must be created under pages)
  • Updated Examples - All example payloads now demonstrate the recommended data_source_id format for relations and parent objects

Migration Guide: Existing integrations using database_id will continue to work for single-source databases. For databases with multiple data sources, use the new data_source_id format.

2025-08-25​

Added the Internal Integration connection type

2025-04-30​

Added pagination support for improved handling of large datasets and better performance