---
title: "Transfer PlateRecords asynchronously"
method: POST
path: "/api/v3/plate-record:transfer-async"
tags: ["Plate Record"]
---

# Transfer PlateRecords asynchronously

`POST /api/v3/plate-record:transfer-async`

## Request

- Base URL: `https://{tenant_name}.benchling.com`
- URL: `https://{tenant_name}.benchling.com/api/v3/plate-record:transfer-async`
- Auth: HTTP bearer

Asynchronously create destination plate record(s) by transferring content out of existing source plates, alongside a copy of each source holding what remained.

## Request body

- PlateRecordTransferRequestInput
  - `destinationBarcodes` string[]: Optional barcode to stamp on each destination plate record, one entry per destination plate in destination-index order. Length must equal the number of destination plates.
  - `height` integer, required: Number of rows in each destination plate record.
  - `metadataLayers` MetadataColumnInput[]: Metadata layers to apply to each created destination plate record.
    - `name` string, required
    - `plateValue` union
      - string
      - integer
      - number, double
      - boolean
    - `systemName` string
    - `type` 'text' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime', required
    - `wells` MetadataWellInput[]
      - `value` union, required
        - string
        - integer
        - number, double
        - boolean
      - `wellPosition` string, required
  - `name` string, required: Base name for destination plate record(s). If multiple are created, numeric suffixes are appended.
  - `plateSchemaId` string: ID of the plate schema to apply to each destination plate record. If omitted, no plate schema is attached.
  - `transfer` PlateRecordTransferInput, required
    - `direction` 'ACROSS_ROWS' | 'DOWN_COLUMNS': Well traversal order for layout-based transfers. Defaults to ACROSS_ROWS.
    - `layout` 'COLUMN_INTERLEAVE' | 'INTERLEAVE' | 'REVERSE_COLUMN_INTERLEAVE' | 'REVERSE_INTERLEAVE' | 'REVERSE_STAMP_TO_QUADRANTS' | 'STAMP' | 'STAMP_TO_QUADRANTS': Layout algorithm used with sourcePlateIds. Determines the fan ratio of sources to destinations: STAMP (1:1), STAMP_TO_QUADRANTS/INTERLEAVE (4:1), COLUMN_INTERLEAVE (2:1), and their REVERSE_ variants (1:4, 1:2).
    - `operations` WellTransferInput[]: Explicit well-to-well moves. Use this mode for fan-in, many-to-many, or serial dilution transfers. Mutually exclusive with sourcePlateIds + layout.
      - `destinationPlateIndex` integer, required
      - `destinationWellPosition` string, required
      - `diluentEntityId` string
      - `diluentQuantity` QuantityInput
        - `amount` number, double, required
        - `unit` UnitInputWithPathParams
          - `id` string, required
          - `versionNumber` integer
      - `finalVolume` QuantityInput
        - `amount` number, double, required
        - `unit` UnitInputWithPathParams
          - `id` string, required
          - `versionNumber` integer
      - `sourceDestinationPlateIndex` integer
      - `sourcePlateId` string
      - `sourceWellPosition` string, required
      - `transferQuantity` QuantityInput
        - `amount` number, double, required
        - `unit` UnitInputWithPathParams
          - `id` string, required
          - `versionNumber` integer
    - `skipEmpty` boolean: If true (default), empty source wells are skipped rather than producing empty destination wells in layout-based transfers.
    - `sourcePlateIds` string[]: Ordered source plates for layout-based transfers. Consumed group by group according to the fan ratio of the chosen layout. Mutually exclusive with operations.
    - `transferQuantity` QuantityInput
      - `amount` number, double, required
      - `unit` UnitInputWithPathParams
        - `id` string, required
        - `versionNumber` integer
  - `width` integer, required: Number of columns in each destination plate record.

## Response `202`

Task started

- AsyncTaskLink
  - `pollingUri` string, uri
  - `taskId` string

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/benchling/apis/benchling-api.md) - [All operations](https://skmtc.dev/benchling/apis/benchling-api/llms.txt) - [OpenAPI document](https://skmtc.dev/benchling/apis/benchling-api/revisions/3873a10bf7b8?raw)
