Shows, Movies & Episodes #
The largest single resource group — library browsing, metadata editing, matching state, and writeback.
| Method | Path | Description | Auth |
|---|---|---|---|
| GET | /api/content/:type/:id/access-check | Parental gate used before VOD starttype: movie | episode | show | auth |
| GET | /api/images/proxy | Fetch + cache any external image URLquery: url | public |
| POST | /api/shows/:id/refresh-metadata | Re-pull metadata from the confirmed scraper match | admin |
| POST | /api/movies/:id/refresh-metadata | Same, for a movie | admin |
| PATCH | /api/shows/:id/skip-scraping | Body: skip_scraping | admin |
| PATCH | /api/movies/:id/skip-scraping | Body: skip_scraping | admin |
| PATCH | /api/shows/:id/find-specials | Opt in/out of auto specials scanningbody: find_specials | admin |
| PATCH | /api/shows/:id/episode-display-order | Body: episode_display_order (season/aired) | admin |
| GET | /api/libraries | List libraries | auth |
| PATCH | /api/libraries/:id/home-visibility | Body: show_on_home | admin |
| GET | /api/metadata/values | Distinct values for a metadata field, for filter autocompletequery: field, type, library_id | auth |
| GET | /api/shows | Search/browse, paginated + parental-filteredquery: q, genre, year, content_rating, label, network, actor, country, collection, studio, sort, library_id, limit, offset | auth |
| GET | /api/shows/:id/episodes | Query: season | auth |
| GET | /api/shows/:id/seasons | Season list | auth |
| GET | /api/shows/:id/languages | Probed audio/subtitle languages | auth |
| GET | /api/shows/:id/videoinfo | Probed codec/resolution/bit-depth | auth |
| GET | /api/episodes | Searchquery: show_id, q, season, limit, offset | auth |
| GET | /api/movies | Search/browse — same filter family as /api/shows | auth |
| GET | /api/shows/:id | Full detail incl. every linked source (404 instead of 403 if restricted) | auth |
| PATCH | /api/shows/:id | Manual metadata edit, records a per-field overridebody: title, overview, studio, status, content_rating, genres, tags, labels, network, actors, countries, collections, year, imdb_id, tvdb_id, tmdb_id, thumb, art | admin |
| POST | /api/shows/:id/writeback | Push metadata back to Plex/Jellyfin — 403 unless the match is human-confirmed | admin |
| POST | /api/shows/:id/merge | Merge a duplicate show into this onebody: duplicate_id, confirm | admin |
| GET | /api/shows/:id/thumb, /art | Proxied poster/art | auth |
| GET | /api/episodes/:id/thumb | Proxied episode thumbnail | auth |
| GET | /api/movies/:id | Full detail | auth |
| PATCH | /api/movies/:id | Similar field set to shows (incl. tags), minus season/network | admin |
| POST | /api/movies/:id/writeback | Same confirmed-match gate as shows | admin |
| POST | /api/movies/:id/merge | Body: duplicate_id, confirm | admin |
| GET | /api/movies/:id/thumb, /art | Proxied poster/art | auth |
| GET | /api/movies/:id/languages, /videoinfo | Probed language/video info | auth |