---
title: "Get a notebook schedule"
method: GET
path: "/notebooks/{notebookId}/schedule"
tags: ["Notebooks"]
---

# Get a notebook schedule

`GET /notebooks/{notebookId}/schedule`

## Request

- Base URL: `https://api.deepnote.com/v2`
- URL: `https://api.deepnote.com/v2/notebooks/{notebookId}/schedule`
- Auth: HTTP bearer

Returns the schedule for this notebook, or 404 when the notebook has none.

## Path parameters

- `notebookId` string, required: Opaque notebook identifier.

## Response `200`

The notebook schedule

- GetNotebookScheduleResponse
  - `schedule` StoredNotebookSchedule, required
    - `notebookId` string, required: Opaque notebook identifier.
    - `cron` string, required: Cron expression for the schedule (e.g. "0 9 * * 1-5").
    - `timezone` string, required: IANA timezone the cron expression runs in (e.g. "America/New_York").
    - `nextRunAt` string, date-time, nullable, required: Next scheduled run time. Null when the stored cron expression never matches a future date or the stored timezone can't be resolved.
    - `isPaused` boolean, required: Whether the scheduler skips this schedule instead of running it.
    - `pauseReason` 'access-revoked' | 'consecutive-failures', nullable, required: Why the schedule is paused: "access-revoked" when the schedule creator lost access to the project, "consecutive-failures" when too many runs failed in a row. Null while the schedule is running.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Insufficient permissions
- `404`: Notebook or schedule not found
- `409`: Project is suspended
- `429`: Rate limit exceeded

## Changes

- **2026-10-28** `062f5f1b4638`: 3 info
  - the `schedule/createdAt` response's property pattern was changed from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$` for the status `200`
  - the `schedule/nextRunAt/anyOf[subschema #1]/` response's property pattern was changed from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$` for the status `200`
  - the `schedule/updatedAt` response's property pattern was changed from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$` for the status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/deepnote/apis/deepnote-public-api/changes/notebooks/:notebookId/schedule/get.md)

---

[API](https://skmtc.dev/deepnote/apis/deepnote-public-api.md) - [All operations](https://skmtc.dev/deepnote/apis/deepnote-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/deepnote/apis/deepnote-public-api/revisions/b081f9aea3dc?raw)
