The Fastest Way For Testing
An enhanced version of Hurl, designed for modern API engineering workflows. Chain requests, capture values, and evaluate queries on headers and body response.
hurlx adds import/export syntax, making HTTP testing more modular and maintainable.
# auth.hurlx POST https://api.example.com/login [JSON] { "username": "{{username}}", "password": "{{password}}" } HTTP 200 [Captures] token: jsonpath "$.token" expires: jsonpath "$.expires_at" export token export expires # api-test.hurlx import "auth.hurlx" GET https://api.example.com/users Authorization: Bearer {{token}} HTTP 200 [Asserts] jsonpath "$.length()" > 0
Why hurlx?
hurlx extends Hurl with modular capabilities while maintaining full compatibility with all existing Hurl features.
Modular Import/Export
Reuse authentication, configuration, and endpoint definitions across multiple test files with import/export syntax.
Advanced Assertions
Powerful assertion capabilities including JSONPath, XPath, regex, and type checking for comprehensive testing.
Variable Chaining
Chain variables across requests for complex workflows like multi-step authentication and data pipelines.
Template System
Dynamic value generation with built-in functions for UUID, dates, random hex, and environment variables.
Full Hurl Compatibility
100% compatible with all Hurl features. hurlx is a strict superset — your existing Hurl files work as-is.
Engineering Ready
Structured test cases with CI/CD integration, JUnit reports, and professional workflow support built in.
Chain Trace
Use --trace flag to print each chain step result as JSON for detailed debugging and analysis.
Modular Testing Made Simple
Split your API tests into reusable modules. Import authentication flows, configuration, and endpoint definitions across test suites.
# auth.hurlx POST https://api.example.com/login [JSON] { "username": "{{user}}" } HTTP 200 [Captures] token: jsonpath "$.token" export token
Chain Requests, Capture Values
Chain multiple HTTP requests together. Capture response values and pass them to subsequent requests for complex API testing workflows.
# Get token → Login → Access GET https://api.example.com/login HTTP 200 [Captures] csrf: xpath "//input[@name='csrf']/@value" POST https://api.example.com/login Cookie: csrf={{csrf}} HTTP 302
Ready for CI/CD
Built for professional workflows. Generate JUnit reports, integrate with GitHub Actions, and run comprehensive test suites in any CI environment.
$ hurlx --test tests/*.hurlx \
--variable base_url=$API_URL \
--report-junit=report.xmlHurl vs hurlx
hurlx is a strict superset of Hurl — every Hurl file is a valid hurlx file.
| Feature | Hurl | hurlx |
|---|---|---|
| Basic HTTP Testing | ||
| JSON/XML Assertions | ||
| Variables & Templates | ||
| Filters & Predicates | ||
| Captures & Chaining | ||
| Modular Import/Export | ||
| Chain Trace (--trace) | ||
| Structured Test Cases | ||
| Engineering-Ready Workflows |
hurlx = Hurl superset + modular capabilities
Get Started
Install hurlx and start testing APIs with modular workflows.
curl -L https://github.com/itbaby/hurlx/releases/latest/download/hurlx-darwin-arm64 -o hurlx
chmod +x hurlxWrite
Create a .hurlx file with your HTTP requests
Run
Execute with hurlx test.hurlx
Test
Use --test mode for assertions
# hello.hurlx
GET https://example.com
HTTP 200
$ hurlx hello.hurlx
$ hurlx --test hello.hurlx
$ hurlx --verbose test.hurlx
$ hurlx --test tests/*.hurlx
$ hurlx --trace test.hurlx