Skip to content

Web Interface

buzzqw edited this page Oct 30, 2026 · 1 revision

Web interface

Every page, the search syntax, saved searches, rules, sending to clients and notifications.

Pages

Page Content
Home Totals, indexer status, latest releases, runs and problems
Search (/releases) Manual live search (text, TV, movies, music, books, external IDs), -xxx exclusion, regex, advanced filters, saved searches, favorites/hidden, bulk grab; detail with magnet, .torrent and .nzb
Indexers Single list, Run/Test/Run all/Test all/Test problems, detail with Site access, edit, clone, JSON export/import, feed discovery and cookie import
App Sonarr, Radarr, Lidarr, Readarr, Whisparr, Mylar3, LazyLibrarian; sync, per-app profile, snapshots and download clients
Statistics (/activity) Incoming requests, overview per app and indexer, downloads served per source, update history, new releases, per-host network counters
Logs (/logs) System log with filters and runtime level
Settings Sections General, Network (FlareSolverr, per-host rate limit), Security, Notifications, Rules (blocklist by infohash, title, regex, source or category), Backup, Maintenance (integrity, vacuum, optimize/checkpoint, reindex, deduplication, .torrent cleanup, retention, purge per indexer, restore), Advanced (circuit breaker, live search, downloads through indexarr, definitions, proxies) and Updates

The old /rules, /maintenance and /definitions addresses redirect to the matching Settings section.

The interface is a PWA: manifest, icon and service worker that caches only static assets; HTML pages always come from the network because they contain CSRF and private data.

Search in releases

The Releases page searches as you type: the request starts after 250 ms, the previous one is cancelled and only the table is updated, without reloading the page. The URL remains shareable and the form also works without JavaScript.

  • Exclusion: -xxx removes the results that contain xxx. Multiple terms combine: show -1080p -cam.
  • Full-text: terms of at least three characters use FTS5 with trigram tokenizer; substrings work too. Shorter terms use LIKE.
  • Regex: check Regex; each term is an RE2 regular expression, case-insensitive by default. Terms are in AND, -pattern excludes, quotes keep spaces ("the show") and /pattern/ is accepted.
  • An invalid expression shows the error without emptying the page.
  • Source, category and sorting combine with the text; pagination remains on the full page.

Manual live search

The Live search panel queries the selected sites immediately, saves what they return and shows it below. Available modes:

  • Free search: any title.
  • TV: query, season, episode, year, TVDb/IMDb/TMDb id.
  • Movie: query, year, IMDb/TMDb id.
  • Music: artist, album, year.
  • Books: author, title.

You can choose one or more indexers and a category. Sites that answer in time show the results immediately; those that time out continue in the background and may appear after a reload. The live view shows at most 50 rows and does not use normal pagination.

Advanced filters and saved searches

Below the search there are the structured filters:

  • resolution (2160p/4K, 1080p, 720p, 480p);
  • source (WEB-DL, BluRay, HDTV);
  • language (Italian, English);
  • minimum seeders, minimum and maximum size in MB;
  • Favorites and Show hidden.

They combine with the text and with regex mode. Save this search as… saves the view with a name; saved searches appear above the results as ready links, with an × to delete them. A ★ marks favorite releases.

Rules, favorites and hidden releases

Settings → Rules manages the blocklist:

  • by infohash (exact), title (substring), regex (Go/RE2, case-insensitive), source name or category (5000 covers 5xxx);
  • matching releases are no longer inserted in subsequent runs;
  • on a release detail there are Favorite, Hide and Block release: Block adds the rule (infohash if available, otherwise title) and hides it immediately.

Hiding a release removes it from the normal views but does not prevent a new run from reinserting it: that is why the blocklist exists. Blocked releases are counted in the Blocked column of the runs.

Sending to clients

In App → Download clients you choose the client, enter URL and credentials and, for qBittorrent, category and path. On the detail of each release there is Send: the saved .torrent/.nzb is sent, or the magnet if the file is not in the cache. For aMule the ed2k:// link is sent to the Web API (/api/v1/downloads); the release protocol chooses the client.

qBittorrent uses the Web API v2; Transmission uses RPC with session negotiation. When the indexer that provided the release has a seed ratio or a seed time, qBittorrent receives them already at addition (ratioLimit/seedingTimeLimit), so the torrent stops at the source limit; the other clients keep their own values. The same seed_ratio travels to the *arr apps with application synchronization.

Notifications and auto-disable

In Settings → Notifications:

  • Webhook URL: receives a JSON POST with event, source, count, titles, error, at, and the already-rendered subject and message that the other channels show;
  • Telegram bot token and chat ID: readable message; both or neither must be set;
  • Apprise, Discord, Slack, Gotify, ntfy, Pushover, SMTP email and custom script: independent channels, with their own secrets encrypted in the vault;
  • Notify new releases, Notify failures, Grab failed, A grab succeeded, Catalog updated and Backup failed choose the events;
  • Auto-disable after N consecutive failures: after N failed runs the source is disabled; a successful run resets the counter.

A burst of successful grabs from the same application is grouped: episodes handed over within a few seconds arrive as one message with every title in the list, not one message per episode.

Anti-spam prevents the same event (type and source) from being sent more than once in the same interval. The Send test notification button checks all configured channels. Messages are in the language chosen in Settings → Notifications → Message language: "Same as the interface" follows the selector at the top, a fixed language remains even when changing the interface.


Part of the indexarr documentation.

Clone this wiki locally