Download Document ZIPs
How to request cached ZIP archives for all or selected documents in organization, cluster, and location scopes.
Document ZIP downloads are prepared asynchronously by the background-jobs host. The first request usually returns a preparation status. When the archive is ready, the same request returns a temporary download URL.
Scope endpoints
Cluster documents:
GET /v1/spatial/clusters/{clusterId}/documents/zip/status
GET /v1/spatial/clusters/{clusterId}/documents/zip/download
POST /v1/spatial/clusters/{clusterId}/documents/zip/status
POST /v1/spatial/clusters/{clusterId}/documents/zip/downloadLocation documents:
GET /v1/spatial/locations/{locationId}/documents/zip/status
GET /v1/spatial/locations/{locationId}/documents/zip/download
POST /v1/spatial/locations/{locationId}/documents/zip/status
POST /v1/spatial/locations/{locationId}/documents/zip/downloadOrganization documents:
GET /v1/orgs/{organizationId}/documents/zip/status
GET /v1/orgs/{organizationId}/documents/zip/download
POST /v1/orgs/{organizationId}/documents/zip/status
POST /v1/orgs/{organizationId}/documents/zip/downloadAll documents
Call the GET download endpoint without folderPath, or call the POST download endpoint with {}.
POST /v1/spatial/locations/{locationId}/documents/zip/download
Content-Type: application/json{}If the ZIP is not ready, the API returns 202 Accepted with progress fields. Poll the matching status endpoint or repeat the download request.
Folder documents
Use the GET endpoints with folderPath when only one document folder should be archived.
GET /v1/spatial/locations/{locationId}/documents/zip/download?folderPath=permits/2026ZIP entry names use logical document folder paths. If a document is moved from permits/2026 to archive/permits/2026, new archives use the new folder path even when the stored object key remains unchanged.
Selected documents
Use the POST endpoints with documentIds when the user chooses specific files.
{
"documentIds": [
"44444444-4444-4444-4444-444444444444",
"55555555-5555-5555-5555-555555555555"
]
}Every selected document must belong to the requested scope. Equivalent selections reuse the same active or completed archive even when IDs are sent in a different order.
Response
{
"status": 3,
"progressPercent": 100,
"progressBytes": 123456,
"totalBytes": 123456,
"archiveSizeBytes": 98304,
"preparedAtUtc": "2026-05-31T12:00:00Z",
"statusUpdatedAtUtc": "2026-05-31T12:00:00Z",
"downloadUrl": "https://storage.example.test/presigned",
"expiresAt": "2026-05-31T12:15:00Z",
"fileName": "site-a-selected-documents.zip",
"error": null
}status uses the shared ZIP preparation enum: 0 none, 1 queued, 2 preparing, 3 ready, and 4 failed.
Cached ZIP outputs are removed by the configured ZIP retention cleanup. Clients should treat downloadUrl as temporary and request the archive again when it expires.