---
title: "Gets a paginated list of performance review completion records"
method: GET
path: "/v1/perform/review-completions"
---

# Gets a paginated list of performance review completion records

`GET /v1/perform/review-completions`

## Request

- Base URL: `https://api.nectarhr.com`
- URL: `https://api.nectarhr.com/v1/perform/review-completions`
- Auth: HTTP bearer

One record per review assignment: who was reviewed, by whom, in which cycle, and when. Completion metadata only — review responses, ratings and private feedback are not available through this resource.

Demographic fields (department, job title, manager of record) are the values recorded when the cycle launched. Identity fields (id, email, employee id) are the employee's current values.

Reviews belonging to a deleted cycle are not returned.

## Query parameters

- `status` string[]
- `direction` 'SELF' | 'MANAGER' | 'PEER'
- `cycle_id` string, uuid
- `updated-since` string, date-time
- `active` boolean
- `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 records matching the filters, across all pages — not the size of this page. Returned on the first page only; it does not change as you page, so it is omitted from subsequent responses.
    - `review_completions` ReviewCompletion[]
      - `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/review-completions/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)
