---
title: "Serve media (JSON for unencrypted, binary for encrypted)"
method: GET
path: "/media/serve/{id}"
tags: ["Media"]
---

# Serve media (JSON for unencrypted, binary for encrypted)

`GET /media/serve/{id}`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/media/serve/{id}`
- Auth: HTTP bearer

- If the media is encrypted (SSE-C), the server returns the binary content with server-side decryption and `checksum` verification.
- If not encrypted, returns the `Media` object (with the S3 URL).

## Path parameters

- `id` string, uuid, required

## Response `200`

OK

- Media
  - `id` string, uuid, nullable
  - `url` string, nullable
  - `media_type` string, nullable: MIME type (e.g. application/pdf, image/jpeg)
  - `file_size` integer, nullable
  - `security_level` 'STANDARD' | 'SENSITIVE' | 'CRITICAL': Security/encryption level. CRITICAL and SENSITIVE may trigger SSE-C encrypted storage; STANDARD is unencrypted.
  - `encryption_key_id` string, nullable: SSE-C key identifier if the media is encrypted (secure mode)
  - `checksum` string, nullable: SHA-256 of the source content for integrity verification
  - `tags` string[], nullable: Tags normalized to lowercase; max 32 tags; each tag <= 64 chars, [a-z0-9_-]
  - `roles` MediaRole[], nullable: Roles associated with this media for different entities
  - `created_at` string, date-time, nullable
  - `updated_at` string, date-time, nullable

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
