---
title: "/review-cycles"
method: GET
path: "/review-cycles"
---

# /review-cycles

`GET /review-cycles`

## Request

- Base URL: `https://subdomain.workable.com/spi/v3`
- URL: `https://subdomain.workable.com/spi/v3/review-cycles`
- Auth: API key in header `Authorization`

Returns the performance review cycles visible to the caller. Required scope: `r_reviews`. Requires a user token, or an account token with `member_id` (the request is then evaluated with that member's permissions); an account token without `member_id` gets `403`. The caller must be able to view review cycles: either the `View review cycles` permission (global or scoped), or `View employee directory` in an account with performance reviews enabled.

Archived and deleted cycles are never returned. Members without the `View review cycles` permission only see non-draft cycles they participate in (or that fall within their scoped role).

## Query parameters

- `states` string[]
- `limit` integer
- `offset` integer
- `member_id` string

## Response `200`

200

- object
  - `total_count` integer: Number of review cycles matching the filters
  - `review_cycles` object[]
    - `id` string: Review cycle SPI key
    - `name` string: Name of the review cycle
    - `description` string, nullable: Description of the review cycle
    - `state` 'draft' | 'scheduled' | 'in_preparation' | 'active' | 'ended': Review cycle state
    - `start_date` string, date-time: Date the cycle starts (ISO 8601)
    - `end_date` string, date-time: Date the cycle ends (ISO 8601)
    - `review_period_start` string, date-time: Start of the period under review (ISO 8601)
    - `review_period_end` string, date-time: End of the period under review (ISO 8601)
    - `timezone` string, nullable: Timezone of the cycle
    - `employee_count` integer: Number of employees in the cycle
    - `draft_count` integer: Number of reviews in draft
    - `completed_count` integer: Number of completed reviews
    - `not_started_count` integer: Number of reviews not yet started
    - `share_start_date` string, date-time, nullable: Date from which reviews can be shared
    - `share_deadline` string, date-time, nullable: Deadline for sharing reviews
    - `sign_deadline` string, date-time, nullable: Deadline for signing reviews
    - `employee_meeting_deadline` string, date-time, nullable: Deadline for the review meeting
    - `customization_start_date` string, date-time, nullable: Start of the form customization (preparation) window
    - `customization_end_date` string, date-time, nullable: End of the form customization (preparation) window
    - `has_manager_review` boolean: Whether the cycle includes manager reviews
    - `has_self_review` boolean: Whether the cycle includes self reviews
    - `has_peer_reviews` boolean: Whether the cycle includes peer reviews
    - `has_upwards_reviews` boolean: Whether the cycle includes upward reviews

## Other responses

- `400`: Validation error: an object keyed by the invalid parameter, each entry holding the Joi error `code` and `message`
- `401`: Missing token (plain-text body)
- `403`: Plain-text body: `Required scopes missing: ["r_reviews"]`, `Account tokens need a member_id for this operation` for an account token without `member_id`, or `Forbidden` when the member is not allowed to access the resource

## Changes

- **2026-11-03** `13ad2e8e2ee9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/workable/apis/account-root/changes/review-cycles/get.md)

---

[API](https://skmtc.dev/workable/apis/account-root.md) - [All operations](https://skmtc.dev/workable/apis/account-root/llms.txt) - [OpenAPI document](https://skmtc.dev/workable/apis/account-root/revisions/13ad2e8e2ee9?raw)
