---
title: "/review-cycles/:reviewCycleId/answers"
method: GET
path: "/review-cycles/{reviewCycleId}/answers"
---

# /review-cycles/:reviewCycleId/answers

`GET /review-cycles/{reviewCycleId}/answers`

## Request

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

Returns the individual question answers of the reviews in a cycle, paginated. 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.

Answers are scoped to what the caller can see: members with the global `View review cycles` permission see all answers; scoped admins see answers of employees in their scope plus their own and their reports'; everyone else sees only submitted reviews they can access as an employee (manager reviews of their own become visible once shared). Reviewers of anonymous reviews are redacted.

## Path parameters

- `reviewCycleId` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `question_ids` string[]
- `review_types` string[]
- `employee_ids` string[]
- `include_drafts` boolean
- `member_id` string

## Response `200`

200

- object
  - `total_count` integer: Total number of answers matching the filters
  - `answers` object[]
    - `id` string: Answer SPI key
    - `review_id` string: Review SPI key
    - `review_type` 'self' | 'manager' | 'peer' | 'upwards'
    - `question_id` string: Question id (UUID)
    - `question_type` 'Paragraph' | 'ParagraphStarRated' | 'ParagraphNumericRated' | 'ParagraphCustomRated' | 'SingleChoice' | 'MultipleChoice' | 'StarRated' | 'NumericRated' | 'CustomRated': Question type (PascalCase)
    - `answer` string, nullable: Free-text answer
    - `choices` string[], nullable: Selected choice keys or rating values
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `employee` object, nullable: The reviewee
      - `id` string: Employee SPI key
      - `name` string: Employee name, formatted as `Lastname, Firstname`
    - `reviewer` object, nullable: The reviewer
      - `id` string, nullable: Reviewer SPI key; `null` for anonymous reviews
      - `name` string: Reviewer name, or `Anonymous`

## 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
- `404`: 404

## Changes

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

[Operation history](https://skmtc.dev/workable/apis/account-root/changes/review-cycles/:reviewCycleId/answers/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)
