---
title: "Create MatrixPlate"
method: POST
path: "/api/v3/matrix-plate"
tags: ["Matrix Plate"]
---

# Create MatrixPlate

`POST /api/v3/matrix-plate`

## Request

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

Create MatrixPlate.

## Headers

- `EARLY-ACCESS` string

## Request body

- CreateMatrixPlateInput
  - `barcode` string: Barcode of the plate
  - `containerSchemaId` string
  - `name` string: Name of the plate; defaults to barcode if name is not provided
  - `parentStorageId` string
  - `positions` MatrixPlatePositionInput[]: The wells of the plate
    - `barcode` string
    - `position` string, required
  - `projectId` string
  - `schemaFields` object
  - `schemaId` string, required

## Response `201`

Created

- MatrixPlate: A MatrixPlate is a rack-style storage plate in Benchling's inventory system. Each position in a MatrixPlate can be empty or can hold a movable Container object. Note that this behavior differs from that of WellPlates, in which each well is a permanent part of the plate. MatrixPlates are ideal for modeling tube racks, sample storage boxes with removable tubes, and other flexible storage formats. Each plate tracks its capacity (totalCapacity, availableCapacity, occupiedCapacity) and conforms to a MatrixPlateSchema that defines the grid dimensions and optionally restricts which ContainerSchema types can be stored. MatrixPlates can be stored in Locations, associated with Studies, and identified by barcode.
  - `__typename` string
  - `archiveReason` string, nullable: Why the plate is archived
  - `archived` boolean: Whether the plate is archived
  - `availableCapacity` integer: The number of available positions in a matrix plate.
  - `barcode` string, nullable: Barcode of the plate
  - `createdAt` string, datetime: DateTime the plate was created
  - `id` string: The ID of the plate.
  - `modifiedAt` string, datetime: DateTime the plate was last modified
  - `name` string: Name of the plate; defaults to barcode if name is not provided
  - `occupiedCapacity` integer: The number of containers currently in a matrix plate.
  - `parentStorage` LocationRef
    - `__typename` string
    - `id` string, api_id
  - `positions` MatrixPlatePosition[]: The wells of the plate
    - `__typename` string
    - `container` ContainerRef
      - `__typename` string
      - `id` string, api_id
    - `coordinates` GridCoordinates: Read model representing a fillable position in a box or plate.
      - `__typename` string
      - `column` integer: The 0-indexed column index of the position
      - `index` integer: The 1-indexed position determined by counting across rows. For example, for a six-well plate: +---+---+---+ | 1 | 2 | 3 | +---+---+---+ | 4 | 5 | 6 | +---+---+---+
      - `position` string: The alphanumeric position, where rows are indexed alphabetically and columns are indexed numerically, starting from "A1"
      - `row` integer: The 0-indexed row index of the position
  - `project` ProjectRef
    - `__typename` string
    - `id` string, api_id
  - `schema` MatrixPlateSchemaRef
    - `__typename` string
    - `id` string, api_id
  - `totalCapacity` integer: The total capacity of a matrix plate (i.e. how many containers it can store).
  - `creator` PrincipalRef
    - `__typename` string
    - `id` string, api_id
  - `schemaFields` SchemaFieldValue[], nullable
    - `__typename` string
    - `fieldDefinition` SchemaFieldDefinitionRef
      - `__typename` string
      - `id` string, api_id
    - `id` string
    - `linkedEntityId` string, nullable
    - `value` union: Types of values that Benchling can interpret.
      - object: A type that represents a list of BenchlingValues, used for multi-value cells (e.g. alias columns).
        - `__typename` 'ArrayValue', required: Discriminator value: ArrayValue
        - `value` SingularBenchlingValue[]
          - union: A union of value types that can appear as elements within an ArrayValue. Identical to BenchlingValue but excludes ArrayValue to prevent nesting. Keep in sync with BenchlingValue.
            - object: A type that represents boolean values.
              - …
            - object: A type that represents datetime values.
              - …
            - object: A type that represents date values.
              - …
            - object: A type that represents decimal value as strings.
              - …
            - object: A type that represents integer values.
              - …
            - object: A type that represents JSON values.
              - …
            - object: A type that represents a list of links to other objects.
              - …
            - object: A type that represents links to other objects.
              - …
            - object: A type that represents text (string) values with an associated URL.
              - …
            - object: A type that represents text (string) values.
              - …
      - object: A type that represents boolean values.
        - `__typename` 'BooleanValue', required: Discriminator value: BooleanValue
        - `value` boolean: The boolean value.
      - object: A type that represents datetime values.
        - `__typename` 'DateTimeValue', required: Discriminator value: DateTimeValue
        - `value` string, datetime: The datetime value with UTC as the timezone.
      - object: A type that represents date values.
        - `__typename` 'DateValue', required: Discriminator value: DateValue
        - `value` string, date: The date value.
      - object: A type that represents decimal value as strings.
        - `__typename` 'DecimalValue', required: Discriminator value: DecimalValue
        - `numericValue` number, double, nullable: Deprecated. The float representation of the decimal value.
        - `value` string, nullable: The decimal value in a string representation
      - object: A type that represents integer values.
        - `__typename` 'IntegerValue', required: Discriminator value: IntegerValue
        - `value` integer: The integer value.
      - object: A type that represents JSON values.
        - `__typename` 'JsonValue', required: Discriminator value: JsonValue
        - `value` union: The JSON value.
          - object
          - string[]
          - string
          - number, double
          - boolean
      - object: A type that represents a list of links to other objects.
        - `__typename` 'ObjectLinkListValue', required: Discriminator value: ObjectLinkListValue
        - `value` LinkableDomainObject[]: The list of objects that this value links to. Inaccessible objects may be returned instead if the object is not found with the current permission set.
          - union: A union representing items that can be linked to. If you have a type that can be linked to, it can only be added once it's in beta.
            - object: AaSequence variant
              - …
            - object: Attachment variant
              - …
            - object: Box variant
              - …
            - object: Container variant
              - …
            - object: CustomEntity variant
              - …
            - object: DnaOligo variant
              - …
            - object: DnaSequence variant
              - …
            - object: DropdownOption variant
              - …
            - object: Entry variant
              - …
            - object: Inaccessible variant
              - …
            - object: Location variant
              - …
            - object: MatrixPlate variant
              - …
            - object: Mixture variant
              - …
            - object: Molecule variant
              - …
            - object: OligoConjugate variant
              - …
            - object: OligoDuplex variant
              - …
            - object: Protein variant
              - …
            - object: Result variant
              - …
            - object: RnaOligo variant
              - …
            - object: RnaSequence variant
              - …
            - object: Run variant
              - …
            - object: WellPlate variant
              - …
      - object: A type that represents links to other objects.
        - `__typename` 'ObjectLinkValue', required: Discriminator value: ObjectLinkValue
        - `value` union: A union representing items that can be linked to. If you have a type that can be linked to, it can only be added once it's in beta.
          - object: AaSequence variant
            - `__typename` 'AaSequence', required: Discriminator value: AaSequence
            - `id` string, api_id
          - object: Attachment variant
            - `__typename` 'Attachment', required: Discriminator value: Attachment
            - `id` string, api_id
          - object: Box variant
            - `__typename` 'Box', required: Discriminator value: Box
            - `id` string, api_id
          - object: Container variant
            - `__typename` 'Container', required: Discriminator value: Container
            - `id` string, api_id
          - object: CustomEntity variant
            - `__typename` 'CustomEntity', required: Discriminator value: CustomEntity
            - `id` string, api_id
          - object: DnaOligo variant
            - `__typename` 'DnaOligo', required: Discriminator value: DnaOligo
            - `id` string, api_id
          - object: DnaSequence variant
            - `__typename` 'DnaSequence', required: Discriminator value: DnaSequence
            - `id` string, api_id
          - object: DropdownOption variant
            - `__typename` 'DropdownOption', required: Discriminator value: DropdownOption
            - `id` string, api_id
          - object: Entry variant
            - `__typename` 'Entry', required: Discriminator value: Entry
            - `id` string, api_id
          - object: Inaccessible variant
            - `__typename` 'Inaccessible', required: Discriminator value: Inaccessible
            - `id` string, api_id
          - object: Location variant
            - `__typename` 'Location', required: Discriminator value: Location
            - `id` string, api_id
          - object: MatrixPlate variant
            - `__typename` 'MatrixPlate', required: Discriminator value: MatrixPlate
            - `id` string, api_id
          - object: Mixture variant
            - `__typename` 'Mixture', required: Discriminator value: Mixture
            - `id` string, api_id
          - object: Molecule variant
            - `__typename` 'Molecule', required: Discriminator value: Molecule
            - `id` string, api_id
          - object: OligoConjugate variant
            - `__typename` 'OligoConjugate', required: Discriminator value: OligoConjugate
            - `id` string, api_id
          - object: OligoDuplex variant
            - `__typename` 'OligoDuplex', required: Discriminator value: OligoDuplex
            - `id` string, api_id
          - object: Protein variant
            - `__typename` 'Protein', required: Discriminator value: Protein
            - `id` string, api_id
          - object: Result variant
            - `__typename` 'Result', required: Discriminator value: Result
            - `id` string, api_id
          - object: RnaOligo variant
            - `__typename` 'RnaOligo', required: Discriminator value: RnaOligo
            - `id` string, api_id
          - object: RnaSequence variant
            - `__typename` 'RnaSequence', required: Discriminator value: RnaSequence
            - `id` string, api_id
          - object: Run variant
            - `__typename` 'Run', required: Discriminator value: Run
            - `id` string, api_id
          - object: WellPlate variant
            - `__typename` 'WellPlate', required: Discriminator value: WellPlate
            - `id` string, api_id
      - object: A type that represents text (string) values with an associated URL.
        - `__typename` string, required
        - `url` string: The URL associated with the value. Please use `TextValue` if you don't want a URL.
        - `value` string: The text value. It may or may not be an empty string.
      - object: A type that represents text (string) values.
        - `__typename` string, required
        - `value` string: The text value. It may or may not be an empty 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/c9f087b98b8b?raw)
