Skip to main content

Overseerr / Jellyseerr smart home integration, free and open source

Overseerr / Jellyseerr integration for Gladys Assistant

Movie and series requests of Overseerr, Jellyseerr or Seerr: approvals, arrivals, issues.

Follow the movie and series requests of your household in Gladys: what is waiting for your approval, what is being downloaded, what just arrived in the library, and the problems your users report. Works with Overseerr (Plex), Jellyseerr (Jellyfin, Emby, Plex) and Seerr (their successor): the three share the same API.

It is the companion of the "Sonarr & Radarr" integration, which follows the downloads themselves; this one follows the requests of your users.

Tested against real Overseerr 1.35.0, Jellyseerr 2.7.3 and Seerr 3.5.0 servers, but not yet on a complete installation (Plex or Jellyfin, Sonarr, Radarr and Gladys together): feedback welcome on GitHub.

Requirements​

  • Gladys Assistant 5.1.0 or later.
  • An Overseerr, Jellyseerr or Seerr server that Gladys can reach on your network (for example http://192.168.1.2:5055).
  • Its API key: in the web interface, Settings → General → API Key. The key acts as the administrator of the server: keep it to yourself.

Configuration​

Integrations → Overseerr / Jellyseerr → Configuration:

  • Address: the IP address or name of the server with its port, and its URL base if it is behind a reverse proxy (https://example.org/overseerr). An address copied from the browser works too.
  • API key: see above.
  • Name: the name of the device in Gladys. Empty: the name of the application followed by the address.
  • A second server is optional: a 4K instance, or a Jellyseerr next to an Overseerr.
  • Allow approving and declining: off by default. When ticked, the scene actions and the widget buttons can approve or decline the newest request awaiting approval. Off, Gladys only reads.
  • Accept self-signed certificates: for an https:// address served with your own certificate.
  • Refresh interval: from 30 seconds to 10 minutes (1 minute by default).
  • Language of the texts: the names of the features (given when the device is added, then frozen by Gladys), the titles of the movies and series, and the words sent to the scenes. French by default.

Test the connection reads every server now and reports what it finds.

Then, in the Discover tab, add the device of each server to Gladys.

Device​

One device per server, read-only:

FeatureWhat it says
Online1 while the server answers
Requests awaiting approvalRequests nobody approved or declined yet
Approved requests in progressApproved, not in the library yet
Available requestsApproved and in the library
Failed requestsSonarr or Radarr refused them
Total requestsEvery request, whatever its state
Open issuesProblems reported by the users, not resolved yet
Last requestTitle of the newest request
Last requested byWho made it
VersionVersion of the server
Update available1 when the server announces a new version (Overseerr, Jellyseerr)

The counters keep their history: a chart of the requests awaiting approval shows how long your family waits.

Scene triggers​

  • New request: someone requested a movie or a series. Filters: server, movies or series, status (awaiting approval, or approved at once for the users allowed to), requester. Information passed on to the scene: title, movie or series, requester, status, seasons, 4K request, request number.
  • Requested media available: a requested movie, or every season a series request asked for, is now in the library. Filters: server, movies or series, requester. Information: title, movie or series, requester, 4K request.
  • New issue reported: a user reported a problem on a movie or an episode. Filters: server, movies or series, kind (video, audio, subtitles, other). Information: title, kind, who reported it, their message, season and episode.

Each event is announced once, also across a restart of the integration: what it already knew is not announced again. A request or an issue created more than an hour before it is read (the integration was stopped) is not announced as new; an arrival always is.

Scene actions​

They need Allow approving and declining; otherwise they fail with a message saying where to turn it on.

  • Approve the latest request: approves the newest request awaiting approval, on one server or any, movies, series or both. The server then sends it to Sonarr or Radarr, as when you approve it in its interface.
  • Decline the latest request: declines it. A declined request can still be approved later in the interface of Overseerr or Jellyseerr.

Results passed on to the next actions: whether a request was found (none awaiting is not an error), its title, its requester, movie or series.

Widget​

Media requests: three tiles (to approve, in progress, open issues), the eight newest requests with their poster, requester and state (pending, approved, partial, available, declined, failed), and one row per server with its version. Every server, or the one chosen in the widget settings.

With Allow approving and declining, a caption names the newest request awaiting approval and two buttons act on it: Approve and Decline, each asking for a confirmation first.

The posters come from the server itself (its image cache): neither your browser nor the integration contact TMDB.

Scene examples​

  • Tell the requester: trigger "Requested media available", requester alice; action "Send a message" to Alice, with the title picked from the scene information: "… is available, enjoy!".
  • Approve the children's requests during the day: trigger "New request", status awaiting approval, requester leo; condition: between 9:00 and 20:00; action "Approve the latest request".
  • A subtitles problem: trigger "New issue reported", kind Subtitles; action "Send a message" to the administrator with the title and the message.
  • Morning summary: every day at 8:00, send the value of "Requests awaiting approval" when it is above 0.

API usage​

  • Everything stays on your network: the integration talks to the local API of your server only, with the API key in the X-Api-Key header (never in an address, never in the logs).
  • One reading = two small requests (/request/count, /issue/count). The list of the 50 newest requests and of the 20 newest issues is read only when those counts move, and every 10 minutes anyway; the version once an hour. Each read of the list makes the server ask Sonarr and Radarr for their quality profiles: keep the refresh interval reasonable.
  • The titles and posters are asked to the server (which asks TMDB once and keeps them), for the newest requests and the events only.
  • The integration keeps in /data/seerr-state.json the last request and issue numbers it saw and the requests waiting for their media. No password, no key.

Troubleshooting​

  • "API key refused": copy the key again from Settings → General. A new key generated on the server invalidates the old one.
  • "does not answer": check the address and the port (5055 by default), and that Gladys can reach the server (same network, firewall, Docker network).
  • "certificate refused": tick Accept self-signed certificates, or use the http:// address of your network.
  • "the address redirects": enter the final address, with its URL base.
  • Titles shown as "Movie #550": the server could not reach TMDB at the time; the titles come back on their own a few minutes later.
  • No event: the events concern what happens after the integration started; run Test the connection to see what the server answers. For more detail, set LOG_LEVEL=debug on the integration and read its logs.

Limits​

  • Only the 50 newest requests are followed for their arrival: in an installation with more requests waiting at once, the oldest ones are not announced when they arrive.
  • A series is announced as available when every season of the request is in the library; a request for a season of a series already partly there is announced the same way.
  • No webhook: Overseerr can push notifications, but Gladys runs the integration without an inbound port. An event therefore shows within one refresh interval (a season arriving: within 10 minutes).
  • Approving acts as the administrator of the server (the API key); declining never deletes anything. No other change is made to the server.
  • The requester filter compares the name exactly as Overseerr shows it.
  • Not affiliated with the Overseerr, Jellyseerr or Seerr projects.

Configuration settings​

These are the settings Overseerr / Jellyseerr asks for in its configuration screen in Gladys.

SettingTypeRequiredDescription
Overseerr / JellyseerrsectionNoAddress and API key of your Overseerr, Jellyseerr or Seerr (Settings → General → API Key).
AddressstringNoIP address or name with the port, and the URL base if any (e.g. http://192.168.1.2:5055).
API keysecretNoSettings → General → API Key. It acts as the administrator of the server.
NamestringNoName of the device in Gladys. Empty: the name of the application followed by the address.
Second server (optional)sectionNoSame fields, for another server (a 4K instance, a Jellyseerr next to an Overseerr…).
AddressstringNoIP address or name with the port, and the URL base if any (e.g. http://192.168.1.2:5055).
API keysecretNoSettings → General → API Key. It acts as the administrator of the server.
NamestringNoName of the device in Gladys. Empty: the name of the application followed by the address.
OptionssectionNo
Allow approving and decliningbooleanNoLets scenes and the widget approve or decline the newest request awaiting approval. Off: Gladys only reads.
Accept self-signed certificatesbooleanNoFor https:// addresses served with your own certificate. Tick only for your own servers.
Refresh intervalselectNoHow often the servers are read: counters, new requests, arrivals, issues.
Language of the textsselectNoNames given to the features when a device is added, titles of the movies, words sent to the scenes.

How to install Overseerr / Jellyseerr in Gladys​

  1. In Gladys, open Integrations: Overseerr / Jellyseerr appears in the catalog, next to the native integrations, with a community badge.
  2. Click Install. Gladys pulls the Docker image (ghcr.io/guim31/gladys-seerr:1.0.1), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. You can also install it directly from its repository URL: https://github.com/guim31/gladys-seerr.

Overseerr / Jellyseerr requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.

Not running Gladys yet? It is free and open source: follow the installation guide to get started.

About external integrations​

Overseerr / Jellyseerr is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂