---
title: "Duplicate a Batch"
method: POST
path: "/api/v1/data-collection/batches/{batch_id}/duplicate"
tags: ["aiTaskBuilder"]
---

# Duplicate a Batch

`POST /api/v1/data-collection/batches/{batch_id}/duplicate`

Create a duplicate of an existing AI Task Builder batch. The dataset does not need to be in READY status for duplication. Supports two modes:
- Duplicate with dataset (default): Creates a copy with the same dataset (the dataset is shared between both batches, not duplicated)
- Duplicate without dataset: Creates a copy that requires a new dataset upload (set upload_new_dataset to true)

You can optionally provide a new name for the duplicated batch. If no name is provided, the duplicate will be named "[Original Batch Name] (Copy)".

## Path parameters

- `batch_id` string, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `name` string — Optional name for the duplicated batch. If not provided, a default name will be generated.
  - `upload_new_dataset` boolean — If true, creates the batch without copying the dataset (user must upload a new one). If false or omitted, duplicates with the existing dataset.

## Response `201`

Created

- AITaskBuilderBatchCreate
  - `id` string, uuid, required
  - `created_at` string, date-time, required — An ISO-8601 formatted string representing the batch creation time, in UTC.
  - `created_by` string, required — User ID of the Prolific user that created the resource.
  - `datasets` AiTaskBuilderBatchCreateDatasetsItems[], required
    - `id` string, uuid, required
    - `total_datapoint_count` integer, required
  - `name` string, required
  - `status` 'UNINITIALISED' | 'PROCESSING' | 'READY' | 'ERROR', required
  - `total_task_count` integer, required
  - `total_instruction_count` integer, required
  - `workspace_id` string, required
  - `task_details` AiTaskBuilderBatchCreateTaskDetails, required
    - `task_name` string, required
    - `task_introduction` string, required — HTML formatted task introduction
    - `task_steps` string, required — HTML formatted task steps
  - `batch_items` BatchItemsPage[], nullable — The persisted `batch_items` layout, returned only when `batch_items` was supplied on create. Every page, row, column, and item is returned with a server-assigned `id`.
    - `id` string — Server-assigned identifier; present on responses. Include to preserve an existing page when updating.
    - `rows` BatchItemsRow[], required
      - `id` string — Server-assigned identifier; present on responses. Include to preserve an existing row when updating.
      - `columns` BatchItemsColumn[], required
        - `id` string — Server-assigned identifier; present on responses. Include to preserve an existing column when updating.
        - `items` BatchItemsItem[], required
          - union — A single item within a column. One of: a dataset field reference (`dataset_field`), a content block (`image`, `rich_text`), or an instruction (`free_text`, `free_text_with_unit`, `multiple_choice`, `multiple_choice_with_free_text`, `file_upload`). Discriminated on `type`.
            - object — References a field in the batch's attached dataset. At task time, the dataset value for the current datapoint is rendered at this position. Only dataset schema fields of type `text`, `image_url`, `audio_url`, or `video_url` are permitted, and the same field may not be referenced more than once on the same page.
              - …
            - object — An image content block rendered inline within the batch layout.
              - …
            - object — A rich-text content block rendered inline within the batch layout.
              - …
            - object — Free-text input instruction.
              - …
            - object — Free-text input instruction paired with a unit selector.
              - …
            - object — Multiple-choice instruction.
              - …
            - object — Multiple-choice instruction with an additional free-text input per selected option.
              - …
            - object — File upload instruction.
              - …

## Other responses

- `400` — Error

---

[API](https://skmtc.net/prolific/apis/api-reference.md) · [All operations](https://skmtc.net/prolific/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/prolific/api-reference/versions/5c53371c41a0/schema)
