
Notion
- 8 installs
- 33 repo stars
- Updated April 26, 2026
- bighardperson/computer-science-skills-collection
This is a copy of notion by sundial-org - installs and ranking accrue to the original listing.
notion is a Claude skill that uses the Notion API to create and manage pages, databases (data sources), and blocks.
About
notion is a skill that uses the Notion API to create and manage pages, databases (data sources), and blocks. It documents setup with an integration key, common curl operations (search, get page, query a data source, create/update pages, add blocks), property type formats, and the changes introduced in the 2025-09-03 API version. A developer uses it to programmatically read and write Notion content.
- Uses the Notion API to create, read, and update pages, databases (data sources), and blocks
- Documents the 2025-09-03 API version where databases are 'data sources' with two IDs
- curl-based setup with an integration key and shared pages
Notion by the numbers
- 8 all-time installs (skills.sh)
- Data as of Jul 30, 2026 (Skillselion catalog sync)
notion capabilities & compatibility
Requires a Notion integration API key; the Notion API itself is free on standard plans.
- Capabilities
- notion api · page management · database query
- Works with
- notion
- Use cases
- api development · documentation
- Pricing
- Bring your own API key
What notion says it does
Notion API for creating and managing pages, databases, and blocks.
In this version, databases are called "data sources" in the API.
npx skills add https://github.com/bighardperson/computer-science-skills-collection --skill notionAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 8 |
|---|---|
| repo stars | ★ 33 |
| Last updated | April 26, 2026 |
| Repository | bighardperson/computer-science-skills-collection ↗ |
What it does
Create, read, and update Notion pages, databases (data sources), and blocks via the Notion API.
Who is it for?
Programmatically reading and writing Notion pages, databases, and blocks via the API.
Skip if: Setting Notion database view filters, which the API cannot do (UI-only).
When should I use this skill?
You need to create, query, or update Notion pages, databases/data sources, or block content via the API.
What you get
Notion pages, data sources, and blocks created, queried, or updated via authenticated API calls.
- Created/updated Notion pages
- Created data sources
- Queried Notion records
By the numbers
- rate limit ~3 requests/second
- API version 2025-09-03
Files
notion
Use the Notion API to create/read/update 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:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key4. 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/..." \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json"Note: TheNotion-Versionheader is required. This skill uses2025-09-03(latest). In this version, databases are called "data sources" in the API.
Common Operations
Search for pages and data sources:
curl -X POST "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/{page_id}" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03"Get page content (blocks):
curl "https://api.notion.com/v1/blocks/{page_id}/children" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03"Create page in a data source:
curl -X POST "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"}}
}
}'Query a data source (database):
curl -X POST "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"}]
}'Create a data source (database):
curl -X POST "https://api.notion.com/v1/data_sources" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"page_id": "xxx"},
"title": [{"text": {"content": "My Database"}}],
"properties": {
"Name": {"title": {}},
"Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}},
"Date": {"date": {}}
}
}'Update page properties:
curl -X PATCH "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"}}}}'Add blocks to page:
curl -X PATCH "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"}]}
Key Differences in 2025-09-03
- Databases → Data Sources: Use
/data_sources/endpoints for queries and retrieval - Two IDs: Each database now has both a
database_idand adata_source_id - Use
database_idwhen creating pages (parent: {"database_id": "..."}) - Use
data_source_idwhen querying (POST /v1/data_sources/{id}/query) - Search results: Databases return as
"object": "data_source"with theirdata_source_id - Parent in responses: Pages show
parent.data_source_idalongsideparent.database_id - Finding the data_source_id: Search for the database, or call
GET /v1/data_sources/{data_source_id}
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: truewhen creating data sources to embed them in pages
{
"ownerId": "kn70pywhg0fyz996kpa8xj89s57yhv26",
"slug": "notion",
"version": "1.0.0",
"publishedAt": 1767545360889
}{
"slug": "notion",
"name": "Notion",
"version": "1.0.0",
"installedAt": 1776152117877,
"source": "skillhub"
}Related skills
FAQ
What changed in the Notion 2025-09-03 API?
Databases are now 'data sources' with both a database_id and a data_source_id; use database_id to create pages and data_source_id to query.
What is the rate limit?
About 3 requests per second average.