TL;DR — Quick Summary
Hurl runs HTTP requests from plain text files. Test APIs, chain requests, assert responses — like curl meets testing framework, all in readable text files.
Hurl runs HTTP requests from plain text files. Define requests, assert responses, chain calls — API testing without the complexity.
Installation
# macOS
brew install hurl
# Arch Linux
sudo pacman -S hurl
# Cargo
cargo install hurl
Usage
# basic.hurl — Simple GET
GET https://api.example.com/users
HTTP 200
[Asserts]
header "Content-Type" contains "json"
jsonpath "$.users" count > 0
# auth.hurl — Login + authenticated request
POST https://api.example.com/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "secret"
}
HTTP 200
[Captures]
token: jsonpath "$.token"
# Use captured token
GET https://api.example.com/profile
Authorization: Bearer {{token}}
HTTP 200
[Asserts]
jsonpath "$.email" == "user@example.com"
# Run requests
hurl basic.hurl
hurl auth.hurl
# Test mode (pass/fail)
hurl --test basic.hurl auth.hurl
# Variables
hurl --variable host=staging.example.com test.hurl
# Output
hurl --json basic.hurl # JSON output
hurl --report-html report/ *.hurl # HTML report
# Verbose
hurl --very-verbose basic.hurl
# CI/CD
hurl --test --report-junit results.xml *.hurl
Summary
- Hurl runs HTTP requests from plain text .hurl files
- Built-in assertions: status, headers, body, JSONPath, regex, duration
- Chain requests: capture values and reuse across request sequence
- Test mode with pass/fail output and HTML/JUnit reports
- Written in Rust — fast, single binary, CI/CD-friendly