notionai-py
notionai-py copied to clipboard
Unofficial Python SDK for NotionAI
NotionAI Python SDK
The NotionAI Python SDK is a wrapper for the NotionAI APIs with Python bindings, simplifying integration of NotionAI solutions into your projects.
Features
- Full APIs from Notion AI
- Support stream response
API
All NotionAI functionalities are supported. Check out the notionai.py file to see all the available APIs.
Basic API Shortcuts
APIs like blog_post, help_me_write, help_me_edit, and summarize are shortcuts for the basic APIs.
Advanced APIs
We also support advanced APIs that allow you to dispatch by parameters:
writing_with_topicWriting for special topic Args: topic (TopicEnum): the special topic prompt (str): prompt for writing Example: ao = NotionAI(token) ai.writing_with_topic(TopicEnum.blog_post, "Please help to introduce Notion")writing_with_promptWriting with special prompt, like summarize, explain_this, improve_writing Args: prompt_type (PromptTypeEnum): special prompt context (str): the context for your writing Example: ai = NotionAI(token) ai.writing_with_prompt(PromptTypeEnum.summarize, "I am a student")translateTranslate the text Args: language (TranslateLanguageEnum): target language context (str): context to translate Example: ai = NotionAI(token) ai.translate(TranslateLanguageEnum.Chinese, "I am a student")change_toneChange the tone of your context Args: context (str): context to change tone (ToneEnum): target tone Returns: str: Response from NotionAI Example: ai = NotionAI(token) ai.change_tone("I am a student", ToneEnum.professional)
Usage
Install
pip install --upgrade notionai-py
Get Notion Token and Workspace ID
To use the NotionAI Python SDK, you need to obtain a Notion token. You can do this by following these steps:
- Open Chrome or Firefox DevTools
- Find Cookies and copy the value for
token_v2 - Find the
spaceIdof your Notion workspace
- get notion token

- get notion workspace id

Note: Now can get Notion space id using api
import os
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")
spaces = NotionAI.get_spaces(TOKEN)
print(spaces)
# the result will looks like
# [{'id': 'xxxxx', 'name': 'xxxxx'}]
Note2: Now supports custom api proxy links
import os
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")
API_URL = "https://xxx.xxx.xxx" # this is your custom proxy links
ai = NotionAI(TOKEN, SPACE_ID, api_url=API_URL)
res = ai.blog_post("write a blog about the meaning of life")
print(res)
Examples
Check out the examples directory for usage examples.
- Basic
import os
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")
def main():
ai = NotionAI(TOKEN, SPACE_ID)
res = ai.blog_post("write a blog about the meaning of life")
print(res)
if __name__ == "__main__":
main()
- Stream API
import os
import sys
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")
def main():
ai = NotionAIStream(TOKEN, SPACE_ID)
res = ai.blog_post("write a blog about the meaning of life")
for item in res:
sys.stdout.write(item)
if __name__ == "__main__":
main()
- WebUI
Check out the webui directory for instructions on how to use the NotionAI Python SDK with a web user interface.