diff --git a/http/http_client.hpp b/http/http_client.hpp
index ab20eb0..53040ae 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -68,7 +68,6 @@
     std::optional<
         boost::beast::http::response_parser<boost::beast::http::string_body>>
         parser;
-    std::vector<std::pair<std::string, std::string>> headers;
     boost::circular_buffer_space_optimized<std::string> requestDataQueue{};
 
     ConnState state;
@@ -141,11 +140,6 @@
         req.target(uri);
         req.method(boost::beast::http::verb::post);
 
-        // Set headers
-        for (const auto& [key, value] : headers)
-        {
-            req.set(key, value);
-        }
         req.set(boost::beast::http::field::host, host);
         req.keep_alive(true);
 
@@ -425,10 +419,9 @@
         return;
     }
 
-    void setHeaders(
-        const std::vector<std::pair<std::string, std::string>>& httpHeaders)
+    void setHeaders(const boost::beast::http::fields& httpHeaders)
     {
-        headers = httpHeaders;
+        req.base() = boost::beast::http::header<true>(httpHeaders);
     }
 
     void setRetryConfig(const uint32_t retryAttempts,
