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

# Poll async task status

GET https://{tenant_name}.benchling.com/api/v3/tasks/analysis/apply-template/{task_id}

Poll status for Apply a published automation template to an Analysis. Populates the Analysis with the template's pipeline steps, substituting the provided data frame and config variable bindings. The Analysis then runs asynchronously. The template must be published before it can be applied. Returns an async task link that can be polled for completion..

Reference: https://docs.benchling.com/docs/api/benchling-api/analysis/applytemplate-get

## Authentication

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

## Request

### Path parameters

- `task_id` (string, required) — ID of the asynchronous task to poll.

### Headers

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

## Response

### 200

OK

- `message` (string, required)
- `status` (enum, required)
  - Allowed values: `NOT_STARTED`, `IN_PROGRESS`, `COMPLETED`, `FAILED`
- `result` (Analysis, optional, nullable) — Represents a data processing pipeline. Each Analysis contains a graph of AutomationSteps that works with data. An automation template (see `AutomationTemplate`) may be applied onto an analysis to provide a pre-configured graph of steps.

## Errors

### 400 Analysis Apply Template Get 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 Analysis Apply Template Get 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 Analysis Apply Template Get 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 Analysis Apply Template Get 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)
- `violated-policies` (list of enum, optional) — The budget policies that rejected the request, in canonical order: `user`, `integration`, then `tenant`.
  - Allowed values: `user`, `integration`, `tenant`

### 500 Analysis Apply Template Get 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

### Analysis

Represents a data processing pipeline. Each Analysis contains a graph of AutomationSteps that works with data. An automation template (see `AutomationTemplate`) may be applied onto an analysis to provide a pre-configured graph of steps.

- `__typename` (string, optional)
- `archiveReason` (string, optional, nullable)
- `archived` (boolean, optional)
- `createdAt` (string, optional)
- `creator` (PrincipalRef, optional)
- `description` (string, optional, nullable)
- `folder` (FolderRef, optional)
- `id` (string, optional)
- `modifiedAt` (string, optional)
- `name` (string, optional)
- `statusCode` (enum, optional)
  - Allowed values: `AI_PROPOSED`, `BLOCKED`, `FAILED`, `HALTED`, `RUNNING`, `SUCCEEDED`, `WAITING`
- `steps` (string, optional)
- `webUrl` (string, optional)

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### PrincipalRef

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

### FolderRef

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

## Examples

**Response**

```json
{
  "message": "message",
  "status": "NOT_STARTED",
  "result": {
    "__typename": "__typename",
    "archiveReason": "archiveReason",
    "archived": true,
    "createdAt": "createdAt",
    "creator": {
      "__typename": "__typename",
      "id": "id"
    },
    "description": "description",
    "folder": {
      "__typename": "__typename",
      "id": "id"
    },
    "id": "id",
    "modifiedAt": "modifiedAt",
    "name": "name",
    "statusCode": "AI_PROPOSED",
    "steps": "steps",
    "webUrl": "webUrl"
  }
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/tasks/analysis/apply-template/task_id"

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

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

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/tasks/analysis/apply-template/task_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);
}
```