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

# Stamp PlateRecord onto inventory plate

POST https://{tenant_name}.benchling.com/api/v3/plate-record:bulk-stamp-plate-record-onto-inventory
Content-Type: application/json

Stamp a plate record's (or plate design's) snapshot onto an existing inventory plate. Every layer the source plate carries is applied; a plate record or plate design only carries a subset of layers, and layer types it doesn't have are left untouched on the target plate. Content and volumes from the plate's content layer become the plate's authoritative state for that dimension: they're written onto the target plate's wells, and any well the layer doesn't cover is cleared to match. A plate with no content layer at all doesn't capture that dimension, so the target plate's existing contents and volumes are left as they are. A label layer sets the target plate's well experimental roles, schema tags, and volumes. Column mappings map columns from any plate layer onto the target plate's existing container-schema fields.

The scratch file must be a JSONL file where each line is a JSON object with the following structure:

\{"request\_id": "unique-id-per-row", "input\_object": \{}}

The input\_object fields (all camelCase) are:

* plateRecordId (required): ID of the plate record whose snapshot should be stamped onto the target plate.
* inventoryPlateId or inventoryPlateBarcode (exactly one required): ID or barcode of the existing inventory plate to stamp. The plate must be writable, must be a well plate (not a matrix plate), and its dimensions must exactly match the source plate record; otherwise the row returns a 400. Each inventory plate can be stamped at most once per request.
* columnMappings: List of \{layerName, columnName, schemaFieldName} objects mapping plate record layer columns onto the target plate's container-schema fields.

Reference: https://docs.benchling.com/docs/api/benchling-api/plate-record/bulkstampplaterecordontoinventory

## 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 a BulkImport.

- `fileId` (string, required) — The API ID of the scratch file (`scrfile_XXXXXXXX`) containing the items to import. The referenced file must be a scratch file whose upload has completed successfully.

## Response

### 202

Task started

- `pollingUri` (string, optional)
- `taskId` (string, optional)

## Errors

### 400 Plate Record Bulk Stamp Plate Record onto Inventory 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 Plate Record Bulk Stamp Plate Record onto Inventory 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 Plate Record Bulk Stamp Plate Record onto Inventory 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 Plate Record Bulk Stamp Plate Record onto Inventory 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 Plate Record Bulk Stamp Plate Record onto Inventory 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 Plate Record Bulk Stamp Plate Record onto Inventory 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

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

## Examples

**Request**

```json
{
  "fileId": "scrfile_jdf8BV24kLmN"
}
```

**Response**

```json
{
  "pollingUri": "pollingUri",
  "taskId": "taskId"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/plate-record:bulk-stamp-plate-record-onto-inventory"

payload = { "fileId": "scrfile_jdf8BV24kLmN" }
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/plate-record:bulk-stamp-plate-record-onto-inventory';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"fileId":"scrfile_jdf8BV24kLmN"}'
};

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