**Source URL:** https://general.veevavault.dev/medical/vault-api/api-reference/26.1/vault-loader/multi-file-load/load-data-objects.md

# Load Data Objects



Create a loader job and load a set of data files. You can load a maximum of 10 data objects per request.

<Endpoint path="/api/{version}/services/loader/load" method="POST"></Endpoint>

## Headers {#headers}

| Name | Description |
| --- | --- |
| `Content-Type` | `application/json` |
| `Accept` | `application/json` |

## Body Parameters {#body-parameters}

The body of your request should be a JSON file containing the set of data objects to load.

<FieldTable>
| Name | Description |
| --- | --- |
| `entity_type` | The type of entity to load. The following values are allowed: `vobjects__v``documents__v` `document_versions__v``document_relationships__v` `groups__v``document_roles__v``document_versions_roles__v``document_renditions__v``document_attachments__v` |
| `object` | If the `entity_type=vobjects__v`, include the object name. For example, `product__v`. |
| `action` | The action type to `create`, `update`, `upsert`, or `delete` data objects. If the `entity_type`=`vobjects__v`, the action types `create_attachments`, `delete_attachments`, `assign_roles`, and `remove_roles` are also available. |
| `file` | Include the filepath to reference the CSV load file on [file staging](/vault-api/guides/file-staging). |
| `changeobjecttype` | If the `entity_type=vobjects__v` and the `action` is `update` or `upsert`, you can set this to `true` to change the object type of existing object records. This operation is only supported for objects with object types enabled. The CSV load file must include the `id` and `object_type__v` columns. |
| `order` | Specifies the order of the load task. |
| `idparam` | Identify object records by any unique field value. Can only be used if `entity_type` is `vobjects__v` and `action` is `upsert`, `update`, or `delete`. You can use any object field which has `unique` set to `true` in the object metadata. For example, `idparam=external_id__v`. |
| `recordmigrationmode` | Set to `true` to create or update object records in a noninitial state and with minimal validation, bypass rules such as entry criteria, create inactive records, and set system-managed fields such as `created_by__v`. Does not bypass record triggers. Use `notriggers` to bypass triggers. The `recordmigrationmode` parameter can only be used if `entity_type` is `vobjects__v` and `action` is `create`, `update`, or `upsert`. Vault does not send notifications in Record Migration Mode. You must have the [Record Migration](https://platform.veevavault.help/en/gr/22824#vault-owner-actions) permission to use this parameter. Learn more about [Record Migration Mode in Vault Help](https://platform.veevavault.help/en/gr/761685). |
| `notriggers` | If set to `true`, [Record](https://platform.veevavault.help/en/gr/761685) or [Document Migration Mode](https://platform.veevavault.help/en/gr/54028) bypasses record or document triggers. |
| `documentmigrationmode` | Set to `true` to create documents, document versions, document version roles, or document renditions in a specific state or state type. Also allows you to set the name, document number, and version number. For `update` actions, only allows you to manually reset document numbers. Vault does not send notifications in Document Migration Mode. You must have the [Document Migration](https://platform.veevavault.help/en/gr/22824#vault-owner-actions) permission to use this parameter. Learn more about [Document Migration Mode in Vault Help](https://platform.veevavault.help/en/gr/54028). |
</FieldTable>

## Query Parameters {#query-parameters}

<FieldTable>
| Name | Description |
| --- | --- |
| `sendNotification` | To send a Vault notification when the job completes, set to `true`. If omitted, this defaults to `false` and Vault does not send a notification when the job completes. |
</FieldTable>

#### About File Validation {#about-file-validation}

Vault evaluates header rows in CSV load files to ensure they include all required fields. Required fields vary depending on the `object_type` and `action`. Learn more about Vault Loader input files for [documents](https://platform.veevavault.help/en/gr/26605#preparing), [document roles](https://platform.veevavault.help/en/gr/26613#preparing), [document attachments](https://platform.veevavault.help/en/gr/67267#prepare), [objects](https://platform.veevavault.help/en/gr/26607#prepare), and [object attachments](https://platform.veevavault.help/en/gr/67288#prepare) in Vault Help.

## Request {#request}

<CodeExample title="">
```
curl -X POST -H "Authorization: {SESSION_ID}" \
- H "Content-Type: application/json" \
--data-raw '[
  {
    "entity_type": "documents__v",
    "action": "create",
    "file": "documents.csv",
    "documentmigrationmode": true,
    "order": 1
  },
  {
    "entity_type": "vobjects__v",
    "object": "veterinary_patient__c",
    "action": "create",
    "file": "patients.csv",
    "recordmigrationmode": true,
    "order": 2
  },
  {
    "entity_type": "vobjects__v",
    "object": "product__v",
    "action": "upsert",
    "file": "products.csv",
    "order": 3,
    "idparam": "external_id__v"
  },
  {
    "entity_type": "groups__v",
    "action": "update",
    "file": "groups.csv",
    "order": 4
  },
  {
    "entity_type": "vobjects__v",
    "object": "product__v",
    "action": "update",
    "changeobjecttype": true,
    "file": "change_object_type.csv",
    "order": 5,
    "idparam": "id"
  }
]' \
https://myvault.veevavault.com/api/v20.2/services/loader/load

```
</CodeExample>

## Response {#response}

<CodeExample title="">
```
{
    "responseStatus": "SUCCESS",
    "url": "/api/v20.2/services/jobs/92201",
    "job_id": 92201,
    "tasks": [
        {
            "task_id": "1",
            "entity_type": "documents__v",
            "action": "create",
            "documentmigrationmode": true,
            "file": "documents.csv"
        },
        {
            "task_id": "2",
            "entity_type": "vobjects__v",
            "object": "veterinary_patient__c",
            "action": "create",
            "recordmigrationmode": true,
            "file": "patients.csv"
        },
        {
            "task_id": "3",
            "entity_type": "vobjects__v",
            "object": "product__v",
            "action": "upsert",
            "idparam": "external_id__v",
            "file": "products.csv"
        },
        {
            "task_id": "4",
            "entity_type": "groups__v",
            "action": "update",
            "file": "groups.csv"
        },
	    {
            "task_id": "5",
            "entity_type": "vobjects__v",
            "object": "product__v",
            "action": "update",
            "idparam": "id",
            "changeobjecttype": true,
            "file": "change_object_type.csv"
        }
    ]
}

```
</CodeExample>

## Response Details {#response-details}

On `SUCCESS`, the response includes the following information:

<FieldTable>
| Name | Description |
| --- | --- |
| `job_id` | The Job ID value to retrieve the [status](/vault-api/api-reference/26.1/jobs/retrieve-job-status) of the loader extract request. |
| `tasks` | The `task_id` for each load request. |
</FieldTable>

---

**Previous:** [Multi-File Load](/medical/vault-api/api-reference/26.1/vault-loader/multi-file-load)  
**Next:** [Retrieve Load Success Log Results](/medical/vault-api/api-reference/26.1/vault-loader/multi-file-load/retrieve-load-success-log-results)