From notion
Notion API for PKM: create/query/update pages, databases, blocks, and search. Covers Projects, Tasks, Notes, Research, and Journal databases. API version 2025-09-03 with data source support. Requires NOTION_API_KEY.
npx claudepluginhub bdmorin/the-no-shop --plugin notionThis skill is limited to using the following tools:
Base URL: `https://api.notion.com/v1`
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
Base URL: https://api.notion.com/v1
Every request requires these headers:
Authorization: Bearer $NOTION_API_KEY
Notion-Version: 2025-09-03
Content-Type: application/json
Load the token: NOTION_API_KEY=$(grep NOTION_API_KEY /path/to/plugins/notion/.env | cut -d= -f2-)
If the .env path is unknown, check common locations:
plugins/notion/.env (relative to project)~/.claude/plugins/notion/.envDatabases contain data sources with independent schemas. All query/create operations use data_source_id, not database_id.
See references/brian-pkm-schema.md for Brian's real IDs.
curl -s -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"type": "data_source_id", "data_source_id": "TASKS_DS_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "Task title here"}}]},
"Status": {"select": {"name": "Todo"}},
"Priority": {"select": {"name": "P1"}},
"Project": {"relation": [{"id": "PROJECT_PAGE_ID"}]}
}
}'
curl -s -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"type": "data_source_id", "data_source_id": "NOTES_DS_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "Note title"}}]},
"Type": {"select": {"name": "Note"}}
}
}'
Note types: Note, Meeting, Idea, Decision, Bookmark, Contact
curl -s -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"type": "data_source_id", "data_source_id": "RESEARCH_DS_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "Research title"}}]},
"Source": {"url": "https://example.com"},
"Summary": {"rich_text": [{"text": {"content": "Summary text"}}]},
"Agent": {"select": {"name": "Claude"}},
"Date": {"date": {"start": "2026-03-05"}}
}
}'
curl -s -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"type": "data_source_id", "data_source_id": "JOURNAL_DS_ID"},
"properties": {
"Date": {"title": [{"text": {"content": "2026-03-05"}}]},
"Mood": {"select": {"name": "Good"}},
"Energy": {"select": {"name": "High"}},
"Body": {"rich_text": [{"text": {"content": "Journal body text"}}]},
"Tags": {"multi_select": [{"name": "productive"}, {"name": "shipped"}]}
}
}'
curl -s -X POST https://api.notion.com/v1/data_sources/TASKS_DS_ID/query \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"filter": {"property": "Status", "select": {"equals": "In Progress"}},
"sorts": [{"property": "Priority", "direction": "ascending"}]
}'
curl -s -X POST https://api.notion.com/v1/data_sources/TASKS_DS_ID/query \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"filter": {"property": "Project", "relation": {"contains": "PROJECT_PAGE_ID"}}
}'
curl -s -X POST https://api.notion.com/v1/search \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{"query": "search terms", "page_size": 10}'
curl -s -X POST https://api.notion.com/v1/data_sources/PROJECTS_DS_ID/query \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"filter": {"property": "Status", "select": {"does_not_equal": "Archived"}},
"sorts": [{"property": "Name", "direction": "ascending"}]
}'
curl -s -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"type": "data_source_id", "data_source_id": "PROJECTS_DS_ID"},
"properties": {
"Name": {"title": [{"text": {"content": "Project name"}}]},
"Status": {"select": {"name": "Active"}},
"Area": {"select": {"name": "Side Project"}},
"Tags": {"multi_select": [{"name": "tag1"}]},
"Start Date": {"date": {"start": "2026-03-05"}},
"URL": {"url": "https://github.com/org/repo"}
}
}'
curl -s -X PATCH https://api.notion.com/v1/pages/PAGE_ID \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"Status": {"select": {"name": "Done"}}
}
}'
curl -s -X PATCH https://api.notion.com/v1/blocks/PAGE_ID/children \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"children": [
{"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Body text"}}]}},
{"object": "block", "type": "heading_2", "heading_2": {"rich_text": [{"text": {"content": "Section"}}]}}
]
}'
{"type": "data_source_id", "data_source_id": "..."} for new pages{"id": "page_id"} objects{"name": "tag"} objects (Notion auto-creates new options)[{"text": {"content": "..."}}]{"title": [...]} not {"rich_text": [...]}{"start": "2026-03-05"} or {"start": "2026-03-05", "end": "2026-03-10"}has_more: true and next_cursor for large result sets