> 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 create Dropdown

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

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

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

## 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 CreateDropdownInput, required)

## Response

### 201

Created

- `items` (list of Dropdown, required)

## Errors

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

### CreateDropdownInput

- `name` (string, required) — Name of the dropdown. Must be unique within the registry.
- `options` (list of CreateDropdownOptionInput, required) — The initial list of selectable options.
- `registryId` (string, required) — The API ID of the registry this dropdown belongs to.

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

### CreateDropdownOptionInput

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

### RegistryRef

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

## Examples

**Request**

```json
{
  "items": [
    {
      "name": "name",
      "options": [
        {
          "name": "name"
        }
      ],
      "registryId": "registryId"
    }
  ]
}
```

**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-create"

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

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

print(response.json())
```

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

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