Documents & Productivity — entry 017 of 31
Notion
Notion's API lets integrations read and write pages, databases, blocks, and comments across a connected workspace, authenticated with an internal integration token or a public OAuth2 app for cross-workspace distribution. Every plan, including Notion's free tier, can create and use an internal integration at roughly 3 requests/second of throughput; higher volume means spreading calls across multiple integrations, not upgrading a plan. The live API host sends no CORS headers, so calls need to run server-side.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
Users1
GET/v1/users/{id}Retrieve a user
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/x-www-form-urlencoded
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a user | — |
Databases3
GET/v1/databases/{id}Retrieve a database
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a Database | — |
PATCH/v1/databases/{id}Update a database
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Update a Database | — |
POST/v1/databases/{id}/queryQuery a database
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Query a Database (Single Filter) | — |
Pages3
GET/v1/pages/{id}Retrieve a Page
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
| header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a Page | — |
PATCH/v1/pages/{id}Update Page properties
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Update Page properties | — |
GET/v1/pages/{page_id}/properties/{property_id}Retrieve a Page Property Item
| Name | In | Required | Type |
|---|---|---|---|
page_id | path | yes | string |
property_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a Page Property Item | — |
Blocks5
GET/v1/blocks/{id}Retrieve a block
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a block | — |
PATCH/v1/blocks/{id}Update a block
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Update a block | — |
DELETE/v1/blocks/{id}Delete a block
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Delete a block | — |
GET/v1/blocks/{id}/childrenRetrieve block children
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page_size | query | no | string |
Notion-Version | header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve block children | — |
PATCH/v1/blocks/{id}/childrenAppend block children
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
Notion-Version | header | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Append block children | — |
Comments1
GET/v1/commentsRetrieve comments
| Name | In | Required | Type |
|---|---|---|---|
block_id | query | no | string |
page_size | query | no | string |
Notion-Version | header | no | string |
application/x-www-form-urlencoded
| Status | Description | Schema |
|---|---|---|
200 | 200 Success - Retrieve a comment | — |
Try it
Developer reference
https://api.notion.comAverage of 3 requests/second per integration (bursts allowed); a separate per-workspace limit scaled to plan also applies. Exceeding either returns 429 rate_limited.
- POST/v1/databases/{id}/query
- GET/v1/pages/{id}
- PATCH/v1/pages/{id}
- GET/v1/blocks/{id}/children
- GET/v1/comments