An easy-to-use HTTP client library.


Version on this page:
LTS Haskell 22.29:
Stackage Nightly 2024-07-18:
Latest on Hackage:

See all snapshots wreq appears in

BSD-3-Clause licensed by Bryan O'Sullivan
Maintained by [email protected]
This version can be pinned in stack with:wreq-,5570

wreq: a Haskell web client library Build Status

wreq is a library that makes HTTP client programming in Haskell easy.


  • Simple but powerful lens-based API

  • Over 100 tests, and built on reliable libraries like http-client and lens

  • Session handling includes connection keep-alive and pooling, and cookie persistence

  • Automatic decompression

  • Powerful multipart form and file upload handling

  • Support for JSON requests and responses, including navigation of schema-less responses

  • Basic and OAuth2 bearer authentication

  • Amazon Web Services (AWS) request signing (Version 4)

  • AWS signing supports sending requests through the Runscope Inc. Traffic Inspector


See the tutorials for a quick-start.

Is it done?

No! See TODO.md for a rather long list of ideas.


-- markdown --


  • Compatibility with http-client >= 0.6.0


  • Fix AWS-related things


  • Added Postable/Putable on aeson encoding

  • Added better AWS signing for urls without region


  • Fixed some building issues with older versions

  • Removed dependency on cryptohash, using cryptonite instead


  • Added some HistoriedResponse support

  • Deprecated withSession, added newSession (to be inline with upstream http-client)

  • Added same instances for Putable as for Postable (might be merged?)

  • Added getSessionCookieJar to get cookies from a Session

  • Fixed customPayloadMethod to follow the method (it was sometimes POST)


  • Add awsSessionTokenAuth (in addition to the existing awsAuth) to support AWS Session Token Service (AWS STS) credentials. These look like regular AWS credentials but have an additional session token as a 3rd element. This mechanism is needed to be able to (a) use EC2 instance profiles, (b) make calls form AWS Lambda, (c) is useful for delegated role access (assumeRole within and across accounts), and (d) enables MFA-protected access scenarios. See tests/AWS/IAM.hs for a test and simple example.


  • Add Session-specific version of Network.Wreq.customPayloadMethodWith

  • 8.2 GHC compatibility


  • Compatible with http-client >= 0.5

  • This compatibility change required a small API change: checkStatus is now named checkResponse for compatibility with the http-client package


  • Compatible with GHC 7.10.

  • New withAPISession and withSessionControl functions make talking to REST services more efficient.

  • Added support for AWS S3 virtual-host style URLs.

  • Added signing support for region specific calls to the AWS Security Token Service (AWS STS).

  • The introduction of AWS support accidentally introduced unwanted AWS headers and computation into all requests. This has been fixed.


  • Bump lower bound on http-client to


  • Support for Amazon Web Services request signing

  • New customMethod, customMethodWith functions allow use of arbitrary HTTP verbs

  • httpProxy, basicAuth, oauth2Bearer, oauth2Token: removed Maybe from result types, changed documentation to suggest use of (?~)


  • Support for lens 4.4


  • Initial release.