Skip to content

Version 1 · Read-only

Integration API

Your server's status, libraries and playback, for dashboards and monitoring tools.

OpenAPI document Integration guide /api/integration/v1 JSON · Prometheus ETag · 304

Essentials

Authentication

X-Quven-Key: <key> or Bearer

Caching

If-None-Match → 304

Rate limit

120 requests a minute per key, then 429

Privacy

No viewers, devices or folder paths.

Routes

GET /server Identity and version
Response IntegrationServerDto
  • apiVersion integer
  • name string
  • serverId uuid
  • startedUtc date-time
  • version string
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
{
  "serverId": "2f1c0f5e-7f5a-4a1e-9d3f-8c9a1b2c3d4e",
  "name": "Living room",
  "version": "1.1.11",
  "apiVersion": 1,
  "startedUtc": "2026-08-27T18:04:11.000Z"
}
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/server" \
  -H "X-Quven-Key: $QUVEN_KEY"
GET /libraries Libraries served
Response IntegrationLibraryListDto
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
{
  "items": [
    {
      "id": "9b7d5a10-2c44-4f31-8a0b-5d6e7f801234",
      "name": "Films",
      "kind": "Movies",
      "fileCount": 2280,
      "lastScannedUtc": "2026-08-27T02:15:00.000Z"
    },
    {
      "id": "c4e8f2b1-6a37-4c58-9e10-2b3c4d5e6f70",
      "name": "Series",
      "kind": "Shows",
      "fileCount": 14032,
      "lastScannedUtc": null
    }
  ]
}
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/libraries" \
  -H "X-Quven-Key: $QUVEN_KEY"
GET /statistics Title counts and storage
Response IntegrationStatisticsDto
  • episodeCount integer
  • fileCount integer
  • movieCount integer
  • showCount integer
  • totalStorageBytes integer
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
{
  "movieCount": 2280,
  "showCount": 190,
  "episodeCount": 14032,
  "fileCount": 16312,
  "totalStorageBytes": 41284773120
}
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/statistics" \
  -H "X-Quven-Key: $QUVEN_KEY"
GET /sessions Playback in progress
Response IntegrationSessionListDto
  • items array IntegrationSessionDto
  • durationSeconds integer
  • episodeNumber integer
  • isTranscoding boolean
  • kind string
  • + 6 fields
  • observedUtc date-time
  • refreshAfterSeconds integer
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
{
  "items": [
    {
      "mediaId": "7d1e2f30-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
      "title": "The Lives of Others",
      "kind": "Movie",
      "seriesTitle": null,
      "seasonNumber": null,
      "episodeNumber": null,
      "positionSeconds": 1832,
      "durationSeconds": 8340,
      "isTranscoding": false,
      "posterUrl": "https://image.tmdb.org/t/p/w342/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg"
    }
  ],
  "observedUtc": "2026-08-27T20:41:09.000Z",
  "refreshAfterSeconds": 10
}
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/sessions" \
  -H "X-Quven-Key: $QUVEN_KEY"
GET /history Finished playback, newest first
Parameters 2 · query
Name Type Default Range
limit integer 50 1–200
offset integer 0 ≥ 0
Response IntegrationHistoryPageDto
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
{
  "items": [
    {
      "mediaId": "7d1e2f30-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
      "title": "The Lives of Others",
      "kind": "Movie",
      "subtitle": null,
      "startedUtc": "2026-08-26T21:02:44.000Z",
      "endedUtc": "2026-08-26T23:21:12.000Z",
      "positionSeconds": 8308,
      "watchedToEnd": true,
      "posterUrl": "https://image.tmdb.org/t/p/w342/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg"
    }
  ],
  "totalCount": 4132,
  "offset": 0,
  "limit": 50
}
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/history" \
  -H "X-Quven-Key: $QUVEN_KEY"
GET /metrics Prometheus counters text/plain
Status codes 200 304 401 429
  • 200 OK
  • 304 Not Modified
  • 401 Unauthorized
  • 429 Too Many Requests
Try it Sent from this browser to your server
# HELP quven_movies_total Films in the catalogue.
# TYPE quven_movies_total gauge
quven_movies_total 2280
# HELP quven_library_files Physical media files per library.
# TYPE quven_library_files gauge
quven_library_files{library="Films",kind="Movies"} 2280
quven_library_files{library="Series",kind="Shows"} 14032
# HELP quven_sessions_active Playback sessions in progress.
# TYPE quven_sessions_active gauge
quven_sessions_active 1
Code curl · JavaScript · Python · PowerShell
curl "http://localhost:5181/api/integration/v1/metrics" \
  -H "X-Quven-Key: $QUVEN_KEY"

Models

IntegrationHistoryEntryDto 9 fields
  • endedUtc date-time
  • kind string
  • mediaId uuid
  • positionSeconds integer
  • posterUrl string
  • startedUtc date-time
  • subtitle string
  • title string
  • watchedToEnd boolean
IntegrationHistoryPageDto 4 fields
IntegrationLibraryDto 5 fields
  • fileCount integer
  • id uuid
  • kind string
  • lastScannedUtc date-time
  • name string
IntegrationLibraryListDto 1 field
IntegrationServerDto 5 fields
  • apiVersion integer
  • name string
  • serverId uuid
  • startedUtc date-time
  • version string
IntegrationSessionDto 10 fields
  • durationSeconds integer
  • episodeNumber integer
  • isTranscoding boolean
  • kind string
  • mediaId uuid
  • positionSeconds integer
  • posterUrl string
  • seasonNumber integer
  • seriesTitle string
  • title string
IntegrationSessionListDto 3 fields
IntegrationStatisticsDto 5 fields
  • episodeCount integer
  • fileCount integer
  • movieCount integer
  • showCount integer
  • totalStorageBytes integer