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

# Create a notebook entry

POST https://{tenant_name}.benchling.com/api/v2-alpha/entries
Content-Type: application/json

Create a notebook entry with optional attachments. Attachments will be placed into the entry body in the order they are specified.


Reference: https://docs.benchling.com/docs/api/v2-alpha/benchling-api-alpha/entries/create-entry-with-attachments

## Authentication

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

## Request

### Body (application/json)

This endpoint expects an EntryCreateAttachments.

- `folderId` (string, required) — ID of the folder that will contain the entry
- `name` (string, required) — Name of the entry
- `attachmentText` (any, optional) — Text to include in the entry before the attachments. If not provided, the text will be "File attachments are listed below:"
- `attachments` (list of string, optional) — An array of IDs representing Blob objects in Benchling to be attached to the entry.
- `authorIds` (EntryCreateAuthorIds, optional)
- `customFields` (map from string to CustomField, optional) — Custom fields to add to the entry
- `entryTemplateId` (string, optional) — ID of the template to clone the entry from
- `fields` (map from string to Field, optional) — Fields to set on the entry. Must correspond with the schema's field definitions.
- `initialTables` (list of InitialTable, optional) — An array of table API IDs and blob id pairs to seed tables from the template while creating the entry. The entryTemplateId parameter must be set to use this parameter. The table API IDs should be the API Identifiers of the tables in the given template. - If a template table has one row, the values in that row act as default values for cloned entries. - If a template table has multiple rows, there is no default value and those rows are added to the cloned entry along with the provided csv data. - If a table has default values, they will be populated in any respective undefined columns in the csv data. - If a table has no default values, undefined columns from csv data will be empty. - If no csv data is provided for a table, the table in the entry will be populated with whatever values are in the respective template table.
- `reviewRecord` (EntryCreateAttachmentsReviewRecord, optional)
- `schemaId` (string, optional) — ID of the entry's schema

## Response

### 202

Accepted

- `taskId` (string, optional)

## Errors

### 400 Bad Request Error

Bad Request

- `error` (BadRequestErrorError, optional)

## Types

### EntryCreateAuthorIds

### CustomField

- `value` (string, optional)

### 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`

### InitialTable

- `csvData` (string, optional) — blobId of data
- `templateTableID` (string, optional) — Template table API id

### EntryCreateAttachmentsReviewRecord

- `comment` (string, optional) — User message to set on review
- `status` (enum, optional) — Review Status for entry
  - Allowed values: `ACCEPTED`

### BadRequestErrorError

- `message` (string, optional)
- `type` (enum, optional)
  - Allowed values: `invalid_request_error`
- `userMessage` (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"])

## Examples

**Request**

```json
{
  "folderId": "string",
  "name": "string"
}
```

**Response**

```json
{
  "taskId": "string"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v2-alpha/entries"

payload = {
    "folderId": "string",
    "name": "string"
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v2-alpha/entries';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"folderId":"string","name":"string"}'
};

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