> ## Documentation Index
> Fetch the complete documentation index at: https://filament.getgalaxy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Notion

> Read databases, pages, users, and blocks from a Notion workspace

The Notion source reads databases, their pages and blocks, and workspace users.
It is built with an
[HTTP manifest](/pages/connectors/building-a-connector/http-manifests) and is
**beta**. Its resources are stable, though future releases may add columns.
It targets API version `2022-06-28`.

## Configuration

| Field | Scope | Default | Description |
| - | - | - | - |
| `api_key` | Connection | | Required. Secret. Notion integration secret. |

## Resources

```text theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
databases → pages → blocks
users
```

Filament searches for databases, requests the pages in each database, and then
requests the child blocks for each page. Users are read independently. Selecting
blocks therefore adds at least one API request per page in the workspace.

## Modes

All resources support full reads. If interrupted, a top-level resource resumes
after its last completed page. Child resources
(`pages`, `blocks`) always restart with their parent.

`pages` is the one incremental resource.

| | |
| - | - |
| Cursor field | `last_edited_time` |
| Request parameter | `filter.last_edited_time.on_or_after` (body) |
| Comparator | `time` |
| Initial value | `1970-01-01T00:00:00Z` |
| Checkpoint key | `pages_last_edited_time` |
| Overlap | 300 seconds |

The cursor field is fixed by the manifest. Only a lookback window is
user-configurable, and only because the comparator is `time`. Pages fan out
across databases but share a single durable watermark for the whole resource.
The 300-second overlap re-reads a window each run to cover databases edited
while earlier ones were being scanned. `blocks` has no incremental block.
When it is selected, every page's children are re-read in full.

## Behavior

* **Auth**: bearer token from `api_key` on every request.
* **API version**: pinned via `Notion-Version: 2022-06-28`, so response fields
  do not drift with Notion's rolling default.
* **Pagination**: cursor paging throughout. `next_cursor` from each response
  feeds `start_cursor` in the next request (in the body for the POST
  endpoints, in the query string for `users` and `blocks`), terminating when
  `has_more` is false.
* **Rate limiting**: no client-side limiter is configured. The engine backs
  off on 429 responses using `Retry-After`.
* `databases` and `pages` keep the entire response object in `raw`, while
  `users` and `blocks` keep only unprojected fields as a remainder.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.