Skip to main content
The Client class is the main entry point for interacting with the Notion API. It provides namespaced access to all API endpoints and handles authentication, retries, and error handling.

Constructor

new Client(options?: ClientOptions)
Creates a new Notion API client instance.
options
ClientOptions
Configuration options for the client. See ClientOptions for details.

Example

import { Client } from "@notionhq/client"

const notion = new Client({
  auth: process.env.NOTION_TOKEN,
  logLevel: LogLevel.INFO,
  timeoutMs: 30000,
})

Properties

blocks

Namespace for block-related operations.
client.blocks.retrieve(args: GetBlockParameters): Promise<GetBlockResponse>
client.blocks.update(args: UpdateBlockParameters): Promise<UpdateBlockResponse>
client.blocks.delete(args: DeleteBlockParameters): Promise<DeleteBlockResponse>
client.blocks.children.append(args: AppendBlockChildrenParameters): Promise<AppendBlockChildrenResponse>
client.blocks.children.list(args: ListBlockChildrenParameters): Promise<ListBlockChildrenResponse>

pages

Namespace for page-related operations.
client.pages.create(args: CreatePageParameters): Promise<CreatePageResponse>
client.pages.retrieve(args: GetPageParameters): Promise<GetPageResponse>
client.pages.update(args: UpdatePageParameters): Promise<UpdatePageResponse>
client.pages.move(args: MovePageParameters): Promise<MovePageResponse>
client.pages.retrieveMarkdown(args: GetPageMarkdownParameters): Promise<GetPageMarkdownResponse>
client.pages.updateMarkdown(args: UpdatePageMarkdownParameters): Promise<UpdatePageMarkdownResponse>
client.pages.properties.retrieve(args: GetPagePropertyParameters): Promise<GetPagePropertyResponse>

databases

Namespace for database-related operations.
client.databases.retrieve(args: GetDatabaseParameters): Promise<GetDatabaseResponse>
client.databases.create(args: CreateDatabaseParameters): Promise<CreateDatabaseResponse>
client.databases.update(args: UpdateDatabaseParameters): Promise<UpdateDatabaseResponse>

dataSources

Namespace for data source-related operations.
client.dataSources.retrieve(args: GetDataSourceParameters): Promise<GetDataSourceResponse>
client.dataSources.query(args: QueryDataSourceParameters): Promise<QueryDataSourceResponse>
client.dataSources.create(args: CreateDataSourceParameters): Promise<CreateDataSourceResponse>
client.dataSources.update(args: UpdateDataSourceParameters): Promise<UpdateDataSourceResponse>
client.dataSources.listTemplates(args: ListDataSourceTemplatesParameters): Promise<ListDataSourceTemplatesResponse>

users

Namespace for user-related operations.
client.users.retrieve(args: GetUserParameters): Promise<GetUserResponse>
client.users.list(args: ListUsersParameters): Promise<ListUsersResponse>
client.users.me(args: GetSelfParameters): Promise<GetSelfResponse>

comments

Namespace for comment-related operations.
client.comments.create(args: CreateCommentParameters): Promise<CreateCommentResponse>
client.comments.list(args: ListCommentsParameters): Promise<ListCommentsResponse>
client.comments.retrieve(args: GetCommentParameters): Promise<GetCommentResponse>

fileUploads

Namespace for file upload operations.
client.fileUploads.create(args: CreateFileUploadParameters): Promise<CreateFileUploadResponse>
client.fileUploads.retrieve(args: GetFileUploadParameters): Promise<GetFileUploadResponse>
client.fileUploads.list(args: ListFileUploadsParameters): Promise<ListFileUploadsResponse>
client.fileUploads.send(args: SendFileUploadParameters): Promise<SendFileUploadResponse>
client.fileUploads.complete(args: CompleteFileUploadParameters): Promise<CompleteFileUploadResponse>

oauth

Namespace for OAuth operations.
client.oauth.token(args: OauthTokenParameters & { client_id: string; client_secret: string }): Promise<OauthTokenResponse>
client.oauth.introspect(args: OauthIntrospectParameters & { client_id: string; client_secret: string }): Promise<OauthIntrospectResponse>
client.oauth.revoke(args: OauthRevokeParameters & { client_id: string; client_secret: string }): Promise<OauthRevokeResponse>

Methods

Searches across all pages and databases in the workspace.
client.search(args: SearchParameters): Promise<SearchResponse>
args
SearchParameters
required
Search parameters including query text and filters.

request

Sends a raw HTTP request to the Notion API. This is a low-level method used internally by all endpoint methods.
client.request<ResponseBody>(args: RequestParameters): Promise<ResponseBody>
args
RequestParameters
required
Request configuration including path, method, query parameters, and body.
args.path
string
required
The API endpoint path (without the base URL or version prefix).
args.method
'get' | 'post' | 'patch' | 'delete'
required
The HTTP method to use.
args.query
Record<string, string | number | boolean | string[]>
Query parameters to append to the URL.
args.body
Record<string, unknown>
Request body to send as JSON.
args.formDataParams
Record<string, string | FileParam>
Form data parameters for file uploads.
args.headers
Record<string, string>
Additional headers to include in the request.
args.auth
string | { client_id: string; client_secret: string }
Override the client-level authentication for this request.

Static Properties

defaultNotionVersion

The default Notion API version used by the client.
Client.defaultNotionVersion // "2025-09-03"

Build docs developers (and LLMs) love