Radarr/Radarr · error · DownloadClientException
Failed to add nzb {0}
Error message
Failed to add nzb {0} What it means
Thrown by NzbVortex.AddFromNzbFile when _proxy.DownloadNzb() returns null instead of a response ID string. The proxy's DownloadNzb sends the NZB file to NZBVortex's nzb/add endpoint and returns response.Id. A null return means NZBVortex did not provide a download ID despite accepting the request, which Radarr treats as a failure to add.
Source
Thrown at src/NzbDrone.Core/Download/Clients/NzbVortex/NzbVortex.cs:43
IDiskProvider diskProvider,
IRemotePathMappingService remotePathMappingService,
IValidateNzbs nzbValidationService,
Logger logger,
ILocalizationService localizationService)
: base(httpClient, configService, diskProvider, remotePathMappingService, nzbValidationService, logger, localizationService)
{
_proxy = proxy;
}
protected override string AddFromNzbFile(RemoteMovie remoteMovie, string filename, byte[] fileContents)
{
var priority = remoteMovie.Movie.MovieMetadata.Value.IsRecentMovie ? Settings.RecentMoviePriority : Settings.OlderMoviePriority;
var response = _proxy.DownloadNzb(fileContents, filename, priority, Settings);
if (response == null)
{
throw new DownloadClientException("Failed to add nzb {0}", filename);
}
return response;
}
public override string Name => "NZBVortex";
public override IEnumerable<DownloadClientItem> GetItems()
{
List<NzbVortexQueueItem> vortexQueue;
try
{
vortexQueue = _proxy.GetQueue(30, Settings);
}
catch (DownloadClientException ex)
{
_logger.Warn("Couldn't get download queue. {0}", ex.Message);View on GitHub (pinned to ca451608dc)
Solutions
- Verify the NZB file is valid and not corrupted before it reaches the download client.
- Check that the NZBVortex group/category (TvCategory) in Radarr settings exists in NZBVortex.
- Review NZBVortex logs for errors at the time of the add attempt.
- Upgrade NZBVortex to a version compatible with the API level Radarr expects.
- Test adding the same NZB manually through the NZBVortex UI to isolate the issue.
Example fix
// before
var response = _proxy.DownloadNzb(fileContents, filename, priority, Settings);
if (response == null)
{
throw new DownloadClientException("Failed to add nzb {0}", filename);
}
// after — log the NZBVortex response for diagnosis before throwing
var response = _proxy.DownloadNzb(fileContents, filename, priority, Settings);
if (response == null)
{
_logger.Error("NZBVortex returned null ID for NZB: {0}", filename);
throw new DownloadClientException("Failed to add nzb {0}", filename);
} Defensive patterns
Strategy: validation
Validate before calling
// Validate NZB content before sending to NZBVortex
if (fileContents == null || fileContents.Length == 0)
{
throw new ArgumentException("NZB file contents are empty");
}
// Verify the category exists in NZBVortex
var groups = _proxy.GetGroups(settings);
if (settings.TvCategory.IsNotNullOrWhiteSpace() && !groups.Any(g => g.Name == settings.TvCategory))
{
return $"NZBVortex group '{settings.TvCategory}' does not exist";
} Type guard
static bool IsNzbVortexAddFailed(Exception ex) => ex is DownloadClientException dce && dce.Message.Contains("Failed to add nzb"); Try / catch
try
{
var downloadId = _proxy.DownloadNzb(fileContents, filename, priority, Settings);
}
catch (DownloadClientException ex) when (ex.Message.Contains("Failed to add nzb"))
{
_logger.Error(ex, "NZBVortex did not return a download ID. Check NZBVortex logs.");
// The release was not added — do not mark as downloaded
}
catch (DownloadClientException ex)
{
_logger.Error(ex, "NZBVortex error.");
} Prevention
- Validate the NZB file is well-formed (non-empty, valid XML) before sending it to NZBVortex.
- Ensure the configured TvCategory/group exists in NZBVortex before adding downloads.
- Test adding NZBs manually through the NZBVortex UI to rule out server-side issues.
- Keep NZBVortex updated to the API level Radarr expects.
When it happens
Trigger: _proxy.DownloadNzb(fileContents, filename, priority, Settings) returns null. This occurs when the NzbVortexAddResponse from the nzb/add endpoint has a null or empty Id field.
Common situations: NZBVortex encountered an internal error processing the NZB but did not return an explicit error, the NZB file was malformed or empty, the group/category setting points to a non-existent NZBVortex group, or a version mismatch causes the response to lack the expected Id field.
Related errors
- Unable to connect to NZBVortex, please check your settings
- Authentication failed, check your API Key
- NZBGet rejected the NZB for an unknown reason
- Failed to add NZB task to Download Station
- Not logged
AI-assisted analysis of Radarr/Radarr@ca451608dc (2026-08-13).
Data as JSON: /api/errors/229776ad4170c93d.
Report an issue: GitHub.