Skip to content
master
Switch branches/tags
Code

Potion

Potion is a reverse-engineered API for Notion. Write your content in Notion, and use Potion's hosted API endpoints to read your content.

If you have any questions about using Potion in your project, I'd love to help. Send me an email: benborgers@hey.com

Deploy with Vercel

I no longer maintain Potion, since the official Notion API has been released and is more stable than Notion’s internal API, which Potion relies on.

Guides

I've written a couple of blog posts on my website for using this API.

Endpoints

All endpoints are relative to the base URL: https://potion-api.now.sh

Responses are cached for 10 seconds, so it'll take up to 10 seconds for changes made in Notion to show up.

<notion-page-id> refers to the 32 character alphanumeric string in the URL of a Notion doc (but not a query parameter, so not the string after ?v=).

/table

Lists all entries in a full-page Notion table, along with additional details about each page.

The only query parameter is ?id=<notion-page-id>.

/table-description

Generates HTML for the description of a table.

The only query parameter is ?id=<notion-page-id>.

/html

Generates HTML for a given Notion page. You can insert it as the contents of a blog post, for example.

The only query parameter is ?id=<notion-page-id>, which can be obtained from the /table endpoint or just by copy-and-pasting from the URL.

Syntax Highlighting

Potion gives you syntax highlighting of Notion code blocks for free, when using the /html endpoint!

How to use syntax highlighting

You'll notice that the code block HTML that Potion returns is given CSS classes that make it compatible with Prism.js.

  1. Pick a theme you like from this README.
  2. Select the CSS file for that theme from this list and click View Raw.
  3. Include that stylesheet in the head of your HTML page to activate syntax highlighting. For example:
<link rel="stylesheet" href="https://unpkg.com/prism-themes@1.4.0/themes/prism-ghcolors.css" />

Language support

Potion supports syntax highlighting for most popular languages, and you can open an issue if you'd like to see a language supported that isn't currently.

Limitations

Most, but not all, of the common Notion blocks are supported at the moment:

  • Text
  • To-do List
  • Heading 1
  • Heading 2
  • Heading 3
  • Bulleted List
  • Numbered List
  • Toggle List
  • Quote
  • Divider
  • Link to Page
  • Callout
  • Image
  • Embed
  • Web Bookmark
  • Video
  • Audio
  • Code
  • File
  • Math Equation
  • Inline Equation

Development and Deployment

This project is built to be deployed on Vercel.

For local development, install Vercel's CLI and run vercel dev.

About

🧪 Reverse-engineered Notion API.

Resources