> ## 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.listAll()

> List the reviews of a run.

Only teams with customer review enabled: other teams get `403 The "customerReview" feature is not enabled for this team`. Return a page of the customer reviews of a run, without task content. Deciding a review moves it out of `awaiting`, so to work through the queue, decide the first page and list again from offset 0.

The `listAll*` variant yields items across every page. The other variant returns one page with pagination metadata. See [Pagination](https://docs.platform.toloka.ai/docs/sdk/pagination.md).

## Signature

Method signatures on `client.reviews`:

```ts theme={null}
listAll(args: {
  runId: string;
  limit?: number;
  offset?: number;
  status?: "checking" | "awaiting" | "closed";
  nodeId?: string;
}): AsyncGenerator<ReviewSummary>;

listPage(args: {
  runId: string;
  limit?: number;
  offset?: number;
  status?: "checking" | "awaiting" | "closed";
  nodeId?: string;
}): Promise<{ reviews: ReviewSummary[]; pagination: Pagination }>;
```

## Parameters

### listAll()

**runId** `string` *required*

Pipeline run ID with prefix `plr.`.

**limit** `number` (default: 20)

Maximum number of results to return; defaults to 20.

**offset** `number` (default: 0)

Number of results to skip before this page; defaults to 0.

**status** `"checking" | "awaiting" | "closed"` (default: awaiting)

Which reviews to list. `awaiting`: reviews that still take a decision (`needs_review` and `returned` before their deadline), soonest deadline first. `checking`: rejects the LLM QA check is checking, soonest deadline first. `closed`: accepted, rejected and expired reviews, most recently closed first. Defaults to `awaiting`.

**nodeId** `string`

Only list the reviews of this generation node.

### listPage()

**runId** `string` *required*

Pipeline run ID with prefix `plr.`.

**limit** `number` (default: 20)

Maximum number of results to return; defaults to 20.

**offset** `number` (default: 0)

Number of results to skip before this page; defaults to 0.

**status** `"checking" | "awaiting" | "closed"` (default: awaiting)

Which reviews to list. `awaiting`: reviews that still take a decision (`needs_review` and `returned` before their deadline), soonest deadline first. `checking`: rejects the LLM QA check is checking, soonest deadline first. `closed`: accepted, rejected and expired reviews, most recently closed first. Defaults to `awaiting`.

**nodeId** `string`

Only list the reviews of this generation node.

## Returns

### listAll() result

`AsyncGenerator<ReviewSummary>`

Yields one item at a time. The fields below describe each yielded item.

A customer review of one task, without its content.

**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.

### listPage() result

`Promise<{ reviews: ReviewSummary[]; pagination: Pagination }>`

**reviews** `ReviewSummary[]` *required*

Reviews in this page.

**Fields**

**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.

**pagination** `Pagination` *required*

Pagination information for this page.

**Fields**

**total** `number` *required*

Total number of matching results.

**limit** `number` *required*

Maximum number of results requested for this page.

**offset** `number` *required*

Number of results skipped before this page.

**hasMore** `boolean` *required*

Whether more matching results follow this page.

## 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 | Run not found |
| 429 | Rate limit exceeded |

HTTP endpoint: [`GET /runs/{runId}/reviews`](https://docs.platform.toloka.ai/docs/api-reference/reviews/list-pipeline-run-reviews).

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

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

for await (const item of client.reviews.listAll({
  runId: "plr.019a0000-0000-7000-8000-000000000001"
})) {
  console.log(item);
}
```

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

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

const page = await client.reviews.listPage({
  runId: "plr.019a0000-0000-7000-8000-000000000001"
});
console.log(page);
```

```json listAll() yielded item 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
}
```

```json listPage() theme={null}
{
  "reviews": [
    {
      "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
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 20,
    "offset": 0,
    "hasMore": true
  }
}
```


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