---
title: "Uploading images"
canonical_url: https://support.digitalphotogallery.com/articles/article/ed720389-054e-4037-b8d6-98771af4bff9
short_url: https://dpg.support/adja
category: "API"
locale: en
updated_at: 2026-07-03T17:22:40Z
source: Digital Photo Gallery Support
---

# Uploading images

When you upload through the API, the image itself doesn't pass through the API. We give you a short-lived, signed ticket, and you send the file straight to your account's image processor, which is built to take it.

### How it works

**1.** Call `POST /v1/uploads` with the image's details: `filename`, `title`, `description`, `keywords`, `creation_date`, `set_public_uuid` and `read_metadata`. We check all of it here and bake it into the ticket.

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

{ "filename": "IMG_1234.jpg", "title": "Sound check", "set_public_uuid": "…" }
```

**2.** You get a ticket back:

```json
{
  "upload_url": "https://…imageprocessor…",
  "file_field": "file",
  "fields": { "…signed envelope…" },
  "transaction_uuid": "…"
}
```

**3.** Send the file as `multipart/form-data` to `upload_url`, including every entry from `fields` along with the file itself as the `file` part.

**4.** The processor creates the image and hands back its `image_public_uuid`, which you can then read with `GET /v1/images/{that}`.

> 💡 **Tip:** Send your titles, captions and keywords to `POST /v1/uploads`, not as extra parts on the upload. We check them there and put them into `fields` for you, so all you have to do is pass `fields` back exactly as they came.

> ⚠️ **Warning:** The ticket doesn't last long. Ask for it and upload promptly, and don't hold on to a ticket to reuse later.
