automatical derivation of querying functions for servant webservices

Version on this page:0.7.1@rev:1
LTS Haskell 22.12:0.20@rev:3
Stackage Nightly 2024-03-01:0.20@rev:3
Latest on Hackage:0.20@rev:3

See all snapshots servant-client appears in

BSD-3-Clause licensed by Servant Contributors
Maintained by [email protected]
This version can be pinned in stack with:servant-client-0.7.1@sha256:2e5c2301bb98e655edb4e6be3a9b9a814330fcd559faba130a2798bf229800c3,2575

Module documentation for 0.7.1



This library lets you automatically derive Haskell functions that let you query each endpoint of a servant webservice.


type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
        :<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books

myApi :: Proxy MyApi
myApi = Proxy

getAllBooks :: ExceptT String IO [Book]
postNewBook :: Book -> ExceptT String IO Book
-- 'client' allows you to produce operations to query an API from a client.
(getAllBooks :<|> postNewBook) = client myApi host
  where host = BaseUrl Http "localhost" 8080



  • Support GHC 8.0
  • ServantError has an Eq instance now.


  • client no longer takes BaseUrl and Manager arguments. Instead, each function returned by client requires these two arguments.


  • Use the text package instead of String.
  • Support for the HttpVersion, IsSecure, RemoteHost and Vault combinators
  • Added support for path on BaseUrl.
  • client now takes an explicit Manager argument.
  • Use http-api-data instead of Servant.Common.Text
  • Client functions now consider any 2xx successful.
  • Remove matrix params.
  • Added support for Basic authentication
  • Add generalized authentication support via the AuthClientData type family and AuthenticateReq data type


  • The HasClient instance for Delete cts () now does not care at all about content types provided.


  • Delete now is like Get, Post, Put, and Patch and returns a response body
  • Support content-type aware combinators and Accept/Content-type headers
  • Added a lot of tests
  • Support multiple concurrent threads
  • Use ServantError to report Errors instead of String
  • Make the clients for Raw endpoints return the whole Response value (to be able to access response headers for example)
  • Support for PATCH
  • Make () instances expect No Content status code, and not try to decode body.
  • Add support for response headers


  • Add TLS support
  • Add matrix parameter support