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

# Notion Integration for AI Agents & Workflows

> Notion workspace integration: pages, databases, blocks, users, comments, and search.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/notion.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=467920d5575818cb79771b0e784b528b" alt="Notion logo" width="72" height="72" data-path="logos/notion.svg" />

## Overview

Add **Notion** to any ModuleX agent or workflow. Notion v1 REST API integration. Pure HTTP (no SDK dep). 19 actions across pages, databases, blocks, users, comments, and search.

<Info>
  **Categories**: Productivity & Collaboration · Productivity · Knowledge Management · Documentation · **Auth**: OAuth2 (Recommended), Internal Integration · **Actions**: 19
</Info>

## Authentication

<Tabs>
  <Tab title="OAuth2 (Recommended)">
    ### OAuth2 (Recommended)

    Connect using Notion OAuth — most secure option

    #### Required Credentials

    | Field         | Description                            | Required | Format                                 |
    | ------------- | -------------------------------------- | -------- | -------------------------------------- |
    | Client ID     | Notion OAuth integration Client ID     | Yes      | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` |
    | Client Secret | Notion OAuth integration Client Secret | Yes      | `-`                                    |

    #### OAuth Configuration

    * **Authorization URL**: `https://api.notion.com/v1/oauth/authorize`
    * **Token URL**: `https://api.notion.com/v1/oauth/token`
  </Tab>

  <Tab title="Internal Integration">
    ### Internal Integration

    Connect using a Notion Internal Integration Token

    #### Required Credentials

    | Field                      | Description                        | Required | Format                                      |
    | -------------------------- | ---------------------------------- | -------- | ------------------------------------------- |
    | Internal Integration Token | Notion Internal Integration secret | Yes      | `secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
  </Tab>
</Tabs>

## Available Actions

<AccordionGroup>
  <Accordion title="search — Search across Notion pages and databases">
    ### Parameters

    <ResponseField name="query" type="string">
      Search query text
    </ResponseField>

    <ResponseField name="filter" type="object">
      Filter (e.g. \{'property': 'object', 'value': 'page'})
    </ResponseField>

    <ResponseField name="sort" type="object">
      Sort options
    </ResponseField>

    <ResponseField name="start_cursor" type="string">
      Pagination cursor
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results (max 100) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "has_more": {
          "default": false,
          "title": "Has More",
          "type": "boolean"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        },
        "results": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Results",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_page — Create a new page in a database or under a parent page">
    ### Parameters

    <ResponseField name="parent_type" type="string" required>
      'database' or 'page'
    </ResponseField>

    <ResponseField name="parent_id" type="string" required>
      Parent page/database ID
    </ResponseField>

    <ResponseField name="title" type="string">
      Page title
    </ResponseField>

    <ResponseField name="content" type="string">
      Markdown content (converted to paragraph blocks)
    </ResponseField>

    <ResponseField name="children" type="array">
      Direct Notion block array (overrides content)
    </ResponseField>

    <ResponseField name="properties" type="object">
      Database properties (required for database parents)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreatePageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_page — Retrieve a Notion page (optionally with child blocks)">
    ### Parameters

    <ResponseField name="page_id" type="string" required>
      Page ID to retrieve
    </ResponseField>

    <ResponseField name="include_content" type="boolean">
      Include page child blocks (N+1 fetch) (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "created_by": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created By"
        },
        "last_edited_by": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited By"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Archived"
        },
        "content": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Content"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetPageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_page — Update page properties / archive status">
    ### Parameters

    <ResponseField name="page_id" type="string" required>
      Page ID
    </ResponseField>

    <ResponseField name="title" type="string">
      New title
    </ResponseField>

    <ResponseField name="properties" type="object">
      Updated properties
    </ResponseField>

    <ResponseField name="archived" type="boolean">
      Archive (true) / unarchive (false)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Archived"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdatePageOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="query_database — Query a database with filters and sorts">
    ### Parameters

    <ResponseField name="database_id" type="string" required>
      Database ID
    </ResponseField>

    <ResponseField name="filter" type="object">
      Filter conditions
    </ResponseField>

    <ResponseField name="sorts" type="array">
      Sort options
    </ResponseField>

    <ResponseField name="start_cursor" type="string">
      Pagination cursor
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results (max 100) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "has_more": {
          "default": false,
          "title": "Has More",
          "type": "boolean"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        },
        "database_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Database Id"
        },
        "results": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Results",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "QueryDatabaseOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_database — Retrieve database metadata + property schema">
    ### Parameters

    <ResponseField name="database_id" type="string" required>
      Database ID
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Description"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Archived"
        },
        "is_inline": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Is Inline"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetDatabaseOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_database — Create a new database under a parent page">
    ### Parameters

    <ResponseField name="parent_page_id" type="string" required>
      Parent page ID
    </ResponseField>

    <ResponseField name="title" type="string" required>
      Database title
    </ResponseField>

    <ResponseField name="properties" type="object" required>
      Property schema definitions
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateDatabaseOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_database — Update database title / description / schema">
    ### Parameters

    <ResponseField name="database_id" type="string" required>
      Database ID
    </ResponseField>

    <ResponseField name="title" type="string">
      New title
    </ResponseField>

    <ResponseField name="description" type="string">
      New description
    </ResponseField>

    <ResponseField name="properties" type="object">
      Updated property schema
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Description"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateDatabaseOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_database_item — Create a new page inside a database">
    ### Parameters

    <ResponseField name="database_id" type="string" required>
      Database ID
    </ResponseField>

    <ResponseField name="properties" type="object" required>
      Item properties matching database schema
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "properties": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Properties"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateDatabaseItemOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_block — Retrieve a single block by ID">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Block ID
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "has_children": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Has Children"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Archived"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        },
        "content": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Content"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetBlockOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_block_children — Retrieve a block's / page's child blocks">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Parent block or page ID
    </ResponseField>

    <ResponseField name="start_cursor" type="string">
      Pagination cursor
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results (max 100) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "has_more": {
          "default": false,
          "title": "Has More",
          "type": "boolean"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        },
        "block_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block Id"
        },
        "children": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Children",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetBlockChildrenOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="append_blocks — Append blocks to a page or block">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Block / page ID to append into
    </ResponseField>

    <ResponseField name="children" type="array" required>
      Notion block objects to append
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "block_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block Id"
        },
        "appended_blocks": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Appended Blocks",
          "type": "array"
        },
        "total_appended": {
          "default": 0,
          "title": "Total Appended",
          "type": "integer"
        }
      },
      "required": [
        "success"
      ],
      "title": "AppendBlocksOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="update_block — Update an existing block">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Block ID
    </ResponseField>

    <ResponseField name="block" type="object" required>
      Block object with updated content
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "last_edited_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Edited Time"
        },
        "has_children": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Has Children"
        },
        "content": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Content"
        }
      },
      "required": [
        "success"
      ],
      "title": "UpdateBlockOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_block — Archive (delete) a block">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Block ID
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Archived"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteBlockOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_users — List all workspace users (people + bots)">
    ### Parameters

    <ResponseField name="start_cursor" type="string">
      Pagination cursor
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results (max 100) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "has_more": {
          "default": false,
          "title": "Has More",
          "type": "boolean"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        },
        "users": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Users",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListUsersOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_user — Retrieve a specific user by ID">
    ### Parameters

    <ResponseField name="user_id" type="string" required>
      User ID
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "object": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Object"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "avatar_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Avatar Url"
        },
        "person": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Person"
        },
        "bot": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Bot"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetUserOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_bot_user — Retrieve the integration's bot user (GET /users/me)">
    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "object": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Object"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "avatar_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Avatar Url"
        },
        "bot": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Bot"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetBotUserOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_comment — Create a comment on a page or discussion">
    ### Parameters

    <ResponseField name="rich_text" type="array" required>
      Rich text array for the comment body
    </ResponseField>

    <ResponseField name="page_id" type="string">
      Page ID (use this for new comments)
    </ResponseField>

    <ResponseField name="discussion_id" type="string">
      Discussion ID (use this for replies)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "created_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created Time"
        },
        "discussion_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Discussion Id"
        },
        "parent": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Parent"
        },
        "rich_text": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Rich Text"
        },
        "created_by": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created By"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateCommentOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_comments — Retrieve comments on a block / page">
    ### Parameters

    <ResponseField name="block_id" type="string" required>
      Block / page ID
    </ResponseField>

    <ResponseField name="start_cursor" type="string">
      Pagination cursor
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of results (max 100) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "total": {
          "default": 0,
          "title": "Total",
          "type": "integer"
        },
        "has_more": {
          "default": false,
          "title": "Has More",
          "type": "boolean"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        },
        "block_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block Id"
        },
        "comments": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Comments",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetCommentsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* 30s timeout on every request.
* `page_size` clamped to 100 (Notion's max).
* All actions wrap in try/except → `success=False` envelope
  (exa-style).
* Trivial markdown→blocks conversion in `create_page.content`:
  splits on newlines and creates one paragraph block per non-empty
  line. Use `children` for anything fancier.

## Related integrations

<CardGroup cols={3}>
  <Card title="Cal.com" href="/integrations/tools/cal-com" />

  <Card title="Calendly" href="/integrations/tools/calendly" />

  <Card title="Canva" href="/integrations/tools/canva" />
</CardGroup>

## Links

* [Notion](https://www.notion.so)
