---
title: "Get CustomEntitySchema by ID"
method: GET
path: "/api/v3/custom-entity-schema/{custom_entity_schema_id}"
tags: ["Custom Entity Schema"]
---

# Get CustomEntitySchema by ID

`GET /api/v3/custom-entity-schema/{custom_entity_schema_id}`

## Request

- Base URL: `https://{tenant_name}.benchling.com`
- URL: `https://{tenant_name}.benchling.com/api/v3/custom-entity-schema/{custom_entity_schema_id}`
- Auth: HTTP bearer

Get a single CustomEntitySchema by ID.

## Path parameters

- `custom_entity_schema_id` string, required

## Query parameters

- `returning` string[]
- `omit` string[]

## Response `200`

OK

- CustomEntitySchema
  - `__typename` string
  - `archiveReason` string, nullable
  - `archived` boolean
  - `availableRegistrationNamingOptions` CustomEntitySchemaAvailableRegistrationNamingOptionsItems[]
  - `constraint` Constraint: Defines uniqueness requirements for entities within a schema. Constraints ensure that registered entities have unique values across specified fields (see `fieldDefinitionNames`) or unique domain-specific properties (see `TypeSpecificConstraint`). The hasUniqueResidues field is a legacy indicator for sequence uniqueness.
    - `__typename` string
    - `fieldDefinitionNames` string[], nullable
    - `hasUniqueResidues` boolean, nullable
  - `containableType` 'NONE' | 'ENTITY' | 'BATCH'
  - `containerNameTemplate` ContainerNameTemplate: A name template for containers.
    - `__typename` string
    - `parts` ContainerNameTemplatePart[]
      - `__typename` string
      - `configuration` union: Union of TextNameTemplatePartConfiguration, FieldNameTemplatePartConfiguration
        - object: Configuration for a schema field name template part.
          - `__typename` string, required
          - `field` SchemaFieldDefinitionRef
            - `__typename` string
            - `id` string, api_id
        - object: Configuration for a literal text name template part.
          - `__typename` string, required
          - `text` string
      - `type` 'BARCODE' | 'BARCODE_NUMBER' | 'CHILD_ENTITY_LOT_NUMBER' | 'CONCENTRATION_UNITS' | 'CONCENTRATION_VALUE' | 'CONTAINED_ENTITY_NAME' | 'CONTAINER_CREATED_AT_DATE' | 'CONTAINER_CREATED_AT_YEAR' | 'FIELD' | 'FILL_DATE' | 'FILL_YEAR' | 'HOISTED_FIELD' | 'LINKED_BIOENTITY_REGISTRY_IDENTIFIER' | 'PARENT_STORABLE_BARCODE' | 'PARENT_STORABLE_NAME' | 'POSITION' | 'PROJECT' | 'QUANTITY_UNITS' | 'QUANTITY_VALUE' | 'REGISTRY_IDENTIFIER_NUMBER' | 'REGISTRY_IDENTIFIER_NUMBER_BASE_26' | 'RESTRICTION_STATUS' | 'SAMPLE_LOT_NUMBER' | 'SEPARATOR' | 'TEXT'
  - `createdAt` string, datetime, nullable
  - `description` string
  - `fieldDefinitions` string, uri
  - `fieldsets` string, uri
  - `iconId` 'ANTIBODY' | 'ARROW_ZIG_ZAG_DOWN' | 'ARROW_ZIG_ZAG_RIGHT' | 'ASSEMBLY' | 'BACTERIA' | 'BASIC_FOLDER_ITEM' | 'BEAKER' | 'BOX_ARROW_RIGHT' | 'BROKEN_COLUMNS_IN_BRACKET' | 'BUILDING_PLUS' | 'CELL_LINE' | 'CHEMICAL_COMPOUND' | 'CHEMICAL_CONCATENATION' | 'CHEMICAL_HOMOLOGY' | 'CHEMICAL_LADDER' | 'CHROMATOGRAPHY' | 'CIRCLE_WITH_THICK_SEGMENT' | 'CLIPBOARD_IN_BRACKETS' | 'COMPOUND' | 'DOCK_BOTTOM' | 'FILE_BAR_CHART' | 'FILE_IN_BRACKETS' | 'FILL_GRID' | 'FLASK' | 'FLASK_RECEIPT' | 'FLOWCHART' | 'GRID_DOTS' | 'HUMAN' | 'INSTRUMENT' | 'LIGHTBULB_IN_BRACKETS' | 'LINEAR' | 'LIST_ASTERISK' | 'LIST_CHECK_XMARK' | 'MATERIAL' | 'MICROSCOPE' | 'MIXTURE' | 'MOLECULE_TO_BACKBONE' | 'MOLECULE_TO_MOLECULE' | 'MORTAR_PESTLE' | 'MOUSE' | 'NETWORK_WIRED' | 'NODES_CONVERGE' | 'OCHEM_MOLECULE' | 'OCHEM_MOLECULE_BEAKER' | 'OLIGO' | 'OLIGO_ALT' | 'OLIGO_V2' | 'PART' | 'PETRI' | 'PLANT' | 'PLASMID' | 'POWDER' | 'POWDER_BEAKER' | 'PRIMER_PAIR' | 'PROCESS' | 'PROTEIN' | 'PROTEIN_ALT' | 'PROTEIN_MAGNIFYING_GLASS' | 'REACTION_VESSEL' | 'RECEIPT_FLASK' | 'RECIPE' | 'REQUEST_TEMPLATE' | 'RNA' | 'RNA_SEQUENCE' | 'SAMPLE_SLIDE' | 'SEQUENCE' | 'SMALL_MOLECULE' | 'SMALL_MOLECULE_BEAKER' | 'SOLUTION' | 'SQUARE_BRACKET_CHECK_EQUALS' | 'TABLE_LIST_ALT' | 'TEMPLATE' | 'TUBE_EMPTY' | 'VIAL' | 'WELL_PLATE' | 'WORKFLOW' | 'WORKSHEET' | 'WORM'
  - `id` string
  - `includeRegistryIdInChips` boolean
  - `itemIdPrefix` string
  - `modifiedAt` string, datetime
  - `name` string
  - `nameTemplate` EntityNameTemplate: A name template for entities.
    - `__typename` string
    - `parts` EntityNameTemplatePart[]
      - `__typename` string
      - `configuration` union: Union of TextNameTemplatePartConfiguration, FieldNameTemplatePartConfiguration, ProteinChainNameTemplatePartConfiguration, ProteinDomainNameTemplatePartConfiguration
        - object: Configuration for a schema field name template part.
          - `__typename` string, required
          - `field` SchemaFieldDefinitionRef
            - `__typename` string
            - `id` string, api_id
        - object: Configuration for a protein chain name template part.
          - `__typename` string, required
          - `proteinChain` ProteinFormatChain: A chain in a protein format, representing the slot where a polypeptide chain can be used in an entity of this format. Chains are uniquely identified by their label in the format. Chains can have multiplicity, meaning there are multiple physical instances of the same chain in a protein of this format.
            - `__typename` string
            - `chainPositions` ProteinFormatChainPosition[]: A list of all the chain positions of this chain in the format.
              - …
            - `domains` ProteinFormatDomain[]: The domains that compose this chain.
              - …
            - `label` string: A human-readable label for the chain, such as 'Heavy' or 'Light 1'. Chains are labeled with an index only when multiple distinct chains of the same type exist. These labels are unique among distinct chains in a format.
            - `type` 'HEAVY' | 'LIGHT' | 'NONE' | 'ALPHA' | 'BETA' | 'JOINING': The type of the chain.
        - object: Configuration for a protein domain name template part.
          - `__typename` string, required
          - `proteinDomain` ProteinFormatDomain: A domain in a protein format, representing the slot where an amino acid sequence can be used in an entity of this format. Domains are uniquely identified by their label in the format.
            - `__typename` string
            - `domainPositions` ProteinFormatDomainPosition[]: A list of all the domain positions of this domain in the format.
              - …
            - `label` string: A human-readable label for the domain, uniquely identifying the domain within the format.
            - `optional` boolean: Whether this domain is optional in the format. If true, entities of this format may not have this domain.
            - `type` 'VL' | 'CL' | 'VH' | 'VHH' | 'CH1' | 'CH2' | 'CH3' | 'CH4' | 'J' | 'H' | 'L' | 'VA' | 'CA' | 'VB' | 'CB' | 'VG' | 'CG' | 'VD' | 'CD' | 'F' | 'ELEMENT': The type of the domain (e.g., VH, VL, CH1).
        - object: Configuration for a literal text name template part.
          - `__typename` string, required
          - `text` string
      - `type` 'CHILD_ENTITY_LOT_NUMBER' | 'COMPLEX_POLYMER_COMPONENT' | 'CREATED_AT_DATE' | 'CREATED_AT_YEAR' | 'FIELD' | 'HOISTED_FIELD' | 'LINKED_BIOENTITY_REGISTRY_IDENTIFIER' | 'PROJECT' | 'PROTEIN_CHAIN' | 'PROTEIN_DOMAIN' | 'REGISTRY_IDENTIFIER_NUMBER' | 'REGISTRY_IDENTIFIER_NUMBER_BASE_26' | 'SALT_CODES' | 'SEPARATOR' | 'TEXT'
    - `shouldOrderPartsBySequence` boolean
  - `organization` OrganizationRef
    - `__typename` string
    - `id` string, api_id
  - `systemCategories` SystemCategoryConfiguration[]
    - union
      - object: Default configuration for system categories that require no additional configuration.
        - `__typename` 'BaseSystemCategoryConfiguration', required: Discriminator value: BaseSystemCategoryConfiguration
        - `systemCategory` SystemCategoryRef
          - `__typename` string
          - `id` string, api_id
      - object: Configuration that can be set on entity schemas, which enables enabling freeze/thaw cycle tracking. When enabled, containers holding entities of the schema automatically display a "Freeze/thaw count" system field that tracks how many times the sample has been frozen and thawed. The optional limit field specifies the maximum number of freeze/thaw cycles permitted before the sample is considered unfit for use; exceeding this limit can trigger warnings in inventory workflows. Once enabled on a schema, freeze/thaw tracking cannot be disabled. This feature is commonly used for biologics, enzymes, and other temperature-sensitive samples where repeated freeze/thaw cycles can degrade sample quality.
        - `__typename` 'FreezeThawTrackingConfiguration', required: Discriminator value: FreezeThawTrackingConfiguration
        - `limit` integer, nullable: Max number of freeze/thaw cycles a container containing an entity of this schema is permitted to undergo while still being considered fit for use.
        - `systemCategory` SystemCategoryRef
          - `__typename` string
          - `id` string, api_id
  - `systemName` string
  - `useRegistryIdForItemDisplayLabel` boolean
  - `validationRules` string, uri

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `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)
