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())