> 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 bulk-create-and-register-proteins-and-components task results

GET https://{tenant_name}.benchling.com/api/v3/tasks/bulk-create-and-register-proteins-and-components/{task_id}/results

Get the results of a completed bulk-create-and-register-proteins-and-components task.

This endpoint returns an identifier for the output dataset, plus an optional
pre-signed URL to download the errors file if any inputs failed validation.

Task IDs for this endpoint remain queryable for 14 days after the
job is created.
After that TTL expires, this endpoint returns 404. Retrieve the dataset
ID and any errors file URL you need before the task ID expires.

**Partial Success**: A job can complete with both successful and failed inputs. Always check
`errorsFileUrl` even when `datasetId` is present, since some inputs may have been rejected
while others were created successfully.

Behavior:

* Returns 400 unless the task has a COMPLETED status. While a task is running
  you can poll the
  `GET /tasks/bulk-create-and-register-proteins-and-components/{task_id}`
  endpoint first and only call this endpoint once
  `status == "COMPLETED"`. If the status becomes FAILED, this endpoint
  will always return 400.
* If the task is in a COMPLETED status, returns parameters you can
  use to fetch output and error data.  See the descriptions of the output
  parameters for more detail.

Reference: https://docs.benchling.com/docs/api/benchling-api/protein/bulk-create-and-register-proteins-and-components-results-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)

### Headers

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

## Response

### 200

Task results

- `taskId` (string, required)
- `datasetId` (string, optional) — If no proteins were registered, this parameter is absent. Otherwise, `datasetId` identifies a Dataset object with the results data. Use this id with the Datasets API to look up the dataset and fetch its rows. This dataset will be the same one displayed in the Benchling UI and referenced in emails about this task. Dataset Columns * The results dataset will have an `input` column giving the index of the input protein data associated to this results row. * It will have a `protein` column giving the api id of the protein that was registered for that input. * It will have a `{label}_aa` and optionally a `{label}_dna` column for each domain label in the format. The DNA column will only be present if the job registered DNA sequence entities for that format. * It will have similar `{label}_dna` and `{label}_aa` columns for chains that it registered. * It will also have `{label1}_{label2}_pair_dna` and `{label1}_{label2}_pair_aa` columns for any registered DNA and AA pairs.
- `errorsFileUrl` (string, optional) — If all inputs were registered successfully, this parameter is absent. Otherwise, it's a pre-signed S3 URL for downloading the errors CSV. This CSV will have an `Input #` column giving the index of the input to the job associated with one particular protein that failed to be registered. The `Error Message` column gives a description of the error. This file may also contain additional columns for any sequence data that the job attempted to use when it failed to register this particular protein. Those columns will follow the same naming scheme as described above for the Dataset output.

## Errors

### 400 Bulk Create and Register Proteins and Components Results 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 Bulk Create and Register Proteins and Components Results 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 Bulk Create and Register Proteins and Components Results 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 Bulk Create and Register Proteins and Components Results 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 Bulk Create and Register Proteins and Components Results 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

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

## Examples

**Response**

```json
{
  "taskId": "cprotjob:ana_fhlbqd",
  "datasetId": "dataset_abc123",
  "errorsFileUrl": "https://bucket.s3.amazonaws.com/atsk_123/download?X-Amz-Signature=abc123"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/tasks/bulk-create-and-register-proteins-and-components/cprotjob%3Aana_fhlbqd/results"

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

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

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/tasks/bulk-create-and-register-proteins-and-components/cprotjob%3Aana_fhlbqd/results';
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);
}
```