---
title: "List schedules"
method: GET
path: "/v1/schedules"
tags: ["Schedules"]
---

# List schedules

`GET /v1/schedules`

Retrieves scheduled tasks. This endpoint supports filtering, sorting, and cursor-based pagination.

To retrieve the recipients for a schedule, use the [List schedule recipients](/api/schedule-recipients/list-schedule-recipients) endpoint.

## Query parameters

- `q` string
- `status` 'success' | 'error' | 'canceled' | 'none'
- `destination` 'email' | 'slack' | 'webhook' | 'sftp' | 's3'
- `scheduleType` 'alert' | 'schedule'
- `contentType` 'dashboard' | 'single tile'
- `sortField` 'scheduleName' | 'dashboardName' | 'ownerName' | 'lastRun' | 'lastRunStatus'
- `sortDirection` 'asc' | 'desc'
- `cursor` integer
- `pageSize` integer
- `ownerId` string, uuid
- `embedEntity` string
- `identifier` string

## Response `200`

Paginated schedule list

- object
  - `pageInfo` PageInfo — Pagination information for paginated responses.
    - `hasNextPage` boolean — Indicates if there are more records available.
    - `nextCursor` string, nullable — Cursor for the next page of results. `null` if no more results.
    - `pageSize` integer — Number of records per page.
    - `totalRecords` integer — Total number of records matching the query.
  - `records` object[] — List of schedule records.
    - `id` string, uuid — The schedule ID.
    - `schedule` string — The cron expression for the schedule.
    - `disabledAt` string, date-time, nullable — Timestamp when the schedule was paused, if applicable.
    - `name` string — The name of the schedule.
    - `timezone` string — The IANA timezone for the schedule.
    - `identifier` string — The ID of the dashboard associated with the schedule.
    - `dashboardName` string — The name of the dashboard associated with the schedule.
    - `ownerId` string, uuid — The membership ID of the schedule owner. Use the [List users](/api/users/list-users) endpoint to retrieve membership IDs.
    - `ownerName` string — The name of the schedule owner.
    - `lastCompletedAt` string, date-time, nullable — Timestamp of the last completed run.
    - `lastStatus` string, nullable — Status of the last run (e.g., `COMPLETE`, `ERROR_DELIVERED`).
    - `destinationType` string — The destination type (e.g., `email`, `webhook`, `sftp`, `slack`).
    - `format` string — The output format of the schedule. (e.g., `CSV`, `JSON`)
    - `recipientCount` integer — Number of recipients. Returns `-1` for webhook destinations.
    - `content` string — Content type (`dashboard` or `single tile`).
    - `slackRecipientType` string, nullable — Slack recipient type, if applicable.
    - `systemDisabledAt` string, date-time, nullable — Timestamp when the schedule was system-disabled, if applicable.
    - `systemDisabledReason` string, nullable — Reason for system disabling, if applicable.
    - `alert` string, nullable — Alert configuration, if applicable.

## Other responses

- `400` — Bad Request Possible error messages: - `Invalid enum value` - `ownerId: Invalid uuid` - `Page size cannot exceed 100` - `Invalid page number. The last valid page is <number>.`
- `403` — Forbidden Possible error messages: - `Personal access tokens can only filter by their own ownerId`
- `404` — Not Found Possible error messages: - `User with id <id> does not exist`
- `405` — Method Not Allowed - Invalid HTTP method for this endpoint
- `429` — Too Many Requests - Rate limit exceeded (60 requests/minute)

---

[API](https://skmtc.net/omni/apis/omni-api.md) · [All operations](https://skmtc.net/omni/apis/omni-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/omni/omni-api/revisions/6b02f7349d0e/schema)
