Sonarr/Sonarr · error · NzbDroneClientException

Getting release from indexer failed: {ex.Message}

Error message

Getting release from indexer failed: {ex.Message}

What it means

Returned inside POST /api/v3/release when _downloadService.DownloadReport throws a ReleaseDownloadException — the indexer/download-client interaction itself failed after episode resolution succeeded. Sonarr catches it, logs at Error, and re-throws as NzbDroneClientException Conflict (409) with the original message interpolated. The {ex.Message} is replaced at runtime with the underlying cause.

Source

Thrown at src/Sonarr.Api.V3/Indexers/ReleaseController.cs:165

                        var episode = _episodeService.GetEpisode(release.EpisodeId.Value);

                        episodes = new List<Episode> { episode };
                    }

                    remoteEpisode.Episodes = episodes;
                }

                if (remoteEpisode.Episodes.Empty())
                {
                    throw new NzbDroneClientException(HttpStatusCode.NotFound, "Unable to parse episodes in the release, will need to be manually provided");
                }

                await _downloadService.DownloadReport(remoteEpisode, release.DownloadClientId);
            }
            catch (ReleaseDownloadException ex)
            {
                _logger.Error(ex, ex.Message);
                throw new NzbDroneClientException(HttpStatusCode.Conflict, $"Getting release from indexer failed: {ex.Message}");
            }

            return release;
        }

        [HttpGet]
        [Produces("application/json")]
        public async Task<List<ReleaseResource>> GetReleases(int? seriesId, int? episodeId, int? seasonNumber)
        {
            if (episodeId.HasValue)
            {
                return await GetEpisodeReleases(episodeId.Value);
            }

            if (seriesId.HasValue && seasonNumber.HasValue)
            {
                return await GetSeasonReleases(seriesId.Value, seasonNumber.Value);
            }

View on GitHub (pinned to da2284d7ea)

Solutions

  1. Read the interpolated ex.Message in the response body — it carries the root cause.
  2. Verify the indexer is healthy and authenticated (Settings > Indexers).
  3. Verify the download client is connected and has space (Settings > Download Clients).
  4. Retry the search to get a fresh release and re-attempt the download.
Defensive patterns

Strategy: try-catch

Try / catch

try {
  const res = await fetch('/api/v3/release', { method:'POST', body: JSON.stringify(release) });
  if (res.status === 409) { const body = await res.json(); console.error('indexer error:', body.message); }
} catch (e) { /* transport error */ }

Prevention

When it happens

Trigger: DownloadRelease gets past episode resolution but the actual download request to the indexer/client errors: indexer returns an error, the download client rejects the report, magnet/URL is invalid, or the indexer is offline.

Common situations: Indexer rate-limit or auth failure; download client connection lost; release URL expired or 404 on the indexer; unsupported protocol by the configured client.

Related errors


AI-assisted analysis of Sonarr/Sonarr@da2284d7ea (2026-08-13). Data as JSON: /api/errors/992ce8435a8dc540. Report an issue: GitHub.