This is a catch-all provider — any valid URL under
https://api.notion.com/v1 is supported. Notion REST API. Construct URLs as https://api.notion.com/v1/{path}. Lava serializes your structured body_json and injects the required Notion-Version header for you — never hand-write or escape JSON, and nested rich_text/annotations are fine. Create a page in ONE call: POST /v1/pages with parent ({ “page_id”: id } for a subpage, or { “type”: “data_source_id”, “data_source_id”: id } for a database row), properties (the title), and an optional inline children[] array (up to 100 blocks) — a separate append step is NOT required. For more than 100 blocks or to add content later, append with PATCH /v1/blocks/{block_id}/children (a page_id works as the block_id; 100 blocks max per call). A rich_text item is { “type”: “text”, “text”: { “content”: ”…” } }; annotations is optional (omit it for default styling) — real 400s come from text content over 2000 chars, an invalid color enum, or a wrong block shape, not from “JSON complexity.” This API version (2025-09-03+) uses data sources: query a database via POST /v1/data_sources/{data_source_id}/query (the old /v1/databases/{id}/query returns 400), and find ids with POST /v1/search using filter {“property”:“object”,“value”:“data_source”} or {“property”:“object”,“value”:“page”}. See https://developers.notion.com/reference. The endpoints below are curated examples.Endpoints
Search the pages and databases shared with the integration by title. Pass {“query”:“term”} for text search, or narrow by object type with filter {“property”:“object”,“value”:“page”} or {“property”:“object”,“value”:“data_source”} (“database” is rejected on this API version). Use the data_source filter to find a data_source_id for querying a database.
POSThttps://api.notion.com/v1/search — Free
- SDK
- cURL
Query a database’s rows. On this API version (2025-09-03+) a database is queried through its data_source_id, not the database id — POST /v1/databases/{id}/query returns 400. Get a data_source_id from POST /v1/search with filter {“property”:“object”,“value”:“data_source”}, or from a database object’s data_sources[] array. Optional body: filter, sorts, page_size, start_cursor.
POSThttps://api.notion.com/v1/data_sources/{data_source_id}/query — Free
- SDK
- cURL
Retrieve a page
GEThttps://api.notion.com/v1/pages/{page_id} — Free
- SDK
- cURL
Create a page in ONE call — pass parent, properties (the title), and an optional inline children[] array of content blocks (up to 100); no separate append step is needed. For a subpage use parent { “page_id”: id } with a title property; for a database row use parent { “type”: “data_source_id”, “data_source_id”: id } with properties matching that data source’s schema. Add annotations to a rich_text run for styling (optional); content over 2000 chars per text run is the common cause of a 400.
POSThttps://api.notion.com/v1/pages — Free
- SDK
- cURL
Append content blocks (paragraphs, headings, lists, dividers, etc.) to a page or block — up to 100 per call. The {block_id} can be a page_id, since pages are blocks. You usually do NOT need this to create a page (POST /v1/pages accepts an inline children[] array); use it for more than 100 blocks or to add content to an existing page.
PATCHhttps://api.notion.com/v1/blocks/{block_id}/children — Free
- SDK
- cURL
Update page properties
PATCHhttps://api.notion.com/v1/pages/{page_id} — Free
- SDK
- cURL
Delete a block
DELETEhttps://api.notion.com/v1/blocks/{block_id} — Free
- SDK
- cURL
Next Steps
All Providers
Browse all supported AI providers
Forward Proxy
Learn how to construct proxy URLs and authenticate requests