The notebooklm-py library returns typed dataclasses from every API call. All types are importable directly from theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/teng-lin/notebooklm-py/llms.txt
Use this file to discover all available pages before exploring further.
notebooklm package. Two special str enums—SourceType and ArtifactType—are returned by .kind properties and support both enum and string comparisons, making them easy to use in conditionals and f-strings without casting.
Notebook
Represents a single NotebookLM notebook returned byclient.notebooks.list(), create(), get(), and rename().
Unique notebook identifier. Use this ID with all other API calls.
Notebook title as shown in the NotebookLM UI.
Timestamp when the notebook was created. May be
None for older notebooks.Number of sources currently in the notebook. Defaults to
0.True if the authenticated user owns this notebook. False for notebooks shared with the user.Source
Represents a single source inside a notebook. Returned byclient.sources.list(), get(), add_url(), add_text(), and related methods.
Unique source identifier within the notebook.
Source title. May be the URL if the source has not finished processing yet.
Original URL for web page and YouTube sources.
None for uploaded files and pasted text.Timestamp when the source was added.
Source type as a
SourceType str enum. Supports both enum and string comparisons.SourceType and ArtifactType are str enums, so source.kind == "pdf" and source.kind == SourceType.PDF are both True. You can also use them in f-strings: f"Type: {source.kind}" prints "Type: pdf".Artifact
Represents an AI-generated artifact such as an audio overview, video, report, quiz, or flashcard deck. Returned byclient.artifacts.list(), get(), and generation methods.
Unique artifact identifier. This is the same value as
task_id from GenerationStatus.Artifact title as assigned by NotebookLM.
Numeric processing status. Use the boolean properties below instead of comparing integers directly.
| Value | Meaning |
|---|---|
1 | Processing (being generated) |
2 | Pending (queued) |
3 | Completed |
4 | Failed |
Timestamp when the artifact was created.
Download URL when the artifact is completed.
None while generation is in progress.Artifact type as an
ArtifactType str enum.True when status == 3 (completed). Use this to gate download calls.True when the artifact is a quiz. Quizzes and flashcards share the same internal type code; use this property rather than comparing kind.True when the artifact is a flashcard deck.AskResult
Returned byclient.chat.ask(). Contains the answer text, conversation context for follow-up questions, and a list of cited source passages.
The AI-generated answer. Inline citations appear as
[1], [2], etc., corresponding to entries in references.UUID identifying the current conversation. Pass this to subsequent
ask() calls to continue the conversation.Turn number within the conversation, starting at
1.True when this question continued an existing conversation.Source passages cited in the answer. See ChatReference below.
First 1,000 characters of the raw API response. Useful for debugging unexpected answers.
ChatReference
A single source citation within anAskResult. References link inline citation markers such as [1] back to specific passages in source documents.
UUID of the source being cited. Use this with
client.sources.get_fulltext() to retrieve source content.The citation number displayed in the answer text (e.g.,
1 for [1]).The text passage from the source. Often a snippet or section header rather than the full quoted passage.
Start position in NotebookLM’s internal chunked index. This does not map directly to positions in the fulltext returned by
get_fulltext(). Use SourceFulltext.find_citation_context() instead.End position in NotebookLM’s internal chunked index.
Internal chunk identifier. Useful for debugging; not intended for application logic.
GenerationStatus
Returned immediately by all artifact generation methods (generate_audio(), generate_video(), etc.) and by poll_status(). Use task_id to poll or wait for completion.
The generation task identifier. This becomes the artifact’s
id once generation completes.Current status string:
"pending", "in_progress", "completed", "failed", or "not_found".True when status == "completed".Download URL when status is
"completed".Error message when status is
"failed".Structured error code, e.g.
"USER_DISPLAYABLE_ERROR" for rate-limit rejections.Note
Represents a user-created note in a notebook. Returned byclient.notes.list(), create(), and get(). Notes are distinct from artifacts—they are user-written content, not AI-generated.
Unique note identifier.
Note title.
Note text content.
Timestamp when the note was created.
NotebookDescription
Returned byclient.notebooks.get_description(). Contains an AI-generated summary and a list of suggested follow-up questions.
AI-generated summary of the notebook’s content.
List of suggested questions to ask about the notebook.
NotebookMetadata
Returned byclient.notebooks.get_metadata(). Composes a Notebook with a simplified source list, useful for exports and automation pipelines.
The full
Notebook object. Also accessible via shortcut properties id, title, created_at, and is_owner.Simplified source list for metadata export. Each entry exposes
kind, title, and url.ShareStatus
Returned byclient.sharing.get_status(), set_public(), add_user(), update_user(), and remove_user().
The notebook this sharing configuration belongs to.
True when the notebook is accessible to anyone with the share link.ShareAccess.RESTRICTED or ShareAccess.ANYONE_WITH_LINK.ShareViewLevel.FULL_NOTEBOOK (chat, sources, and notes) or ShareViewLevel.CHAT_ONLY.Users who have been explicitly granted access. See SharedUser below.
Public share URL when
is_public is True. None otherwise.SharedUser
A user who has been explicitly granted access to a notebook. Appears inShareStatus.shared_users.
The user’s Google account email address.
SharePermission.OWNER, SharePermission.EDITOR, or SharePermission.VIEWER.The user’s display name, if available.
URL to the user’s profile picture, if available.
SourceFulltext
Returned byclient.sources.get_fulltext(). Contains the complete text content that NotebookLM has indexed for a source, along with a helper method for locating citation passages.
UUID of the source.
Source title.
The full indexed text content used by NotebookLM when answering questions.
Original URL for web page and YouTube sources.
Character count of
content.Source type as a
SourceType str enum, identical to Source.kind.find_citation_context()
Use this method to locate citation passages fromChatReference.cited_text within the full source content. The start_char/end_char fields on ChatReference reference NotebookLM’s internal chunk index and do not map to positions in content—use this method instead.
Text to search for, typically from
ChatReference.cited_text.Number of surrounding characters to include in each match. Defaults to
200.list[tuple[str, int]]—a list of (context, position) tuples where position is the start of the match within content. Returns an empty list when no match is found.
AccountLimits
Returned byclient.settings.get_account_limits(). Contains the server-reported quota limits for the authenticated account.
Maximum number of notebooks the account can own.
Maximum number of sources per notebook.
AccountTier
Returned byclient.settings.get_account_tier(). Contains raw NotebookLM tier metadata.
Internal tier identifier. Use
get_account_limits() for quota decisions—the raw tier name may not match active limits.Human-readable plan name, if available.