A REST API wrapper for Google NotebookLM powered by
notebooklm-py
notebooklm-rest-api exposes the functionality of
teng-lin/notebooklm-py
as a clean, production-ready REST API service.
It allows you to manage Notebooks, add sources, perform Q&A, generate artifacts, and download outputs via HTTP.
- Create notebook
- List notebooks
- Get notebook details
- Rename notebook
- Delete notebook
- Get summary
- Get description
- Add URL source
- Add YouTube source
- Add raw text
- Upload file
- Get full text
- Get source guide
- Delete source
- Ask questions based on notebook context
- Audio
- Video
- Report
- Quiz
- Flashcards
- Slide deck
- Infographic
- Data table
- Mind map
- Task polling support
- File download support
Client (REST)
β
FastAPI
β
notebooklm-py
β
NotebookLM (Web API)
- Python 3.10+
- NotebookLM account
- First-time login using
notebooklm login
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activatepip install -r requirements.txtnotebooklm loginBy default, authentication is stored at:
~/.notebooklm/storage_state.json
You can override it with:
export NOTEBOOKLM_STORAGE_PATH=/path/to/storage_state.jsonuvicorn app:app --host 0.0.0.0 --port 8000Swagger UI:
http://localhost:8000/docs
Set API key:
export NOTEBOOKLM_REST_API_KEY=your-secret-keySend header:
X-API-Key: your-secret-key
GET /v1/notebooksPOST /v1/notebooks
{
"title": "My Research"
}POST /v1/notebooks/{notebook_id}/sources/url
{
"url": "https://example.com",
"wait": true
}POST /v1/notebooks/{notebook_id}/chat/ask
{
"question": "Summarize the key insights"
}POST /v1/notebooks/{notebook_id}/artifacts/generate
{
"type": "quiz",
"options": {}
}GET /v1/notebooks/{notebook_id}/artifacts/tasks/{task_id}GET /v1/notebooks/{notebook_id}/artifacts/download?type=quiz&output_format=json| Variable | Description |
|---|---|
| NOTEBOOKLM_STORAGE_PATH | Path to storage_state.json |
| NOTEBOOKLM_AUTH_JSON | Inject auth JSON directly |
| NOTEBOOKLM_HOME | Base notebooklm directory |
| NOTEBOOKLM_REST_API_KEY | REST API protection key |
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]This project is not an official Google NotebookLM API.
It relies on notebooklm-py, which automates NotebookLM web interactions.
Behavior may change if Google updates internal APIs.
Please review applicable terms before production use.
MIT License
Pull requests and issues are welcome.