> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

# List ReviewProcessStage items

GET https://{tenant_name}.benchling.com/api/v3/review-process-stage/items

List ReviewProcessStage items from the current version of each accessible review process.

Stages of archived review processes are omitted but can still be retrieved by ID.

Reference: https://docs.benchling.com/docs/api/benchling-api/review-process-stage/list

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Query parameters

- `nextToken` (string, optional) — Token for pagination
- `omit` (string, optional) — Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.
- `pageSize` (integer, optional) — Number of results to return. Defaults to 50, maximum of 100.
- `returning` (string, optional) — Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.

### Headers

- `EARLY-ACCESS` (string, optional) — Set to true to access beta operations via /api/v3.

## Response

### 200

OK

- `items` (list of ReviewProcessStage, optional)
- `nextToken` (string, optional)

## Errors

### 400 Review Process Stage List Request Bad Request Error

Bad Request

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 403 Review Process Stage List Request Forbidden Error

Forbidden

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 404 Review Process Stage List Request Not Found Error

Not Found

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 429 Review Process Stage List Request Too Many Requests Error

Too Many Requests

- `detail` (TooManyRequestsErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 500 Review Process Stage List Request Internal Server Error

Internal Server Error

- `detail` (InternalServerErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `errorId` (string, optional)

## Types

### ReviewProcessStage

A single stage within a ReviewProcess that defines a required step in the review workflow. Each stage specifies what action reviewers must take (see `ReviewProcessActionType`), who is eligible to be a reviewer (see `ReviewerType`), and optionally a specific Team. For sequential review processes, stages have a position index determining their order. Stages can be configured to allow or disallow authors and senders as reviewers, and can permit team member reassignment. The list endpoint returns stages from the current version of each accessible review process. To retrieve stages scoped to a specific review process, use `GET /benchling/review-process/{review_process_id}` and inspect `currentVersion.reviewStages`.

- `__typename` (string, optional)
- `action` (enum, optional, nullable) — Action to be taken by the reviewer for this review process stage
  - Allowed values: `APPROVE`, `COMPLETE`, `ACCEPT`, `REVIEW`, `WITNESS`, `SELF_REVIEW`
- `allowAuthorReviewers` (boolean, optional) — Whether authors can review this review process stage
- `allowSenderReviewer` (boolean, optional) — Whether the sender can review this review process stage
- `createdAt` (string, optional) — Timestamp when this review process stage was created
- `description` (string, optional, nullable) — Description of the review process stage
- `id` (string, optional) — ID of the review process stage
- `isTeamReassignable` (boolean, optional, nullable) — Whether team members can reassign this review stage to other team members
- `name` (string, optional, nullable) — Title of the review process stage
- `reviewerType` (enum, optional, nullable) — Type of reviewer that is valid for the review process stage
  - Allowed values: `AUTHOR`, `TEAM`, `PROJECT_MEMBERS`
- `selectedTeam` (TeamRef, optional, nullable) — Team that is selected to review this review process stage
- `sequentialPositionIndex` (integer, optional, nullable) — Position of this stage in the review process

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### TeamRef

- `__typename` (string, optional)
- `id` (string, optional)

## Examples

**Response**

```json
{
  "items": [
    {
      "__typename": "__typename",
      "action": "APPROVE",
      "allowAuthorReviewers": true,
      "allowSenderReviewer": true,
      "createdAt": "createdAt",
      "description": "description",
      "id": "id",
      "isTeamReassignable": true,
      "name": "name",
      "reviewerType": "AUTHOR",
      "sequentialPositionIndex": 1
    }
  ],
  "nextToken": "nextToken"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/review-process-stage/items"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/review-process-stage/items';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```