A family of combinators for defining webservices APIs

Version on this page:0.10@rev:1
LTS Haskell 18.23:0.18.3
Stackage Nightly 2022-01-27:0.18.3
Latest on Hackage:0.18.3

See all snapshots servant appears in

BSD-3-Clause licensed by Servant Contributors
This version can be pinned in stack with:servant-0.10@sha256:b2b19327461e3836e98d59d5652fb8ef1935e1e89dd687a621a9d9a98794a272,4456

Module documentation for 0.10

  • Servant
    • Servant.API
      • Servant.API.Alternative
      • Servant.API.BasicAuth
      • Servant.API.Capture
      • Servant.API.ContentTypes
      • Servant.API.Experimental
        • Servant.API.Experimental.Auth
      • Servant.API.Header
      • Servant.API.HttpVersion
      • Servant.API.Internal
        • Servant.API.Internal.Test
          • Servant.API.Internal.Test.ComprehensiveAPI
      • Servant.API.IsSecure
      • Servant.API.QueryParam
      • Servant.API.Raw
      • Servant.API.RemoteHost
      • Servant.API.ReqBody
      • Servant.API.ResponseHeaders
      • Servant.API.Sub
      • Servant.API.TypeLevel
      • Servant.API.Vault
      • Servant.API.Verbs
      • Servant.API.WithNamedContext
    • Servant.Utils
      • Servant.Utils.Enter
      • Servant.Utils.Links

A family of combinators for defining webservices APIs and serving them

You can learn about the basics in the tutorial.




Breaking changes

  • Use NT from natural-transformation for Enter (#616)

  • Change to MkLink (Verb ...) = Link (previously URI). To consume Link use its ToHttpApiData instance or linkURI. (#527)

Other changes

  • Add Servant.API.TypeLevel module with type families to work with API types. (#345 , #305)

  • Default JSON content type change to application/json;charset=utf-8. (#263) Related browser bugs: Chromium and Firefox

  • Accept class may accept multiple content-types. MimeUnrender adopted as well. (#613 , #615)


  • Added ‘noHeader’ function for not adding response headers.


  • Added Eq, Show, Read, Generic and Ord instances to IsSecure
  • BACKWARDS INCOMPATIBLE: replace use of ToFromByteString with To/FromHttpApiData for GetHeaders/BuildHeadersTo
  • BACKWARDS INCOMPATIBLE: Moved From/ToFormUrlEncoded classes, which were renamed to From/ToForm to http-api-data


  • Add CaptureAll combinator. Captures all of the remaining segments in a URL.
  • Add Servant.API.TypeLevel module, with frequently used type-level functionaliy.


  • Minor fixes, documentation changes and cabal tweaks



  • Add WithNamedConfig combinator.
  • Add HttpVersion, IsSecure, RemoteHost and Vault combinators
  • Fix safeLink, so Header is not in fact required.
  • Add more instances for (:<|>)
  • Use http-api-data instead of Servant.Common.Text
  • Remove matrix params.
  • Add PlainText String MimeRender and MimeUnrender instances.
  • Add new Verbs combinator, and make all existing and new verb combinators type synonyms of it.
  • Add BasicAuth combinator to support Basic authentication
  • Add generalized authentication support


  • Fix missing cases for Patch in safeLink


  • Allow whitespace after parsing JSON
  • Stricter matching for safeLink for Capture


  • Delete now is like Get, Post, Put, and Patch and returns a response body
  • Multiple content-type/accept support for all the relevant combinators
  • Provide JSON, PlainText, OctetStream and FormUrlEncoded content types out of the box
  • Type-safe link generation to API endpoints
  • Support for the PATCH HTTP method
  • Removed the home-made QuasiQuote for writing API types in a more human-friendly format until we come up with a better design for it
  • Make most if not all of the haddock code examples run through doctest
  • Some general code cleanup
  • Add response headers