Benchling Run API

A Run represents an execution instance of a lab automation workflow in Benchling, capturing the inputs, outputs, and metadata for a single assay or instrument operation. Runs conform to a RunSchema that defines their structure including input generators (see AutomationInputGenerator) for creating worklists and output processors (see AutomationOutputProcessor) for parsing instrument results. Runs are typically embedded in notebook entries (via the entry field) and can generate associated Analyses for data processing. Each run tracks validation status (VALID or INVALID) with optional comments, enabling quality control workflows. Runs belong to a Project for access control and can be archived when superseded or invalidated. Also known as "assay runs" in the lab automation context.

Operations 2

GET /run/items List Run items #
GET /run/{run_id} Get Run 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-run-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-run-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 Run API
  version: 2.0.0
  description: 'A Run represents an execution instance of a lab automation workflow in Benchling, capturing

    the inputs, outputs, and metadata for a single assay or instrument operation. Runs conform

    to a RunSchema that defines their structure including input generators (see AutomationInputGenerator)

    for creating worklists and output processors (see AutomationOutputProcessor) for parsing

    instrument results. Runs are typically embedded in notebook entries (via the entry field)

    and can generate associated Analyses for data processing. Each run tracks validation status

    (VALID or INVALID) with optional comments, enabling quality control workflows. Runs belong

    to a Project for access control and can be archived when superseded or invalidated. Also

    known as "assay runs" in the lab automation context.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'A Run represents an execution instance of a lab automation workflow in Benchling, capturing

    the inputs, outputs, and metadata for a single assay or instrument operation. Runs conform

    to a RunSchema that defines their structure including input generators (see AutomationInputGenerator)

    for creating worklists and output processors (see AutomationOutputProcessor) for parsing

    instrument results. Runs are typically embedded in notebook entries (via the entry field)

    and can generate associated Analyses for data processing. Each run tracks validation status

    (VALID or INVALID) with optional comments, enabling quality control workflows. Runs belong

    to a Project for access control and can be archived when superseded or invalidated. Also

    known as "assay runs" in the lab automation context.'
  name: Run
  x-bnch-core-type: Run
  x-bnch-organization: Benchling
paths:
  /run/items:
    get:
      description: List Run items.
      operationId: Run.List
      parameters:
      - $ref: '#/components/parameters/archiveReason.anyOf'
      - $ref: '#/components/parameters/archived.anyOf'
      - $ref: '#/components/parameters/createdAt.gt'
      - $ref: '#/components/parameters/createdAt.gte'
      - $ref: '#/components/parameters/createdAt.lt'
      - $ref: '#/components/parameters/createdAt.lte'
      - $ref: '#/components/parameters/creator.anyOf'
      - $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/nextToken'
      - $ref: '#/components/parameters/omit'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/returning'
      - $ref: '#/components/parameters/schema.anyOf'
      - $ref: '#/components/parameters/schema.eq'
      - 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/RunPaginatedList'
          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 Run items
      tags:
      - Run
      x-bnch-rate-limit-tier: 4
  /run/{run_id}:
    get:
      description: Get a single Run by ID.
      operationId: Run.Get
      parameters:
      - description: ID of the Run.
        in: path
        name: run_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/Run'
          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 Run by ID
      tags:
      - Run
      x-bnch-rate-limit-tier: 5
webhooks:
  v3.run.created:
    post:
      description: Sent to Benchling Apps subscribed to `v3.run.created` when a Run they can access is created.
      operationId: Run.Created
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunCreatedWebhookEnvelopeV3'
        description: The `v3.run.created` event.
        required: true
      responses:
        '200':
          description: Return a 200 status code to acknowledge receipt of the webhook.
      summary: Run created
      tags:
      - Run
components:
  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
    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
    creator.anyOf:
      description: Restricts results to those created by any of the specified user IDs. Comma-separated list.
      explode: false
      in: query
      name: creator.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    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
    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
    schema.anyOf:
      description: Restricts results to those that match any of the specified schema IDs. Use only one `schema` filter arg at a time. Comma-separated list.
      explode: false
      in: query
      name: schema.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    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
    archiveReason.anyOf:
      description: Restricts items to those with any of the specified archive reasons. Use "NOT_ARCHIVED" to filter for unarchived items. Use "ANY_ARCHIVED" to filter for archived items regardless of reason. Use "ANY_ARCHIVED_OR_NOT_ARCHIVED" to return items for both archived and unarchived. Comma-separated list.
      explode: false
      in: query
      name: archiveReason.anyOf
      schema:
        items:
          type: string
        maxItems: 10
        type: array
    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
    archived.anyOf:
      description: If true, returns archived items. If false, returns unarchived items. If both true and false, returns archived and unarchived items. Comma-separated list.
      explode: false
      in: query
      name: archived.anyOf
      schema:
        items:
          type: boolean
        maxItems: 2
        type: array
    nextToken:
      description: Token for pagination
      in: query
      name: nextToken
      schema:
        type: string
    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
    schema.eq:
      description: Single schema ID. Restricts results to those that match the specified schema exactly. Use only one `schema` filter arg at a time.
      in: query
      name: schema.eq
      schema:
        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
  schemas:
    IRun:
      properties:
        __typename:
          type: string
        archiveReason:
          description: If the Run is archived, reason for archiving
          type:
          - 'null'
          - string
        archived:
          description: Whether the Run is archived
          type: boolean
        createdAt:
          description: DateTime at which the run was created
          format: datetime
          type:
          - 'null'
          - string
        id:
          type: string
        isReviewed:
          description: Whether this run is in a reviewed entry
          type:
          - 'null'
          - boolean
        modifiedAt:
          description: DateTime at which the run was last modified
          format: datetime
          type:
          - 'null'
          - string
        project:
          description: Project this run is in
          oneOf:
          - $ref: '#/components/schemas/ProjectRef'
          - type: 'null'
        schema:
          description: Schema that this run belongs to
          oneOf:
          - $ref: '#/components/schemas/RunSchemaRef'
          - type: 'null'
        validationComment:
          description: Comment for this run's validation status
          type:
          - 'null'
          - string
        validationStatus:
          description: Validation status of this run - must be either VALID or INVALID
          enum:
          - VALID
          - INVALID
          - null
          type:
          - 'null'
          - string
      type: object
    DateValue:
      description: A type that represents date values.
      properties:
        __typename:
          type: string
        value:
          description: The date value.
          format: date
          type: string
      type: object
    BooleanValue:
      description: A type that represents boolean values.
      properties:
        __typename:
          type: string
        value:
          description: The boolean value.
          type: boolean
      type: object
    WebhookApp:
      description: The Benchling App the webhook was delivered to.
      properties:
        id:
          description: API ID of the app.
          examples:
          - app_1jdbvuo2740aslk
          type: string
      required:
      - id
      type: object
    ProjectRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ObjectLinkValue:
      description: A type that represents links to other objects.
      properties:
        __typename:
          type: string
        value:
          $ref: '#/components/schemas/ObjectRef'
          description: The object that this value links to, or an Inaccessible object if not found with the current permission set.
      type: object
    RunSchemaRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    SchemaFieldValue:
      description: 'Represents a field value on a schematized object, pairing a `fieldDefinition` (describing the

        field''s type and constraints) with its actual `value` (a `BenchlingValue` such as text, number,

        date, or link to another object). The value may be null if no value has been set. Used within

        the `schemaFields` collection on objects that implement `HasSchema` to provide access to all

        custom field values defined by the object''s schema.'
      properties:
        __typename:
          type: string
        fieldDefinition:
          $ref: '#/components/schemas/SchemaFieldDefinitionRef'
        id:
          type: string
        linkedEntityId:
          type:
          - 'null'
          - string
        value:
          description: Union of BooleanValue, DateTimeValue, DateValue, DecimalValue, IntegerValue, JsonValue, ObjectLinkValue, ObjectLinkListValue, TextAndUrlValue, TextValue, ArrayValue
          oneOf:
          - anyOf:
            - $ref: '#/components/schemas/BooleanValue'
            - $ref: '#/components/schemas/DateTimeValue'
            - $ref: '#/components/schemas/DateValue'
            - $ref: '#/components/schemas/DecimalValue'
            - $ref: '#/components/schemas/IntegerValue'
            - $ref: '#/components/schemas/JsonValue'
            - $ref: '#/components/schemas/ObjectLinkValue'
            - $ref: '#/components/schemas/ObjectLinkListValue'
            - $ref: '#/components/schemas/TextAndUrlValue'
            - $ref: '#/components/schemas/TextValue'
            - $ref: '#/components/schemas/ArrayValue'
            discriminator:
              propertyName: __typename
          - type: 'null'
      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
    DecimalValue:
      description: A type that represents decimal value as strings.
      properties:
        __typename:
          type: string
        numericValue:
          deprecated: true
          description: Deprecated. The float representation of the decimal value.
          type:
          - 'null'
          - number
        value:
          description: The decimal value in a string representation
          type:
          - 'null'
          - string
      type: object
    ArrayValue:
      description: A type that represents a list of BenchlingValues, used for multi-value cells (e.g. alias columns).
      properties:
        __typename:
          type: string
        value:
          items:
            anyOf:
            - $ref: '#/components/schemas/BooleanValue'
            - $ref: '#/components/schemas/DateTimeValue'
            - $ref: '#/components/schemas/DateValue'
            - $ref: '#/components/schemas/DecimalValue'
            - $ref: '#/components/schemas/IntegerValue'
            - $ref: '#/components/schemas/JsonValue'
            - $ref: '#/components/schemas/ObjectLinkValue'
            - $ref: '#/components/schemas/ObjectLinkListValue'
            - $ref: '#/components/schemas/TextAndUrlValue'
            - $ref: '#/components/schemas/TextValue'
            description: Union of BooleanValue, DateTimeValue, DateValue, DecimalValue, IntegerValue, JsonValue, ObjectLinkValue, ObjectLinkListValue, TextAndUrlValue, TextValue
            discriminator:
              propertyName: __typename
          type: array
      type: object
    RunCreatedWebhookV3:
      allOf:
      - $ref: '#/components/schemas/V3EventBase'
      - properties:
          type:
            description: The event type.
            enum:
            - v3.run.created
            type: string
        required:
        - type
        type: object
      description: Message body of a `v3.run.created` event.
    WebhookAppDefinition:
      description: The app definition the receiving app was installed from.
      properties:
        id:
          description: API ID of the app definition.
          examples:
          - appdef_1jdbvuo2740aslk
          type:
          - 'null'
          - string
        versionNumber:
          description: Version of the app definition the receiving app is installed at.
          examples:
          - 0.0.1
          type: string
      required:
      - id
      - versionNumber
      type: object
    RunCreatedWebhookEnvelopeV3:
      allOf:
      - $ref: '#/components/schemas/WebhookEnvelopeBaseV0'
      - properties:
          message:
            $ref: '#/components/schemas/RunCreatedWebhookV3'
        required:
        - message
        type: object
      description: Request body Benchling sends for a `v3.run.created` event.
    PrincipalRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    DocumentLikeRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    DateTimeValue:
      description: A type that represents datetime values.
      properties:
        __typename:
          type: string
        value:
          description: The datetime value with UTC as the timezone.
          format: datetime
          type: string
      type: object
    RunPaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/Run'
          type: array
        nextToken:
          type: string
      type: object
    ObjectRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    Run:
      allOf:
      - $ref: '#/components/schemas/IRun'
      - description: 'A Run represents an execution instance of a lab automation workflow in Benchling, capturing

          the inputs, outputs, and metadata for a single assay or instrument operation. Runs conform

          to a RunSchema that defines their structure including input generators (see AutomationInputGenerator)

          for creating worklists and output processors (see AutomationOutputProcessor) for parsing

          instrument results. Runs are typically embedded in notebook entries (via the entry field)

          and can generate associated Analyses for data processing. Each run tracks validation status

          (VALID or INVALID) with optional comments, enabling quality control workflows. Runs belong

          to a Project for access control and can be archived when superseded or invalidated. Also

          known as "assay runs" in the lab automation context.'
        properties:
          __typename:
            type: string
          creator:
            description: User who created the run
            oneOf:
            - $ref: '#/components/schemas/PrincipalRef'
            - type: 'null'
          entry:
            description: Entry that this run is attached to
            oneOf:
            - $ref: '#/components/schemas/DocumentLikeRef'
            - type: 'null'
          schemaFields:
            description: Schema field values that belong to the run
            oneOf:
            - items:
                $ref: '#/components/schemas/SchemaFieldValue'
              type: array
            - type: 'null'
        type: object
    TextValue:
      description: A type that represents text (string) values.
      properties:
        __typename:
          type: string
        value:
          description: The text value. It may or may not be an empty string.
          type: string
      type: object
    V3EventBase:
      description: Fields common to every v3 event message.
      properties:
        createdAt:
          description: RFC 3339 timestamp of when the event was created.
          format: date-time
          type: string
        deprecated:
          description: Whether this event type is deprecated.
          type: boolean
        id:
          description: API ID of the event.
          examples:
          - evt_1jdbvuo2740aslk
          type: string
        resourceId:
          description: API ID of the resource the event is about.
          examples:
          - seq_1jdbvuo2740aslk
          type: string
        stability:
          description: Stability of the resource type the event is about.
          enum:
          - stable
          - beta
          type: string
        type:
          description: The event type.
          examples:
          - v3.dnaSequence.created
          type: string
      required:
      - id
      - type
      - createdAt
      - resourceId
      - stability
      - deprecated
      type: object
    JsonValue:
      description: A type that represents JSON values.
      properties:
        __typename:
          type: string
        value:
          description: The JSON value.
          type: object
      type: object
    TextAndUrlValue:
      description: A type that represents text (string) values with an associated URL.
      properties:
        __typename:
          type: string
        url:
          description: The URL associated with the value. Please use `TextValue` if you don't want a URL.
          type: string
        value:
          description: The text value. It may or may not be an empty string.
          type: string
      type: object
    IntegerValue:
      description: A type that represents integer values.
      properties:
        __typename:
          type: string
        value:
          description: The integer value.
          type: integer
      type: object
    SchemaFieldDefinitionRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ObjectLinkListValue:
      description: A type that represents a list of links to other objects.
      properties:
        __typename:
          type: string
        value:
          description: 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.
          items:
            $ref: '#/components/schemas/ObjectRef'
            description: Union of AaSequence, Box, Container, CustomEntity, DnaSequence, DropdownOption, Entry, Location, Mixture, Molecule, Plate, Result, RnaSequence, Run, DnaOligo, RnaOligo
          type: array
      type: object
    WebhookEnvelopeBaseV0:
      description: Fields common to every webhook request body. The event itself is carried in the `message` property of the event-specific payload.
      properties:
        app:
          $ref: '#/components/schemas/WebhookApp'
        appDefinition:
          $ref: '#/components/schemas/WebhookAppDefinition'
        baseURL:
          description: Base URL of the tenant the webhook was sent from.
          examples:
          - https://mytenant.benchling.com
          type: string
        tenantId:
          description: Global ID of the tenant the webhook was sent from.
          examples:
          - ten_7fbo183
          type: string
        version:
          description: Version of the webhook envelope shape. Always `0`.
          enum:
          - '0'
          type: string
      required:
      - version
      - baseURL
      - tenantId
      - app
      - appDefinition
      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
  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