---
title: "Create and register proteins and components"
method: POST
path: "/api/v3/proteins:bulk-create-and-register-proteins-and-components"
tags: ["Protein"]
---

# Create and register proteins and components

`POST /api/v3/proteins:bulk-create-and-register-proteins-and-components`

## Request

- Base URL: `https://{tenant_name}.benchling.com`
- URL: `https://{tenant_name}.benchling.com/api/v3/proteins:bulk-create-and-register-proteins-and-components`
- Auth: HTTP bearer

Create and register proteins and their component parts (domains, chains, and variable pairs)

## Headers

- `EARLY-ACCESS` string

## Request body

- object
  - `entryId` string: The ID of the notebook entry into which the creation results will be embedded upon completion. If omitted, no results are written to a notebook entry.
  - `folderId` string, required: The ID of the folder in which the new entities should be created.
  - `germlineConfigs` ProteinsBulkCreateAndRegisterProteinsAndComponentsPostRequestBodyContentApplicationJsonSchemaGermlineConfigsItems[], nullable: A list of germline configs indicating the germline with which to annotate each domain key. This applies to all rows in the request.
    - `domainKey` ProteinsBulkCreateAndRegisterProteinsAndComponentsPostRequestBodyContentApplicationJsonSchemaGermlineConfigsItemsDomainKey, required
      - `label` string, required: The domain label (e.g., "VH", "VL").
    - `germlineId` string, required: API ID of the germline to use for this domain.
  - `namingStrategy` 'NEW_IDS' | 'IDS_FROM_NAMES' | 'DELETE_NAMES' | 'SET_FROM_NAME_PARTS' | 'REPLACE_NAMES_FROM_PARTS' | 'KEEP_NAMES' | 'REPLACE_ID_AND_NAME_FROM_PARTS': Strategy to use for labeling the proteins in the registry. Applies to all proteins in the request, and must be enabled on the protein schema. NEW_IDS, IDS_FROM_NAMES, SET_FROM_NAME_PARTS, and KEEP_NAMES require a name on every protein. DELETE_NAMES, REPLACE_NAMES_FROM_PARTS, and REPLACE_ID_AND_NAME_FROM_PARTS do not accept names. If omitted, REPLACE_NAMES_FROM_PARTS is used when the protein schema has a name template, and DELETE_NAMES is used otherwise. Components are not affected.
  - `newComponentConfig` ProteinsBulkCreateAndRegisterProteinsAndComponentsPostRequestBodyContentApplicationJsonSchemaNewComponentConfig, required: Schema IDs for new component entities created during this request. Applies to all rows in the request.
    - `aaPairSchemaId` string, required: Schema ID for creating Amino Acid variable pair entities for this request.
    - `dnaChainSchemaId` string, nullable: Schema ID for DNA chain sequences created for this request. Required if there are DNA inputs.
    - `dnaDomainSchemaId` string, nullable: Schema ID for DNA domain sequences created for this request. Required if there are DNA inputs.
    - `dnaPairSchemaId` string, nullable: Schema ID for creating DNA variable pair entities for this request. Required if there are DNA inputs.
  - `proteinCreateInputs` ProteinsBulkCreateAndRegisterProteinsAndComponentsPostRequestBodyContentApplicationJsonSchemaProteinCreateInputsItems[], required
    - union: Describes one complete protein and optionally some of the DNA that encodes for it. The input does not necessarily need to contain every domain and every chain defined in the associated proteinSchema, and users of this API are welcome to leave many of them out as long as they meet the following constraint: For every amino acid chain type defined in the proteinSchema, either a) it must occur in the chains array or b) each of its constituent domain types must occur in the domains array, or occur as a component of one of the provided variablePairs. Chains that are not provided will be derived from their constituent domains. Domains that are not provided will be annotated and decomposed based on an analysis of the sequence of the chains containing them.
      - unknown
      - unknown
  - `proteinSchemaId` string, required: The schema ID for the protein entity type.
  - `translationParameters` ProteinsBulkCreateAndRegisterProteinsAndComponentsPostRequestBodyContentApplicationJsonSchemaTranslationParameters: The translation parameters to use when creating AA sequences. Required if the request contains DNA sequences. May be omitted if the request contains only AA sequences.
    - `geneticCode` 'STANDARD' | 'VERTEBRATE_MITOCHONDRIAL' | 'YEAST_MITOCHONDRIAL' | 'MOLD_MITOCHONDRIAL' | 'INVERTEBRATE_MITOCHONDRIAL' | 'CILIATE_NUCLEAR' | 'ECHINODERM_MITOCHONDRIAL' | 'EUPLOTID_NUCLEAR' | 'BACTERIAL_ARCHAEAL' | 'ALTERNATIVE_YEAST_NUCLEAR' | 'ASCIDIAN_MITOCHONDRIAL' | 'ALTERNATIVE_FLATWORM_MITOCHONDRIAL' | 'BLEPHARISMA_NUCLEAR' | 'CHLOROPHYCEAN_MITOCHONDRIAL' | 'TREMATODE_MITOCHONDRIAL' | 'SCENEDESMUS_OBLIQUUS_MITOCHONDRIAL' | 'THRAUSTOCHYTRIUM_MITOCHONDRIAL' | 'PTEROBRANCHIA_MITOCHONDRIAL' | 'CANDIDATE_DIVISION_SR1', required: The codon table to use to translate DNA sequences to AA sequences.

## Response `202`

Job status details

- ProteinProteinsAndComponentsBulkCreateResponse202
  - `pollingUri` string, uri, required: A URL to poll for the status of the task.
  - `taskId` string, required

## 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/3873a10bf7b8?raw)
