Notion

Notion API for creating and managing pages, databases, and blocks. Full CRUD via REST API.

The Notion skill gives OpenClaw direct access to the Notion API for creating and managing pages, databases, blocks, and comments. It's not a CLI wrapper — it's a bundled skill that teaches your AI agent how to make REST API calls to Notion using curl, with the full power of Notion's block-based content model. Notion's API supports rich operations: create pages with properties and content blocks, query databases with filters and sorts, update page properties, append/update/delete blocks, search across a workspace, and manage comments. The skill handles the verbose JSON payloads that Notion's API requires, translating natural language requests into properly structured API calls. For OpenClaw users, this is one of the most practically useful skills. 'Add a row to my project tracker with status In Progress' or 'Create a meeting notes page under the Team folder' become real actions. The bidirectional flow is powerful: OpenClaw reads from Notion databases to understand your projects, and writes back to keep them updated. The integration requires a Notion integration token (NOTION_API_KEY) with appropriate permissions. You create an internal integration in Notion's developer portal, then share specific pages/databases with it. This permission model means the AI only accesses what you explicitly grant — no accidental access to private pages. A common pattern in the OpenClaw community is treating Notion as the 'shared workspace' between human and AI. Tasks, projects, and documents live in Notion where both can read and write. Webhooks via Notion database automations enable two-way communication — Notion pushes changes to OpenClaw, not just the other way around. IMPORTANT: Use Notion-Version header '2022-06-28' for reliable property handling. Newer API versions have had issues with property formats. Best suited for: anyone using Notion for project management or knowledge bases, teams wanting AI-managed task tracking, developers building Notion-powered workflows, OpenClaw users who want their AI to maintain documentation and databases.

Tags: notion, productivity, database, api

Category: Productivity

Use Cases

  • Project tracking: create and update tasks in Notion databases from chat
  • Meeting notes: AI creates structured pages after discussions
  • CRM management: add contacts, update deal stages, log activities
  • Content pipeline: draft articles, track publishing status
  • Knowledge base maintenance: add documentation, update FAQs
  • Automated reporting: cron job that updates dashboards with fresh data
  • Tweet thread drafting: create threads in Notion for review before posting

Tips

  • Always use Notion-Version: 2022-06-28 in your API calls for reliable property handling
  • Share databases with the integration explicitly — the AI can only access what's been shared
  • Use database queries with filters instead of searching — much faster and more precise
  • For long content, split into multiple paragraph blocks (2000 char limit per rich_text element)
  • Create a 'template' page manually, then use the API to duplicate its structure
  • Combine with OpenClaw cron for automated database updates (daily reports, status tracking)
  • Use the database as a two-way communication channel: human updates status → webhook → OpenClaw acts
  • Keep your integration token in NOTION_API_KEY env var for automatic injection

Known Issues & Gotchas

  • Must use Notion-Version: 2022-06-28 header — newer versions have property format issues
  • Integration must be explicitly shared with each page/database it needs to access
  • Notion API has rate limits: 3 requests/second per integration — avoid tight loops
  • Block content has a 2000-character limit per rich_text array element
  • Database queries return max 100 results per page — pagination required for large datasets
  • Page content must be added as blocks after creating the page — can't include full body in create call
  • Nested blocks (toggles, columns) require separate API calls to add children
  • Property types are strict — sending wrong format silently fails or returns cryptic errors

Alternatives

  • Notion MCP Server (Composio)
  • Apple Notes (memo)
  • Obsidian
  • Airtable API
  • Linear API

Community Feedback

6 days with OpenClaw & Notion — actually worth it? Treat it like hiring, not installing. I gave my AI a name (Ezra), a job title (chief of staff), and a Notion account. Sounds silly. Turned out to be the single most useful framing decision I made.

— Reddit r/Notion

In OpenClaw, a skill is not a tool — it's instructions the agent reads. The bundled Notion skill teaches the agent how to use curl with the Notion API to create pages, query databases, and manage blocks.

— AnswerOverflow (OpenClaw Discord)

Building OpenClaw integrations with Notion and Slack — a custom skill so the agent can create/update deals, move pipeline stages, log activities, and schedule follow-ups.

— LinkedIn

Through Notion API integration, OpenClaw enables AI agents to directly operate your Notion workspace — creating pages, updating databases, managing blocks — all through natural language.

— Meta Intelligence

Configuration Examples

Set up Notion integration

# 1. Go to notion.so/my-integrations
# 2. Create a new internal integration
# 3. Copy the token
export NOTION_API_KEY="ntn_your_token_here"

# 4. Share target pages/databases with the integration
# (Click '...' on a page → 'Add connections' → select your integration)

Query a database

curl -s -X POST 'https://api.notion.com/v1/databases/YOUR_DB_ID/query' \
  -H 'Authorization: Bearer '"$NOTION_API_KEY" \
  -H 'Notion-Version: 2022-06-28' \
  -H 'Content-Type: application/json' \
  -d '{"filter": {"property": "Status", "select": {"equals": "In Progress"}}}' | jq

Create a page with content

curl -s -X POST 'https://api.notion.com/v1/pages' \
  -H 'Authorization: Bearer '"$NOTION_API_KEY" \
  -H 'Notion-Version: 2022-06-28' \
  -H 'Content-Type: application/json' \
  -d '{
    "parent": {"database_id": "YOUR_DB_ID"},
    "properties": {
      "Name": {"title": [{"text": {"content": "New Task"}}]},
      "Status": {"select": {"name": "To Do"}}
    }
  }' | jq '.id'

Installation

# Requires NOTION_API_KEY env var

Homepage: https://developers.notion.com

Source: bundled