---
title: "Gets one employee's completed performance reviews across all cycles"
method: GET
path: "/v1/perform/employees/{userId}/review-history"
---

# Gets one employee's completed performance reviews across all cycles

`GET /v1/perform/employees/{userId}/review-history`

## Request

- Base URL: `https://api.nectarhr.com`
- URL: `https://api.nectarhr.com/v1/perform/employees/{userId}/review-history`
- Auth: HTTP bearer

Returns every submitted review of this employee, newest first, across every cycle they were enrolled in — so the most recent review is the first element and needs no client-side sorting.

Reviews of a deactivated or terminated employee are included.

## Path parameters

- `userId` string, uuid, required

## Query parameters

- `cursor` string, uuid
- `limit` number

## Response `200`

OK

- object
  - `status` 'success'
  - `links` Links
    - `self` string, uri
    - `related` object[]
      - `type` string
      - `href` string, uri
  - `data` object
    - `total` integer: Total submitted reviews for this employee, across all pages. Returned on the first page only.
    - `review_completions` ReviewCompletion[]: Newest first by submission date, so the first element of the first page is the employee's most recent review.
      - `id` string, uuid: The review assignment id. Use it as the cursor to request the next page.
      - `cycle` ReviewCycleSummary
        - `id` string, uuid: The cycle this review belonged to. Matches an id from /v1/perform/review-cycles.
        - `name` string
        - `status` 'DRAFT' | 'SCHEDULED' | 'ACTIVE' | 'CLOSED'
      - `direction` 'SELF' | 'MANAGER' | 'PEER': Who performed the review relative to the employee being reviewed. SELF is the employee reviewing themselves.
      - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'SUBMITTED': SUBMITTED means the reviewer completed and submitted the review.
      - `opened_at` string, date-time, nullable: When this review direction opened for reviewers to begin submitting, ISO-8601 in UTC. Null if the cycle has not been scheduled.
      - `closed_at` string, date-time, nullable: When this review direction closed to further submissions, ISO-8601 in UTC. Null if the cycle has not been scheduled.
      - `submitted_at` string, date-time, nullable: When the reviewer submitted the review, ISO-8601 in UTC. Null until the review is submitted.
      - `released_at` string, date-time, nullable: When the completed review was released to the employee, ISO-8601 in UTC. Null if it has been submitted but not yet released.
      - `updated_at` string, date-time, nullable: When this record last changed, ISO-8601 in UTC. Pass it back as updated-since to sync incrementally.
      - `reviewee` ReviewRecipient
        - `id` string, uuid: The employee's Nectar user id. Stable across email and employee id changes.
        - `email` string, email: The employee's current email address.
        - `employee_id` string, nullable: The employee's current employee id. Null if not set.
        - `active` boolean: Whether the employee's account is currently active. False for deactivated and terminated employees, whose records are still returned.
        - `department` string, nullable: Department at the time of review. Recorded when the review cycle launched, so it may differ from the employee's current value. Null if it was not captured for that cycle.
        - `job_title` string, nullable: Job title at the time of review. Recorded when the review cycle launched, so it may differ from the employee's current value. Null if it was not captured for that cycle.
        - `manager_email` string, email, nullable: Manager of record at the time of review. Recorded when the review cycle launched, so it may differ from the employee's current value. Null if it was not captured for that cycle.
      - `reviewer` ReviewParticipant
        - `id` string, uuid: The employee's Nectar user id. Stable across email and employee id changes.
        - `email` string, email: The employee's current email address.
        - `employee_id` string, nullable: The employee's current employee id. Null if not set.

## Other responses

- `400`: `BAD REQUEST`: Body or Query Params are malformed (missing, extra, or invalid values)
- `401`: `UNAUTHORIZED`: Request was sent with an expired or missing API Key
- `403`: `FORBIDDEN`: Request was authenticated but the resource requested is missing or not accessible with that key
- `404`: `NOT FOUND`: The requested resource was not found
- `429`: `TOO MANY REQUESTS`: Company is being rate limited
- `500`: `INTERNAL SERVER ERROR`: Request was unable to be processed due to a server error. Contact our support team.
- `501`: `NOT IMPLEMENTED`: Method is not implemented on that endpoint.

## Changes

- **2026-09-26** `f73e78f563b0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nectarhr/apis/nectar-public-api/changes/v1/perform/employees/:userId/review-history/get.md)

---

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