Skip to content

Integrations

aMuTorrent integrates with any *arr application (Sonarr, Radarr, Lidarr, Readarr, etc.) by providing a Torznab indexer API for searching and a qBittorrent-compatible API for download management.


aMuTorrent provides two APIs for *arr integration:

  1. Torznab Indexer API - Allows Sonarr/Radarr to search the ED2K network
  2. qBittorrent-Compatible Download Client API - Allows Sonarr/Radarr to manage downloads and import completed files

  1. Searching: When Sonarr/Radarr searches for content, they query our Torznab API, which performs an ED2K search and returns results
  2. Downloading: When a release is selected, Sonarr/Radarr sends the ED2K link to our qBittorrent-compatible API
  3. Monitoring: Sonarr/Radarr monitors download progress via the Queue page
  4. Importing: Once complete, Sonarr/Radarr imports the file from the download directory

This step is critical! Categories determine where files are downloaded, and Sonarr/Radarr need to know these paths.

  1. Go to Categories page
  2. Click New Category
  3. Create categories for each *arr application:

For Sonarr (TV Shows):

  • Title: sonarr
  • Path: /incoming/sonarr (or your preferred path)

For Radarr (Movies):

  • Title: radarr
  • Path: /incoming/radarr (or your preferred path)

Important: Remember these exact category names and paths - you’ll need them when configuring the download client.


The Torznab indexer allows *arr applications to search the ED2K network.

  1. Go to SettingsIndexers
  2. Click + (Add Indexer)
  3. Select TorznabCustom
  4. Configure:
FieldValue
NameaMule (or any name)
URLhttp://YOUR-SERVER:4000/indexer/amule/api
API KeyYour web UI password (see note below)
Categories5000 (TV) or leave default
Enable Automatic SearchYour preference (see Automatic Search)
Enable Interactive SearchYes
  1. Click Test to verify connection
  2. Click Save
  1. Go to SettingsIndexers
  2. Click + (Add Indexer)
  3. Select TorznabCustom
  4. Configure:
FieldValue
NameaMule (or any name)
URLhttp://YOUR-SERVER:4000/indexer/amule/api
API KeyYour web UI password (see note below)
Categories2000 (Movies) or leave default
Enable Automatic SearchYour preference
Enable Interactive SearchYes
  1. Click Test to verify connection
  2. Click Save

Note: Replace YOUR-SERVER with your actual server IP/hostname. If running in Docker, use the container name or host.docker.internal.

Authentication: If web UI authentication is enabled in the Web Controller, the API Key field is required. Use the same password you use to log into the web interface. If authentication is disabled, leave the API Key field empty.


The qBittorrent-compatible API allows *arr applications to manage downloads.

  1. Go to SettingsDownload Clients
  2. Click + (Add Download Client)
  3. Select qBittorrent
  4. Configure:
FieldValue
NameaMule (or any name)
HostYOUR-SERVER (IP or hostname)
Port4000
UsernameAny value, e.g. admin (see note below)
PasswordYour web UI password (see note below)
Categorysonarr (must match category created in Step 1)
Remove CompletedYour preference
  1. Click Test to verify connection
  2. Click Save
  1. Go to SettingsDownload Clients
  2. Click + (Add Download Client)
  3. Select qBittorrent
  4. Configure:
FieldValue
NameaMule (or any name)
HostYOUR-SERVER (IP or hostname)
Port4000
UsernameAny value, e.g. admin (see note below)
PasswordYour web UI password (see note below)
Categoryradarr (must match category created in Step 1)
Remove CompletedYour preference
  1. Click Test to verify connection
  2. Click Save

Authentication: If web UI authentication is enabled in the Web Controller, the Username and Password fields are required. The username can be any value (it’s ignored), but the password must match your web UI login password. If authentication is disabled, leave both fields empty.


If you’re running aMule and/or *arr applications in Docker, you need to ensure all containers can access the download directories.

Each Docker container has its own filesystem. When aMule downloads a file to /incoming/sonarr/file.mkv, Sonarr needs to access that same file. If Sonarr is in a different container, it might see that path differently.

Mount the same download directory in aMule and *arr containers:

services:
amule:
volumes:
- ./data/aMule/config:/home/amule/.aMule
- ./data/aMule/incoming:/incoming
- ./data/aMule/temp:/temp
sonarr:
volumes:
- ./data/aMule/incoming:/incoming # Same path as aMule!
- ./data/sonarr/config:/config
radarr:
volumes:
- ./data/aMule/incoming:/incoming # Same path as aMule!
- ./data/radarr/config:/config

With this setup, aMule and *arr containers all see /incoming as the same directory on the host (./data/aMule/incoming).

Note: The web controller doesn’t need access to the downloads directory - only aMule (which does the actual downloading) and Sonarr/Radarr (which import the files) need it.

If containers use different internal paths for the same host directory, configure Remote Path Mappings in Sonarr/Radarr.

When do you need this? When aMule and Sonarr/Radarr mount the same host folder to different container paths.

Example Setup:

Host directory: ./data/aMule/incoming
aMule container: mounted as /incoming
Sonarr container: mounted as /data/incoming

When aMule finishes downloading, it reports the file path as /incoming/sonarr/show.mkv. But Sonarr sees that same file as /data/incoming/sonarr/show.mkv. Remote Path Mapping tells Sonarr how to translate the path.

Configure in Sonarr/Radarr:

  1. Go to SettingsDownload Clients
  2. Scroll to Remote Path Mappings
  3. Click + (Add Mapping)
  4. Configure:
FieldValue
HostYOUR-SERVER (same as download client host)
Remote Path/incoming/ (path reported by aMule/download client)
Local Path/data/incoming/ (path as Sonarr sees it)

Sonarr will now translate /incoming/sonarr/show.mkv/data/incoming/sonarr/show.mkv

If aMule and *arr applications all run on the same machine without Docker:

  • Use the same absolute paths everywhere
  • No Remote Path Mappings needed
  • Ensure file permissions allow all applications to read/write

You can configure automatic searches to periodically check for missing content.

  1. Go to Settings

  2. Enable Sonarr Integration and/or Radarr Integration

  3. Configure:

    • URL: http://YOUR-SERVER:8989 (Sonarr) or http://YOUR-SERVER:7878 (Radarr)
    • API Key: Found in *arr Settings → General → Security
    • Search Interval: Hours between automatic searches (e.g., 6)
  4. Click Save

At the configured interval, the Web Controller will:

  1. Connect to Sonarr/Radarr API
  2. Trigger a search for missing episodes/movies
  3. Sonarr/Radarr will then query the Torznab indexer for results

Required: Enable Automatic Search on the Indexer

Section titled “Required: Enable Automatic Search on the Indexer”

For this feature to work, you must enable Automatic Search on the aMule indexer in Sonarr/Radarr:

  1. Go to SettingsIndexers
  2. Edit the aMule indexer
  3. Ensure Enable Automatic Search is checked
  4. Click Save

ED2K servers have flood protection that can temporarily ban clients making too many searches. The Web Controller implements protective measures:

  • Default: 10 seconds between consecutive ED2K searches
  • Configurable via: ED2K_SEARCH_DELAY_MS environment variable
  • Recommendation: 5000-10000ms (5-10 seconds)

”Connection refused” when testing indexer/download client

Section titled “”Connection refused” when testing indexer/download client”
  • Verify the Web Controller is running
  • Check the URL/host is correct
  • If using Docker, ensure network connectivity between containers
  • Check firewall rules

”Unauthorized” or “Invalid API key” errors

Section titled “”Unauthorized” or “Invalid API key” errors”
  • If web UI authentication is enabled, you must provide credentials:
    • Torznab indexer: Enter your web UI password in the “API Key” field
    • qBittorrent download client: Enter any username and your web UI password
  • Verify the password matches exactly (case-sensitive)
  • If authentication is disabled in the Web Controller, leave credential fields empty
  1. Verify API key is correct in Settings
  2. Check Sonarr/Radarr URL is accessible from Web Controller
  3. Verify search interval is set (not 0)
  4. Check server logs for errors