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

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

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

Reference: https://docs.benchling.com/docs/api/benchling-api/location-schema/batchupdate

## Authentication

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

## Request

### Headers

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

### Body (application/json)

This endpoint expects an object.

- `items` (list of UpdateLocationSchemaInputWithPathParams, required)

## Response

### 200

OK

- `items` (list of LocationSchema, required)

## Errors

### 400 Location Schema 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 Location Schema 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 Location Schema 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 Location Schema 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 Location Schema 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 Location Schema 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

### UpdateLocationSchemaInputWithPathParams

- `id` (string, required) — The API ID of the schema to update. The schema must exist and be accessible.
- `archiveReason` (string, optional)
- `archived` (boolean, optional)
- `description` (string, optional) — Updated description. When provided, must be at most 1000 characters.
- `name` (string, optional) — Updated user-facing name. When provided, must be non-empty after stripping whitespace, at most 255 characters, and unique within the organization.
- `prefix` (string, optional) — The prefix used for auto-generating barcodes for inventory items of this schema. Must be unique within the registry and cannot end in a digit.
- `systemName` (string, optional) — Updated SQL identifier for the warehouse table name. When provided, must match the pattern [a-z_][a-z0-9_$]*, cannot be a reserved table name, cannot start with 'bnch$', and must be unique within the organization.
- `displayName` (string, optional, deprecated) — Deprecated. Use name instead.

### LocationSchema

Defines the structure and metadata for a category of Locations in Benchling's inventory system. A LocationSchema specifies schema field definitions for capturing location-specific data (e.g., temperature range, access restrictions) and an optional Registry association with display ID prefix. LocationSchemas categorize different types of storage areas such as "Freezer", "Refrigerator", "Shelf", or "Room". Locations conforming to a schema inherit its field definitions, allowing consistent metadata capture across similar storage types.

- `__typename` (string, optional)
- `archiveReason` (string, optional, nullable)
- `archived` (boolean, optional)
- `createdAt` (string, optional, nullable)
- `description` (string, optional) — A description of the schema.
- `fieldDefinitions` (string, optional)
- `id` (string, optional)
- `modifiedAt` (string, optional, nullable)
- `name` (string, optional)
- `prefix` (string, optional, nullable)
- `registry` (RegistryRef, optional, nullable)
- `systemName` (string, optional) — A unique, stable identifier for this schema used for programmatic access and integrations.
- `type` (string, optional, nullable)

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### RegistryRef

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

## Examples

**Request**

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

**Response**

```json
{
  "items": [
    {
      "__typename": "__typename",
      "archiveReason": "archiveReason",
      "archived": true,
      "createdAt": "createdAt",
      "description": "description",
      "fieldDefinitions": "fieldDefinitions",
      "id": "id",
      "modifiedAt": "modifiedAt",
      "name": "name",
      "prefix": "prefix",
      "systemName": "systemName",
      "type": "type"
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/location-schema: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/location-schema: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);
}
```