# NotebookLM RPC Method IDs for Notebook Operations: Create, Rename, and Delete

> Discover the specific NotebookLM RPC method IDs CCqFvf, s0tc2d, and WWINqb used for notebook create, rename, and delete operations in the teng-lin/notebooklm-py client.

- Repository: [Teng Lin/notebooklm-py](https://github.com/teng-lin/notebooklm-py)
- Tags: api-reference
- Published: 2026-03-09

---

**NotebookLM's unofficial Python client uses three specific obfuscated RPC method IDs—`CCqFvf` for create, `s0tc2d` for rename, and `WWINqb` for delete—to execute notebook operations against Google's internal batchexecute endpoint.**

The `teng-lin/notebooklm-py` repository implements an async Python interface to Google NotebookLM by reverse-engineering the internal RPC protocol. At the core of every notebook manipulation are hardcoded **RPC method IDs** defined in the `RPCMethod` enum that translate high-level Python calls into low-level Google API requests.

## The Three RPC Method IDs for Notebook Operations

According to the source code in [`src/notebooklm/rpc/types.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py) (lines 18-24), the notebook-level actions map to the following obfuscated identifiers:

- **`CCqFvf`** – Mapped via `RPCMethod.CREATE_NOTEBOOK` for instantiating new notebooks.
- **`s0tc2d`** – Mapped via `RPCMethod.RENAME_NOTEBOOK` for updating notebook titles.
- **`WWINqb`** – Mapped via `RPCMethod.DELETE_NOTEBOOK` for permanent notebook removal.

These IDs represent the single source of truth for the **batchexecute** RPC protocol. If Google changes their internal API contract, these enum values in [`src/notebooklm/rpc/types.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py) must be updated to maintain functionality.

## Implementation in the Notebook API

The high-level `NotebooksAPI` class in [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) wraps these raw IDs into user-friendly async methods, while the `ClientCore` in [`src/notebooklm/_core.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_core.py) handles the actual batchexecute request serialization.

### Creating Notebooks with CCqFvf

When you call `client.notebooks.create()`, the library invokes `RPCMethod.CREATE_NOTEBOOK` (ID: `CCqFvf`) via the core RPC helper. The implementation in [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) (lines 49-62) constructs the parameter array and delegates to `self._core.rpc_call(RPCMethod.CREATE_NOTEBOOK, params)`.

### Renaming Notebooks with s0tc2d

The rename operation uses `RPCMethod.RENAME_NOTEBOOK` (ID: `s0tc2d`). In [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) (lines 98-118), the `rename()` method packages the notebook ID and new title into the RPC parameter structure before calling `self._core.rpc_call(RPCMethod.RENAME_NOTEBOOK, params, ...)`.

### Deleting Notebooks with WWINqb

For deletion, the client sends `RPCMethod.DELETE_NOTEBOOK` (ID: `WWINqb`). The implementation at [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) (lines 84-96) calls `self._core.rpc_call(RPCMethod.DELETE_NOTEBOOK, params)` with the target notebook identifier.

## Practical Usage Examples

These RPC method IDs are handled automatically when using the high-level client:

```python
import asyncio
from notebooklm import NotebookLMClient

async def notebook_demo():
    # Load client (authentication handled internally)

    async with await NotebookLMClient.from_storage() as client:
        # 1️⃣ Create a notebook

        nb = await client.notebooks.create("My Research Notebook")
        print(f"Created notebook ID: {nb.id}")

        # 2️⃣ Rename the notebook

        renamed_nb = await client.notebooks.rename(nb.id, "Renamed Research Notebook")
        print(f"Renamed to: {renamed_nb.title}")

        # 3️⃣ Delete the notebook

        success = await client.notebooks.delete(nb.id)
        print(f"Deletion successful: {success}")

asyncio.run(notebook_demo())

```

For debugging or advanced use cases, you can invoke the RPC methods directly through the core layer:

```python
from notebooklm._core import ClientCore
from notebooklm.rpc import RPCMethod

core = ClientCore(...)

# Create notebook (raw RPC)

result = await core.rpc_call(RPCMethod.CREATE_NOTEBOOK, ["Demo", None, None, [2], [1]])
print(result)

```

## Summary

- **Create operations** use the RPC method ID `CCqFvf` defined as `RPCMethod.CREATE_NOTEBOOK` in [`src/notebooklm/rpc/types.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py).
- **Rename operations** use the RPC method ID `s0tc2d` defined as `RPCMethod.RENAME_NOTEBOOK`.
- **Delete operations** use the RPC method ID `WWINqb` defined as `RPCMethod.DELETE_NOTEBOOK`.
- All three methods are implemented in [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) and transmitted via `ClientCore.rpc_call()` to Google's batchexecute endpoint.

## Frequently Asked Questions

### What is the RPC method ID for creating a notebook in NotebookLM?

The creation operation uses the method ID **`CCqFvf`**, referenced in code as `RPCMethod.CREATE_NOTEBOOK`. This identifier is passed to the batchexecute endpoint via [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) when calling `client.notebooks.create()`.

### How does the rename operation work at the RPC level?

Renaming utilizes the method ID **`s0tc2d`** (`RPCMethod.RENAME_NOTEBOOK`). The `NotebooksAPI.rename()` method in [`src/notebooklm/_notebooks.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_notebooks.py) (lines 98-118) packages the notebook ID and new title into a parameter list before invoking `self._core.rpc_call()` with this specific ID.

### Where are these RPC method IDs defined in the source code?

All notebook operation IDs are declared in **[`src/notebooklm/rpc/types.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py)** (lines 18-24) within the `RPCMethod` enum. This file serves as the registry mapping Pythonic enum members to Google's obfuscated batchexecute method strings.

### Can I invoke these RPC methods directly without the high-level API?

Yes. You can bypass the `NotebooksAPI` wrapper and call `RPCMethod.CREATE_NOTEBOOK`, `RPCMethod.RENAME_NOTEBOOK`, or `RPCMethod.DELETE_NOTEBOOK` directly through `ClientCore.rpc_call()` in [`src/notebooklm/_core.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/_core.py), though you must manually construct the correct parameter arrays expected by Google's internal API.