16 KiB
Lidarr Integration Guide
Tidarr can be integrated with Lidarr as a Newznab indexer to automatically search and download albums from Tidal. This allows you to leverage Lidarr's powerful library management while using Tidarr for high-quality music downloads.
Table of Contents
Quick Setup
Important: Configure the download client FIRST (step 1), then the indexer (step 2). The indexer configuration needs to reference the download client you create.
1. Configure Shared Volumes
Required: Both containers must share a common download directory for the import workflow to work.
Docker Compose example:
services:
tidarr:
volumes:
- ...
- /path/to/lidarr/downloads:/shared/nzb_downloads # Dedicated Lidarr download location
lidarr:
volumes:
- ...
- /path/to/lidarr/downloads:/downloads # Same physical folder as Tidarr's nzb_downloads
2. Configure Download Client
Add Tidarr as a SABnzbd download client:
- Go to Settings → Download Clients in Lidarr
- Click the Show advanced button (which looks like a cog). If you do not click this URL Base will not be visible.
- Click + and select SABnzbd
- Configure:
| Setting | Value |
|---|---|
| Name | Tidarr |
| Enable | ✅ Enabled |
| Host | your-tidarr-url |
| Port | 8484 |
| URL Base | /api/sabnzbd |
| API Key | Get from Tidarr (see below) |
| Category | music (optional but recommended) |
Getting Your API Key:
Option 1: Via Docker CLI (recommended)
docker exec tidarr cat /shared/.tidarr-api-keyOption 2: Via Tidarr Web UI
- Go to Settings → Security
- Copy the API key displayed in the "API Key" section
If no authentication:
- Enter any value (e.g.,
0000) - it's required by Lidarr but won't be validated
- Click Test to verify the connection
- Click Save
✅ Fully Functional SABnzbd API:
- Download triggering (
addfile)- Queue status tracking with real-time updates
- Download history
- Queue management (pause, resume, delete)
3. Add Tidarr as an Indexer in Lidarr
- Go to Settings → Indexers in Lidarr
- Click the Show advanced button (which looks like a cog). If you do not click this URL Base will not be visible.
- Click + and select Newznab
- Configure the indexer with these settings:
| Setting | Value |
|---|---|
| Name | Tidarr |
| Enable RSS | ❌ Disabled (optional) |
| Enable Automatic Search | ✅ Enabled |
| Enable Interactive Search | ✅ Enabled |
| URL | http://your-tidarr-url:8484 |
| API Path | /api/lidarr |
| API Key | Same as download client (from step 1) |
| Categories | 3000 (Audio), 3010 (Audio/MP3), 3040 (Audio/Lossless) |
| Download Client | Select Tidarr (the SABnzbd client created in step 1) |
Important: Make sure to select the Tidarr download client in the "Download Client" dropdown. This ensures that when Lidarr grabs an album from this indexer, it will use the correct download client.
- Click Test to verify the connection
- Click Save to complete the setup
How It Works
Workflow
- Search: Lidarr queries Tidarr indexer
- Results: Tidarr searches Tidal and returns albums in Newznab format
- Grab: Lidarr sends album to Tidarr download client
- Download: Tidarr downloads to
/shared/nzb_downloads/{id}/(high-quality FLAC up to 24-bit) - Import: Lidarr detects completed download and imports from
/downloads/{id}/(same physical location) - Organize: Lidarr renames and moves files to your music library according to your settings
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Lidarr │
│ │
│ ┌────────────────────┐ ┌──────────────────────┐ │
│ │ Indexer Search │ │ Download Client │ │
│ │ (Newznab API) │ │ (SABnzbd API) │ │
│ └────────┬───────────┘ └──────────┬───────────┘ │
└───────────┼────────────────────────────────┼────────────────┘
│ │
│ 1. Search albums │ 2. Grab album
│ │ 3. Monitor queue
▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ Tidarr │
│ │
│ ┌────────────────────┐ ┌──────────────────────┐ │
│ │ Newznab Indexer │ │ SABnzbd Downloader │ │
│ │ /api/lidarr │ │ /api/sabnzbd/api │ │
│ └────────┬───────────┘ └──────────┬───────────┘ │
│ │ │ │
│ │ Query Tidal │ Download │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Tidal API │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ Download to
▼
┌────────────────────────────────────────────┐
│ /shared/nzb_downloads/{id}/ (Tidarr) │
│ = /downloads/{id}/ (Lidarr) │
│ (Shared physical folder) │
└─────────────────────┬──────────────────────┘
│
│ Lidarr imports & organizes
▼
┌──────────────────────────────────┐
│ Music Library (/music) │
│ (Lidarr manages final move) │
└──────────────────────────────────┘
Quality Selection
Each album is returned 4 times with different quality variants:
| Quality Tag | Tidal Quality | Tiddl CLI | Format |
|---|---|---|---|
[FLAC 24bit] |
hires_lossless | max |
FLAC 24-bit 192kHz |
[FLAC] |
lossless | high |
FLAC 16-bit 44.1kHz |
[AAC-320] |
high | normal |
M4A 320kbps |
[MP3-96] |
low | low |
M4A 96kbps |
How Lidarr selects quality:
- Lidarr matches albums based on your Quality Profile settings
- Configure quality preferences in Settings → Profiles → Quality Profiles
- Higher quality variants appear first, allowing Lidarr to grab the best available match
Example search result:
Artist - Album (2024) [FLAC 24bit] (12 tracks) ← Highest quality
Artist - Album (2024) [FLAC] (12 tracks)
Artist - Album (2024) [AAC-320] (12 tracks)
Artist - Album (2024) [MP3-96] (12 tracks) ← Lowest quality
How Search Works
- Lidarr sends query → Tidarr searches Tidal (up to 20 albums)
- Tidarr returns ALL results with 4 quality variants each (80 total items)
- Lidarr's matching algorithm selects the best result based on your preferences
- Download triggered with selected quality → Tiddl downloads with correct CLI quality flag
Explicit Content:
- Albums with explicit content show
[EXPLICIT]tag in title - Example:
Artist - Album (2024) [EXPLICIT] [FLAC] (12 tracks)
Advanced Topics
API Endpoints
Newznab Indexer Endpoints
Tidarr implements these Newznab endpoints:
| Endpoint | Purpose | Authentication |
|---|---|---|
GET /api/lidarr?t=caps |
Returns indexer capabilities | API key via header or query param |
GET /api/lidarr?t=search&q=... |
Searches for albums | API key via header or query param |
GET /api/lidarr?t=music&artist=...&album=... |
Music-specific search | API key via header or query param |
GET /api/lidarr/download/:id/:quality |
Triggers album download | API key via header or query param |
Authentication Methods:
- Header:
X-Api-Key: your-api-key - Query param:
?apikey=your-api-key
Important: The download URL returned in search results automatically includes the API key from the search request, so Lidarr can download without re-authenticating.
SABnzbd Download Client Endpoints
Tidarr implements these SABnzbd-compatible endpoints:
| Endpoint | Purpose | Authentication |
|---|---|---|
GET /api/sabnzbd/api?mode=version |
Returns SABnzbd version (3.0.0) | API key via query param |
GET /api/sabnzbd/api?mode=get_config |
Returns downloader configuration | API key via query param |
POST /api/sabnzbd/api?mode=addfile |
Adds album to download queue via NZB upload | API key via query param |
GET /api/sabnzbd/api?mode=queue |
Returns current download queue status | API key via query param |
GET /api/sabnzbd/api?mode=queue&name=delete&value=<nzo_id> |
Removes item from download queue | API key via query param |
GET /api/sabnzbd/api?mode=history&limit=<n> |
Returns download history (completed/failed) | API key via query param |
GET /api/sabnzbd/api?mode=history&name=delete&value=<nzo_id> |
Removes item from history | API key via query param |
Authentication:
- All SABnzbd endpoints require
apikeyas a query parameter - Example:
/api/sabnzbd/api?mode=version&apikey=your-api-key
Note: These endpoints enable Lidarr to manage downloads through Tidarr as if it were a SABnzbd download client.
Release Processing
Lidarr-triggered downloads use minimal post-processing:
- Download via Tiddl to
/shared/nzb_downloads/{id}/ - ReplayGain applied if enabled in Tidarr settings
- Status marked as completed (files stay in place)
- Lidarr import handles all remaining steps (tagging, renaming, moving to
/music)
Tidarr UI downloads use the full pipeline:
- Download to
/shared/.processing/{id}/ - Beets tagging, permissions, custom scripts
- Move to
/music - Plex/Jellyfin scan, notifications
Key difference: Lidarr downloads use a dedicated path (nzb_downloads) and skip most Tidarr post-processing to avoid conflicts with Lidarr's own import logic. Only ReplayGain is applied before Lidarr import.
Troubleshooting
Lidarr doesn't detect completed downloads
Symptom: Downloads complete in Tidarr, but Lidarr shows them as stuck in queue or doesn't import them.
Cause: The shared download volume is not properly mounted in both containers.
Solution:
- Verify both containers have access to the same shared download path:
# Check Tidarr (should show download folders)
docker exec tidarr ls -la /shared/nzb_downloads
# Check Lidarr (should show the same folders)
docker exec lidarr ls -la /downloads
- Ensure your Docker Compose has matching volume mounts:
services:
tidarr:
volumes:
- ...
- /path/to/lidarr/downloads:/shared/nzb_downloads
lidarr:
volumes:
- ...
- /path/to/lidarr/downloads:/downloads # Same physical folder
- Verify the paths point to the same physical location:
# Both should show the same content
ls -la /path/to/lidarr/downloads
- Restart both containers after fixing volume mounts.
Downloads fail with authentication errors
Symptom: Lidarr shows authentication errors when trying to download from Tidarr.
Cause: API key mismatch between indexer and download client configurations.
Solution:
-
Get the correct API key:
docker exec tidarr cat /shared/.tidarr-api-key -
Update both:
- Lidarr Indexer settings (Settings → Indexers → Tidarr)
- Lidarr Download Client settings (Settings → Download Clients → Tidarr)
-
Test both connections in Lidarr.
No search results from Tidarr
Symptom: Lidarr searches return 0 results from Tidarr indexer.
Possible causes and solutions:
- Album not on Tidal: Search manually on Tidal to verify availability
- Tidal authentication expired: Check Tidarr settings → Tidal authentication
- API key invalid: Verify indexer API key in Lidarr matches Tidarr
- Network issues: Check Tidarr logs for connection errors