Bulk Download
Overview
The bulk download feature allows clients to package selected documents and/or folders into a single downloadable ZIP archive. The process is asynchronous — you initiate the job, poll for completion, then download the archive.
The workflow involves the following steps:
- (Optional) Fetch document and folder IDs — use the
dataRoomDocumentIndexquery to retrieve the IDs of the documents and folders you want to include. - Initiate the bulk download — call the
initiateDataRoomBulkDownloadmutation with the selected IDs. - Poll for status — use the
dataRoomBulkDownloadquery with the returnedbulkDownload.iduntilstatusisDONE. - Download the archive — fetch the
downloadUrlfrom the response and download the ZIP file.
Selection Rules
- You must provide at least one item in
documentIdsorfolderIds. Requests with both lists empty (or omitted) are rejected as invalid. - To download all documents the current user can access, include the root folder ID of the DataRoom in
folderIds.
Initiate Bulk Download
Submits a request to package the selected documents and/or folders into a downloadable ZIP archive.
This operation requires the DataRoom-scoped token.
mutation InitiateDataRoomBulkDownload {
initiateDataRoomBulkDownload(
input: {
bulkDownloadName: "My Bulk Download"
dataRoomId: "RGF0YVJvb206Nzk4Mjc="
folderIds: ["RGF0YVJvb21Gb2xkZXI6MTQ0MzIxOA=="]
}
) {
bulkDownload {
id
bulkDownloadName
status
progress
createdAt
updatedAt
fileCount
totalSizeBytes
downloadUrl
}
errors {
message
errorCode
}
}
}
Input Fields
| Field | Type | Required | Description |
|---|---|---|---|
bulkDownloadName | string | Yes | A display name for the bulk download job. |
dataRoomId | ID | Yes | The ID of the DataRoom to download from. |
documentIds | [ID] | No | List of document IDs to include in the archive. |
folderIds | [ID] | No | List of folder IDs to include (includes subfolders). |
Poll Bulk Download Status
Retrieves the current status and details of a bulk download job. Poll this query until status is DONE, then use downloadUrl to fetch the archive.
This operation requires the DataRoom-scoped token.
query DataRoomBulkDownload {
dataRoomBulkDownload(bulkDownloadId: "RGF0YVJvb21CdWxrRG93bmxvYWQ6Nzk4Mjc6MTc2NTA=") {
id
bulkDownloadName
status
progress
createdAt
updatedAt
fileCount
totalSizeBytes
downloadUrl
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | ID | Unique identifier for the bulk download job. |
bulkDownloadName | string | The display name provided when the job was initiated. |
status | enum | Current job status: PENDING, PROCESSING, or DONE. |
progress | float | Completion percentage (0–100). |
createdAt | datetime | When the job was created. |
updatedAt | datetime | When the job was last updated. |
fileCount | int | Number of files included in the archive. |
totalSizeBytes | long | Total uncompressed size of the archive contents in bytes. |
downloadUrl | string | Populated once status is DONE. Use this URL to download the ZIP. |
Archive Contents
The generated ZIP includes a JSON mapping file at:
Required Configuration Files/DocumentIdToArchivePath.json
This file maps each documentId to its path and name inside the archive. The ZIP may also include error entries for any document IDs that could not be packaged (for example, due to permission issues).