API Reference
API Reference

/review-cycles

Returns the performance review cycles visible to the caller. Required scope: r_reviews.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
🚧

This endpoint uses the r_reviews scope, which must be enabled through the Integrations section found within the Settings menu.

Requires a user token, or an account token together with the member_id query parameter (the request is then evaluated with that member's permissions). An account token without member_id gets 403 Account tokens need a member_id for this operation. member_id is ignored for user tokens.

The member must be able to view review cycles: either through the View review cycles permission (global or scoped role), or through View employee directory in an account with performance reviews enabled.

Archived and deleted cycles are never returned. Members without the global View review cycles permission only see cycles they participate in (as reviewee, manager, reviewer or within their reporting line) or that fall within their scoped role, and never see cycles in the draft state.

Query parameters

ParameterTypeDescription
statesarrayFilter by cycle state, e.g. states[]=active&states[]=ended. Allowed values: draft, scheduled, in_preparation, active, ended. Defaults to all of them
limitintegerMaximum number of cycles to return (minimum 1)
offsetintegerNumber of cycles to skip (minimum 0)

Pagination

limit and offset are optional. When both are omitted, every matching cycle is returned in a single response. Cycles are ordered by id; total_count always reflects the full number of matches.

Results

{
  "total_count": 1,
  "review_cycles": [
    {
      "id": "4d3",
      "name": "Annual Review 2024",
      "description": "Company-wide annual performance review",
      "state": "active",
      "start_date": "2024-11-01T00:00:00.000Z",
      "end_date": "2024-11-30T00:00:00.000Z",
      "review_period_start": "2024-01-01T00:00:00.000Z",
      "review_period_end": "2024-11-01T00:00:00.000Z",
      "timezone": null,
      "employee_count": 4,
      "draft_count": 2,
      "completed_count": 1,
      "not_started_count": 1,
      "share_start_date": null,
      "share_deadline": null,
      "sign_deadline": null,
      "employee_meeting_deadline": null,
      "customization_start_date": "2024-10-01T00:00:00.000Z",
      "customization_end_date": "2024-10-15T00:00:00.000Z",
      "has_manager_review": true,
      "has_self_review": true,
      "has_peer_reviews": false,
      "has_upwards_reviews": false
    }
  ]
}
keytypedescription
total_countintegerNumber of review cycles matching the filters
review_cyclesarrayArray of review cycle objects (see GET /review-cycles/:id for the cycle payload)

Error responses

Error bodies come in three shapes. 400 validation errors are a JSON object keyed by the invalid parameter, e.g. {"limit": {"code": "number.max", "message": "\"limit\" must be less than or equal to 200"}}. 401 and 403 are plain-text bodies, e.g. Required scopes missing: ["r_reviews"], or Forbidden when the member lacks permission. 404 is JSON, e.g. {"message": "Review cycle not found"}.

StatusCondition
400Invalid query parameter (for example an unsupported value in states, such as archived)
401Missing or invalid token
403Missing r_reviews scope, account token without member_id, or the member cannot view review cycles
Query Params
states
array of strings

Filter by one or more cycle states (send as states[]=active&states[]=ended). Allowed: draft, scheduled, in_preparation, active, ended. Defaults to all of them.

states
Allowed:
integer
≥ 1

Maximum number of cycles to return. When omitted, all matching cycles are returned.

integer
≥ 0

Number of cycles to skip (for pagination).

string

Required when using an account token: the member (SPI key, from GET /members) to act as. The request is evaluated with that member's permissions; without it the request gets 403. Ignored for user tokens.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
text/plain