---
title: "Downloads & archives"
canonical_url: https://support.digitalphotogallery.com/articles/article/ceaec2dd-2c1d-4da9-a962-f2d217ecf4e7
short_url: https://dpg.support/acni
category: "API"
locale: en
updated_at: 2026-07-03T17:22:42Z
source: Digital Photo Gallery Support
---

# Downloads & archives

The API can hand you secure, time-limited download links, including for the private original that never appears on your public CDN, and it can build ZIP archives whenever you need them.

### Downloading a single file

`POST /v1/downloads` gives you a signed URL for one version of an image:

```
POST /v1/downloads
Idempotency-Key: <uuid>

{ "image_public_uuid": "be66ea4e-…", "version": "original" }
```

```json
{ "url": "https://…signed…", "filename": "IMG_1234.jpg", "access": "private", "expires_at": 1783099999 }
```

The link works until the time in `expires_at`, then it stops. Leave `version` out and you'll get the largest version we can serve. This one needs the `api.download` scope.

### Building a ZIP archive

When you want a lot of images at once, build an archive:

- `POST /v1/archives` with `image_public_uuids: […]` (and, if you like, a `version_profile_uuid` and a `filename`) kicks off the build and hands back an Operation to poll.
- `GET /v1/archives` lists the archives your account has ready, each with a link you can share, its size, how many images it holds, and when it expires.

```
POST /v1/archives
Idempotency-Key: <uuid>

{ "image_public_uuids": ["…", "…"], "filename": "friday-selects" }
```

> 💡 **Tip:** Archives are the way to send a whole selection to a client. The build happens in the background as an Operation, so poll it, then share the link from `GET /v1/archives`.
