Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Image Proxy

The image proxy serves images from a private Immich instance through Plinth, adding authentication and caching.

Endpoint

GET /api/images/{asset_id}?size=original|preview|thumbnail
ParameterTypeDefaultDescription
asset_idpath (UUID)requiredImmich asset ID
sizequery stringoriginalImage variant

Size variants

SizeDescriptionImmich endpoint
originalFull-resolution image/api/assets/{id}/original
previewResized preview/api/assets/{id}/thumbnail?size=preview
thumbnailSmall thumbnail/api/assets/{id}/thumbnail?size=thumbnail

Response headers

Content-Type: <forwarded from Immich>
Cache-Control: public, max-age=31536000, immutable

The 1-year cache duration is configurable via images.cache_max_age in plinth.toml.

Error responses

StatusCause
400asset_id is not a valid UUID
404Asset not found in Immich
502Failed to connect to Immich
503Image proxy not configured (no IMMICH_API_URL)

Security

  • The asset_id is validated as a UUID to prevent path traversal attacks
  • Immich API key is never exposed to the client — Plinth authenticates server-side
  • The endpoint is publicly accessible (images are meant to be viewed by readers)