{"id":48542204,"url":"https://github.com/gnh1201/notebooklm-rest-api","last_synced_at":"2026-04-08T05:02:43.561Z","repository":{"id":341389121,"uuid":"1169936047","full_name":"gnh1201/notebooklm-rest-api","owner":"gnh1201","description":"A REST API wrapper for Google NotebookLM powered by notebooklm-py","archived":false,"fork":false,"pushed_at":"2026-03-02T03:49:24.000Z","size":18,"stargazers_count":34,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-21T05:55:13.755Z","etag":null,"topics":["fastapi","gemini","google","notebooklm","notebooklm-py","rest-api-wrapper"],"latest_commit_sha":null,"homepage":"https://catswords.social/@catswords_oss","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnh1201.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-01T13:05:36.000Z","updated_at":"2026-03-16T18:26:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gnh1201/notebooklm-rest-api","commit_stats":null,"previous_names":["gnh1201/notebooklm-rest-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gnh1201/notebooklm-rest-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fnotebooklm-rest-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fnotebooklm-rest-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fnotebooklm-rest-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fnotebooklm-rest-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnh1201","download_url":"https://codeload.github.com/gnh1201/notebooklm-rest-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fnotebooklm-rest-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31540826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","gemini","google","notebooklm","notebooklm-py","rest-api-wrapper"],"created_at":"2026-04-08T05:02:31.621Z","updated_at":"2026-04-08T05:02:43.556Z","avatar_url":"https://github.com/gnh1201.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📘 notebooklm-rest-api\n\n[![Discord chat](https://img.shields.io/discord/359930650330923008?logo=discord)](https://discord.gg/SjHtURQKBc?utm_source=catswords)\n\n\u003e A REST API wrapper for Google NotebookLM powered by `notebooklm-py`\n\n`notebooklm-rest-api` exposes the functionality of\n[`teng-lin/notebooklm-py`](https://github.com/teng-lin/notebooklm-py)\nas a clean, production-ready REST API service.\n\nIt allows you to manage Notebooks, add sources, perform Q\u0026A, generate artifacts, and download outputs via HTTP.\n\n---\n\n## 🚀 Features\n\n### 📂 Notebook Management\n\n* Create notebook\n* List notebooks\n* Get notebook details\n* Rename notebook\n* Delete notebook\n* Get summary\n* Get description\n\n### 📄 Source Management\n\n* Add URL source\n* Add YouTube source\n* Add raw text\n* Upload file\n* Get full text\n* Get source guide\n* Delete source\n\n### 💬 Chat API\n\n* Ask questions based on notebook context\n\n### 🎨 Artifact Generation\n\n* Audio\n* Video\n* Report\n* Quiz\n* Flashcards\n* Slide deck\n* Infographic\n* Data table\n* Mind map\n* Task polling support\n* File download support\n\n### 🔐 Optional API Key Protection\n\n---\n\n## 🧱 Architecture\n\n```\nClient (REST)\n    ↓\nFastAPI\n    ↓\nnotebooklm-py\n    ↓\nNotebookLM (Web API)\n```\n\n---\n\n## 📦 Requirements\n\n* Python 3.10+\n* NotebookLM account\n* First-time login using `notebooklm login`\n\n---\n\n## ⚙️ Installation\n\n### 1️⃣ Create virtual environment\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate      # Windows: .venv\\Scripts\\activate\n```\n\n### 2️⃣ Install dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### 3️⃣ Authenticate (one-time setup)\n\n```bash\nnotebooklm login\n```\n\nBy default, authentication is stored at:\n\n```\n~/.notebooklm/storage_state.json\n```\n\nYou can override it with:\n\n```bash\nexport NOTEBOOKLM_STORAGE_PATH=/path/to/storage_state.json\n```\n\n---\n\n## ▶️ Run Server\n\n```bash\nuvicorn app:app --host 0.0.0.0 --port 8000\n```\n\nSwagger UI:\n\n```\nhttp://localhost:8000/docs\n```\n\n---\n\n## 🔐 Optional API Key Protection\n\nSet API key:\n\n```bash\nexport NOTEBOOKLM_REST_API_KEY=your-secret-key\n```\n\nSend header:\n\n```\nX-API-Key: your-secret-key\n```\n\n---\n\n## 📚 API Examples\n\n### List Notebooks\n\n```bash\nGET /v1/notebooks\n```\n\n---\n\n### Create Notebook\n\n```bash\nPOST /v1/notebooks\n{\n  \"title\": \"My Research\"\n}\n```\n\n---\n\n### Add URL Source\n\n```bash\nPOST /v1/notebooks/{notebook_id}/sources/url\n{\n  \"url\": \"https://example.com\",\n  \"wait\": true\n}\n```\n\n---\n\n### Ask Question\n\n```bash\nPOST /v1/notebooks/{notebook_id}/chat/ask\n{\n  \"question\": \"Summarize the key insights\"\n}\n```\n\n---\n\n### Generate Quiz\n\n```bash\nPOST /v1/notebooks/{notebook_id}/artifacts/generate\n{\n  \"type\": \"quiz\",\n  \"options\": {}\n}\n```\n\n---\n\n### Poll Task\n\n```bash\nGET /v1/notebooks/{notebook_id}/artifacts/tasks/{task_id}\n```\n\n---\n\n### Download Artifact\n\n```bash\nGET /v1/notebooks/{notebook_id}/artifacts/download?type=quiz\u0026output_format=json\n```\n\n---\n\n## 🌍 Environment Variables\n\n| Variable                | Description                |\n| ----------------------- | -------------------------- |\n| NOTEBOOKLM_STORAGE_PATH | Path to storage_state.json |\n| NOTEBOOKLM_AUTH_JSON    | Inject auth JSON directly  |\n| NOTEBOOKLM_HOME         | Base notebooklm directory  |\n| NOTEBOOKLM_REST_API_KEY | REST API protection key    |\n\n---\n\n## 🐳 Docker Example\n\n```dockerfile\nFROM python:3.12-slim\n\nWORKDIR /app\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n\nCOPY . .\n\nEXPOSE 8000\nCMD [\"uvicorn\", \"app:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"]\n```\n\n---\n\n## ⚠️ Disclaimer\n\nThis project is **not an official Google NotebookLM API**.\n\nIt relies on `notebooklm-py`, which automates NotebookLM web interactions.\nBehavior may change if Google updates internal APIs.\n\nPlease review applicable terms before production use.\n\n---\n\n## 📜 License\n\nMIT License\n\n---\n\n## 🤝 Contributing\n\nPull requests and issues are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnh1201%2Fnotebooklm-rest-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnh1201%2Fnotebooklm-rest-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnh1201%2Fnotebooklm-rest-api/lists"}