---
title: "Batch create DnaOligo"
method: POST
path: "/api/v3/dna-oligo:batch-create"
tags: ["DNA Oligo"]
---

# Batch create DnaOligo

`POST /api/v3/dna-oligo:batch-create`

## Request

- Base URL: `https://{tenant_name}.benchling.com`
- URL: `https://{tenant_name}.benchling.com/api/v3/dna-oligo:batch-create`
- Auth: HTTP bearer

Batch create DNA Oligos synchronously in one transaction. Maximum 25 items per request.

Each item follows the same field requirements as the single-create endpoint. If any item fails validation, the transaction fails and no DNA Oligos are created.

## Request body

- object
  - `items` CreateDnaOligoInput[], required
    - `aliases` string[]: Array of aliases
    - `annotations` OligoAnnotationInput[]: Annotations on the Oligo.
      - `color` string: Hex color when displaying the annotation. A random color is assigned if omitted.
      - `customFields` CustomFieldInput[]: Custom fields on the annotation.
        - `name` string, required: Name of the custom field.
        - `value` string: Value of the custom field. Defaults to an empty string if omitted.
      - `end` integer, required: 0-based exclusive end index. For ranges ending at the sequence end, API responses return `sequenceLength`, never `0`. On input, `sequenceLength` or `0` may be used.
      - `name` string, required: Name of the annotation.
      - `notes` string: Text notes on the annotation. Defaults to an empty string if omitted.
      - `start` integer, required: 0-based inclusive start index.
      - `type` string, required: Feature type of the annotation.
    - `authorIds` string[]
    - `bases` string: Bases of the Oligo. Mutually exclusive with `helm` and `customNotation`.
    - `customFields` object: Custom fields set on the Oligo.
    - `customNotation` string: Sequence in a vendor-specific custom notation syntax. Requires custom syntaxes to be enabled. When `customNotation` is set, `customNotationId` is required. Mutually exclusive with `bases` and `helm`.
    - `customNotationId` string: ID of the custom notation syntax used to interpret `customNotation`. When `customNotation` is set, `customNotationId` is required; omit both when using `bases` or `helm`.
    - `entityRegistryId` string: Registry ID to assign to the entity. If one is specified, the labeling_strategy must be unspecified.
    - `folderId` string, required
    - `helm` string: HELM notation for the oligo sequence and chemical modifications. Requires the modified nucleotides feature to be enabled. Mutually exclusive with `bases` and `customNotation`.
    - `name` string, required: Name of the item.
    - `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 item in the registry. If one is specified, the entity_registry_id must be unspecified.
    - `registryId` string, nullable: A not null value means the entity should be registered. If not null, the value must match the registry of the item's schema.
    - `schemaFields` object
    - `schemaId` string

## Response `201`

Created

- DnaOligoBatchcreateResponse201
  - `items` DnaOligo[], required
    - `__typename` string
    - `aliases` string[], nullable: Array of aliases
    - `annotations` string, uri: Annotations on the Oligo.
    - `archiveReason` string, nullable
    - `archived` boolean
    - `bases` string: Bases of the Oligo.
    - `canonicalHelm` string: Normalized HELM notation for this oligo.
    - `createdAt` string, datetime, nullable: DateTime the Oligo was created.
    - `customFields` CustomField[], nullable: Custom fields set on the Oligo.
      - `__typename` string
      - `name` string, nullable
      - `value` string, nullable
    - `entityRegistryId` string, nullable: The registry-assigned identifier for this item (e.g. its registry ID shown in the UI), present only once the item has been registered. Null if the item is not registered.
    - `folder` FolderRef
      - `__typename` string
      - `id` string, api_id
    - `id` string: ID of the Oligo.
    - `modifiedAt` string, datetime, nullable: DateTime the Oligo was last modified.
    - `modifiedNucleotides` string, uri: Modifications applied to this oligo.
    - `name` string: Name of the item.
    - `project` ProjectRef
      - `__typename` string
      - `id` string, api_id
    - `registrationOrigin` RegistrationOrigin: Captures the provenance of an entity's registration into the registry. The `originEntry` links to the `DocumentLike` (typically an entry or notebook) from which the entity was registered, providing traceability back to the original experimental context. The `registeredAt` timestamp records when the registration occurred. This information helps scientists understand where registered entities came from and when they were added to the registry.
      - `__typename` string
      - `originEntry` DocumentLikeRef
        - `__typename` string
        - `id` string, api_id
      - `registeredAt` string, datetime, nullable
    - `registry` RegistryRef
      - `__typename` string
      - `id` string, api_id
    - `schema` EntitySchemaRef
      - `__typename` string
      - `id` string, api_id
    - `typedSchema` DnaOligoSchemaRef
      - `__typename` string
      - `id` string, api_id
    - `authors` string, uri, nullable
    - `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.
          - `__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: 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
              - …
            - 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 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)
