diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
index d23f5e27f2..46570f4d86 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs
@@ -25,7 +25,7 @@ public partial class BulkRequest : IStreamSerializable
 
 	internal Request Self => this;
 
-	protected internal override IRequestConfiguration RequestConfig => RequestConfigSingleton;
+	public override IRequestConfiguration RequestConfiguration => RequestConfigSingleton;
 
 	public BulkOperationsCollection? Operations { get; set; }
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Client/ElasticsearchClient.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Client/ElasticsearchClient.cs
index b8af23beeb..afda07d6c1 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Client/ElasticsearchClient.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Client/ElasticsearchClient.cs
@@ -161,8 +161,8 @@ ValueTask<TResponse> SendRequest()
 			var openTelemetryDataMutator = GetOpenTelemetryDataMutator<TRequest, TRequestParameters>(request, resolvedRouteValues);
 
 			return isAsync
-				? new ValueTask<TResponse>(_transport.RequestAsync<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfig, cancellationToken))
-				: new ValueTask<TResponse>(_transport.Request<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfig));
+				? new ValueTask<TResponse>(_transport.RequestAsync<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfiguration, cancellationToken))
+				: new ValueTask<TResponse>(_transport.Request<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfiguration));
 		}
 
 		async ValueTask<TResponse> SendRequestWithProductCheck()
@@ -189,15 +189,15 @@ async ValueTask<TResponse> SendRequestWithProductCheckCore()
 			// Attach product check header
 
 			// TODO: The copy constructor should accept null values
-			var requestConfig = (request.RequestConfig is null)
+			var requestConfig = (request.RequestConfiguration is null)
 				? new RequestConfiguration()
 				{
 					ResponseHeadersToParse = new HeadersList("x-elastic-product")
 				}
-				: new RequestConfiguration(request.RequestConfig)
+				: new RequestConfiguration(request.RequestConfiguration)
 				{
-					ResponseHeadersToParse = (request.RequestConfig.ResponseHeadersToParse is { Count: > 0 })
-						? new HeadersList(request.RequestConfig.ResponseHeadersToParse, "x-elastic-product")
+					ResponseHeadersToParse = (request.RequestConfiguration.ResponseHeadersToParse is { Count: > 0 })
+						? new HeadersList(request.RequestConfiguration.ResponseHeadersToParse, "x-elastic-product")
 						: new HeadersList("x-elastic-product")
 				};
 
diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/PlainRequest.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/PlainRequest.cs
index c16a793569..af10ba9e64 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/PlainRequest.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/PlainRequest.cs
@@ -66,10 +66,4 @@ public string? SourceQueryString
 		get => Q<string>("source");
 		set => Q("source", value);
 	}
-
-	/// <summary>
-	/// Specify settings for this request alone, handy if you need a custom timeout or want to bypass sniffing, retries
-	/// </summary>
-	[JsonIgnore]
-	public IRequestConfiguration? RequestConfiguration { get; set; }
 }
diff --git a/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/Request.cs b/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/Request.cs
index 148011dcfa..f748358cf9 100644
--- a/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/Request.cs
+++ b/src/Elastic.Clients.Elasticsearch/_Shared/Core/Request/Request.cs
@@ -20,7 +20,11 @@ public abstract class Request
 	internal Request()
 	{ }
 
-	[JsonIgnore] protected internal virtual IRequestConfiguration? RequestConfig { get; set; }
+	/// <summary>
+	/// Specify settings for this request alone, handy if you need a custom timeout or want to bypass sniffing, retries
+	/// </summary>
+	[JsonIgnore]
+	public virtual IRequestConfiguration? RequestConfiguration { get; set; }
 
 	/// <summary>
 	/// The default HTTP method for the request which is based on the Elasticsearch Specification endpoint definition.