{"record":{"id":"db67155f721927d7","repo":"restsharp/RestSharp","slug":"using-query-parameters-in-the-base-url-is-not-supp","errorCode":null,"errorMessage":"Using query parameters in the base URL is not supported for OAuth calls. Consider using AddDefaultQueryParameter instead.","messagePattern":"Using query parameters in the base URL is not supported for OAuth calls\\. Consider using AddDefaultQueryParameter instead\\.","errorType":"exception","errorClass":"ApplicationException","httpStatus":null,"severity":"error","filePath":"src/RestSharp/Authenticators/OAuth/OAuth1Authenticator.cs","lineNumber":244,"sourceCode":"            SignatureMethod    = signatureMethod,\n            SignatureTreatment = OAuthSignatureTreatment.Escaped,\n            ConsumerKey        = consumerKey,\n            ConsumerSecret     = consumerSecret,\n            Token              = accessToken,\n            TokenSecret        = accessTokenSecret\n        };\n\n    internal static void AddOAuthData(\n        IRestClient            client,\n        RestRequest            request,\n        OAuthWorkflow          workflow,\n        OAuthType              type,\n        string?                realm\n    ) {\n        var requestUrl = client.BuildUriWithoutQueryParameters(request).AbsoluteUri;\n\n        if (requestUrl.Contains('?'))\n            throw new ApplicationException(\n                \"Using query parameters in the base URL is not supported for OAuth calls. Consider using AddDefaultQueryParameter instead.\"\n            );\n\n        var url              = client.BuildUriString(request);\n        var queryStringStart = url.IndexOf('?');\n\n        if (queryStringStart != -1) url = url[..queryStringStart];\n\n        var method     = request.Method.ToString().ToUpperInvariant();\n        var parameters = new WebPairCollection();\n\n        var query =\n            request.AlwaysMultipartFormData || request.Files.Count > 0\n                ? x => BaseQuery(x) && x.Name != null && x.Name.StartsWith(\"oauth_\")\n                : (Func<Parameter, bool>)BaseQuery;\n\n        parameters.AddRange(client.DefaultParameters.Where(query).ToWebParameters());\n        parameters.AddRange(request.Parameters.Where(query).ToWebParameters());","sourceCodeStart":226,"sourceCodeEnd":262,"githubUrl":"https://github.com/restsharp/RestSharp/blob/6a5082169257438cd085f822f050d93256a8e499/src/RestSharp/Authenticators/OAuth/OAuth1Authenticator.cs#L226-L262","documentation":"Thrown by the OAuth1 authenticator when the request URL (built excluding query parameters) still contains a '?', meaning query parameters were baked into the base URL or resource string. OAuth signature base strings must separate the URL from query parameters, and the library cannot reliably split an arbitrary inline query.","triggerScenarios":"Configuring RestClientOptions.BaseUrl (or RestRequest.Resource) with a URL that includes a query string such as 'https://host/path?x=1', then using an OAuth1Authenticator. AddOAuthData builds the URL without query params and detects the leftover '?'.","commonSituations":"Pasting a full URL with query params into BaseUrl; embedding API keys or session tokens as inline query in the base URL; reusing a captured browser URL verbatim as the resource.","solutions":["Move query parameters out of BaseUrl/Resource and add them via request.AddQueryParameter or client.AddDefaultQueryParameter.","Set BaseUrl to the bare path with no query string.","If a query is genuinely needed, use AddDefaultQueryParameter as the error message suggests."],"exampleFix":"// before\nvar client = new RestClient(\"https://api.host/resource?api_key=secret\");\n\n// after\nvar client = new RestClient(\"https://api.host/resource\");\nclient.AddDefaultQueryParameter(\"api_key\", \"secret\");","handlingStrategy":"validation","validationCode":"if (client.Options.BaseUrl?.ToString().Contains('?') == true || request.Resource.Contains('?')) throw new InvalidOperationException(\"Remove inline query params from BaseUrl/Resource\");","typeGuard":null,"tryCatchPattern":"try { await client.ExecuteAsync(request); } catch (ApplicationException ex) when (ex.Message.Contains(\"query parameters in the base URL\")) { /* move query params to AddQueryParameter and retry */ }","preventionTips":["Never embed query strings in RestClientOptions.BaseUrl.","Add query parameters via AddQueryParameter / AddDefaultQueryParameter only.","Sanitize copied URLs to strip query strings before using as BaseUrl."],"tags":["oauth","oauth1","url","query-parameters","authentication"],"backgroundTag":null,"analyzedSha":"6a5082169257438cd085f822f050d93256a8e499","analyzedAt":"2026-08-13T20:38:25.807Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}