Skip to content
Area

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.

33 addresses

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 required
tierstandard | uhd query

Response

FieldType
quality_profileslist of ArrOption required
root_folderslist of ArrRootFolder required
default_quality_profile_idnumber or null
default_root_folderstring or null
root_folder_choiceboolean
quality_profile_choiceboolean

Response 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 required
keyword_idnumber or null query
company_idnumber or null query
pagenumber query

Response

FieldType
labelstring required
pageMediaPage required

Response 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 query
date_tostring or null query
sourcesall | mine | new query
date_typedigital | kino query
noisesinnvoll | studios | known | none query

Response

FieldType
date_fromstring required
date_tostring required
dayslist of CalendarDay
arr_warningstring or null
tmdb_warningstring or null
demoboolean

Response 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 required
season_numbernumber path required

Response

FieldType
season_numbernumber required
namestring required
overviewstring
air_datestring or null
episodeslist of EpisodeInfo

Response 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 required
tmdb_idnumber path required

Response

FieldType
media_typemovie | tv required
tmdb_idnumber required
tvdb_idnumber or null
titlestring required
original_titlestring or null
overviewstring
poster_urlstring or null
backdrop_urlstring or null
release_datestring or null
vote_averagenumber
vote_countnumber
genreslist of string
runtime_minutesnumber or null
certificationstring or null
original_languagestring or null
origin_countrylist of string
seasonslist of SeasonInfo
statusstring
status_uhdstring or null
watchedboolean
watched_onlist of string
watched_not_onlist of string
pathstring or null
path_uhdstring or null
uhd_in_standardboolean
taglinestring
homepagestring or null
status_textstring
original_countrylist of string
spoken_languageslist of string
budgetnumber or null
revenuenumber or null
studioslist of NamedRef
keywordslist of NamedRef
trailerTrailer or null
watchWatchProviders or null
in_my_subscriptionslist of string
watchingboolean
requested_by_meboolean
my_feedbackMeineRueckmeldung or null
open_ticketboolean
castlist of CastMember
crewlist of CrewMember
recommendationslist of MediaItem
seasons_totalnumber or null
episodes_totalnumber or null
series_statusstring
networkslist of NamedRef

Response 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 required
tmdb_idnumber path required
rundenumber query

Response

FieldType
itemslist of MediaItem required
rundenumber required
rundennumber required

Response 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 required
date_fromstring or null query
date_tostring or null query
languagestring or null query
regionstring or null query
genre_idnumber or null query
sortnewest | rating | popular query
pagenumber query
feature_lengthboolean query
min_ratingnumber or null query
hide_unratedboolean query
released_in_regionboolean query
studio_idnumber or null query
known_onlyboolean query

Response

FieldType
pagenumber required
total_pagesnumber required
total_resultsnumber required
itemslist of MediaItem required
demoboolean
arr_warningstring or null

Response 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

FieldType
media_typemovie | tv required
tmdb_idnumber required
titlestring required
poster_urlstring or null required
created_attimestamp (ISO 8601) required

Response 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

FieldType
media_typemovie | tv required
tmdb_idnumber required
titlestring
poster_urlstring or null

Response

FieldType
media_typemovie | tv required
tmdb_idnumber required
titlestring required
poster_urlstring or null required
created_attimestamp (ISO 8601) required

Response 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

FieldType
person_idnumber required
namestring required
photo_urlstring or null required
departmentstring required
created_attimestamp (ISO 8601) required

Response 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

FieldType
person_idnumber required
namestring
photo_urlstring or null
departmentstring

Response

FieldType
person_idnumber required
namestring required
photo_urlstring or null required
departmentstring required
created_attimestamp (ISO 8601) required

Response 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 required
tmdb_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 required

Response

FieldType
idnumber required
namestring required

Response 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

FieldType
has_favoritesboolean required
itemslist of MediaItem required

Response 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

FieldType
request_idnumber required
media_typemovie | tv required
tmdb_idnumber required
titlestring required
overviewstring
poster_urlstring or null
backdrop_urlstring or null
release_datestring or null
vote_averagenumber
runtime_minutesnumber or null
genreslist of string
completed_attimestamp (ISO 8601) or null
requested_bystring required
requester_avatarstring or null
seasonslist of number

Response 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/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 required
tmdb_idnumber path required

Response

FieldType
media_typemovie | tv required
tmdb_idnumber required
tvdb_idnumber or null
titlestring required
original_titlestring or null
overviewstring
poster_urlstring or null
backdrop_urlstring or null
release_datestring or null
vote_averagenumber
vote_countnumber
genreslist of string
runtime_minutesnumber or null
certificationstring or null
original_languagestring or null
origin_countrylist of string
seasonslist of SeasonInfo
statusstring
status_uhdstring or null
watchedboolean
watched_onlist of string
watched_not_onlist of string
pathstring or null
path_uhdstring or null
uhd_in_standardboolean

Response 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 query
departmentacting | directing | writing query
pagenumber query

Response

FieldType
itemslist of PersonSummary required
has_moreboolean required

Response 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 required

Response

FieldType
person_idnumber required
namestring required
biographystring
photo_urlstring or null
birthdaystring or null
deathdaystring or null
place_of_birthstring or null
known_for_departmentstring
creditslist of PersonCredit

Response 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 required
qstring query required
pagenumber query

Response

FieldType
pagenumber required
total_pagesnumber required
total_resultsnumber required
itemslist of MediaItem required
demoboolean
arr_warningstring or null

Response 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 required

Request body

FieldType
antwortenobject required
rundenumber

Response

FieldType
itemslist of MediaItem required
rundenumber required
antwortenobject required
quelle_leerboolean
erschoepftboolean
demoboolean

Response 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 required

Response

FieldType
kennungstring required
antwortenlist of string required
entfaellt_wennobject required
antworten_entfallen_wennobject

Response 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 required
zeitegal | kurz | mittel | lang query
genresstring or null query
ohne_genresstring or null query
epochestring query
bekanntheitegal | bekannt | geheimtipp query
sortierungrating | popular | newest query
bestandegal | nur_vorhanden | nur_neu query
pagenumber query
anzahlnumber query

Response

FieldType
itemslist of MediaItem required
pagenumber required
total_pagesnumber required
seiten_durchsuchtnumber required
erschoepftboolean required
jahrzehntelist of number
demoboolean
arr_warningstring or null

Response 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 required
kennungstring path required
pagenumber query
bestandegal | nur_vorhanden | nur_neu query
anzahlnumber query

Response

FieldType
kennungstring required
itemslist of MediaItem required
pagenumber required
total_pagesnumber required
seiten_durchsuchtnumber required
erschoepftboolean required
demoboolean
arr_warningstring or null

Response 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 required

Response

FieldType
kennungstring required
gruppestring required
kategoriestring required
persoenlichboolean required
titelstring or null

Response 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

FieldType
regionstring required
region_selbst_gewaehltboolean required
dienstelist of DienstOut required
meinelist of string required

Response 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

FieldType
slugslist of string

Response

FieldType
regionstring required
region_selbst_gewaehltboolean required
dienstelist of DienstOut required
meinelist of string required

Response 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

FieldType
idnumber required
namestring required

Response 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

FieldType
media_typestring required
tmdb_idnumber required
titlestring required
poster_urlstring or null required
created_atstring required

Response 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 required
tmdb_idnumber path required

Response

FieldType
watchingboolean required

Response 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 required
tmdb_idnumber path required

Request body

FieldType
titlestring
poster_urlstring or null

Response

FieldType
watchingboolean required

Response shape

{
  "watching": "boolean"
}

Nexview uses TMDB as its data source but is not from TMDB and is not endorsed or certified by TMDB. The screenshots come from a test installation; the accounts and requests shown in them are made up.

Nexview is published under the AGPL-3.0 licence. Radarr, Sonarr, Plex, Docker, Synology, IMDb, Rotten Tomatoes, Metacritic and JustWatch are trademarks of their respective owners and are named here for descriptive purposes only. Some of the icons on this page are based on Lucide (ISC licence) — copyright held in part by Cole Bemis 2013–2022 as part of Feather (MIT licence), otherwise by the Lucide contributors from 2022.