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

# Batch update Dropdown

PATCH https://{tenant_name}.benchling.com/api/v3/dropdown:batch-update
Content-Type: application/json

Batch update Dropdown synchronously in one transaction. Maximum 25 items per request.

Reference: https://docs.benchling.com/docs/api/benchling-api/dropdown/batchupdate

## Authentication

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

## Request

### Body (application/json)

This endpoint expects an object.

- `items` (list of UpdateDropdownInputWithPathParams, required)

## Response

### 200

OK

- `items` (list of Dropdown, required)

## Errors

### 400 Dropdown Batch Update 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 Dropdown Batch Update 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 Dropdown Batch Update 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)

### 409 Dropdown Batch Update Request Conflict Error

Conflict

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

### 429 Dropdown Batch Update 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 Dropdown Batch Update 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

### UpdateDropdownInputWithPathParams

- `id` (string, required)
- `archiveReason` (string, optional)
- `archived` (boolean, optional)
- `name` (string, optional) — Updated dropdown name.
- `options` (list of UpdateDropdownInputWithPathParamsOptionsItem, optional) — Replacement list of options. Include existing options to retain them.

### Dropdown

A configurable list of predefined values used for standardizing data entry in schema fields. Dropdowns provide controlled vocabulary choices that ensure consistency when users fill out entity and object fields. Each Dropdown belongs to a Registry (see `registry`) and contains one or more selectable options (see `DropdownOption`). Dropdowns are referenced by schema field definitions (see `DropdownLinkFieldDefinition`) to constrain the allowed values for a field. Organizations use dropdowns to enforce standardized terminology across experiments, samples, and other registered entities.

- `__typename` (string, optional)
- `archiveReason` (string, optional, nullable)
- `archived` (boolean, optional)
- `id` (string, optional) — ID of the dropdown
- `name` (string, optional) — Name of the dropdown
- `options` (string, optional) — Array of dropdown options
- `registry` (RegistryRef, optional) — The registry that the dropdown belongs to

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### UpdateDropdownInputWithPathParamsOptionsItem

### RegistryRef

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

### CreateDropdownOptionInput

- `name` (string, required) — The display name of this dropdown option.

### UpdateDropdownOptionInput

- `id` (string, required)
- `archiveReason` (string, optional)
- `archived` (boolean, optional)
- `name` (string, optional) — Updated display name.

## Examples

**Request**

```json
{
  "items": [
    {
      "id": "id"
    }
  ]
}
```

**Response**

```json
{
  "items": [
    {
      "__typename": "__typename",
      "archiveReason": "archiveReason",
      "archived": true,
      "id": "id",
      "name": "name",
      "options": "options"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/dropdown:batch-update"

payload = { "items": [{ "id": "id" }] }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/dropdown:batch-update';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"items":[{"id":"id"}]}'
};

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