What’s Hurl?

Hurl is a command line tool that runs HTTP requests defined in a simple plain text format.

It can perform requests, capture values and evaluate queries on headers and body response. Hurl is very versatile: it can be used for both fetching data and testing HTTP sessions.

# Get home:
GET https://example.net

HTTP/1.1 200
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"

# Do login!
POST https://example.net/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}

HTTP/1.1 302

Chaining multiple requests is easy:

GET https://api.example.net/health
GET https://api.example.net/step1
GET https://api.example.net/step2
GET https://api.example.net/step3

Also an HTTP Test Tool

Hurl can run HTTP requests but can also be used to test HTTP responses. Different types of queries and predicates are supported, from XPath and JSONPath on body response, to assert on status code and response headers.

It is well adapted for REST / JSON apis

POST https://api.example.net/tests
    "id": "456",
    "evaluate": true

HTTP/1.1 200
jsonpath "$.status" == "RUNNING"    # Check the status code
jsonpath "$.tests" count == 25      # Check the number of items

HTML content

GET https://example.net

HTTP/1.1 200
xpath "normalize-space(//head/title)" == "Hello world!"

and even SOAP apis

POST https://example.net/InStock
Content-Type: application/soap+xml; charset=utf-8
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="http://www.example.org">

HTTP/1.1 200

Hurl can also be used to test HTTP endpoints performances:

GET http://api.example.org/v1/pets

HTTP/1.0 200
duration < 1000  # Duration in ms

And responses bytes content

GET http://example.org/data.tar.gz

HTTP/1.0 200
sha256 == hex,039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81;

Why Hurl?

  • Text Format

    For both devops and developers
  • Fast CLI

    A command line for local dev and continuous integration
  • Single Binary

    Easy to install, with no runtime required

Powered by curl

Hurl is a lightweight binary written in Rust. Under the hood, Hurl HTTP engine is powered by libcurl, one of the most powerful and reliable file transfer library. With its text file format, Hurl adds syntactic sugar to run and tests HTTP requests, but it’s still the curl that we love.


Hurl is still in beta, any feedback, suggestion, bugs or improvements are welcome.

POST https://hurl.dev/api/feedback
  "name": "John Doe",
  "feedback": "Hurl is awesome !"
HTTP/1.1 200