TL;DR — Quick Summary
hurl runs HTTP requests from plain text files. Test APIs, assert responses, chain requests with curl power and plain-text simplicity.
hurl runs HTTP requests from plain text. Test APIs with assertions, chain requests, get CI/CD reports.
Installation
# Cargo
cargo install hurl
# Homebrew
brew install hurl
# Ubuntu/Debian
curl -sSL https://hurl.dev/install.sh | bash
Usage
Create a file api-test.hurl:
# Simple GET with assertion
GET https://httpbin.org/get
HTTP 200
[Asserts]
header "Content-Type" contains "json"
# POST request with body
POST https://httpbin.org/post
Content-Type: application/json
{
"name": "hurl",
"type": "cli"
}
HTTP 200
[Asserts]
jsonpath "$.json.name" == "hurl"
# Capture values for chaining
GET https://httpbin.org/uuid
HTTP 200
[Captures]
uuid: jsonpath "$.uuid"
Run it:
# Run test file
hurl api-test.hurl
# Verbose output
hurl --verbose api-test.hurl
# JUnit report for CI
hurl --report-junit report.xml api-test.hurl
# Multiple files
hurl tests/*.hurl
Summary
- hurl: HTTP requests from plain text files
- Built-in assertions — status, headers, JSON, regex
- Request chaining with variable capture
- CI/CD-ready — JUnit reports, exit codes
- Written in Rust — fast and reliable