Discover
33 addresses. Not promised — they belong to the internals and can change with any release. If you need something to stay put, use the promised thirteen.
GET
/api/arr/{media_type}/options
may change
Quality profiles and target folders
For the choice shown before adding something. Profiles blocked for this account are not returned at all, rather than being offered and refused later.
Fields and shape
Parameters
media_typemovie | tv path requiredtierstandard | uhd queryResponse
quality_profileslist of ArrOption requiredroot_folderslist of ArrRootFolder requireddefault_quality_profile_idnumber or nulldefault_root_folderstring or nullroot_folder_choicebooleanquality_profile_choicebooleanResponse shape
{
"quality_profiles": [
{
"id": "number",
"name": "string"
}
],
"root_folders": [
{
"path": "string",
"free_space": "number | null"
}
],
"default_quality_profile_id": "number | null",
"default_root_folder": "string | null",
"root_folder_choice": "boolean",
"quality_profile_choice": "boolean"
}
GET
/api/browse/{media_type}
may change
Everything under a keyword or studio
All titles for one keyword or one studio, paged.
Fields and shape
Parameters
media_typemovie | tv path requiredkeyword_idnumber or null querycompany_idnumber or null querypagenumber queryResponse
labelstring requiredpageMediaPage requiredResponse shape
{
"label": "string",
"page": {
"page": "number",
"total_pages": "number",
"total_results": "number",
"items": [
{}
],
"demo": "boolean",
"arr_warning": "string | null"
}
}
GET
/api/calendar
may change
What arrives when
What appears in the given period - your own holdings and new releases. There is deliberately no region parameter: the region comes from the profile, so a calendar cannot show dates for a country the viewer does not live in.
Fields and shape
Parameters
date_fromstring or null querydate_tostring or null querysourcesall | mine | new querydate_typedigital | kino querynoisesinnvoll | studios | known | none queryResponse
date_fromstring requireddate_tostring requireddayslist of CalendarDayarr_warningstring or nulltmdb_warningstring or nulldemobooleanResponse shape
{
"date_from": "string",
"date_to": "string",
"days": [
{
"date": "string",
"entries": [
{}
]
}
],
"arr_warning": "string | null",
"tmdb_warning": "string | null",
"demo": "boolean"
}
GET
/api/detail/tv/{tmdb_id}/season/{season_number}
may change
Episodes of one season
The episodes of a season, including which of them are already here.
Fields and shape
Parameters
tmdb_idnumber path requiredseason_numbernumber path requiredResponse
season_numbernumber requirednamestring requiredoverviewstringair_datestring or nullepisodeslist of EpisodeInfoResponse shape
{
"season_number": "number",
"name": "string",
"overview": "string",
"air_date": "string | null",
"episodes": [
{
"episode_number": "number",
"name": "string",
"overview": "string",
"air_date": "string | null",
"runtime_minutes": "number | null",
"still_url": "string | null",
"vote_average": "number",
"available": "boolean"
}
]
}
GET
/api/detail/{media_type}/{tmdb_id}
may change
Everything about one title
Cast, studios, keywords and recommendations, plus whether it is already in the library.
Fields and shape
Parameters
media_typemovie | tv path requiredtmdb_idnumber path requiredResponse
media_typemovie | tv requiredtmdb_idnumber requiredtvdb_idnumber or nulltitlestring requiredoriginal_titlestring or nulloverviewstringposter_urlstring or nullbackdrop_urlstring or nullrelease_datestring or nullvote_averagenumbervote_countnumbergenreslist of stringruntime_minutesnumber or nullcertificationstring or nulloriginal_languagestring or nullorigin_countrylist of stringseasonslist of SeasonInfostatusstringstatus_uhdstring or nullwatchedbooleanwatched_onlist of stringwatched_not_onlist of stringpathstring or nullpath_uhdstring or nulluhd_in_standardbooleantaglinestringhomepagestring or nullstatus_textstringoriginal_countrylist of stringspoken_languageslist of stringbudgetnumber or nullrevenuenumber or nullstudioslist of NamedRefkeywordslist of NamedReftrailerTrailer or nullwatchWatchProviders or nullin_my_subscriptionslist of stringwatchingbooleanrequested_by_mebooleanmy_feedbackMeineRueckmeldung or nullopen_ticketbooleancastlist of CastMembercrewlist of CrewMemberrecommendationslist of MediaItemseasons_totalnumber or nullepisodes_totalnumber or nullseries_statusstringnetworkslist of NamedRefResponse shape
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
GET
/api/detail/{media_type}/{tmdb_id}/recommendations
may change
A different set of recommendations
For the "show me others" button. The pool is fixed and always sorted the same way; runde only cuts a different slice out of it, so the button cannot loop.
Fields and shape
Parameters
media_typemovie | tv path requiredtmdb_idnumber path requiredrundenumber queryResponse
itemslist of MediaItem requiredrundenumber requiredrundennumber requiredResponse shape
{
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"runde": "number",
"runden": "number"
}
GET
/api/discover/{media_type}
may change
Discover titles
Browsable lists of movies or shows with the usual filters - genre, year, rating, provider.
Fields and shape
Parameters
media_typemovie | tv path requireddate_fromstring or null querydate_tostring or null querylanguagestring or null queryregionstring or null querygenre_idnumber or null querysortnewest | rating | popular querypagenumber queryfeature_lengthboolean querymin_ratingnumber or null queryhide_unratedboolean queryreleased_in_regionboolean querystudio_idnumber or null queryknown_onlyboolean queryResponse
pagenumber requiredtotal_pagesnumber requiredtotal_resultsnumber requireditemslist of MediaItem requireddemobooleanarr_warningstring or nullResponse shape
{
"page": "number",
"total_pages": "number",
"total_results": "number",
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"demo": "boolean",
"arr_warning": "string | null"
}
GET
/api/favorites
may change
Your own marked titles
Filtered by the age limit of the calling account. The filtering is necessary because title and image come from Nexview's own table here, not from TMDB, and would otherwise bypass the check.
Fields and shape
Response
media_typemovie | tv requiredtmdb_idnumber requiredtitlestring requiredposter_urlstring or null requiredcreated_attimestamp (ISO 8601) requiredResponse shape
[
{
"media_type": "movie | tv",
"tmdb_id": "number",
"title": "string",
"poster_url": "string | null",
"created_at": "ISO 8601"
}
]
POST
/api/favorites
may change
Mark a title
Marking something twice is not an error.
Fields and shape
Request body
media_typemovie | tv requiredtmdb_idnumber requiredtitlestringposter_urlstring or nullResponse
media_typemovie | tv requiredtmdb_idnumber requiredtitlestring requiredposter_urlstring or null requiredcreated_attimestamp (ISO 8601) requiredResponse shape
{
"media_type": "movie | tv",
"tmdb_id": "number",
"title": "string",
"poster_url": "string | null",
"created_at": "ISO 8601"
}
GET
/api/favorites/people
may change
Your own marked people
Newest first.
Fields and shape
Response
person_idnumber requirednamestring requiredphoto_urlstring or null requireddepartmentstring requiredcreated_attimestamp (ISO 8601) requiredResponse shape
[
{
"person_id": "number",
"name": "string",
"photo_url": "string | null",
"department": "string",
"created_at": "ISO 8601"
}
]
POST
/api/favorites/people
may change
Mark a person
Doing it twice is not an error.
Fields and shape
Request body
person_idnumber requirednamestringphoto_urlstring or nulldepartmentstringResponse
person_idnumber requirednamestring requiredphoto_urlstring or null requireddepartmentstring requiredcreated_attimestamp (ISO 8601) requiredResponse shape
{
"person_id": "number",
"name": "string",
"photo_url": "string | null",
"department": "string",
"created_at": "ISO 8601"
}
DELETE
/api/favorites/people/{person_id}
may change
Unmark a person
Removes the person from your favourites.
Fields and shape
Parameters
person_idnumber path required
DELETE
/api/favorites/{media_type}/{tmdb_id}
may change
Unmark a title
What was not marked stays unmarked - no error.
Fields and shape
Parameters
media_typemovie | tv path requiredtmdb_idnumber path required
GET
/api/genres/{media_type}
may change
Available genres
The genres TMDB knows for this media type, in the language of the calling account.
Fields and shape
Parameters
media_typemovie | tv path requiredResponse
idnumber requirednamestring requiredResponse shape
[
{
"id": "number",
"name": "string"
}
]
GET
/api/home/curated
may change
Recommendations based on your favourites
Only what is not already here. Movies and shows - the first version looked at movies only, which left anyone who marks only shows with an empty row.
Fields and shape
Response
has_favoritesboolean requireditemslist of MediaItem requiredResponse shape
{
"has_favorites": "boolean",
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
]
}
GET
/api/home/recent
may change
Recently arrived
Titles that finished downloading, visible to everyone. ⚠️ Each entry also names who requested it. That is wanted inside a household and may not be wanted on a wall-mounted screen. Plot and backdrop come from TMDB; if that fails, the entries stay but look plainer.
Fields and shape
Response
request_idnumber requiredmedia_typemovie | tv requiredtmdb_idnumber requiredtitlestring requiredoverviewstringposter_urlstring or nullbackdrop_urlstring or nullrelease_datestring or nullvote_averagenumberruntime_minutesnumber or nullgenreslist of stringcompleted_attimestamp (ISO 8601) or nullrequested_bystring requiredrequester_avatarstring or nullseasonslist of numberResponse shape
[
{
"request_id": "number",
"media_type": "movie | tv",
"tmdb_id": "number",
"title": "string",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"runtime_minutes": "number | null",
"genres": [
"string"
],
"completed_at": "ISO 8601 | null",
"requested_by": "string",
"requester_avatar": "string | null"
}
]
GET
/api/home/trending
may change
What is popular right now
Without the things that are already here. Deliberately filtered: a suggestion you can neither request nor want, because it is already downloaded, is not a suggestion.
Fields and shape
Response
media_typemovie | tv requiredtmdb_idnumber requiredtvdb_idnumber or nulltitlestring requiredoriginal_titlestring or nulloverviewstringposter_urlstring or nullbackdrop_urlstring or nullrelease_datestring or nullvote_averagenumbervote_countnumbergenreslist of stringruntime_minutesnumber or nullcertificationstring or nulloriginal_languagestring or nullorigin_countrylist of stringseasonslist of SeasonInfostatusstringstatus_uhdstring or nullwatchedbooleanwatched_onlist of stringwatched_not_onlist of stringpathstring or nullpath_uhdstring or nulluhd_in_standardbooleanResponse shape
[
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
]
GET
/api/media/{media_type}/{tmdb_id}
may change
Details for one title
Overview, cast, ratings, runtime, and whether it is already in the library.
Fields and shape
Parameters
media_typemovie | tv path requiredtmdb_idnumber path requiredResponse
media_typemovie | tv requiredtmdb_idnumber requiredtvdb_idnumber or nulltitlestring requiredoriginal_titlestring or nulloverviewstringposter_urlstring or nullbackdrop_urlstring or nullrelease_datestring or nullvote_averagenumbervote_countnumbergenreslist of stringruntime_minutesnumber or nullcertificationstring or nulloriginal_languagestring or nullorigin_countrylist of stringseasonslist of SeasonInfostatusstringstatus_uhdstring or nullwatchedbooleanwatched_onlist of stringwatched_not_onlist of stringpathstring or nullpath_uhdstring or nulluhd_in_standardbooleanResponse shape
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
GET
/api/people
may change
People to browse and search
Filtered by department, paged. Without q, the most-asked-about people of that department.
Fields and shape
Parameters
qstring querydepartmentacting | directing | writing querypagenumber queryResponse
itemslist of PersonSummary requiredhas_moreboolean requiredResponse shape
{
"items": [
{
"person_id": "number",
"name": "string",
"photo_url": "string | null",
"department": "string",
"known_for": "string"
}
],
"has_more": "boolean"
}
GET
/api/person/{person_id}
may change
One person
Photo, biography and their best-known titles.
Fields and shape
Parameters
person_idnumber path requiredResponse
person_idnumber requirednamestring requiredbiographystringphoto_urlstring or nullbirthdaystring or nulldeathdaystring or nullplace_of_birthstring or nullknown_for_departmentstringcreditslist of PersonCreditResponse shape
{
"person_id": "number",
"name": "string",
"biography": "string",
"photo_url": "string | null",
"birthday": "string | null",
"deathday": "string | null",
"place_of_birth": "string | null",
"known_for_department": "string",
"credits": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"kind": "string",
"title": "string",
"character": "string",
"poster_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"status": "string",
"watched": "boolean",
"status_uhd": "string | null",
"watched_on": [
"string"
],
"watched_not_on": [
"string"
]
}
]
}
GET
/api/ratings/movie
may change
Ratings for several movies at once
Deliberately its own call rather than part of the lists: the values come from Radarr, and twenty round trips would slow a page down for something nobody looks at first.
Fields and shape
Parameters
idsstring query required
GET
/api/search/{media_type}
may change
Search movies or shows
Finds titles by name. Results are paged and come from TMDB in the language of the calling account.
Fields and shape
Parameters
media_typemovie | tv path requiredqstring query requiredpagenumber queryResponse
pagenumber requiredtotal_pagesnumber requiredtotal_resultsnumber requireditemslist of MediaItem requireddemobooleanarr_warningstring or nullResponse shape
{
"page": "number",
"total_pages": "number",
"total_results": "number",
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"demo": "boolean",
"arr_warning": "string | null"
}
POST
/api/stoebern/filmabend/ergebnis/{media_type}
may change
Turn the answers into a shortlist
runde is the "roll again": the same answers in the same round always give the same stack, so going back and forth does not reshuffle what somebody was about to pick.
Fields and shape
Parameters
media_typemovie | tv path requiredRequest body
antwortenobject requiredrundenumberResponse
itemslist of MediaItem requiredrundenumber requiredantwortenobject requiredquelle_leerbooleanerschoepftbooleandemobooleanResponse shape
{
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"runde": "number",
"antworten": "object",
"quelle_leer": "boolean",
"erschoepft": "boolean",
"demo": "boolean"
}
GET
/api/stoebern/filmabend/fragen/{media_type}
may change
The whole question tree
Tailored to this person and delivered at once. The interface walks it itself - a round trip per question would be too slow for something meant to feel like a conversation.
Fields and shape
Parameters
media_typemovie | tv path requiredResponse
kennungstring requiredantwortenlist of string requiredentfaellt_wennobject requiredantworten_entfallen_wennobjectResponse shape
[
{
"kennung": "string",
"antworten": [
"string"
],
"entfaellt_wenn": "object",
"antworten_entfallen_wenn": "object"
}
]
GET
/api/stoebern/filter/{media_type}
may change
Filter in plain questions
Six human questions instead of thirteen sliders. Deliberately not bolted onto discover: that page stays as it is.
Fields and shape
Parameters
media_typemovie | tv path requiredzeitegal | kurz | mittel | lang querygenresstring or null queryohne_genresstring or null queryepochestring querybekanntheitegal | bekannt | geheimtipp querysortierungrating | popular | newest querybestandegal | nur_vorhanden | nur_neu querypagenumber queryanzahlnumber queryResponse
itemslist of MediaItem requiredpagenumber requiredtotal_pagesnumber requiredseiten_durchsuchtnumber requirederschoepftboolean requiredjahrzehntelist of numberdemobooleanarr_warningstring or nullResponse shape
{
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"page": "number",
"total_pages": "number",
"seiten_durchsucht": "number",
"erschoepft": "boolean",
"jahrzehnte": [
"number"
],
"demo": "boolean",
"arr_warning": "string | null"
}
GET
/api/stoebern/regal/{media_type}/{kennung}
may change
The contents of one shelf
bestand filters by what is already here on the server. The discover page filters in the browser first, which on a full library leaves visible gaps in the grid.
Fields and shape
Parameters
media_typemovie | tv path requiredkennungstring path requiredpagenumber querybestandegal | nur_vorhanden | nur_neu queryanzahlnumber queryResponse
kennungstring requireditemslist of MediaItem requiredpagenumber requiredtotal_pagesnumber requiredseiten_durchsuchtnumber requirederschoepftboolean requireddemobooleanarr_warningstring or nullResponse shape
{
"kennung": "string",
"items": [
{
"media_type": "movie | tv",
"tmdb_id": "number",
"tvdb_id": "number | null",
"title": "string",
"original_title": "string | null",
"overview": "string",
"poster_url": "string | null",
"backdrop_url": "string | null",
"release_date": "string | null",
"vote_average": "number",
"vote_count": "number",
"genres": [
"string"
],
"runtime_minutes": "number | null",
"certification": "string | null"
}
],
"page": "number",
"total_pages": "number",
"seiten_durchsucht": "number",
"erschoepft": "boolean",
"demo": "boolean",
"arr_warning": "string | null"
}
GET
/api/stoebern/regale/{media_type}
may change
Which shelves exist
Without a single TMDB call. The titles inside are fetched per shelf afterwards, so the overview appears immediately instead of waiting on a dozen lookups.
Fields and shape
Parameters
media_typemovie | tv path requiredResponse
kennungstring requiredgruppestring requiredkategoriestring requiredpersoenlichboolean requiredtitelstring or nullResponse shape
[
{
"kennung": "string",
"gruppe": "string",
"kategorie": "string",
"persoenlich": "boolean",
"titel": "string | null"
}
]
GET
/api/streaming
may change
Streaming providers
The catalogue for the region, the account's own selection, and where that region came from.
Fields and shape
Response
regionstring requiredregion_selbst_gewaehltboolean requireddienstelist of DienstOut requiredmeinelist of string requiredResponse shape
{
"region": "string",
"region_selbst_gewaehlt": "boolean",
"dienste": [
{
"slug": "string",
"name": "string",
"logo_url": "string | null"
}
],
"meine": [
"string"
]
}
PUT
/api/streaming
may change
Replace your provider selection
Replaces the whole selection rather than changing one entry. One tick more or less is the same operation as "deselect everything".
Fields and shape
Request body
slugslist of stringResponse
regionstring requiredregion_selbst_gewaehltboolean requireddienstelist of DienstOut requiredmeinelist of string requiredResponse shape
{
"region": "string",
"region_selbst_gewaehlt": "boolean",
"dienste": [
{
"slug": "string",
"name": "string",
"logo_url": "string | null"
}
],
"meine": [
"string"
]
}
GET
/api/studios
may change
Known movie studios
A pick list of well-known studios. Only meaningful for movies.
Fields and shape
Response
idnumber requirednamestring requiredResponse shape
[
{
"id": "number",
"name": "string"
}
]
GET
/api/watch
may change
What you are waiting for
Titles marked as "tell me when this arrives".
Fields and shape
Response
media_typestring requiredtmdb_idnumber requiredtitlestring requiredposter_urlstring or null requiredcreated_atstring requiredResponse shape
[
{
"media_type": "string",
"tmdb_id": "number",
"title": "string",
"poster_url": "string | null",
"created_at": "string"
}
]
DELETE
/api/watch/{media_type}/{tmdb_id}
may change
Stop waiting for a title
No 404 if nothing was marked: the goal is "stop telling me about this", and that is satisfied either way.
Fields and shape
Parameters
media_typestring path requiredtmdb_idnumber path requiredResponse
watchingboolean requiredResponse shape
{
"watching": "boolean"
}
PUT
/api/watch/{media_type}/{tmdb_id}
may change
Wait for a title
Clicking twice is a double click, not an error. Deliberately PUT and not POST: the call describes a state, not an event.
Fields and shape
Parameters
media_typestring path requiredtmdb_idnumber path requiredRequest body
titlestringposter_urlstring or nullResponse
watchingboolean requiredResponse shape
{
"watching": "boolean"
}