Radarr/Radarr · error · DownloadClientException

Unable to connect to SABnzbd, {0}

Error message

Unable to connect to SABnzbd, {0}

What it means

Thrown by the SABnzbd proxy's ProcessRequest when _httpClient.Execute raises an HttpException — SABnzbd returned an HTTP error status (4xx/5xx). Wrapped as DownloadClientException (treated as a hard failure, not transient), with the original message interpolated.

Source

Thrown at src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs:201

            return requestBuilder;
        }

        private string ProcessRequest(HttpRequestBuilder requestBuilder, SabnzbdSettings settings)
        {
            var httpRequest = requestBuilder.Build();

            HttpResponse response;

            _logger.Debug("Url: {0}", httpRequest.Url);

            try
            {
                response = _httpClient.Execute(httpRequest);
            }
            catch (HttpException ex)
            {
                throw new DownloadClientException("Unable to connect to SABnzbd, {0}", ex, ex.Message);
            }
            catch (HttpRequestException ex)
            {
                throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, {0}", ex, ex.Message);
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.TrustFailure)
                {
                    throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, certificate validation failed.", ex);
                }

                throw new DownloadClientUnavailableException("Unable to connect to SABnzbd, {0}", ex, ex.Message);
            }

            CheckForError(response);

            return response.Content;

View on GitHub (pinned to ca451608dc)

Solutions

  1. Confirm the full SABnzbd URL (including any /sabnzbd prefix) in settings.
  2. Verify the API key is correct and the SABnzbd API is enabled.
  3. curl the SABnzbd API endpoint with the key to reproduce the status code.
  4. Check SABnzbd's own logs for the 5xx cause.
Defensive patterns

Strategy: try-catch

Validate before calling

if (!Uri.TryCreate(settings.Url, UriKind.Absolute, out var uri) || string.IsNullOrEmpty(settings.ApiKey))
{
    throw new InvalidOperationException("SABnzbd URL and API key are required.");
}

Try / catch

try { _proxy.SomeCall(settings); }
catch (DownloadClientException ex) { _logger.Warn(ex, "SABnzbd returned an HTTP error: {0}", ex.Message); }

Prevention

When it happens

Trigger: Any SABnzbd API call returns a failing HTTP status. Typical: 404 (wrong URL prefix, e.g. missing /sabnzbd/), 401/403 (bad API key), 500 (SAB internal error). The {0} placeholder carries ex.Message.

Common situations: Wrong URL or URL prefix in settings (missing /sabnzbd/api path); API key incorrect; SABnzbd returning 500 due to a corrupt config or full disk; reverse proxy returning 502.

Related errors


AI-assisted analysis of Radarr/Radarr@ca451608dc (2026-08-13). Data as JSON: /api/errors/cc7c6c788205e932. Report an issue: GitHub.