Tdarr progress (admin)
HTTP routes and behavior for tdarr progress (admin).
GET /api/tdarr/{instanceID}/activityGET /api/tdarr/{instanceID}/librariesGET /api/tdarr/{instanceID}/stats?library_id=...All three routes require monitoring:read (admin-only) and a tdarr instance. Activity returns normalized nodes/workers, filename/source path, job kind, CPU/GPU, current-step progress, FPS, ETA, and flow status. Libraries returns only IDs and names. Stats omits library_id for all libraries, or reads the selected library’s status counts. Each response includes observed_at; missing measurements/counts remain null, never invented zeroes. Global transcode success includes not-required files, and errors include cancelled files, as their labels state. Per-library statuses retain Tdarr’s separate labels. These counts describe current state, not an overall percentage or completion ETA.
Tdarr uses the existing service_instances table with encrypted credentials, not a separate state database. Instance create/update/test accept the server API URL (normally port 8266) and optional api_key. Blank edits preserve a saved key; Tdarr-only clear_api_key: true explicitly removes it in both test and save. Instance responses expose only has_api_key, never the key. Connection tests check server status and every supported read shape, including one library’s stats when available. Older or incompatible responses and upstream failures return readable errors instead of empty success.
The server uses the internal/unproxied transport and fixed read operations only: get-nodes, cruddb reads of LibrarySettingsJSONDB and StatisticsJSONDB, and stats/get-pies. No generic instance proxy is available for Tdarr, even to admins. Concurrent reads coalesce; activity expires after 5 seconds and libraries/stats after 30 seconds. Editing/deleting the instance invalidates its client and caches, including isolation from old in-flight reads. The app polls visible foreground Activity every 10 seconds and Libraries every 30 seconds, retains a timestamped stale snapshot on failure, and cancels obsolete selections. There are no Tdarr writes, AI tools, job controls, or Radarr/Sonarr title matching.
Stats also includes a note explaining its scope: global queue/category counts need not add up to the file total (active/staged files can be absent), and per-library saved statuses can still say Queued while a file is processing or awaiting acceptance. Staging acceptance remains in Tdarr; an idle Activity view does not mean the library is finished.