{"record":{"id":"cc7c6c788205e932","repo":"Radarr/Radarr","slug":"unable-to-connect-to-sabnzbd-0","errorCode":null,"errorMessage":"Unable to connect to SABnzbd, {0}","messagePattern":"Unable to connect to SABnzbd, (.+?)","errorType":"exception","errorClass":"DownloadClientException","httpStatus":null,"severity":"error","filePath":"src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs","lineNumber":201,"sourceCode":"\n            return requestBuilder;\n        }\n\n        private string ProcessRequest(HttpRequestBuilder requestBuilder, SabnzbdSettings settings)\n        {\n            var httpRequest = requestBuilder.Build();\n\n            HttpResponse response;\n\n            _logger.Debug(\"Url: {0}\", httpRequest.Url);\n\n            try\n            {\n                response = _httpClient.Execute(httpRequest);\n            }\n            catch (HttpException ex)\n            {\n                throw new DownloadClientException(\"Unable to connect to SABnzbd, {0}\", ex, ex.Message);\n            }\n            catch (HttpRequestException ex)\n            {\n                throw new DownloadClientUnavailableException(\"Unable to connect to SABnzbd, {0}\", ex, ex.Message);\n            }\n            catch (WebException ex)\n            {\n                if (ex.Status == WebExceptionStatus.TrustFailure)\n                {\n                    throw new DownloadClientUnavailableException(\"Unable to connect to SABnzbd, certificate validation failed.\", ex);\n                }\n\n                throw new DownloadClientUnavailableException(\"Unable to connect to SABnzbd, {0}\", ex, ex.Message);\n            }\n\n            CheckForError(response);\n\n            return response.Content;","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/Radarr/Radarr/blob/ca451608dc60c6cec754aba8d96bfa30e9468ed5/src/NzbDrone.Core/Download/Clients/Sabnzbd/SabnzbdProxy.cs#L183-L219","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Confirm the full SABnzbd URL (including any /sabnzbd prefix) in settings.","Verify the API key is correct and the SABnzbd API is enabled.","curl the SABnzbd API endpoint with the key to reproduce the status code.","Check SABnzbd's own logs for the 5xx cause."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (!Uri.TryCreate(settings.Url, UriKind.Absolute, out var uri) || string.IsNullOrEmpty(settings.ApiKey))\n{\n    throw new InvalidOperationException(\"SABnzbd URL and API key are required.\");\n}","typeGuard":null,"tryCatchPattern":"try { _proxy.SomeCall(settings); }\ncatch (DownloadClientException ex) { _logger.Warn(ex, \"SABnzbd returned an HTTP error: {0}\", ex.Message); }","preventionTips":["Use the full SABnzbd URL including any /sabnzbd prefix.","Keep the API key current and the API enabled.","Test the connection after SABnzbd URL/key changes."],"tags":["sabnzbd","download-client","connection","http-error"],"backgroundTag":null,"analyzedSha":"ca451608dc60c6cec754aba8d96bfa30e9468ed5","analyzedAt":"2026-08-13T17:21:54.115Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}