> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.toloka.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# client.reviews.get()

> Get a review.

Only teams with customer review enabled: other teams get `403 The "customerReview" feature is not enabled for this team`. Return one review with the task content, the quality criteria a reject can name, and every decision so far.

## Signature

Method signature on `client.reviews`:

```ts theme={null}
get(args: {
  reviewId: string;
}): Promise<Review>;
```

## Parameters

**reviewId** `string` *required*

Review ID with prefix `trr.`.

## Returns

`Promise<Review>`

A customer review of one task, with its content, quality criteria and decisions.

**id** `ReviewId` *required*

Review ID with prefix `trr.`.

**runId** `RunId` *required*

Pipeline run ID with prefix `plr.`.

**itemId** `RunItemId` *required*

Run item ID with prefix `plri.`.

**nodeId** `string` *required*

ID of the generation node whose task is under review.

**nodeName** `string` *required*

Name of that generation node.

**status** `ReviewStatus` *required*

Review status. `needs_review`: waiting for the first decision. `returned`: the LLM QA check did not confirm the last reject, so the review waits for a new decision. `checking`: the LLM QA check is checking a reject, and decisions are refused until it answers. `accepted`: the team accepted the task. `rejected`: the reject is final, either forced or confirmed by the LLM QA check. `expired`: the deadline passed while the review was open, whether it waited for a decision or was checking a reject the check then did not confirm, so the task was accepted automatically.

**submittedAt** `string` *required*

Time the task was submitted, as an ISO 8601 timestamp.

**deadlineAt** `string` *required*

Deadline for a decision, as an ISO 8601 timestamp. From then on the review takes no decisions, but it closes a little later: a review waiting for a decision expires shortly after the deadline, and its task is accepted automatically (the expert is paid and the task is billed); a review checking a reject closes when the LLM QA check answers.

**closedAt** `string | null` *required*

Time the review closed, as an ISO 8601 timestamp, or null while it is open.

**performer** `object` *required*

Who did the task.

**Fields**

**type** `"expert" | "synthetic"` *required*

`expert` for a human expert, `synthetic` for synthetic generation.

**expertId** `string | null` *required*

ID of the expert who did the task, or null for a synthetic task.

**taskContent** `object` *required*

What the task showed and what was submitted. Project files appear as file proxy URLs.

**Fields**

**input** `object` *required*

The input values of the task, by field name.

**Fields**

**\[key: string]** `unknown`

**output** `object` *required*

The submitted answer, by field name.

**Fields**

**\[key: string]** `unknown`

**qualityCriteria** `ReviewQualityCriterion[]` *required*

The quality criteria a reject can name, as they were when the task reached review.

**Fields**

**id** `string` *required*

Criterion ID to name in a reject.

**qualityElement** `string` *required*

What the criterion checks.

**pass** `string` *required*

What a task that passes this criterion looks like.

**fail** `string` *required*

What a task that fails this criterion looks like.

**verdicts** `ReviewVerdict[]` *required*

Decisions on this review, oldest first.

**Fields**

**id** `string` *required*

Verdict ID with prefix `trv.`.

**decision** `"accept" | "reject"` *required*

`accept` or `reject`.

**forced** `boolean` *required*

True for a forced reject, which skipped the LLM QA check.

**criteria** `string[]` *required*

IDs of the quality criteria a reject named; empty for an accept.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/reviews/get-review.md) for the complete schema.

**comment** `string` *required*

The comment of a reject; empty for an accept.

**source** `"ui" | "api"` *required*

`ui` for the platform UI, `api` for the API, the CLI or the SDK.

**userId** `string` *required*

Platform user ID of the author.

**scopedTokenId** `string | null` *required*

ID of the scoped token the verdict was sent with, with prefix `pst.`, or null.

**llmQaCheck** `object | null` *required*

Answer of the LLM QA check to a reject, or null for an accept, a forced reject, or a check still running.

See the [HTTP endpoint](https://docs.platform.toloka.ai/docs/api-reference/reviews/get-review.md) for the complete schema.

**createdAt** `string` *required*

Time the verdict was sent, as an ISO 8601 timestamp.

**checkedRejectsLeft** `number` *required*

How many more rejects the LLM QA check will check, out of 10. At 0, accept the task or send a forced reject.

## Errors

HTTP errors throw [`PotatoApiError`](https://docs.platform.toloka.ai/docs/sdk/errors). The endpoint documents these error responses:

| Status | Description |
| - | - |
| 403 | Customer review is not enabled for the team of the run, or the scoped token lacks the needed `review` permission. Deciding needs `review:write`, which every preset except `read` and `labeling-read` includes. |
| 404 | Review not found |
| 429 | Rate limit exceeded |

HTTP endpoint: [`GET /reviews/{reviewId}`](https://docs.platform.toloka.ai/docs/api-reference/reviews/get-review).

```ts get() theme={null}
import { createClient } from "@toloka-platform/sdk";

const client = createClient({
  baseUrl: "https://platform.toloka.ai",
  apiKey: process.env.TOLOKA_API_KEY!,
});

const review = await client.reviews.get({
  reviewId: "trr.019a0000-0000-7000-8000-000000000001"
});
console.log(review);
```

```json get() theme={null}
{
  "id": "trr.019a0000-0000-7000-8000-000000000001",
  "runId": "plr.019a0000-0000-7000-8000-000000000001",
  "itemId": "plri.019a0000-0000-7000-8000-000000000001",
  "nodeId": "<string>",
  "nodeName": "<string>",
  "status": "needs_review",
  "submittedAt": "2026-01-01T00:00:00Z",
  "deadlineAt": "2026-01-01T00:00:00Z",
  "closedAt": null,
  "performer": {
    "type": "expert",
    "expertId": null
  },
  "taskContent": {
    "input": {},
    "output": {}
  },
  "qualityCriteria": [
    {
      "id": "<string>",
      "qualityElement": "<string>",
      "pass": "<string>",
      "fail": "<string>"
    }
  ],
  "verdicts": [
    {
      "id": "trv.019a0000-0000-7000-8000-000000000001",
      "decision": "accept",
      "forced": false,
      "criteria": [
        "<string>"
      ],
      "comment": "<string>",
      "source": "ui",
      "userId": "<string>",
      "scopedTokenId": null,
      "llmQaCheck": null,
      "createdAt": "2026-01-01T00:00:00Z"
    }
  ],
  "checkedRejectsLeft": 0
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.