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

# Get TestOrder by ID

GET https://{tenant_name}.benchling.com/api/v3/test-order/{test_order_id}

Get a single TestOrder by ID.

Reference: https://docs.benchling.com/docs/api/benchling-api/test-order/get

## Authentication

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

## Request

### Path parameters

- `test_order_id` (string, required) — ID of the TestOrder.

### Query parameters

- `returning` (string, optional) — Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
- `omit` (string, optional) — Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.

### Headers

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

## Response

### 200

OK

- `__typename` (string, optional)
- `analysisComment` (string, optional, nullable) — Additional comments provided for a test order with a status of blocked, invalid, or canceled.
- `container` (ContainerRef, optional, nullable) — The container associated with the sample being tested in this test order
- `createdAt` (string, optional) — Timestamp of when the test order was created.
- `dilutionFactor` (integer, optional, nullable) — The dilution factor of the test order.
- `id` (string, optional) — The ID of the test order.
- `modifiedAt` (string, optional) — Timestamp of when the test order was last modified.
- `name` (string, optional) — The name of the test order.
- `procedure` (ProcedureRef, optional, nullable) — The Assay (Procedure) for which this Test Order is created. Since a Test Definition can be used in multiple Assays, this association ensures clarity on which template should be followed for the specific Test Order. It is necessary to establish this association prior to the Assay Run to avoid ambiguity.
- `procedureMethodExecutionInstance` (ProcedureMethodExecutionInstanceRef, optional, nullable) — The execution instance of the procedure method, linking the Test Order to the specific Assay Run to enable easy retrieval of all related Test Orders.
- `result` (ResultRef, optional, nullable) — The result of the test order.
- `sample` (EntityRef, optional) — The sample being tested in this test order
- `status` (enum, optional) — The status of the test order.
  - Allowed values: `PENDING`, `BLOCKED`, `IN_PROGRESS`, `CANCELLED`, `INVALID`, `COMPLETED`
- `testDefinition` (TestDefinitionRef, optional) — The test definition associated with this test order.

## Errors

### 400 Test Order Get 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 Test Order Get 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 Test Order Get 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 Test Order Get 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)
- `violated-policies` (list of enum, optional) — The budget policies that rejected the request, in canonical order: `user`, `integration`, then `tenant`.
  - Allowed values: `user`, `integration`, `tenant`

### 500 Test Order Get 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

### ContainerRef

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

### ProcedureRef

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

### ProcedureMethodExecutionInstanceRef

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

### ResultRef

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

### EntityRef

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

### TestDefinitionRef

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

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

## Examples

**Response**

```json
{
  "__typename": "__typename",
  "analysisComment": "analysisComment",
  "container": {
    "__typename": "__typename",
    "id": "id"
  },
  "createdAt": "createdAt",
  "dilutionFactor": 1,
  "id": "id",
  "modifiedAt": "modifiedAt",
  "name": "name",
  "procedure": {
    "__typename": "__typename",
    "id": "id"
  },
  "procedureMethodExecutionInstance": {
    "__typename": "__typename",
    "id": "id"
  },
  "result": {
    "__typename": "__typename",
    "id": "id"
  },
  "sample": {
    "__typename": "__typename",
    "id": "id"
  },
  "status": "PENDING",
  "testDefinition": {
    "__typename": "__typename",
    "id": "id"
  }
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/test-order/test_order_id"

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

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

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/test-order/test_order_id';
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);
}
```