--- title: "Bulk Data Operations" slug: "bulk-data-operations" tags: ["data-integration"] status: "update" updated: 2026-10-13T18:36:00Z published: 2026-10-13T18:36:00Z canonical: "docs.unqork.io/bulk-data-operations" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.unqork.io/llms.txt > Use this file to discover all available pages before exploring further. # Bulk Data Operations > [!NOTE] > All BDO endpoints are only accessible to Creators and Express Administrators. The Bulk Data Operations (BDO) API lets Creators move large volumes of submission data into and out of the UnqorkAI platform. Four operations are available: - **[Export](/unqorkai/docs/bulk-data-operations#export)**: download submission data to a file or cloud storage - **[Import](/unqorkai/docs/bulk-data-operations#import)**: upload submission data from a file or cloud storage - **[Update](/unqorkai/docs/bulk-data-operations#update)**: update existing Data Model records in bulk - **[Delete](/unqorkai/docs/bulk-data-operations#delete)**: soft-delete or permanently delete submission records All BDO jobs are limited to 100 MB. Use [Bulk Operations: Utilities](/unqorkai/docs/bulk-operations-utilities) to generate upload and download links, and to check job status. > Access the Unqork Services page at `https://{environment}.unqork.io/fbu/uapi/docs/documentation/#/Bulk%20Operations/`. Replace `{environment}` with the environment name. ## Export The BDO Export endpoint downloads submission data out of Unqork to a file or cloud storage. Use the HTTP **POST** method: `https://{environment}.unqork.io/fbu/uapi/bulk-operations/export` ### Request Body ```json {  "cloudStorageBucketName": "string",  "cloudStorageServiceName": "string",  "cloudStorageTargetDirectory": "string",  "resourceId": "string",  "dateFieldEndToFilterOn": "string",  "dateFieldStartToFilterOn": "string",  "dateFieldToFilterOn": "created",  "exportFullRecord": true,  "fileFormat": "CSV",  "includeAttachments": true,  "name": "string",  "numberOfFilesToGenerate": 1,  "targetRecordType": "ALL" } ``` ### Parameters | Key | Possible Values | Description | Required | | --- | --- | --- | --- | | `resourceId` | string | The Data Model ID or Module ID containing the records to export. | Optional | | `cloudStorageBucketName` | string (no spaces) | The cloud storage bucket to export data to. When using cloud storage, `cloudStorageServiceName`, `cloudStorageBucketName`, and `cloudStorageTargetDirectory` must all be included. | Optional | | `cloudStorageServiceName` | string (no spaces) | The **Service Name** configured in Services Administration. Supports Amazon S3 and Azure Blob Storage. | Optional | | `cloudStorageTargetDirectory` | string (no spaces) | The in the bucket to export data to, for example `userData/moduleName/submissions`. | Optional | | `dateFieldEndToFilterOn` | string (YYYY-MM-DDTHH:mm:ss:sssZ) | Exports data recorded up to this date (ISO 8601 UTC). Use with `dateFieldStartToFilterOn` to export a time range. | Optional | | `dateFieldStartToFilterOn` | string (YYYY-MM-DDTHH:mm:ss:sssZ) | Exports data recorded after this date (ISO 8601 UTC). | Optional | | `dateFieldToFilterOn` | `created` \| `modified` | Filters by record created or modified date. Must include at least one of the date filter fields. | Optional | | `exportFullRecord` | Boolean | `true` includes all record metadata (`_id`, `owner`, and so on). `false` includes only the `data` object. Unqork recommends `false`. Defaults to `true`. | Yes | | `fileFormat` | `CSV` \| `ZIPWITHCSV` \| `JSON` \| `ZIPWITHJSON` \| `ZIPWITHMULTIPLEJSON` | format. `ZIPWITHMULTIPLEJSON` creates one JSON file per record. Value must be uppercase. | Yes | | `includeAttachments` | Boolean | When `true`, includes file attachments in the export. Defaults to `true`. | Optional | | `name` | string | Name of the export operation. Displays in the Job Tracker **File Name** column. | Yes | | `numberOfFilesToGenerate` | number | Preferred number of output files. If the file exceeds 100 MB, additional files are created automatically. Unqork recommends `1`. | Yes | | `targetRecordType` | `ALL` \| `ACTIVE` \| `ARCHIVED` | Record type to export. Value must be uppercase. | Yes | | `dataModelOrModuleId` | string | **Deprecated.** Use `resourceId` instead. | Optional | ### Example Response ```json {  "id": "67129acfc2f4b88db7a26b59",  "created": 1729272527398,  "data": {    "type": "EXPORT",    "name": "Example Export",    "steps": [      {        "stepType": "EXPORT",        "status": "created",        "files": [          {            "destination": {              "name": "0",              "location": "unqorkResource/export/9adf217f-5ccb-449c-9920-f1e0000597d7/0.csv",              "format": "CSV"            }          }        ]      }    ]  } } ``` The `location` value contains the file's download address. Use [BDO Download-Link](/unqorkai/docs/bulk-operations-utilities#download-link) to retrieve the file. > Use `/fbu/uapi/bulkOperations/job/{jobId}` to check job status. See [Get Job Details](/unqorkai/docs/bulk-operations-utilities#get-job-details). ## Import The BDO Import endpoint uploads submission data into Unqork from a file or cloud storage. Use the HTTP **POST** method: `https://{environment}.unqork.io/fbu/uapi/bulk-operations/import` Before importing, use [BDO Upload-Link](/unqorkai/docs/bulk-operations-utilities#upload-link) to upload the file and get an Unqork file address. ### Request Body ```json {  "dataModelOrModuleId": "string",  "fallbackRecordOwner": "string",  "fileFormat": "CSV",  "fileLocation": "string",  "name": "string",  "storeInData": "false" } ``` ### Parameters | Key | Possible Values | Description | Required | | --- | --- | --- | --- | | `resourceId` | string | The Data Model ID or Module ID to import data into. | Optional | | `fallbackRecordOwner` | string | The `userId` of the Unqork Service User or Express Access Credential with authorized workspace access. | Yes | | `fileFormat` | `CSV` \| `ZIPWITHCSV` \| `JSON` \| `ZIPWITHJSON` \| `ZIPWITHMULTIPLEJSON` | Format of the source file. Value must be uppercase. | Yes | | `fileLocation` | string | Unqork Cloud file address returned by the Upload-Link endpoint, for example `unqorkResource/export/f22047aa-13d3-4070-8def-a8a1a401afff/0.json.gz`. | Yes | | `name` | string | Name of the import operation. Displays in the Job Tracker **File Name** column. | Yes | | `storeInData` | Boolean | `true` stores incoming records under the `data` property. `false` treats them as full submission records including Unqork metadata. Unqork recommends `true`. Defaults to `false`. | Yes | | `dataModelOrModuleId` | string | **Deprecated.** Use `resourceId` instead. | Optional | ### Example Response ```json {  "id": "67169684ec1bf4776fa760a5",  "created": 1729533572882,  "data": {    "type": "UPDATE",    "name": "Import API Test 1",    "steps": [      {        "stepType": "UNZIP",        "status": "created"      },      {        "stepType": "UPDATE",        "status": "created"      }    ]  } } ``` > Check job status using the [Get Job Details](/unqorkai/docs/bulk-operations-utilities#get-job-details) endpoint with the response `id` value. ## Update The BDO Update endpoint updates existing Data Model records in bulk. Only available for Data Model records. Use the HTTP method: `https://{environment}.unqork.io/fbu/uapi/bulk-operations/update` ### Request Body ```json {  "createdDateUpdateValue": "string",  "dataModelOrModuleId": "string",  "fallbackRecordOwner": "string",  "fileFormat": "CSV",  "fileLocation": "string",  "name": "string",  "storeInData": "true",  "uniqueKey": "string",  "upsert": "false" } ``` ### Parameters | Key | Possible Values | Description | Required | | --- | --- | --- | --- | | `resourceId` | string | The Data Model ID or Module ID containing the records to update. | Optional | | `createdDateUpdateValue` | string (ISO 8601 UTC) | Updates the submission creation date to this value. | Optional | | `fallbackRecordOwner` | string | The `userId` of the Unqork Service User or Express Access Credential with authorized workspace access. | Yes | | `fileFormat` | `CSV` \| `ZIPWITHCSV` \| `JSON` \| `ZIPWITHJSON` \| `ZIPWITHMULTIPLEJSON` | Format of the source file. Value must be uppercase. | Yes | | `fileLocation` | string | Unqork Cloud file address returned by the Upload-Link endpoint. | Yes | | `name` | string | Name of the update operation. Displays in the Job Tracker **File Name** column. | Yes | | `storeInData` | Boolean | `true` stores records under the `data` property. `false` treats them as full submission records. Unqork recommends `true`. Defaults to `false`. | Yes | | `uniqueKey` | string | A unique key for the operation. Usually `_id`. | Optional | | `upsert` | Boolean | `true` updates existing records or inserts new ones if absent. `false` updates existing records only. Defaults to `false`. | Optional | | `dataModelOrModuleId` | string | **Deprecated.** Use `resourceId` instead. | Optional | ### Example Response ```json {  "id": "6728e46499610f86e6fac432",  "created": 1730733156001,  "data": {    "type": "UPDATE",    "name": "Bulk Update Example",    "steps": [      {        "stepType": "UPDATE",        "status": "created"      }    ]  } } ``` > Check job status using the [Get Job Details](/unqorkai/docs/bulk-operations-utilities#get-job-details) endpoint with the response `id` value. ## Delete The BDO Delete endpoint soft-deletes or permanently deletes submission records. BDO Delete is disabled by design. Contact an Unqork representative to enable it. Use the HTTP **POST** method: `https://{environment}.unqork.io/fbu/uapi/bulk-operations/delete` > BDO Delete removes a maximum of 500,000 records per operation. Larger collections require multiple runs. ### Soft Delete and Hard Delete Delete operates in two stages: - **Soft delete** (first run): Archives records, removing them from Record Collections but retaining them in the database. Records can be recovered. - **Hard delete** (second run with `destroy=true`): Permanently and irreversibly deletes all archived records. Use for PII or sensitive data that must not be retained. > Unqork recommends exporting a copy of records before deleting. Contact an Unqork representative to recover soft-deleted records. ### Query String Parameters | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `destroy` | Boolean | After soft-deleting records, add `?destroy=true` and run the operation again to permanently delete all archived records. Has no effect if records have not been soft-deleted first. | No | ### Body Parameters ```json {  "dataModelOrModuleId": "string",  "name": "string",  "dateFieldToFilterOn": "created",  "dateFieldStartToFilterOn": "string",  "dateFieldEndToFilterOn": "string" } ``` | Key | Possible Values | Description | Required | | --- | --- | --- | --- | | `name` | string | Name of the delete operation. Displays in the Job Tracker **File Name** column. | Yes | | `resourceId` | string | The Data Model ID or Module ID containing the records to delete. | Optional | | `dataSource` | `MODULE` \| `EXPORT` | The source of the query. `MODULE` targets records associated with a module, workflow, or data model. `EXPORT` targets records from a previous Export operation. | Optional | | `exportOperationId` | string | The `id` of the Export operation to use as the data source. Required when `dataSource` is `EXPORT`. | Optional | | `dateFieldToFilterOn` | `created` \| `modified` \| `deleted` | Filters records by creation, modification, or deletion date. The `deleted` filter requires `destroy=true`. Must include at least one date range field. | Optional | | `dateFieldStartToFilterOn` | string (ISO 8601 UTC) | Deletes records created or modified after this date. This field is exclusive (`>`). | Optional | | `dateFieldEndToFilterOn` | string (ISO 8601 UTC) | Deletes records up to this date. This field is (`<=`). | Optional | | `targetRecordType` | `ALL` \| `ACTIVE` \| `ARCHIVED` | Record type to delete. Value must be uppercase. | Optional | | `dataModelOrModuleId` | string | **Deprecated.** Use `resourceId` instead. | Optional | ### Example Response ```json {  "id": "6728e46499610f86e6fac431",  "created": 1730733156824,  "data": {    "type": "DELETE",    "name": "Delete Example",    "steps": [      {        "stepType": "DELETE",        "status": "created",        "options": {          "delete": {            "mode": "DELETE",            "dataSource": "MODULE",            "targetRecords": "ARCHIVED"          }        }      }    ]  } } ``` > Check job status using the [Get Job Details](/unqorkai/docs/bulk-operations-utilities#get-job-details) endpoint with the response `id` value. --- **Changelog** | Date | Change | | --- | --- | | 2026-10-06 | Added BDO How-To Guides link to See Also. | | 2026-08-17 | Consolidated from separate v1 BDO Export, Import, Update, and Delete articles. | An API endpoint is the location where an API receives requests for a specific resource on its server. It's the point of contact between an API client and an API server, and is usually a uniform resource locator (URL) that provides the location of the resource. Also known as Unqork Users, or Designer Users; is anyone who is inside the Unqork platform. The Unqork front-end application framework that delivers Creator-built applications to end-users. Express is the layer end-users interact with—the published forms, screens, and navigation built in the Module Builder. Express is distinct from Express View, which is a Creator-facing preview tool in the IDE. APIs (application programming interfaces) are a set of protocols and definitions developers use to build and integrate application software. APIs act as the connective tissue between products and services. An API endpoint is the location where an API receives requests for a specific resource on its server. It's the point of contact between an API client and an API server, and is usually a uniform resource locator (URL) that provides the location of the resource. HTTP (Hypertext Transfer Protocol) is an application-layer protocol used to transmit hypermedia documents like HTML. The HTTP POST method is used to send data to a server to create or update a resource, typically including the data in the body of the request. A string is an object that represents a sequence of characters. Strings typically hold data represented in text form. S3 (Simple Storage Service) Buckets are public cloud storage containers that act as file folders and object storage. They can be accessed by the S3 Bucket's URL. A standard format for representing dates and times. ISO 8601 format is represented in the following order: year, month, day, hour, minutes, seconds, and milliseconds. Coordinated Universal Time (UTC) is a standard, globally-accepted timezone used to regulate clocks and time around the world. The Boolean data type accepts one of two values: true, or, false. An object is a type of data structure that represents a single, self-contained entity that acts as a container for the characteristics of that entity. JSON (JavaScript Object Notation) is an open standard file and data interchange format. Unqork uses JSON for submission (record) data. Unqork Service Users are server-side only credentials used in API calls and authorizations. Unlike regular express users, service users are not tied to a person. Instead, they are managed by the company account. Service users have been replaced by Express Credentials created in the API Access Management administration page. A JavaScript property is a member of an object that associates a key with a value. A JavaScript object is a data structure that stores a collection of properties. Unqork Service Users are server-side only credentials used in API calls and authorizations. Unlike regular express users, service users are not tied to a person. Instead, they are managed by the company account. Service users have been replaced by Express Credentials created in the API Access Management administration page. A key-value pair is a fundamental data structure where a unique "key" is associated with a specific "value," used for organizing and retrieving data efficiently, like in dictionaries or databases. Personal Identifiable Information (PII) is any representation of information that permits the identity of an individual to whom the information applies to be reasonably inferred by either direct or indirect means. A query lets you retrieve, access, manipulate, and delete data in a database.