The Notion source ships with parsing tests only. Nobody has pointed it at a real workspace.
Unlike the other connectors there is no way to close this locally: Notion is closed-source SaaS
with no emulator, and the open-source alternatives (AppFlowy, AFFiNE) do not speak its API.
The risk is the same one that bit S3, which passed its construction tests and still broke on
every bucket with a folder in it until a live endpoint was tried.
What would help: create an internal integration, share one page with it, run the test.
# Settings -> My connections -> New internal integration
# then share a page with it from the page's ... menu
UTOPIA_NOTION_TEST_TOKEN=ntn_xxx cargo test -p utopia-server notion
A free workspace with a single page works. The token is read-only over exactly the pages you
share with it.
The parts most likely to be wrong, none of which construction tests reach:
- Pagination. Both
/v1/search and /v1/blocks/{id}/children page at 100. A workspace with
more than that exercises has_more and next_cursor; one with fewer never does.
Notion-Version. Pinned to 2026-03-11. A wrong value returns 400 saying only "missing
version", without naming an acceptable one.
- Database rows. Their title property is named by the user, so the by-type lookup matters
here in a way it does not for plain pages.
- Rate limiting. Roughly three requests a second. Requests are sequential for that reason,
but nobody has watched what a workspace large enough to hit it actually does.
See crates/utopia-server/src/notion.rs.
The Notion source ships with parsing tests only. Nobody has pointed it at a real workspace.
Unlike the other connectors there is no way to close this locally: Notion is closed-source SaaS
with no emulator, and the open-source alternatives (AppFlowy, AFFiNE) do not speak its API.
The risk is the same one that bit S3, which passed its construction tests and still broke on
every bucket with a folder in it until a live endpoint was tried.
What would help: create an internal integration, share one page with it, run the test.
A free workspace with a single page works. The token is read-only over exactly the pages you
share with it.
The parts most likely to be wrong, none of which construction tests reach:
/v1/searchand/v1/blocks/{id}/childrenpage at 100. A workspace withmore than that exercises
has_moreandnext_cursor; one with fewer never does.Notion-Version. Pinned to2026-03-11. A wrong value returns 400 saying only "missingversion", without naming an acceptable one.
here in a way it does not for plain pages.
but nobody has watched what a workspace large enough to hit it actually does.
See
crates/utopia-server/src/notion.rs.