Hello and welcome! To make use of this API collection collection as it's written, please duplicate [this database template](https://www.notion.so/8e2c2b769e1d47d287b9ed3035d607ae?v=dc1b92875fb94f10834ba8d36549bd2a). [Create an integration](https://www.notion.so/my-integrations) to retrieve an API token, add your database and page ID's as variables in the collection, and start making your requests! For our full documentation, including sample integrations and guides, visit [developers.notion.com](developers.notion.com) Need more help? Join our [developer community on Slack](https://join.slack.com/t/notiondevs/shared_invite/zt-lkrnk74h-YmPRroySRFGiqgjI193AqA/)
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("notion/retrieveABlock");One install, one key - the same client calls every API on the marketplace.
Retrieve a block
Update a block
Delete a block
Retrieve block children
Append block children
Retrieve comments
/**
* Notion - generated by OmniStream from Notion's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/notion";
export class NotionError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `Notion error ${status}`);
this.name = "NotionError";
this.status = status;
this.code = code;
}
}
export interface NotionOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class Notion {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: NotionOptions = {}) {
if (!token) throw new Error("Notion: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new NotionError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Retrieve a block */
retrieveABlock(params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("GET", "/v1/blocks/{id}", { params });
}
/** Update a block */
updateABlock(body: unknown, params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("PATCH", "/v1/blocks/{id}", { body, params });
}
/** Delete a block */
deleteABlock(params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("DELETE", "/v1/blocks/{id}", { params });
}
/** Retrieve block children */
retrieveBlockChildren(params: { "id": string; "page_size"?: string; "Notion-Version"?: string }): Promise<any> {
return this._request("GET", "/v1/blocks/{id}/children", { params });
}
/** Append block children */
appendBlockChildren(body: unknown, params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("PATCH", "/v1/blocks/{id}/children", { body, params });
}
/** Retrieve comments */
retrieveComments(params: { "block_id"?: string; "page_size"?: string; "Notion-Version"?: string }): Promise<any> {
return this._request("GET", "/v1/comments", { params });
}
/** Retrieve a database */
retrieveADatabase(params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("GET", "/v1/databases/{id}", { params });
}
/** Update a database */
updateADatabase(body: unknown, params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("PATCH", "/v1/databases/{id}", { body, params });
}
/** Query a database */
queryADatabase(body: unknown, params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("POST", "/v1/databases/{id}/query", { body, params });
}
/** Retrieve a Page */
retrieveAPage(params: { "id": string; "Notion-Version"?: string; ""?: string }): Promise<any> {
return this._request("GET", "/v1/pages/{id}", { params });
}
/** Update Page properties */
updatePageProperties(body: unknown, params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("PATCH", "/v1/pages/{id}", { body, params });
}
/** Retrieve a Page Property Item */
retrieveAPagePropertyItem(params: { "page_id": string; "property_id": string }): Promise<any> {
return this._request("GET", "/v1/pages/{page_id}/properties/{property_id}", { params });
}
/** Retrieve a user */
retrieveAUser(params: { "id": string; "Notion-Version"?: string }): Promise<any> {
return this._request("GET", "/v1/users/{id}", { params });
}
}
export default Notion;
No reviews yet. Be the first to rate this API.
Retrieve a database
Update a database
Query a database
Retrieve a Page
Update Page properties
Retrieve a Page Property Item
Retrieve a user