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