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