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

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



## OpenAPI

````yaml /api-reference/openapi.json get /reviews/{reviewId}
openapi: 3.1.0
info:
  description: >-
    Manage projects, datasets, labeling pipelines, and model training. **Beta:**
    endpoints, request and response shapes, and error contracts can change
    without notice or a backward-compatibility promise.
  title: Toloka Platform API
  version: 2.0.0
servers:
  - url: https://platform.toloka.ai/api/v2-beta
security:
  - apiKeyAuth: []
  - scopedTokenAuth: []
tags:
  - description: The authenticated API key owner.
    name: Account
  - description: A project is the container for pipelines, datasets, and files.
    name: Projects
  - description: Rows and typed fields. Field schemas are immutable once created.
    name: Datasets
  - description: Append rows to a dataset from a file.
    name: Dataset uploads
  - description: Read a dataset out as a file.
    name: Dataset exports
  - description: A pipeline is a graph of nodes that processes each dataset item.
    name: Pipelines
  - description: The nodes, connections, fields, and version of a pipeline graph.
    name: Pipeline graph
  - description: Execute a pipeline over a dataset and inspect each item.
    name: Runs
  - description: >-
      Only for teams with customer review enabled. Customer review of generation
      tasks: the team accepts or rejects every task of a node that uses customer
      review.
    name: Reviews
  - description: Per-node checks that a pipeline must pass before deployment.
    name: Checks
  - description: Named credentials available to pipeline code.
    name: Secrets
  - description: Project files available to pipeline code and labeling interfaces.
    name: Files
  - description: >-
      Global, read-only catalog of the models a synthetic generation node can
      use, with their budget bounds.
    name: Generation models
  - description: >-
      Global, read-only catalog of the expert audience: the values a node
      `audience` filter can use.
    name: Audience
  - description: Project lists of experts a node can take its workforce from.
    name: Expert lists
  - description: >-
      Experts banned in a project: they cannot be invited and are removed from
      the work they are in. Available only to teams with expert lists enabled.
    name: Expert ban list
  - description: Global, read-only base model catalog.
    name: Base models
  - description: Project-owned mutable model-training drafts.
    name: Trainings
  - description: Project-owned Models and immutable Model Versions.
    name: Models
  - name: Batch inference
paths:
  /reviews/{reviewId}:
    get:
      tags:
        - Reviews
      summary: Get a review
      description: >-
        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.
      operationId: getReview
      parameters:
        - in: path
          name: reviewId
          required: true
          schema:
            $ref: '#/components/schemas/ReviewId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Review'
          description: The review
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '403':
          description: >-
            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.
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '404':
          description: Review not found
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '429':
          description: Rate limit exceeded
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
      x-codeSamples:
        - label: TypeScript SDK
          lang: typescript
          source: |
            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);
components:
  schemas:
    ReviewId:
      description: Review ID with prefix `trr.`.
      pattern: >-
        ^trr\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    Review:
      description: >-
        A customer review of one task, with its content, quality criteria and
        decisions.
      properties:
        checkedRejectsLeft:
          description: >-
            How many more rejects the LLM QA check will check, out of 10. At 0,
            accept the task or send a forced reject.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        closedAt:
          anyOf:
            - format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              type: string
            - type: 'null'
          description: >-
            Time the review closed, as an ISO 8601 timestamp, or null while it
            is open.
        deadlineAt:
          description: >-
            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.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        id:
          $ref: '#/components/schemas/ReviewId'
        itemId:
          $ref: '#/components/schemas/RunItemId'
        nodeId:
          description: ID of the generation node whose task is under review.
          type: string
        nodeName:
          description: Name of that generation node.
          type: string
        performer:
          description: Who did the task.
          properties:
            expertId:
              description: ID of the expert who did the task, or null for a synthetic task.
              type:
                - string
                - 'null'
            type:
              description: >-
                `expert` for a human expert, `synthetic` for synthetic
                generation.
              enum:
                - expert
                - synthetic
              type: string
          required:
            - type
            - expertId
          type: object
        qualityCriteria:
          description: >-
            The quality criteria a reject can name, as they were when the task
            reached review.
          items:
            $ref: '#/components/schemas/ReviewQualityCriterion'
          type: array
        runId:
          $ref: '#/components/schemas/RunId'
        status:
          $ref: '#/components/schemas/ReviewStatus'
        submittedAt:
          description: Time the task was submitted, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        taskContent:
          description: >-
            What the task showed and what was submitted. Project files appear as
            file proxy URLs.
          properties:
            input:
              additionalProperties: {}
              description: The input values of the task, by field name.
              propertyNames:
                type: string
              type: object
            output:
              additionalProperties: {}
              description: The submitted answer, by field name.
              propertyNames:
                type: string
              type: object
          required:
            - input
            - output
          type: object
        verdicts:
          description: Decisions on this review, oldest first.
          items:
            $ref: '#/components/schemas/ReviewVerdict'
          type: array
      required:
        - id
        - runId
        - itemId
        - nodeId
        - nodeName
        - status
        - submittedAt
        - deadlineAt
        - closedAt
        - performer
        - taskContent
        - qualityCriteria
        - verdicts
        - checkedRejectsLeft
      type: object
    RunItemId:
      description: Run item ID with prefix `plri.`.
      pattern: >-
        ^plri\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    ReviewQualityCriterion:
      description: >-
        A quality criterion of the reviewed node, as it was when the task
        reached review.
      properties:
        fail:
          description: What a task that fails this criterion looks like.
          type: string
        id:
          description: Criterion ID to name in a reject.
          type: string
        pass:
          description: What a task that passes this criterion looks like.
          type: string
        qualityElement:
          description: What the criterion checks.
          type: string
      required:
        - id
        - qualityElement
        - pass
        - fail
      type: object
    RunId:
      description: Pipeline run ID with prefix `plr.`.
      pattern: >-
        ^plr\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    ReviewStatus:
      description: >-
        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.
      enum:
        - needs_review
        - returned
        - checking
        - accepted
        - rejected
        - expired
      type: string
    ReviewVerdict:
      description: One decision on a review.
      properties:
        comment:
          description: The comment of a reject; empty for an accept.
          type: string
        createdAt:
          description: Time the verdict was sent, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        criteria:
          description: IDs of the quality criteria a reject named; empty for an accept.
          items:
            type: string
          type: array
        decision:
          description: '`accept` or `reject`.'
          enum:
            - accept
            - reject
          type: string
        forced:
          description: True for a forced reject, which skipped the LLM QA check.
          type: boolean
        id:
          description: Verdict ID with prefix `trv.`.
          pattern: >-
            ^trv\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        llmQaCheck:
          anyOf:
            - properties:
                checkedAt:
                  description: Time the check answered, as an ISO 8601 timestamp.
                  format: date-time
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                  type: string
                reason:
                  description: Why the LLM QA check answered this way.
                  type: string
                verdict:
                  description: >-
                    `agree`: the evidence holds, so the reject became final.
                    `disagree`: the evidence does not hold, so the review
                    returned for a new decision, or expired if its deadline had
                    passed. `inconclusive`: the check could not decide; the
                    review returned or expired the same way.
                  enum:
                    - agree
                    - disagree
                    - inconclusive
                  type: string
              required:
                - verdict
                - reason
                - checkedAt
              type: object
            - type: 'null'
          description: >-
            Answer of the LLM QA check to a reject, or null for an accept, a
            forced reject, or a check still running.
        scopedTokenId:
          anyOf:
            - pattern: >-
                ^pst\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
              type: string
            - type: 'null'
          description: >-
            ID of the scoped token the verdict was sent with, with prefix
            `pst.`, or null.
        source:
          description: '`ui` for the platform UI, `api` for the API, the CLI or the SDK.'
          enum:
            - ui
            - api
          type: string
        userId:
          description: Platform user ID of the author.
          type: string
      required:
        - id
        - decision
        - forced
        - criteria
        - comment
        - source
        - userId
        - scopedTokenId
        - llmQaCheck
        - createdAt
      type: object
  headers:
    RateLimit-Limit:
      description: The maximum number of requests allowed in the current window.
      schema:
        type: integer
    RateLimit-Policy:
      description: The rate limit policy (e.g., "60;w=60").
      schema:
        type: string
    RateLimit-Remaining:
      description: The number of requests remaining in the current window.
      schema:
        type: integer
    RateLimit-Reset:
      description: The number of seconds until the current window resets.
      schema:
        type: integer
    X-Request-Id:
      description: >-
        The request id: the X-Request-Id you sent when it is 1-128 characters of
        letters, digits, ".", "_" or "-", otherwise a generated UUID. Present on
        every response, including errors; quote it when reporting a problem.
      schema:
        type: string
  securitySchemes:
    apiKeyAuth:
      description: >-
        Enter `ApiKey <your-api-key>` in Authorization, including the `ApiKey `
        prefix. In cURL and Python samples, `<api-key>` means this full value.
        The TypeScript SDK adds the prefix for you.
      in: header
      name: Authorization
      type: apiKey
    scopedTokenAuth:
      description: >-
        Enter the project-scoped token as `pst_...` in X-Scoped-Token, without
        an `ApiKey ` prefix. Create a token with POST
        /projects/{projectId}/tokens.
      in: header
      name: X-Scoped-Token
      type: apiKey

````

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