---
title: "Get a presigned download URL for a file"
method: GET
path: "/api/v1/files/{id}/download"
tags: ["Files"]
---

# Get a presigned download URL for a file

`GET /api/v1/files/{id}/download`

Returns a short-lived presigned URL the client can use to download a file that belongs to their agency. The URL expires after a few minutes — refetch this endpoint to get a new one. Files belonging to a different agency, and files whose upload never completed, are not accessible and return 404.

## Path parameters

- `id` string, uuid, required — ID of the file to download

## Response `200`

Presigned download URL

- object
  - `status` 'ok', required
  - `data` object, required
    - `url` string, uri, required — Short-lived presigned URL the client can use to download the file directly from storage.
    - `expires_at` string, date-time, required — ISO 8601 timestamp at which the presigned URL stops being valid.

## Other responses

- `401` — Unauthorized - missing or invalid API key
- `404` — Resource not found
- `422` — Validation error - the request body or query parameters failed validation
- `429` — Too many requests - the caller has exceeded the per-agency rate limit for the tier this endpoint counts against (default per minute: 1200 read / 400 write / 60 upload). Inspect the `RateLimit-*` headers — returned on every response, not only on 429s — and back off until the window resets. See the "Rate limits" section of the introduction for details.
- `500` — Internal server error

---

[API](https://skmtc.dev/recruitwithatlas/apis/atlas-api.md) · [All operations](https://skmtc.dev/recruitwithatlas/apis/atlas-api/llms.txt) · [OpenAPI document](https://skmtc.dev/recruitwithatlas/apis/atlas-api/revisions/bfc1118eeb5d?raw)
