explaingit

orange-opensource/hurl

📈 Trending18,914RustAudience · developerComplexity · 2/5ActiveLicenseSetup · easy

TLDR

Command-line tool for testing HTTP APIs using plain-text request files with built-in assertions and response validation.

Mindmap

mindmap
  root((Hurl))
    What it does
      Run HTTP requests
      Validate responses
      Chain requests
      Capture values
    Use cases
      API debugging
      Integration testing
      CI/CD pipelines
    Tech stack
      Rust
      libcurl
      Single binary
    Supported formats
      REST APIs
      GraphQL
      SOAP
      JSON assertions
    Output formats
      JUnit reports
      HTML reports
      TAP format
      JSON format

Things people build with this

USE CASE 1

Debug and explore REST APIs interactively from the command line without writing code.

USE CASE 2

Automate integration tests in CI/CD pipelines to verify API responses and behavior before deployment.

USE CASE 3

Chain multiple HTTP requests together, capturing session tokens or data from one response to use in the next.

USE CASE 4

Generate test reports in JUnit, HTML, or JSON format for API test results and coverage tracking.

Tech stack

RustlibcurlHTTP/RESTGraphQLSOAP

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

In plain English

Hurl is a command-line tool for running HTTP requests and testing HTTP responses, using simple plain-text files to define what requests to make and what results to expect. HTTP requests are how web browsers and apps communicate with servers, Hurl lets you script and automate that communication from the command line without writing code. The core workflow: you write a .hurl file describing a sequence of HTTP requests (GET, POST, etc.) along with assertions, checks like "the response status should be 200" or "this JSON field should equal 'RUNNING'". You can also capture values from one response and use them in the next request, which is essential for things like logging in (capturing a session token) before accessing protected pages. It supports REST APIs, GraphQL, SOAP, HTML content, and raw binary data. You would use Hurl in two main scenarios: manually exploring or debugging an API without writing code, and automated integration testing, running it in a CI/CD pipeline (the automated system that checks code before it ships) to verify your API behaves correctly. It generates test reports in JUnit, HTML, TAP, and JSON formats. Under the hood it's powered by libcurl, the same library that powers the curl command-line tool. Written in Rust, it's a single binary with no runtime dependencies needed.

Copy-paste prompts

Prompt 1
Show me how to write a .hurl file that logs in via POST, captures a session token, then uses it to fetch protected data.
Prompt 2
How do I set up Hurl to run automated API tests in my GitHub Actions CI/CD pipeline and generate JUnit reports?
Prompt 3
Create a Hurl script that tests a GraphQL endpoint, validates the response JSON structure, and checks for specific field values.
Prompt 4
How do I use Hurl to debug a REST API by making requests and asserting that status codes and response headers match expectations?
Prompt 5
Show me how to chain multiple HTTP requests in Hurl where each request depends on data captured from the previous response.
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.