Notebooks

A Notebook is a top-level container resource that groups related sources.

Resource representation

{
  "name": "notebooks/550e8400-e29b-41d4-a716-446655440000",
  "displayName": "Q3 Engineering Roadmap",
  "createTime": "2026-08-06T04:00:00Z"
}
Field Type Behavior Description
name string Identifier Resource name in the format notebooks/{notebook}. IDs are server-assigned UUIDs.
displayName string Optional User-facing title (up to 500 characters).
createTime string (Timestamp) Output only Creation timestamp in RFC 3339 format.

Create a notebook

Send a POST request to /v1/notebooks:

REST

curl -s -X POST "https://notebook.googleapis.com/v1/notebooks" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "x-goog-user-project: $PROJECT_ID" \
  -H "Content-Type: application/json" \
  -d '{"display_name": "Q3 Engineering Roadmap"}'

Python

import requests

headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "x-goog-user-project": PROJECT_ID,
}

resp = requests.post(
    "https://notebook.googleapis.com/v1/notebooks",
    headers=headers,
    json={"display_name": "Q3 Engineering Roadmap"},
)
notebook = resp.json()
print(notebook["name"])

Get a notebook

Retrieve metadata for a single notebook by resource name (GET /v1/{name=notebooks/*}):

REST

curl -s -X GET "https://notebook.googleapis.com/v1/notebooks/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "x-goog-user-project: $PROJECT_ID"

Python

resp = requests.get(
    f"https://notebook.googleapis.com/v1/{notebook_name}",
    headers=headers,
)
print(resp.json())

List notebooks

List notebooks accessible to the authenticated user (GET /v1/notebooks). Use pageSize (default 50, max 100) and pageToken to paginate, and filter to filter by ownership (notebook.is_owner = true or notebook.is_owner = false):

REST

curl -s -X GET "https://notebook.googleapis.com/v1/notebooks?pageSize=20&filter=notebook.is_owner%20%3D%20true" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "x-goog-user-project: $PROJECT_ID"

Python

resp = requests.get(
    "https://notebook.googleapis.com/v1/notebooks",
    headers=headers,
    params={"pageSize": 20, "filter": "notebook.is_owner = true"},
)
data = resp.json()
for nb in data.get("notebooks", []):
    print(nb["name"], nb.get("displayName"))

Update a notebook

Rename a notebook (PATCH /v1/{notebook.name=notebooks/*}) by specifying updateMask=displayName (or omitting updateMask, which defaults to updating displayName). When updating a notebook, displayName cannot be blank and can be at most 500 characters:

REST

curl -s -X PATCH "https://notebook.googleapis.com/v1/notebooks/550e8400-e29b-41d4-a716-446655440000?updateMask=displayName" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "x-goog-user-project: $PROJECT_ID" \
  -H "Content-Type: application/json" \
  -d '{"display_name": "Updated Roadmap Title"}'

Python

resp = requests.patch(
    f"https://notebook.googleapis.com/v1/{notebook_name}",
    headers=headers,
    params={"updateMask": "displayName"},
    json={"display_name": "Updated Roadmap Title"},
)
print(resp.json())