diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.5.3
+
+* Expose `makeConnection` and `socketConnection` as a stable API [#223](https://github.com/snoyberg/http-client/issues/223)
+
 ## 0.5.2
 
 * Enable rawConnectionModifySocketSize to expose openSocketConnectionSize [#218](https://github.com/snoyberg/http-client/pull/218)
diff --git a/Network/HTTP/Client.hs b/Network/HTTP/Client.hs
--- a/Network/HTTP/Client.hs
+++ b/Network/HTTP/Client.hs
@@ -177,6 +177,9 @@
     , brRead
     , brReadSome
     , brConsume
+      -- * Advanced connection creation
+    , makeConnection
+    , socketConnection
       -- * Misc
     , HttpException (..)
     , HttpExceptionContent (..)
@@ -188,6 +191,7 @@
     ) where
 
 import Network.HTTP.Client.Body
+import Network.HTTP.Client.Connection (makeConnection, socketConnection)
 import Network.HTTP.Client.Cookies
 import Network.HTTP.Client.Core
 import Network.HTTP.Client.Manager
diff --git a/Network/HTTP/Client/Connection.hs b/Network/HTTP/Client/Connection.hs
--- a/Network/HTTP/Client/Connection.hs
+++ b/Network/HTTP/Client/Connection.hs
@@ -9,6 +9,7 @@
     , openSocketConnection
     , openSocketConnectionSize
     , makeConnection
+    , socketConnection
     ) where
 
 import Data.ByteString (ByteString, empty)
@@ -78,6 +79,9 @@
         , connectionClose = return ()
         }, atomicModifyIORef ioutput $ \output -> ([], output), readIORef iinput)
 
+-- | Create a new 'Connection' from a read, write, and close function.
+--
+-- @since 0.5.3
 makeConnection :: IO ByteString -- ^ read
                -> (ByteString -> IO ()) -- ^ write
                -> IO () -- ^ close
@@ -116,7 +120,12 @@
             writeIORef closedVar True
         }
 
-socketConnection :: Socket -> Int -> IO Connection
+-- | Create a new 'Connection' from a 'Socket'.
+--
+-- @since 0.5.3
+socketConnection :: Socket
+                 -> Int -- ^ chunk size
+                 -> IO Connection
 socketConnection socket chunksize = makeConnection
     (recv socket chunksize)
     (sendAll socket)
diff --git a/http-client.cabal b/http-client.cabal
--- a/http-client.cabal
+++ b/http-client.cabal
@@ -1,5 +1,5 @@
 name:                http-client
-version:             0.5.2
+version:             0.5.3
 synopsis:            An HTTP client engine
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>.
 homepage:            https://github.com/snoyberg/http-client
