Returns the question answers of the reviews in a performance review cycle. Required scope: r_reviews.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
This endpoint uses ther_reviewsscope, 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. The cycle itself must be visible to the member (see GET /review-cycles); otherwise 404.
Each item is a single answer to a single question. Results are scoped to what the member can see:
- Members with the global View review cycles permission see answers from every review in the cycle.
- Members with a scoped View review cycles role see answers of employees within their scope, plus the answers they can access as an employee.
- All other members see only submitted reviews they can access as an employee: their own reviews and those of their reports. Manager, peer and upward reviews about themselves become visible only once the review has been shared.
Reviewers of anonymous reviews are redacted to {"id": null, "name": "Anonymous"}.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Maximum number of answers to return. Default 50, maximum 200 |
| offset | integer | Number of answers to skip. Default 0 |
| question_ids | array | Filter by question id (UUID), e.g. question_ids[]=<uuid> |
| review_types | array | Filter by review type, e.g. review_types[]=manager. Allowed: self, manager, peer, upwards |
| employee_ids | array | Filter by reviewee employee SPI key, e.g. employee_ids[]=4d4 |
| include_drafts | boolean | Also include answers of reviews that are not yet submitted. Default false. Has no effect for members without the View review cycles permission |
Results
{
"total_count": 2,
"answers": [
{
"id": "5a1",
"review_id": "4d3",
"review_type": "self",
"question_id": "25012946-72fb-5069-8797-6b5ccc2912dd",
"question_type": "Paragraph",
"answer": "I delivered three major projects on time and improved our release process.",
"choices": [],
"created_at": "2024-11-05T09:30:00.000Z",
"updated_at": "2024-11-06T14:12:00.000Z",
"employee": {
"id": "4d4",
"name": "Doe, Jane"
},
"reviewer": {
"id": "4d4",
"name": "Doe, Jane"
}
},
{
"id": "5a2",
"review_id": "4d3",
"review_type": "self",
"question_id": "2501297b-1920-5e4c-b21b-fc3caf56b335",
"question_type": "NumericRated",
"answer": null,
"choices": [
"4"
],
"created_at": "2024-11-05T09:30:00.000Z",
"updated_at": "2024-11-06T14:12:00.000Z",
"employee": {
"id": "4d4",
"name": "Doe, Jane"
},
"reviewer": {
"id": "4d4",
"name": "Doe, Jane"
}
}
]
}| key | type | description |
|---|---|---|
| total_count | integer | Total number of answers matching the filters |
| answers | array | Page of answers, ordered by id |
| answers[].id | string | Answer SPI key |
| answers[].review_id | string | SPI key of the review the answer belongs to |
| answers[].review_type | string | One of: self, manager, peer, upwards |
| answers[].question_id | string | Question id (UUID), matching the ids in the review questionnaire |
| answers[].question_type | string | Question type in PascalCase. One of: Paragraph, ParagraphStarRated, ParagraphNumericRated, ParagraphCustomRated, SingleChoice, MultipleChoice, StarRated, NumericRated, CustomRated |
| answers[].answer | string | null | Free-text answer |
| answers[].choices | array | null | Selected choice keys, or the selected rating value for rating questions |
| answers[].created_at | string | ISO 8601 creation timestamp |
| answers[].updated_at | string | ISO 8601 last update timestamp |
| answers[].employee | object | null | The reviewee: id (SPI key) and name (Lastname, Firstname) |
| answers[].reviewer | object | null | The reviewer: id (SPI key, null for anonymous reviews) and name (Anonymous for anonymous reviews) |
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"}.
| Status | Condition |
|---|---|
| 400 | Invalid path or query parameter (for example limit above 200, a non-UUID question_ids entry, or an unknown review type) |
| 401 | Missing or invalid token |
| 403 | Missing r_reviews scope, account token without member_id, or the member cannot view review cycles |
| 404 | The review cycle does not exist, is archived or deleted, or is not visible to the member |
