diff --git a/lxd-client.cabal b/lxd-client.cabal
--- a/lxd-client.cabal
+++ b/lxd-client.cabal
@@ -1,5 +1,5 @@
 name:                lxd-client
-version:             0.1.0.5
+version:             0.1.0.6
 synopsis:            LXD client written in Haskell.
 description:
     Implementation of the LXD client protocol in Haskell.
@@ -54,8 +54,8 @@
                      , mtl              >= 2.2.1 && <3
                      , network          >= 2.6.3.2 && <3
                      , semigroups       >= 0.18.3 && <1
-                     , servant          >= 0.11 && <0.13
-                     , servant-client   >= 0.11 && <0.13
+                     , servant          >= 0.11 && <0.14
+                     , servant-client   >= 0.11 && <0.14
                      , text             >= 1.2.2.2 && <2
                      , tls              >= 1.3.9 && <2
                      , transformers     >= 0.5.2.0 && <1
diff --git a/src/Network/LXD/Client.hs b/src/Network/LXD/Client.hs
--- a/src/Network/LXD/Client.hs
+++ b/src/Network/LXD/Client.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE RecordWildCards #-}
 -- | This module exposes functionality to create LXD clients. These can
@@ -69,7 +70,11 @@
 import qualified Network.WebSockets as WS
 import qualified Network.WebSockets.Stream as WS
 
+#if MIN_VERSION_servant(0, 13, 0)
+import Servant.Client (BaseUrl(..), ClientEnv(..), mkClientEnv, Scheme(Http, Https))
+#else
 import Servant.Client (BaseUrl(..), ClientEnv(..), Scheme(Http, Https))
+#endif
 
 import System.Directory (getHomeDirectory)
 import System.IO.Error (catchIOError, isEOFError)
@@ -133,7 +138,7 @@
 
 remoteHostClient :: (MonadError String m, MonadIO m) => RemoteHost -> m ClientEnv
 remoteHostClient remote@RemoteHost{..} =
-    ClientEnv <$> remoteHostManager remote <*> pure baseUrl
+    mkClientEnv <$> remoteHostManager remote <*> pure baseUrl
   where
     baseUrl = BaseUrl Https remoteHostHost remoteHostPort remoteHostBasePath
 
@@ -189,7 +194,7 @@
 localHostClient :: MonadIO m => LocalHost -> m ClientEnv
 localHostClient host = do
     m <- liftIO $ newManager defaultManagerSettings { managerRawConnection = createUnixConnection }
-    return $ ClientEnv m baseUrl
+    return $ mkClientEnv m baseUrl
   where
     createUnixConnection = return $ \_ _ _ -> do
         s <- unixSocket host
@@ -254,3 +259,8 @@
 eitherToError :: MonadError err m => Either err a -> m a
 eitherToError (Left  x) = throwError x
 eitherToError (Right x) = return x
+
+#if !MIN_VERSION_servant(0, 13, 0)
+mkClientEnv :: Manager -> BaseUrl -> ClientEnv
+mkClientEnv = ClientEnv
+#endif
diff --git a/src/Network/LXD/Client/API.hs b/src/Network/LXD/Client/API.hs
--- a/src/Network/LXD/Client/API.hs
+++ b/src/Network/LXD/Client/API.hs
@@ -434,7 +434,21 @@
 instance Exception DecodeError where
 
 askBaseUrl :: ClientM BaseUrl
-askBaseUrl = asks $ \(ClientEnv _ url) -> url
+askBaseUrl = asks getBaseUrl
+  where
+    getBaseUrl :: ClientEnv -> BaseUrl
+#if MIN_VERSION_servant(0, 12, 0)
+    getBaseUrl = baseUrl
+#else
+    getBaseUrl (ClientEnv _ url) = url
+#endif
 
 askManager :: ClientM Client.Manager
-askManager = asks $ \(ClientEnv mgr _) -> mgr
+askManager = asks getManager
+  where
+    getManager :: ClientEnv -> Client.Manager
+#if MIN_VERSION_servant(0, 12, 0)
+    getManager = manager
+#else
+    getManager (ClientEnv mgr _) = mgr
+#endif
