SABnzbd¶
SABnzbd-compatible download client API used by Radarr/Sonarr. See also API compatibility.
Headless ENV
Map any config key in the table to NZBDAV_CONFIG__... with the
naming algorithm
(api.categories → NZBDAV_CONFIG__API__CATEGORIES).
| Control | Config key | Default | Effect |
|---|---|---|---|
| API Key | api.key |
from FRONTEND_BACKEND_API_KEY if unset |
*Arr download client auth |
| Categories | api.categories |
env/audio,software,tv,movies |
Letters/numbers/dashes |
| Manual Upload Category (upload-time picker since 1.2.0) | api.manual-category |
uncategorized |
Queue page uploads; default for the category picker beside the Upload NZB button |
| Import Strategy | api.import-strategy |
symlinks |
Symlinks (Plex) / STRM (Emby/Jellyfin) |
| Rclone Mount Directory | rclone.mount-dir |
env MOUNT_DIR or /mnt/nzbdav |
When symlinks |
| Completed Downloads Dir | api.completed-downloads-dir |
/data/completed-downloads |
When STRM |
| Base URL | general.base-url |
http://localhost:3000 |
STRM / adapter absolute URLs |
| Ignored Files | api.download-file-blocklist |
*.nfo, *.par2, … |
Glob blocklist for mounts (* and ?) |
| Filter sample videos since 0.10.0 | api.sample-filter-enabled |
on | Discard videos in sample release subfolders such as Sample/ since 1.3.0, even when no main video exists. Filename-only whole-word sample/samples matches are discarded only when under 20% of the largest video in the NZB. Category and release folder names are ignored. |
| Rename a single video to the release name since 1.3.0 | api.rename-single-video-to-release |
on | When a job mounts exactly one video, rename it to {release-folder}{extension}. Season packs and collisions keep the original name. New imports only. |
| Behavior for Duplicate NZBs | api.duplicate-nzb-behavior |
increment |
increment / mark-failed |
| Trusted local hosts since 0.8.0 | api.addurl-trusted-hosts |
env TRUSTED_INTERNAL_HOSTS |
SSRF allowlist for private addurl |
| Fail downloads without video or audio | api.ensure-importable-video |
on | Reject NZBs with no media files |
| Fail when non-media missing articles | inverse of api.skip-non-video-on-missing-articles |
skip non-media by default | Media files (video/audio) always fail on missing articles; companion files are skipped unless this is enabled |
| Article health check categories since 1.2.5 | api.ensure-article-existence-categories |
empty (off) | Per-category STAT checks plus a final direct-media BODY readiness read; may be slow |
| Article health check mode | api.article-existence-check-mode |
full |
Full or per-file sampled verification |
| Always send full History | api.ignore-history-limit |
on | Ignore client history limit |
| Save backup copies of incoming NZBs | api.nzb-backup-enabled |
off | On-disk *.nzb copies |
| Backup location | api.nzb-backup-location |
— | By category |
| Keep NZB backups (days) | api.nzb-backup-retention-days |
30 |
0 = forever |
Queue capacity and admission limits are configured separately under
Queue. The default user agent for retrieving NZBs, including
matched addurl requests, is configured under Indexers.
STRM sidecar cleanup since 1.3.0¶
Generated STRM files are deleted together with their content (history delete-with-files, health repair, Remove Orphaned Files). Sidecars under the configured completed-downloads directory never count as library links for orphan cleanup — even when that directory sits inside the Library Directory.
Sampled article checks since 0.10.0¶
Categories selected under api.ensure-article-existence-categories use a full
article check by default, preserving existing behavior. Set
api.article-existence-check-mode to sampled to check the first and last
segments plus an evenly spaced selection of middle segments in each important
file. Sampling is applied per file so every file's tail is covered; this catches
common truncated or partially removed releases without a full STAT sweep.
Small files (currently up to roughly 8,000 segments) are still checked in full. The sampled mode uses the same standard-depth selection as background health checks. It is a screen rather than a guarantee: urgent repair remains the backstop if an article disappears later or STAT succeeds while BODY fails.
For selected categories, InfiniDysk also reads the head and tail of direct media outputs before reporting a successful SAB completion since 1.2.5. This rejects unreadable container headers and short reads before Sonarr or Radarr begin import. It does not replace streaming corruption detection or PAR2 repair: damage limited to the middle of a release can only be detected when that part is read.
API-key rotation since 1.2.5¶
After rotating api.key, update the API key in every configured Sonarr/Radarr
download-client entry and use its test action before resuming a bulk search.
Rejected SAB API requests are logged without exposing the key, with failures
for the same mode and category throttled.