HTTP/2 301
date: Fri, 16 Jan 2026 03:18:04 GMT
content-type: text/html
content-length: 162
location: https://haskell-servant.readthedocs.io/
cf-ray: 9bea769f6b120bc9-BLR
x-backend: web-i-0c0f21c4be6f281b0
x-served: Nginx-Domain-Redirect
cf-cache-status: DYNAMIC
set-cookie: __cf_bm=hcB.gtzftENKZLE3jkyWfAu7P0cdwnA_oKGMmBTcYOw-1768533484-1.0.1.1-mkDoZhOkE0dgYztK254LwlLB8vMIflN3FKwZayFQnDCiP2D0MQVoBJZCR6iSjcrxTLFtv6sueZ3UnxUmk5txVtgrlkhGIsiG.SWWyRKYdZ4; path=/; expires=Fri, 16-Jan-26 03:48:04 GMT; domain=.readthedocs.org; HttpOnly; Secure; SameSite=None
set-cookie: _cfuvid=uE1VbRMmhuhhjX.LMUNQKTL.AC3R3spAZuM49gicJ9g-1768533484266-0.0.1.1-604800000; path=/; domain=.readthedocs.org; HttpOnly; Secure; SameSite=None
server: cloudflare
HTTP/2 302
date: Fri, 16 Jan 2026 03:18:05 GMT
content-type: text/html; charset=utf-8
content-length: 0
location: https://docs.servant.dev/
server: cloudflare
cf-ray: 9bea76a4da943e92-BLR
cf-cache-status: EXPIRED
cache-control: max-age=1200
content-language: en
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: Accept-Language, Accept-Encoding
cdn-cache-control: public
cross-origin-opener-policy: same-origin
referrer-policy: no-referrer-when-downgrade
x-backend: web-i-0dfcfe4f7e607f23f
x-content-type-options: nosniff
x-rtd-domain: haskell-servant.readthedocs.io
x-rtd-project:
x-rtd-project-method: public_domain
x-rtd-redirect: to_canonical_domain
x-rtd-version-method: path
x-served: Django-Proxito
set-cookie: __cf_bm=dxLtZThgBdyvlN0eik0f16uzw_9.3PobzNxlNO_0ORo-1768533485-1.0.1.1-CDvvzZJ6ek96EgXBm5kNHXKA2beKNC4eefuiCz5PqtYEVcxOH_rO8zmM.RtddEoKypVKHFobS.bDf6C1wT_KYhve3lTnWc.B2WRCtPgKybA; path=/; expires=Fri, 16-Jan-26 03:48:05 GMT; domain=.readthedocs.io; HttpOnly; Secure; SameSite=None
set-cookie: _cfuvid=9mqoSn36TgmdDpovFI5RYkwDAc55GmtX94ycGOOIN64-1768533485189-0.0.1.1-604800000; path=/; domain=.readthedocs.io; HttpOnly; Secure; SameSite=None
alt-svc: h3=":443"; ma=86400
HTTP/2 302
date: Fri, 16 Jan 2026 03:18:06 GMT
content-type: text/html; charset=utf-8
content-length: 0
location: https://docs.servant.dev/en/0.20.3.0/
server: cloudflare
cf-ray: 9bea76aabdb9335a-BLR
cf-cache-status: HIT
cache-control: max-age=1200
content-language: en
vary: Accept-Language, Accept-Encoding
cdn-cache-control: public
cross-origin-opener-policy: same-origin
referrer-policy: no-referrer-when-downgrade
x-backend: web-i-0f240f13cb67612c1
x-content-type-options: nosniff
x-rtd-domain: docs.servant.dev
x-rtd-force-addons: true
x-rtd-project: haskell-servant
x-rtd-project-method: custom_domain
x-rtd-redirect: system
x-rtd-version-method: path
x-served: Django-Proxito
set-cookie: __cf_bm=T.KCcqZZQyNCwPrJKY0fhFDXn8lJ.Nb5cfyvpb0LimA-1768533486-1.0.1.1-ZvaVP4ryjTETl4n8_qjKsNe_3QoGCmsNg2BEeWYydvNYDJODwRiWPu1nhnGeVgQ5qeHH5KHADDXtnalVKbPI9QMiX.3VZqZ31pF8eLLAaEQ; path=/; expires=Fri, 16-Jan-26 03:48:06 GMT; domain=.docs.servant.dev; HttpOnly; Secure; SameSite=None
set-cookie: _cfuvid=SU8XUYLXuS92x9R4aEQYfgzp9PHFBGreCm2OyjIda8Q-1768533486052-0.0.1.1-604800000; path=/; domain=.docs.servant.dev; HttpOnly; Secure; SameSite=None
alt-svc: h3=":443"; ma=86400
HTTP/2 200
date: Fri, 16 Jan 2026 03:18:06 GMT
content-type: text/html; charset=utf-8
server: cloudflare
cf-ray: 9bea76afd99c335a-BLR
cf-cache-status: REVALIDATED
access-control-allow-origin: *
cache-control: max-age=1200
content-encoding: gzip
etag: W/"c3dc1879101ca5dd35e0ffa88ffde391"
last-modified: Wed, 18 Jun 2025 11:54:21 GMT
vary: Accept-Encoding
access-control-allow-methods: HEAD, OPTIONS, GET
cdn-cache-control: public
cross-origin-opener-policy: same-origin
referrer-policy: no-referrer-when-downgrade
x-amz-id-2: JrRwH2pjecLX2dDJyIgok7ix7F/Oa7KWCmeom0vKZdZcIu3MNaFNccsNgEKSkKAGpdWGpBEmWAk=
x-amz-meta-mtime: 1750247657.976872386
x-amz-request-id: 8970BQWFK3S1JCRQ
x-amz-server-side-encryption: AES256
x-backend: web-i-09e62d1a150e995a5
x-content-type-options: nosniff
x-rtd-domain: docs.servant.dev
x-rtd-force-addons: true
x-rtd-path: /proxito/html/haskell-servant/0.20.3.0/index.html
x-rtd-project: haskell-servant
x-rtd-project-method: custom_domain
x-rtd-resolver-filename: /
x-rtd-version: 0.20.3.0
x-rtd-version-method: path
x-served: Nginx-Proxito-Sendfile
alt-svc: h3=":443"; ma=86400
servant – A Type-Level Web DSL — Servant documentation
Servant
servant – A Type-Level Web DSL
servant is a set of Haskell libraries for writing type-safe web
applications but also deriving clients (in Haskell and other languages) or
generating documentation for them, and more.
This is achieved by taking as input a description of the web API
as a Haskell type. Servant is then able to check that your server-side request
handlers indeed implement your web API faithfully, or to automatically derive
Haskell functions that can hit a web application that implements this API,
generate a Swagger description or code for client functions in some other
languages directly.
If you would like to learn more, click the tutorial link below.