# Hurl — Run and Test HTTP Requests with Plain Text > Hurl is a command-line tool that runs HTTP requests defined in a simple plain text format. Chain requests, capture values, assert responses, and use it for API testing in CI/CD. Written in Rust on top of libcurl for maximum compatibility. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash # Install brew install hurl # macOS cargo install hurl # Rust sudo apt install hurl # Debian/Ubuntu ``` Create `api.hurl`: ```hurl # Test login endpoint POST https://api.example.com/login Content-Type: application/json { "email": "w@tokrepo.com", "password": "secret" } HTTP 200 [Captures] token: jsonpath "$.token" [Asserts] jsonpath "$.token" isString # Use captured token GET https://api.example.com/me Authorization: Bearer {{token}} HTTP 200 [Asserts] jsonpath "$.email" == "w@tokrepo.com" jsonpath "$.roles" includes "admin" ``` ```bash hurl api.hurl # Run requests hurl --test api.hurl # Test mode (CI) hurl --very-verbose api.hurl # Debug hurl --json api.hurl # JSON output hurl --variable host=staging api.hurl ``` ## Intro Hurl is a command-line tool that runs HTTP requests defined in a simple plain text format. Chain multiple requests, capture response values into variables, and assert on status codes, headers, body content, and JSONPath expressions. Written in Rust on top of libcurl. Created by Orange (France Telecom) and open-sourced. - **Repo**: https://github.com/Orange-OpenSource/hurl - **Stars**: 18K+ - **Language**: Rust - **License**: Apache 2.0 ## What Hurl Does - **Plain text format** — readable, version-controllable `.hurl` files - **Request chaining** — multiple requests in one file - **Captures** — extract values from responses into variables - **Assertions** — status, header, body, JSONPath, XPath, regex - **Variables** — inject via CLI or capture - **Cookie handling** — automatic across requests - **Certificate** — client certs and custom CA - **Performance** — libcurl-based, very fast - **CI-friendly** — `--test` mode with exit codes - **Report** — HTML, JSON, JUnit XML output ## Comparison | Tool | Format | CI | Language | |---|---|---|---| | Hurl | Plain text | Excellent | Rust | | HTTPie | CLI args | OK | Python | | curl | CLI args | OK | C | | Bruno | .bru files | CLI | JS | | Postman | JSON/GUI | Newman | JS | ## FAQ **Q: Hurl vs curl?** A: curl is a single-request tool; Hurl orchestrates multiple requests with assertions. Hurl uses libcurl internally but adds chained requests, capture/assert, and test mode. Hurl is better for API testing. **Q: Compared to Postman?** A: Hurl is plain text + CLI (Git-friendly, CI-native); Postman is a GUI (nice visuals but files don't diff well). Developers tend to prefer Hurl. ## Sources - Docs: https://hurl.dev - GitHub: https://github.com/Orange-OpenSource/hurl - License: Apache 2.0 --- Source: https://tokrepo.com/en/workflows/hurl-run-test-http-requests-plain-text-42405722 Author: Script Depot