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
- Read the interpolated ex.Message in the response body — it carries the root cause.
- Verify the indexer is healthy and authenticated (Settings > Indexers).
- Verify the download client is connected and has space (Settings > Download Clients).
- 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
- Surface the 409 body's message to the user — it names the indexer/client fault.
- Keep indexers and download clients healthy and tested in Settings.
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
- {ex.Message}
- Getting release from indexer failed: {ex.Message}
- Unable to cancel task
- Couldn't find requested release in cache, try searching agai
- Unable to parse episodes in the release, will need to be man
AI-assisted analysis of Sonarr/Sonarr@da2284d7ea (2026-08-13).
Data as JSON: /api/errors/992ce8435a8dc540.
Report an issue: GitHub.