Image routes

Authenticated random-image endpoints for fox, bird, shibe, and more, each returning a proxied URL.

Image routes

All /images/* routes require authentication. Each returns a random object from the matching MinIO prefix and adds a url that points to the authenticated proxy.

Available endpoints

RouteBucket prefix
GET /images/fox/randomfox/
GET /images/bird/randombird/
GET /images/shibe/randomshibe/
GET /images/weiner-dog/randomweiner-dog/
GET /images/slap/randomslap/
GET /images/hug/randomhug/
GET /images/kiss/randomkiss/
GET /images/smug/randomsmug/
GET /images/pat/randompat/

Example: random fox

GEThttps://api.lunargroup.dev/images/fox/randomAuth required
Return a random fox image with a proxied URL.
curl
curl -s https://api.lunargroup.dev/images/fox/random \
  -H "Authorization: Bearer $JWT"

Response 200:

{
  "name": "fox/example.png",
  "etag": "etag-value",
  "size": 123456,
  "lastModified": "2026-03-31T18:00:00.000Z",
  "url": "https://api.lunargroup.dev/i/fox/example.png"
}

Errors

If the bucket has no images for that prefix, the central error handler renders the failure:

{ "message": "No fox images found in bucket", "stack": "..." }

An internal guard may also surface as:

{ "status": 500, "message": "Fox image name missing" }