> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

## SDK version 1.24.0 Release Notes

This release expands automation and codon optimization APIs, introduces worksheet review events, and adds molecule and RNA sequence as entity types. It also includes a large spec sync to surface fields already returned by the API, new entry review process models in beta, and several bug fixes for entity deserialization and documentation accuracy.

### What's changing?

#### Added

* New `v2-beta.worksheet.updated.reviewSnapshot` webhook event type for tracking review snapshot status changes on Worksheets.
* Entry review process information (stages and reviewers) added to the beta API, with a `reviewProcesses` field on entries returned by `benchling.v2.beta.entries.get_by_id` and on worksheet review records.
* Codon optimization `method` parameter (`MATCH_CODON_USAGE` or `USE_BEST_CODON`) on `benchling.aa_sequences.back_translate` and `benchling.dna_sequences.optimize_codons`.
* Custom `gcContentRange` (min/max decimal) option on `benchling.aa_sequences.back_translate` and `benchling.dna_sequences.optimize_codons`, as an alternative to the preset `gcContent` enum.
* Repeat pattern format (`nxkmer`, e.g. "3x4mer") support in the `reduced_patterns` parameter for `benchling.dna_sequences.optimize_codons`.

#### Changed

* `benchling.lab_automation.create_output_processor`: the input now accepts optional `folderId`, `locationId`, and `timezone` fields (previously only available in the UI).
* `benchling.containers.bulk_update`: each item now accepts an optional `role` field for well plate well roles, matching the single-update container endpoint.
* `benchling.nucleotide_alignments.create_template_alignment`: the input now accepts a `shouldDisableCircularSequenceRotation` boolean parameter (default `false`).
* Schema field definition enums (`FieldType`, `SimpleFieldDefinitionType`, and `AppConfigFieldType`): added `molecule_link` value, visible in schemas returned by `benchling.schemas.*` methods.
* Entities returned by `benchling.registry.entities` and entity `get_by_id`/`list` methods: added `entityType` discriminator and expanded to include `Molecule` and `RnaSequence` types.
* Responses from `benchling.containers.list_contents`/`contents_by_id` and `benchling.registry.entities`: expanded entity references to include all entity types via `*WithEntityType` models.
* Responses from `benchling.aa_sequences`, `benchling.custom_entities`, `benchling.dna_sequences`, `benchling.rna_sequences`, and `benchling.monomers` methods: added `url` field.
* Responses from `benchling.schemas` methods (`list_box_schemas`/`get_box_schema_by_id`, `list_entry_schemas`/`get_entry_schema_by_id`, `list_location_schemas`/`get_location_schema_by_id`, `list_plate_schemas`/`get_plate_schema_by_id`, `list_workflow_task_schemas`/`get_workflow_task_schema_by_id`): added `modifiedAt` field.
* Responses from `benchling.workflow_outputs.get_by_id`/`list`, `benchling.workflow_tasks.get_by_id`/`list`, and `benchling.workflow_task_groups.get_by_id`/`list`: added `archiveRecord` field.
* Responses from `benchling.workflow_task_groups.get_by_id`/`list` and `benchling.workflow_tasks.get_by_id`/`list`: added `workflowOutputs` list.
* Responses from `benchling.dna_sequences.get_by_id`/`list`: added `dnaAlignmentIds`; responses from `benchling.rna_sequences.get_by_id`/`list`: added `alignmentIds`.
* Responses from `benchling.monomers.list`/`create`/`update`: added `exactMolecularWeight` (RDKit-calculated from chemical structure).
* Structured table note parts on entries returned by `benchling.entries.get_entry_by_id`/`list_entries`: added `name` field to table identifiers.
* App manifests returned by `benchling.v2.beta.apps.get_manifest`/`update_manifest`: added `WORKFLOW_CANVAS` canvas location value (alpha/beta).

#### Removed

* `bases` removed from the required fields on `benchling.rna_oligos.create`; one of `helm`, `bases`, or `customNotation` is now accepted.

#### Fixed

* Fixed entity union deserialization so that DNA oligos in plate well contents (e.g. from `benchling.containers.list_contents`) no longer incorrectly parse as custom entities (regression caused by adding transcriptions to DNA sequences).
* Fixed field casing on responses from `benchling.apps.get_by_id`/`list_apps`: corrected `apiUrl`/`webUrl` to `apiURL`/`webURL` to match actual return values.
* Included `userId` in `v2.canvas.created` object, where it was already being sent along with the actual payload.
* Updated documentation to use "AA sequence" in place of "protein" across all API specs, without changing enum values or field names.