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

# List AutomationTemplateDataFrameVariable items

GET https://{tenant_name}.benchling.com/api/v3/automation-template/{automation_template_id}/data-frame-variables/items

List AutomationTemplateDataFrameVariable items.

Reference: https://docs.benchling.com/docs/api/benchling-api/automation-template/dataframevariables-list

## Authentication

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

## Request

### Path parameters

- `automation_template_id` (string, required) — ID of the AutomationTemplate.

### Query parameters

- `archived.anyOf` (boolean, optional) — If true, returns archived items. If false, returns unarchived items. If both true and false, returns archived and unarchived items. Comma-separated list.

### Headers

- `EARLY-ACCESS` (string, optional) — Set to true to access beta operations via /api/v3.

## Response

### 200

OK

- `items` (list of AutomationTemplateDataFrameVariable, optional)

## Errors

### 400 Automation Template Data Frame Variables List Request Bad Request Error

Bad Request

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 403 Automation Template Data Frame Variables List Request Forbidden Error

Forbidden

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 404 Automation Template Data Frame Variables List Request Not Found Error

Not Found

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 429 Automation Template Data Frame Variables List Request Too Many Requests Error

Too Many Requests

- `detail` (TooManyRequestsErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 500 Automation Template Data Frame Variables List Request Internal Server Error

Internal Server Error

- `detail` (InternalServerErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `errorId` (string, optional)

## Types

### AutomationTemplateDataFrameVariable

Defines a data frame placeholder within an AutomationTemplate that users must provide when applying the template. Each variable specifies which AutomationStep input (replaceStep, replaceStepData, replaceStepDataIndex) will receive the user-provided data frame. The replaceDataFrameColumnsSpec field defines the expected column structure that the provided data must match. When users apply an automation template to create an Analysis, they provide bindings that map actual data frames to these variables, populating the template's pipeline with real data.

- `__typename` (string, optional)
- `archiveReason` (string, optional, nullable)
- `archived` (boolean, optional)
- `createdAt` (string, optional)
- `description` (string, optional)
- `id` (string, optional)
- `modifiedAt` (string, optional)
- `name` (string, optional)
- `replaceDataFrameColumnsSpec` (list of DataFrameColumn, optional) — Expected column structure that the provided DataFrame must match.
- `replaceStep` (AutomationStepRef, optional) — The AutomationStep whose input will be replaced by the bound DataFrame.
- `replaceStepData` (AutomationStepDataRef, optional) — The specific AutomationStepData slot on the step that receives the bound DataFrame.
- `replaceStepDataIndex` (integer, optional) — The index within the step data slot where the bound DataFrame is placed.
- `template` (AutomationTemplateRef, optional)

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### DataFrameColumn

Defines a column within a DataFrame, including its internal system name, user-facing display name, and data type specification.

- `__typename` (string, optional)
- `displayName` (string, optional)
- `systemName` (string, optional)
- `type` (map from string to any, optional)

### AutomationStepRef

- `__typename` (string, optional)
- `id` (string, optional)

### AutomationStepDataRef

- `__typename` (string, optional)
- `id` (string, optional)

### AutomationTemplateRef

- `__typename` (string, optional)
- `id` (string, optional)

## Examples

**Response**

```json
{
  "items": [
    {
      "__typename": "__typename",
      "archiveReason": "archiveReason",
      "archived": true,
      "createdAt": "createdAt",
      "description": "description",
      "id": "id",
      "modifiedAt": "modifiedAt",
      "name": "name",
      "replaceDataFrameColumnsSpec": [
        {}
      ],
      "replaceStepDataIndex": 1
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/automation-template/automation_template_id/data-frame-variables/items"

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

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

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/automation-template/automation_template_id/data-frame-variables/items';
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);
}
```