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.
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.
- How to use Notion as your blog's CMS
- API to read a Notion table
- How to turn a Notion doc into a website
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.
- Pick a theme you like from this README.
- Select the CSS file for that theme from this list and click View Raw.
- Include that stylesheet in the
head
of your HTML page to activate syntax highlighting. For example:
<link rel="stylesheet" href="https://unpkg.com/[email protected]/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
.