Notion API 2026 01 15

v1.0.1

Use the Notion API (2026-01-15) to create, move, update, and manage pages, databases, blocks, and apply templates with support for locking and data source qu...

0· 1.4k·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for dongkukim/notion-2026-01-15.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Notion API 2026 01 15" (dongkukim/notion-2026-01-15) from ClawHub.
Skill page: https://clawhub.ai/dongkukim/notion-2026-01-15
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install dongkukim/notion-2026-01-15

ClawHub CLI

Package manager switcher

npx clawhub@latest install notion-2026-01-15
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
high confidence
Purpose & Capability
The SKILL.md is a straightforward Notion API cookbook (create/move/pages/templates/blocks). The operations shown align with a Notion integration's purpose. However, the registry metadata declares no required credentials or config paths even though the instructions explicitly require storing and reading a Notion API key at ~/.config/notion/api_key (or using a NOTION_KEY env var). That omission is inconsistent.
!
Instruction Scope
Runtime instructions tell the agent/user to create ~/.config/notion/api_key and to read it (NOTION_KEY=$(cat ~/.config/notion/api_key)) and then run curl calls to api.notion.com. Reading/writing that local file and using the token is within the Notion helper's purpose, but the skill manifest did not declare this file access. The instructions are otherwise concrete and limited to Notion endpoints (no broad file-system or network exfiltration guidance).
Install Mechanism
This is instruction-only with no install spec or code files, so there is no installer risk and nothing is written to disk by the platform beyond what the user explicitly does when following the guide.
!
Credentials
The skill legitimately needs a Notion API token, but the manifest lists no required env vars or primary credential. The SKILL.md tells users to store a secret token in plaintext at ~/.config/notion/api_key and then read it — that is expected for a Notion helper but should be declared in requires.env / required config paths. Storing tokens in plaintext is also a security consideration; a secrets manager or the platform's secret storage would be preferable.
Persistence & Privilege
The skill does not request always:true and has no install scripts; it would only use the token when invoked. Keep in mind that if the agent is allowed to invoke skills autonomously (default), any supplied token could be used by the agent without additional confirmation — this is standard behavior but increases blast radius if the token is granted to an untrusted skill.
What to consider before installing
This skill appears to be a normal Notion API helper, but its manifest is inconsistent: the README instructs you to store and read a Notion API token at ~/.config/notion/api_key (or as NOTION_KEY) even though the skill metadata lists no required credentials or config paths. Before installing or using it: (1) ask the publisher to correct the manifest to declare the required credential or config path; (2) prefer storing the token in a secure secrets manager or the platform's secret storage rather than a plaintext file; (3) only supply a Notion integration token you trust (create a dedicated integration with minimal scopes rather than reuse a powerful account token); (4) verify the Notion-Version header and endpoint dates if you rely on newly described features; and (5) avoid granting an untrusted skill persistent or broad access — if the platform allows per-skill secrets, use that instead of putting tokens in your home directory.

Like a lobster shell, security has layers — review code before you run it.

latestvk97e1x723m8h26wb82a7zz20e980sr4f
1.4kdownloads
0stars
2versions
Updated 1mo ago
v1.0.1
MIT-0

Here is the complete SKILL.md file updated for the January 15, 2026 API state.

---
name: notion api 202601 15
description: Notion API updated to 2026 01 15 changes for creating, moving, and managing pages, data sources, and blocks.
homepage: https://developers.notion.com
metadata: {"clawdbot":{"emoji":"📝"}}
---

# notion

Use the Notion API to create/read/update/move pages, data sources (databases), and blocks.

## Setup

1. Create an integration at https://notion.so/my-integrations
2. Copy the API key (starts with `ntn_` or `secret_`)
3. Store it:
```bash
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key

  1. Share target pages/databases with your integration (click "..." → "Connect to" → your integration name)

API Basics

All requests need:

NOTION_KEY=$(cat ~/.config/notion/api_key)
curl -X GET "[https://api.notion.com/v1/](https://api.notion.com/v1/)..." \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json"

Note: The Notion-Version header is required. Use 2025-09-03. The features released in Jan 2026 (Move Page, Templates) are additive and use this version header.

Common Operations

Search for pages and data sources:

curl -X POST "[https://api.notion.com/v1/search](https://api.notion.com/v1/search)" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{"query": "page title"}'

Get page:

curl "[https://api.notion.com/v1/pages/](https://api.notion.com/v1/pages/){page_id}" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03"

Move a page (Change Parent):

curl -X POST "[https://api.notion.com/v1/pages/](https://api.notion.com/v1/pages/){page_id}/move" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"type": "page_id", "page_id": "new_parent_page_id"}
  }'

Note: To move to a database, use {"type": "data_source_id", "data_source_id": "..."}.

Create page (Standard):

curl -X POST "[https://api.notion.com/v1/pages](https://api.notion.com/v1/pages)" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "xxx"},
    "properties": {
      "Name": {"title": [{"text": {"content": "New Item"}}]},
      "Status": {"select": {"name": "Todo"}}
    }
  }'

Create page from Template:

curl -X POST "[https://api.notion.com/v1/pages](https://api.notion.com/v1/pages)" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "xxx"},
    "template": {"type": "template_id", "template_id": "yyy"}
  }'

List Data Source Templates:

curl -X GET "[https://api.notion.com/v1/data_sources/](https://api.notion.com/v1/data_sources/){data_source_id}/templates" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03"

Update page properties:

curl -X PATCH "[https://api.notion.com/v1/pages/](https://api.notion.com/v1/pages/){page_id}" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "properties": {"Status": {"select": {"name": "Done"}}},
    "is_locked": true
  }'

Apply Template to existing page (erasing content):

curl -X PATCH "[https://api.notion.com/v1/pages/](https://api.notion.com/v1/pages/){page_id}" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "template": {"type": "template_id", "template_id": "yyy"},
    "erase_content": true
  }'

Query a data source (database):

curl -X POST "[https://api.notion.com/v1/data_sources/](https://api.notion.com/v1/data_sources/){data_source_id}/query" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": {"property": "Status", "select": {"equals": "Active"}},
    "sorts": [{"property": "Date", "direction": "descending"}]
  }'

Add blocks to page:

curl -X PATCH "[https://api.notion.com/v1/blocks/](https://api.notion.com/v1/blocks/){page_id}/children" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "children": [
      {"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
    ]
  }'

Property Types

Common property formats for database items:

  • Title: {"title": [{"text": {"content": "..."}}]}
  • Rich text: {"rich_text": [{"text": {"content": "..."}}]}
  • Select: {"select": {"name": "Option"}}
  • Multi-select: {"multi_select": [{"name": "A"}, {"name": "B"}]}
  • Date: {"date": {"start": "2024-01-15", "end": "2024-01-16"}}
  • Checkbox: {"checkbox": true}
  • Number: {"number": 42}
  • URL: {"url": "https://..."}
  • Email: {"email": "a@b.com"}
  • Relation: {"relation": [{"id": "page_id"}]}

Recent Changes (Jan 2026)

  • Move Page API: Use /v1/pages/{id}/move to reparent pages.
  • Templates: New endpoints to list templates and parameters to apply them during page creation/update.
  • Locking: is_locked boolean now supported in Update Page.
  • Tokens: New tokens use ntn_ prefix (formerly secret_).
  • Data Sources: Continue using data_source_id for queries (introduced in 2025-09-03).

Notes

  • Page/database IDs are UUIDs (with or without dashes)
  • The API cannot set database view filters — that's UI-only
  • Rate limit: ~3 requests/second average
  • Use is_inline: true when creating data sources to embed them in pages

Comments

Loading comments...