> To build a Wix site agentically, follow https://www.wix.com/headless/skill.md
> 
> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - If a reference page seems to be missing its schema (parameters, return types, or type definitions), append `?schema=true` to its `.md` URL (e.g. `https://dev.wix.com/docs/contexts/contexts/stores/category-info/use-category-info-context.md?schema=true`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# BulkCreateDataItemDrafts

# Package: cms

# Namespace: DataItemService

# Method link: https://dev.wix.com/docs/api-reference/business-solutions/cms/data-items/bulk-create-data-item-drafts.md

## Permission Scopes:
Write Data Items: SCOPE.DC-DATA.WRITE

## Introduction

Creates draft copies of multiple published data items in the corresponding `{dataCollectionId}__drafts` shadow collection.

This method creates each draft independently and supports partial success: if some drafts cannot be created, the remaining ones are still processed. For each item, the response includes an entry in `results` with success/error details. Use `results.itemMetadata.originalIndex` to correlate response entries with the request's `dataItemIds`.

Set `returnEntity` to `true` to include the created drafts in the response.

> **Notes:**
> - The published items remain live and unchanged.
> - Per-item `NOT_FOUND` is reported in the result when no published item exists for a given `dataItemId`.
> - Per-item `ALREADY_EXISTS` is reported in the result when a draft already exists for a given `dataItemId`.
> - The order of `results` matches the order of `dataItemIds` in the request.
> - Calling this method triggers a [Data Item Created](https://dev.wix.com/docs/rest/business-solutions/cms/data-items/data-item-created.md) event on the drafts shadow collection for each created draft.

---

## REST API

### Schema

```
 Method: bulkCreateDataItemDrafts
 Description: Creates draft copies of multiple published data items in the corresponding `{dataCollectionId}__drafts` shadow collection.  This method creates each draft independently and supports partial success: if some drafts cannot be created, the remaining ones are still processed. For each item, the response includes an entry in `results` with success/error details. Use `results.itemMetadata.originalIndex` to correlate response entries with the request's `dataItemIds`.  Set `returnEntity` to `true` to include the created drafts in the response.  > **Notes:** > - The published items remain live and unchanged. > - Per-item `NOT_FOUND` is reported in the result when no published item exists for a given `dataItemId`. > - Per-item `ALREADY_EXISTS` is reported in the result when a draft already exists for a given `dataItemId`. > - The order of `results` matches the order of `dataItemIds` in the request. > - Calling this method triggers a [Data Item Created](https://dev.wix.com/docs/rest/business-solutions/cms/data-items/data-item-created.md) event on the drafts shadow collection for each created draft.
 URL: https://www.wixapis.com/wix-data/v2/bulk/items/create-drafts
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  dataCollectionId, dataItemIds
 Method parameters: 
   param name: dataCollectionId | type: dataCollectionId | description: GUID of the published data collection.  Pass the main collection GUID (for example, `tutorials`), not the drafts shadow collection GUID (`tutorials__drafts`). | required: true | validation: maxLength 256
   param name: dataItemIds | type: array<dataItemIds> | description: IDs of the published data items to copy into the drafts shadow collection. Per-item `NOT_FOUND` is reported in the response when no published item exists with a given GUID, and per-item `ALREADY_EXISTS` when a draft already exists for it. | required: true | validation: maxItems 1000, maxLength 128
   param name: returnEntity | type: returnEntity | description: Whether to return the created drafts. When `true`, the `results` objects contain a `dataItem` field.  Default: `false`  
 Return type: BulkCreateDataItemDraftsResponse
  - name: results | type: array<BulkCreateDataItemDraftResult> | description: Per-item results, in the same order as `dataItemIds` in the request. Each entry includes success or error details and, when `returnEntity` is `true`, the created draft.  
     - name: itemMetadata | type: ItemMetadata | description: Per-item success or failure details. Use `originalIndex` to match this result to an GUID in the request's `dataItemIds` array.  
        - name: id | type: string | description: Item GUID. Does not appear if the item GUID is missing. For example, when item creation fails.  | validation: maxLength 128
        - name: originalIndex | type: integer | description: Original index of the item in the array specified in the request. Use this to match items in the request with those in the response.  
        - name: success | type: boolean | description: Whether the requested action was successful. When `false`, the `error` field is populated.  
        - name: error | type: ApplicationError | description: In case of failure, the error details.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: dataItem | type: DataItem | description: Created draft data item.  Returned only when `returnEntity` is `true` and the draft was created successfully. Its `dataCollectionId` is the drafts shadow collection GUID (for example, `tutorials__drafts`).  
        - name: id | type: string | description: Data item GUID.  When an item is inserted into a collection, the item's GUID is automatically assigned a random value. You can optionally provide a custom GUID in `dataItem.id` when inserting the item. If you specify an GUID that already exists in the collection, the insertion will fail.  | validation: maxLength 128, immutable
        - name: dataCollectionId | type: string | description: GUID of the collection this item belongs to.  This is the user-defined collection identifier set when the collection is created (for example, `EvalCustomers`), not a GUID.  | read-only: true | validation: maxLength 256
        - name: data | type: object | description: Data item contents.  Property-value pairs representing the data item's payload. When retrieving a data item, it also includes the following read-only fields:  + `_id`: Item GUID. + `_createdDate`: Date and time the item was added to the collection. + `_updatedDate`: Date and time the item was last modified. When the item is first inserted, `_createdDate` and `_updatedDate` have the same value. + `_owner`: GUID of the user who created the item. Can be modified with site owner permissions.  
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Total numbers of items that succeeded and failed.  
     - name: totalSuccesses | type: integer | description: Number of items successfully processed.  
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  


```

### Examples

### Create drafts for published tutorials
```curl
curl -X POST \
'https://www.wixapis.com/wix-data/v2/bulk/items/create-drafts' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "dataCollectionId": "tutorials",
  "dataItemIds": [
    "5331fc15-9441-4fd4-bc7b-7f6870c69228"
  ],
  "returnEntity": true
}'
```

---