> 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.

# Get a notebook template entry by ID

GET https://{tenant_name}.benchling.com/api/v2/entry-templates/{entry_template_id}

Get a notebook template entry by ID

Reference: https://docs.benchling.com/docs/api/v2/benchling-api/entries/get-entry-template

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `entry_template_id` (string, required) — ID of the entry template

### Query parameters

- `returning` (string, optional) — Comma-separated list of fields to return. Modifies the output shape. To return all keys at a given level, enumerate them or use the wildcard, '*'. For more information, [click here](https://docs.benchling.com/docs/getting-started-1#returning-query-parameter). **Note:** "days.notes" cannot be introspected with the returning parameter, and any sub fields will be ignored. E.g., "days.notes.text" will return the same model as "days.notes".

## Response

### 200

Returns a single entry template. Entry templates are templates that users can base new notebook entries off of.

- `apiURL` (string, optional) — The canonical url of the Entry Template in the API.
- `createdAt` (datetime, optional) — DateTime the template was created at
- `creator` (UserSummary, optional) — UserSummary Resource of the user who created the template
- `customFields` (map from string to CustomField, optional)
- `days` (list of EntryTemplateDay, optional) — Array of day objects. Each day object has a day index (integer) and notes field (array of notes, expand further for details on note types).
- `fields` (map from string to Field, optional)
- `id` (string, optional) — ID of the entry template
- `modifiedAt` (string, optional) — DateTime the template was last modified
- `name` (string, optional) — Title of the template
- `schema` (EntrySchema, optional, nullable) — Entry schema if set
- `templateCollectionId` (string, optional) — ID of the collection that contains the template
- `webURL` (string, optional) — URL of the template

## Types

### UserSummary

- `handle` (string, optional)
- `id` (string, optional)
- `name` (string, optional)

### CustomField

- `value` (string, optional)

### EntryTemplateDay

- `day` (integer, optional) — 1 indexed day signifier. If 0 is returned, that means the EntryTemplateDay is a section with a title but no specified Day.
- `notes` (list of EntryNotePart, optional)
- `title` (string, optional, nullable) — Optional title of a section if sections are enabled.

### Field

- `value` (FieldValue, required, nullable) — For single link fields, use the id of the item you want to link (eg. "seq_jdf8BV24"). For multi-link fields, use an array of ids of the items you want to link (eg. ["seq_jdf8BV24"])
- `displayValue` (string, optional, nullable)
- `isMulti` (boolean, optional)
- `textValue` (string, optional, nullable)
- `type` (enum, optional)
  - Allowed values: `dna_sequence_link`, `aa_sequence_link`, `custom_entity_link`, `entity_link`, `mixture_link`, `molecule_link`, `dropdown`, `part_link`, `translation_link`, `aa_part_link`, `base_molecule_link`, `blob_link`, `text`, `long_text`, `batch_link`, `storage_link`, `entry_link`, `assay_request_link`, `assay_result_link`, `assay_run_link`, `boolean`, `float`, `integer`, `datetime`, `date`, `json`

### EntrySchema

Entry schema

- `id` (string, optional) — ID of the entry schema
- `modifiedAt` (datetime, optional) — DateTime the Entry Schema was last modified
- `name` (string, optional) — Name of the entry schema

### EntryNotePart

Notes are the main building blocks of entries. Each note corresponds roughly to a paragraph.

- `type`: `app_canvas` (app_canvas)
  - `appId` (string, optional) — The API identifier for the Benchling App.
  - `canvasId` (string, optional) — The API identifier for this Analysis Chart.
  - `featureId` (string, optional) — The developer ID assigned to the feature of this App Canvas.
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
- `type`: `assay_run` (assay_run)
  - `assayRunId` (string, optional, nullable)
  - `assayRunSchemaId` (string, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
- `type`: `box_creation_table` (box_creation_table)
  - `apiId` (string, optional)
  - `boxSchemaId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `name` (string, optional)
- `type`: `code` (code)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in text via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The textual contents of the note.
- `type`: `external_file` (external_file)
  - `externalFileId` (string, optional) — The ID of the external file. Use the 'Get an external file' endpoint to retrieve metadata about it.
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in the caption via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The caption of the file attachment.
- `type`: `inventory_container_table` (inventory_container_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `destinationContainerSchemaId` (string, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `mode` (enum, optional)
    - Allowed values: `create_and_fill`, `fill`, `update`
  - `name` (string, optional)
- `type`: `inventory_plate_table` (inventory_plate_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `destinationPlateSchemaId` (string, optional, nullable)
  - `destinationWellSchemaId` (string, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `mode` (enum, optional)
    - Allowed values: `create_and_fill`, `fill`, `update`
  - `name` (string, optional)
- `type`: `list_bullet` (list_bullet)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in text via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The textual contents of the note.
- `type`: `list_checkbox` (list_checkbox)
  - `checked` (boolean, optional) — Indicates whether the checkbox is checked or not.
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in text via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The textual contents of the note.
- `type`: `list_number` (list_number)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in text via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The textual contents of the note.
- `type`: `lookup_table` (lookup_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `name` (string, optional)
- `type`: `mixture_prep_table` (mixture_prep_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `mixtureSchemaId` (string, optional)
  - `name` (string, optional)
- `type`: `note_linked_chart` (note_linked_chart)
  - `chart` (ChartNotePartChart, optional) — The full configuration for the chart to be displayed in-line in this note part.
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
- `type`: `plate_creation_table` (plate_creation_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `name` (string, optional)
  - `plateSchemaId` (string, optional)
- `type`: `registration_table` (registration_table)
  - `apiId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `entitySchemaId` (string, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `name` (string, optional)
- `type`: `results_table` (results_table)
  - `apiId` (string, optional)
  - `assayResultSchemaId` (string, optional)
  - `columns` (list of StructuredTableColumnInfo, optional)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `name` (string, optional)
- `type`: `table` (table)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in the caption via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `table` (EntryTable, optional) — Actual tabular data with rows and columns of text on the note.
  - `text` (string, optional) — The caption of the table.
- `type`: `text` (text)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced in text via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `text` (string, optional) — The textual contents of the note.
- `type`: `text_box` (text_box)
  - `indentation` (integer, optional, default: 0) — All notes have an indentation level - the default is 0 for no indent. For lists, indentation gives notes hierarchy - a bulleted list with children is modeled as one note part with indentation 1 followed by note parts with indentation 2, for example.
  - `links` (list of EntryLink, optional) — Array of links referenced via an @-mention, hyperlink, or the drag-n-dropped preview attached to the note.
  - `name` (string, optional)
  - `text` (string, optional)

### FieldValue

For single link fields, use the id of the item you want to link (eg. "seq_jdf8BV24"). For multi-link fields, use an array of ids of the items you want to link (eg. ["seq_jdf8BV24"])

### StructuredTableColumnInfo

- `columnId` (string, optional)
- `isReadOnly` (boolean, optional)
- `name` (string, optional)

### EntryLink

Links are contained within notes to reference resources that live outside of the entry. A link can target an external resource via an http(s):// hyperlink or a Benchling resource via @-mentions and drag-n-drop.

- `id` (string, optional) — For linked Benchling resources, this will be the ID of that resource (e.g., 'seq_RhYGVnHF'). Omitted for "link" types.
- `type` (enum, optional) — The type of resource being linked. For hyperlinks: 'link'. For linked Benchling resources, one of: 'user', 'request', 'entry', 'stage_entry', 'protocol', 'workflow', 'custom_entity', 'aa_sequence', 'dna_sequence', 'batch', 'box', 'container', 'location', 'plate', 'sql_dashboard'; and (for legacy support) 'insights_dashboard', 'folder'.
  - Allowed values: `link`, `user`, `request`, `entry`, `stage_entry`, `protocol`, `workflow`, `custom_entity`, `aa_sequence`, `dna_sequence`, `batch`, `box`, `container`, `location`, `plate`, `insights_dashboard`, `folder`, `sql_dashboard`
- `webURL` (string, optional, nullable) — Canonical URL of the linked Benchling resource (if you have at least READ authorization for that resource), or the explicit URL provided as hyperlink for "link" types. Note: locations do not currently have a URL.

### ChartNotePartChart

The full configuration for the chart to be displayed in-line in this note part.

- `id` (string, optional) — The API identifier for this Analysis Chart.

### EntryTable

Actual tabular data with rows and columns of text on the note.

- `columnLabels` (list of string, optional) — Array of strings, with one item per column. Defaults to null, if the user is using the default, but is set if the user has given a custom name to the column.
- `name` (string, optional) — Name of the table - defaults to e.g. Table1 but can be renamed.
- `rows` (list of EntryTableRow, optional) — Array of row objects.

### EntryTableRow

Each has property 'cells' that is an array of cell objects

- `cells` (list of EntryTableCell, optional)

### EntryTableCell

- `link` (EntryLink, optional) — A Link Resource if this cell contained a hyperlink. Otherwise, link will be omitted from the cell object. (Note: inventory and user types are not yet supported.)
- `text` (string, optional) — The textual content of the cell. If the cell was originally a formula, this will be the evaluated version of the formula.

## Examples

**Response**

```json
{
  "apiURL": "https://benchling.com/api/v2/entry-templates/tmpl_tv7m7B78",
  "createdAt": "2024-01-15T09:30:00Z",
  "creator": {
    "handle": "string",
    "id": "string",
    "name": "string"
  },
  "customFields": {
    "Legacy ID": {
      "value": "STR100"
    }
  },
  "days": [
    {
      "day": 1,
      "notes": [
        {
          "type": "text",
          "indentation": 0,
          "links": [
            {
              "id": "string",
              "type": "link",
              "webURL": "string"
            }
          ],
          "text": "string"
        }
      ],
      "title": "string"
    }
  ],
  "fields": {},
  "id": "string",
  "modifiedAt": "string",
  "name": "string",
  "schema": {
    "id": "string",
    "modifiedAt": "2017-04-18T05:55:48.685345+00:00",
    "name": "string"
  },
  "templateCollectionId": "string",
  "webURL": "string"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v2/entry-templates/entry_template_id"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v2/entry-templates/entry_template_id';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```