---
title: "Download a single media object"
method: GET
path: "/media/{mediaId}/download"
tags: ["Media"]
---

# Download a single media object

`GET /media/{mediaId}/download`

## Request

- Base URL: `https://api.voltairlabs.com`
- URL: `https://api.voltairlabs.com/media/{mediaId}/download`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/voltairlabs/apis/voltair-api/docs/media/:mediaId/download/get.ts> (a function with typed inputs; its response is checked against the schema)

Streams the original S3 object for a single media row with an
`attachment` Content-Disposition header. Used by the demo-ui
lightbox and inspection-row download buttons to avoid the CORS
and cross-origin `<a download>` limitations of going directly
to CloudFront.

## Response `200`

Raw media bytes

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions
- `404`: Resource not found
- `429`: Rate limit exceeded
- `500`: Internal server error
- `502`: Upstream S3 read failed

---

[API](https://skmtc.dev/voltairlabs/apis/voltair-api.md) - [All operations](https://skmtc.dev/voltairlabs/apis/voltair-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voltairlabs/apis/voltair-api/revisions/ad57aa0e0c40?raw)
