Benchling Well Plate Position API

Represents a single well within a WellPlate, functioning as a fixed container at a specific grid position. Each WellPlatePosition has coordinates identifying its row and column, can hold sample contents (see ContainerContent), and tracks quantity as a Measurement. Wells can be assigned an ExperimentalRole for assay organization and support freeze/thaw tracking (see FreezeThawInfo) and expiration tracking (see ExpirationInfo) when enabled on the well's ContainerSchema. Unlike containers in a MatrixPlate, WellPlatePositions are permanent parts of the plate structure and cannot be removed or repositioned. Wells are accessed through the parent WellPlate's positions field.

Operations 2

GET /well-plate-position/items List WellPlatePosition items #
GET /well-plate-position/{well_plate_position_id} Get WellPlatePosition by ID #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/benchling-wellplateposition-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

benchling-wellplateposition-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  title: Benchling Well Plate Position API
  version: 2.0.0
  description: 'Represents a single well within a WellPlate, functioning as a fixed container at a

    specific grid position. Each WellPlatePosition has coordinates identifying its row

    and column, can hold sample contents (see ContainerContent), and tracks quantity as

    a Measurement. Wells can be assigned an ExperimentalRole for assay organization and

    support freeze/thaw tracking (see FreezeThawInfo) and expiration tracking (see

    ExpirationInfo) when enabled on the well''s ContainerSchema. Unlike containers in a

    MatrixPlate, WellPlatePositions are permanent parts of the plate structure and cannot

    be removed or repositioned. Wells are accessed through the parent WellPlate''s positions

    field.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'Represents a single well within a WellPlate, functioning as a fixed container at a

    specific grid position. Each WellPlatePosition has coordinates identifying its row

    and column, can hold sample contents (see ContainerContent), and tracks quantity as

    a Measurement. Wells can be assigned an ExperimentalRole for assay organization and

    support freeze/thaw tracking (see FreezeThawInfo) and expiration tracking (see

    ExpirationInfo) when enabled on the well''s ContainerSchema. Unlike containers in a

    MatrixPlate, WellPlatePositions are permanent parts of the plate structure and cannot

    be removed or repositioned. Wells are accessed through the parent WellPlate''s positions

    field.'
  name: WellPlatePosition
  x-bnch-organization: Benchling
paths:
  /well-plate-position/items:
    get:
      description: List WellPlatePosition items.
      operationId: WellPlatePosition.List
      parameters:
      - $ref: '#/components/parameters/createdAt.gt'
      - $ref: '#/components/parameters/createdAt.gte'
      - $ref: '#/components/parameters/createdAt.lt'
      - $ref: '#/components/parameters/createdAt.lte'
      - $ref: '#/components/parameters/id.anyOf'
      - $ref: '#/components/parameters/modifiedAt.gt'
      - $ref: '#/components/parameters/modifiedAt.gte'
      - $ref: '#/components/parameters/modifiedAt.lt'
      - $ref: '#/components/parameters/modifiedAt.lte'
      - $ref: '#/components/parameters/name.anyOf'
      - $ref: '#/components/parameters/name.anyOf.caseSensitive'
      - $ref: '#/components/parameters/nextToken'
      - $ref: '#/components/parameters/omit'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/returning'
      - description: 'Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.'
        in: query
        name: sort
        schema:
          default: modifiedAt:desc
          enum:
          - createdAt:asc
          - createdAt:desc
          - modifiedAt:asc
          - modifiedAt:desc
          type: string
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WellPlatePositionPaginatedList'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: List WellPlatePosition items
      tags:
      - WellPlatePosition
      x-bnch-rate-limit-tier: 4
  /well-plate-position/{well_plate_position_id}:
    get:
      description: Get a single WellPlatePosition by ID.
      operationId: WellPlatePosition.Get
      parameters:
      - description: ID of the WellPlatePosition.
        in: path
        name: well_plate_position_id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/returning'
      - $ref: '#/components/parameters/omit'
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WellPlatePosition'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get WellPlatePosition by ID
      tags:
      - WellPlatePosition
      x-bnch-rate-limit-tier: 5
components:
  schemas:
    GridCoordinates:
      description: Read model representing a fillable position in a box or plate.
      properties:
        __typename:
          type: string
        column:
          description: The 0-indexed column index of the position
          type: integer
        index:
          description: 'The 1-indexed position determined by counting across rows.

            For example, for a six-well plate:

            +---+---+---+

            | 1 | 2 | 3 |

            +---+---+---+

            | 4 | 5 | 6 |

            +---+---+---+'
          type: integer
        position:
          description: 'The alphanumeric position, where rows are indexed alphabetically and columns are indexed numerically,

            starting from "A1"'
          type: string
        row:
          description: The 0-indexed row index of the position
          type: integer
      type: object
    WellPlatePosition:
      description: 'Represents a single well within a WellPlate, functioning as a fixed container at a

        specific grid position. Each WellPlatePosition has coordinates identifying its row

        and column, can hold sample contents (see ContainerContent), and tracks quantity as

        a Measurement. Wells can be assigned an ExperimentalRole for assay organization and

        support freeze/thaw tracking (see FreezeThawInfo) and expiration tracking (see

        ExpirationInfo) when enabled on the well''s ContainerSchema. Unlike containers in a

        MatrixPlate, WellPlatePositions are permanent parts of the plate structure and cannot

        be removed or repositioned. Wells are accessed through the parent WellPlate''s positions

        field.'
      properties:
        __typename:
          type: string
        contents:
          description: Well contents of the well plate.
          items:
            $ref: '#/components/schemas/ContainerContent'
          type: array
        coordinates:
          $ref: '#/components/schemas/GridCoordinates'
          description: Coordinates of the current position within the well plate.
        createdAt:
          description: When the well plate was created.
          format: datetime
          type: string
        expirationInfo:
          $ref: '#/components/schemas/ExpirationInfo'
          description: Expiration info for the container.
        id:
          description: The ID of the container representing the well at this plate position.
          type: string
        modifiedAt:
          description: When the well plate was last modified.
          format: datetime
          type: string
        name:
          description: The name of the container representing the well at this position.
          type: string
        quantity:
          description: Quantity of a well. Supports mass, volume, and other quantities.
          oneOf:
          - $ref: '#/components/schemas/Measurement'
          - type: 'null'
        role:
          oneOf:
          - $ref: '#/components/schemas/ExperimentalRole'
          - type: 'null'
        schema:
          $ref: '#/components/schemas/ContainerSchemaRef'
          description: The container schema used by wells in the well plate.
      type: object
    ExperimentalRole:
      description: 'Represents the complete experimental designation of a well or container within an assay,

        combining a primary role (see PrimaryExperimentalRole), replicate group number, and

        optional subrole. The group field identifies replicate sets: wells with the same primary

        role and group number are treated as technical replicates for statistical analysis. The

        subrole field provides additional categorization for controls (e.g., POSITIVE, NEGATIVE,

        MAXIMUM, MINIMUM); only CONTROL primary roles may have subroles. ExperimentalRole is

        used in plate-based workflows to define experimental layouts (see PlateMapPosition) and

        annotate wells in FixedPlate and Container objects.'
      properties:
        __typename:
          type: string
        group:
          description: Role group (aka replicate id)
          type: integer
        primaryRole:
          description: Primary role
          enum:
          - CONTROL
          - SAMPLE
          - BLANK
          - STANDARD
          type: string
        subrole:
          description: Subrole, used to differentiate different sub types of a role (e.g. positive control)
          type:
          - 'null'
          - string
      type: object
    WellPlatePositionPaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/WellPlatePosition'
          type: array
        nextToken:
          type: string
      type: object
    InternalServerError:
      properties:
        detail:
          type:
          - 'null'
          - string
          - object
        errorId:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type:
          - 'null'
          - string
        type:
          type: string
      required:
      - type
      - title
      - detail
      - status
      - instance
      type: object
    ContainerContent:
      description: 'Represents a biological or chemical entity stored within a Container or well. Each

        ContainerContent links an Entity (such as a DNA sequence, protein, or custom entity)

        to its storage location, along with an optional concentration measurement. The

        timestamps track when the entity was first placed in the container and when the

        concentration was last modified. A container can hold multiple ContainerContent

        items representing different entities or samples stored together.'
      properties:
        __typename:
          type: string
        concentration:
          description: Concentration of the entity in the container.
          oneOf:
          - $ref: '#/components/schemas/Measurement'
          - type: 'null'
        createdAt:
          description: When the container was first filled with this entity.
          format: datetime
          type: string
        entity:
          description: The entity in the container.
          oneOf:
          - $ref: '#/components/schemas/EntityRef'
          - type: 'null'
        modifiedAt:
          description: When the entity was last added to this container or the concentration was last changed.
          format: datetime
          type: string
      type: object
    Measurement:
      description: 'Represents a quantity with an associated unit of measurement within Benchling''s inventory

        system. Measurements are used throughout inventory to track container volumes, sample

        masses, concentrations, and other quantitative values. Each Measurement pairs a numeric

        value with a Unit (see Unit) to provide context-aware quantity handling. For example,

        a container might have a Measurement of 500 uL for its volume. Unlike ContainerQuantity

        which provides a simpler representation, Measurement supports the full Unit system with

        dimensional conversions.'
      properties:
        __typename:
          type: string
        unit:
          oneOf:
          - $ref: '#/components/schemas/UnitRef'
          - type: 'null'
        value:
          type:
          - 'null'
          - number
      type: object
    ExpirationInfo:
      description: 'Provides expiration tracking for inventory items such as containers and their

        contents. The expirationDate may be explicitly set on the container or inherited

        from the stored entity''s properties. The isExpired flag is a computed convenience

        field that returns true if the current date is past the expiration date. Items

        without an expiration date are considered non-expiring (isExpired returns false).'
      properties:
        __typename:
          type: string
        expirationDate:
          description: Expiration date of the item, potentially inherited from the contents or overridden.
          format: datetime
          type:
          - 'null'
          - string
        isExpired:
          description: Whether the item is past its expiration date. Items without an expiration date return False.
          type: boolean
      type: object
    ContainerSchemaRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    GeneralError:
      properties:
        detail:
          type:
          - 'null'
          - string
          - object
        instance:
          type: string
        status:
          type: integer
        title:
          type:
          - 'null'
          - string
        type:
          type: string
      required:
      - type
      - title
      - detail
      - status
      - instance
      type: object
    UnitRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    EntityRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
  parameters:
    pageSize:
      description: Number of results to return. Defaults to 50, maximum of 100.
      in: query
      name: pageSize
      schema:
        type: integer
    createdAt.gte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or after the specified time. e.g. >= 2017-04-30.
      in: query
      name: createdAt.gte
      schema:
        format: datetime
        type: string
    modifiedAt.gt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified after the specified time. e.g. > 2017-04-30.
      in: query
      name: modifiedAt.gt
      schema:
        format: datetime
        type: string
    modifiedAt.lte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or before the specified time. e.g. <= 2017-04-30.
      in: query
      name: modifiedAt.lte
      schema:
        format: datetime
        type: string
    id.anyOf:
      description: Restricts results to those matching any of the specified IDs. Comma-separated list.
      explode: false
      in: query
      name: id.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    omit:
      description: Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.
      explode: false
      in: query
      name: omit
      schema:
        items:
          type: string
        type: array
    modifiedAt.lt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. < 2017-04-30.
      in: query
      name: modifiedAt.lt
      schema:
        format: datetime
        type: string
    createdAt.gt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created after the specified time. e.g. > 2017-04-30.
      in: query
      name: createdAt.gt
      schema:
        format: datetime
        type: string
    createdAt.lt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created before the specified time. e.g. < 2017-04-30.
      in: query
      name: createdAt.lt
      schema:
        format: datetime
        type: string
    returning:
      description: Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
      explode: false
      in: query
      name: returning
      schema:
        items:
          type: string
        type: array
    nextToken:
      description: Token for pagination
      in: query
      name: nextToken
      schema:
        type: string
    name.anyOf:
      description: Restricts results to those that match any of the specified names. Case insensitive. Warning - this filter can be non-performant due to case insensitivity. Ensure only one name filter is used at a time. Comma-separated list.
      explode: false
      in: query
      name: name.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    name.anyOf.caseSensitive:
      description: Restricts results to those that match any of the specified names. Case sensitive. Ensure only one name filter is used at a time. Comma-separated list.
      explode: false
      in: query
      name: name.anyOf.caseSensitive
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    modifiedAt.gte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or after the specified time. e.g. >= 2017-04-30.
      in: query
      name: modifiedAt.gte
      schema:
        format: datetime
        type: string
    createdAt.lte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or before the specified time. e.g. <= 2017-04-30.
      in: query
      name: createdAt.lte
      schema:
        format: datetime
        type: string
  responses:
    NotFound:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/GeneralError'
      description: Not Found
    TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/GeneralError'
      description: Too Many Requests
    BadRequest:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/GeneralError'
      description: Bad Request
    Forbidden:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/GeneralError'
      description: Forbidden
    InternalServerError:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
      description: Internal Server Error
  securitySchemes:
    basicApiKeyAuth:
      description: Use issued API key for standard access to the API
      scheme: basic
      type: http
    basicClientIdSecretAuth:
      description: Auth used as part of client credentials OAuth flow prior to receiving a bearer token.
      scheme: basic
      type: http
    oAuth:
      description: OAuth2 Client Credentials flow intended for service access
      flows:
        clientCredentials:
          scopes: {}
          tokenUrl: /oauth/token
      type: oauth2