---
title: Notion API Integration on Truto
slug: notion
category: Knowledge Management
canonical: "https://truto.one/integrations/detail/notion/"
---

# Notion API Integration on Truto



**Category:** Knowledge Management  
**Status:** Generally available

## Unified APIs

### Unified Knowledge Base API

- **Files** — 
- **Page-Content** — Represents the content of a page
- **Pages** — Represents the pages, posts, articles in a knowledge base
- **Users** — The User object represents a User.

### Unified User Directory API

- **Me** — 
- **Users** — The User object represents a User.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 21 tools for Notion that AI agents can call directly.

- **list_all_notion_users** — List all users in Notion workspace. Returns user objects including id, type, name, email (for person type), and avatar_url. 
- **get_single_notion_user_by_id** — Get information about a specific user in Notion by user_id. Returns user id, type, email, name, and avatar_url.
- **list_all_notion_databases** — List databases by title in Notion. Requires 'query' parameter to match database titles. Returns fields including id, created_time, last_edited_time, archived status, and properties for each database.
- **get_single_notion_database_by_id** — Get information about a specific database in Notion by database id. Returns database object including id, created_time, last_edited_time, icon, cover, url, title, and description fields.
- **update_a_notion_database_by_id** — Update a database in Notion. Requires id. Updates the title, description, or schema properties of a specific database. Returns fields such as id, title, description, parent, is_inline, created_time, last_edited_time, and url in the response.
- **list_all_notion_pages** — Returns a list of pages in Notion that match the query. Each result includes page-specific fields such as id, created_time, last_edited_time, created_by, last_edited_by, cover, icon, parent, archived, properties, and url
- **get_single_notion_page_by_id** — Get information about a specific page in Notion using id. Returns page properties including created_time, last_edited_time, created_by, last_edited_by, cover, icon, parent, archived, and properties. Note: properties with more than 25 references may be incomplete.
- **create_a_notion_page** — Create a new page with properties and optional content as a child of an existing page or database in Notion. Returns the created page object including id, created_time, last_edited_time, cover, icon, parent, archived status, and properties.
- **update_a_notion_page_by_id** — Update properties, icon, cover, or trash status of a page in Notion by page id. Returns updated page object including id, created_time, last_edited_time, cover, icon, parent, archived, and properties.
- **delete_a_notion_page_by_id** — Archives (soft deletes) a Notion page by setting the archived field to true. This does not permanently delete the page—it's moved to the trash. To restore, set archived to false via the Update Page endpoint. Use page_id to specify which page to archive.
- **list_all_notion_comments** — Get a list of un-resolved comments for a specific block_id in Notion. Returns comment id, parent, discussion_id, created_time, last_edited_time, created_by user, and rich_text content.
- **get_single_notion_pages_property_by_id** — Get a property item for a given page id and property_id in Notion. Returns property_item objects including type and value details. Use for properties with more than 25 references to get complete lists.
- **list_all_notion_block_children** — Get child blocks of a block by id in Notion. Returns an array of block objects including id, parent, created_time, last_edited_time, created_by, last_edited_by, has_children, archived, type, and block content details.
- **create_a_notion_block_child** — Append new children blocks to a parent block in Notion. Requires id. Returns results array with block objects including id, parent, created_time, last_edited_time, created_by, last_edited_by, has_children, archived, type, and content fields.
- **update_a_notion_block_child_by_id** — Update a block by id in Notion. Returns the updated block object including id, parent page_id, created_time, last_edited_time, created_by and last_edited_by user ids, has_children, archived status, type, and content fields.
- **delete_a_notion_block_child_by_id** — Delete a block by setting its archived property to true in Notion. Requires id. Returns the block object with fields id, parent, created_time, last_edited_time, created_by, last_edited_by, has_children, archived, type, and paragraph.
- **list_all_notion_search** — Search pages or databases by query text in Notion. Returns id, created_time, last_edited_time, created_by, last_edited_by, cover, icon, parent, archived, properties, and url fields. Use filter to limit to page or database objects.
- **list_all_notion_query_database** — Query pages and databases in Notion database with database_id. Returns filtered and sorted pages/databases. Response includes fields like id, created_time, last_edited_time, created_by, last_edited_by, cover, icon, and parent.
- **list_all_notion_me** — Get the bot user associated with the API token in Notion. Returns user id, name, avatar_url, type, and owner details including owner's id, name, and email.
- **notion_files_download** — Use this endpoint to download files from a Notion page property (such as files or media)
- **get_single_notion_block_by_id** — Retrieve a block in Notion using id. Returns object type, parent, created_time, last_edited_time, created_by, last_edited_by, has_children, archived, and content type details for the block.

## How it works

1. **Link your customer's Notion account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Notion.** The Proxy API is a 1-to-1 mapping of the Notion API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Index Notion workspaces for AI-powered search and RAG** — Enterprise search and AI copilot products can ingest their customers' Notion pages and databases to power retrieval-augmented generation. Truto handles the recursive block fetching and pagination so you can focus on your search index and LLM pipeline.
- **Push structured data into Notion databases as a reporting layer** — SaaS products that generate data — deals closed, incidents resolved, experiments completed — can automatically create and update rows in their customers' Notion databases, giving non-technical stakeholders a live dashboard in the tool they already use.
- **Auto-generate formatted Notion pages from product artifacts** — Meeting intelligence, analytics, and documentation tools can create rich Notion pages with headings, checklists, and embedded content, turning outputs like transcripts, reports, or changelogs into well-structured documents in the customer's workspace.
- **Sync task and ticket status bidirectionally with Notion databases** — Project management and support tools can keep Notion database rows in sync with their own task states, so teams that track work in Notion always see the latest status without manual updates.
- **Surface Notion wiki content inside your product's UI** — Help desk and enablement platforms can pull relevant Notion pages and blocks into their agent or employee workspace, giving users instant access to internal knowledge without leaving your app.

## What you can build

- **Recursive page content ingestion pipeline** — Fetch a Notion page and all its nested block children to extract full document content for indexing, summarization, or cross-platform search.
- **Automated meeting notes database writer** — Create a new row in a customer's Notion meeting notes database with structured properties (date, attendees, duration) and append the transcript as formatted blocks.
- **Two-way database row sync engine** — Query a Notion database with filters to find matching rows, then create or update page properties to keep external records and Notion in sync.
- **Notion-powered knowledge base widget** — Use search and block retrieval to surface relevant Notion wiki articles directly inside your product's support agent or employee workspace.
- **File and media asset extractor** — Download files hosted in Notion page properties or blocks using the files download capability, enabling backup, migration, or re-hosting workflows.
- **Comment thread sync for contextual collaboration** — Pull comments attached to Notion pages or blocks into your platform's activity feed to keep conversation context connected across tools.

## FAQs

### How does authentication work for Notion integrations through Truto?



### How do I read the full content of a Notion page?

Notion pages contain metadata and properties but not body content directly. You first retrieve the page with get_single_notion_page_by_id, then recursively fetch its content using list_all_notion_block_children. Each block (paragraph, heading, list item, etc.) is returned individually.

### How are Notion database rows represented in the API?

In Notion, every database row is technically a Page with a parent database ID. You create rows using create_a_notion_page with the database as the parent and pass structured properties. You update row properties with update_a_notion_page_by_id.

### Can I filter and query specific rows in a Notion database?

Yes. The list_all_notion_query_database tool lets you pass filter and sort criteria to retrieve specific rows from a database — for example, all items where Status equals 'In Progress'. Truto handles pagination for large result sets.

### Which Unified APIs map to Notion?

Notion is supported through three Unified APIs: the Unified Knowledge Base API (covering Files, Page-Content, Pages, and Users), the Unified User Directory API (Me and Users), and the Unified Search API (Search). These let you use a standardized schema across Notion and other knowledge management tools.

### Can I delete pages and blocks through the integration?

Yes. Both delete_a_notion_page_by_id and delete_a_notion_block_child_by_id are supported. Note that Notion's API archives items rather than permanently deleting them, consistent with Notion's native trash behavior.

## Related reading

- [How to Integrate with the Notion API: Architecture Guide for B2B SaaS](https://truto.one/blog/how-to-integrate-with-the-notion-api-architecture-guide-for-b2b-saas/) — Notion's block-based API requires recursive traversal, handles just 3 requests/second, and caps payloads at 1,000 blocks. Here's how to architect a production-ready integration.
- [By Example: How Truto Helps Engineers Build Faster Integrations - Notion](https://truto.one/blog/introducing-our-notion-integration/) — Build post-connection configuration UI for SaaS integrations with Truto's RapidForm. Declarative JSON config, cascading selects, pagination for 40K+ pages, and JSONata validation.
