REST API Tester

Server assisted API Testing

Send GET/POST/PUT/PATCH/DELETE requests and add assertions (status equals, header contains, JSONPath equals, response time under) to turn manual checks into repeatable test steps you can export.

Privacy: Processing happens in your browser where possible. Network checks are relayed through the Mutqan backend and are not stored.
Loading tool…

What is API testing?

API testing checks a service through its interface rather than its screens: send a request with a chosen method, headers and body, then verify the status code, the response headers, the body's structure and values, and the time it took. Because it runs below the UI, it is faster, more stable and catches integration defects earlier — which is why regression suites are built API-first.

Read the guide: What is API Testing? How to Test a REST API

How to use REST API Tester

  1. Build the request as in the API Request Builder.
  2. Open the Assertions tab and write expectations such as "status == 200" or "jsonpath $.data.id exists".
  3. Send. Assertions run against the response and are listed above the body with PASS/FAIL badges.
  4. Fix failing expectations or the API, re-send, then export the test step for your repository.

REST API Tester features

  • Full request editor (params, headers, body, auth) with relay or direct sending
  • Assertions on status, headers, JSONPath values, body text and response time — one per line
  • Pass/fail table with actual values and human-readable explanations
  • Export the request + assertions + last result as a JSON test step (with cURL)
  • Response body as pretty JSON, tree or raw; header table; code export

REST API Tester example

Assert on a JSON response

Input:

GET https://httpbin.org/json

status == 200
header Content-Type contains json
jsonpath $.slideshow.slides[0].type == "all"
time < 3000

Output:

4/4 passed
PASS status == 200 — Status is 200.
PASS header Content-Type contains json — Header Content-Type contains "json".
PASS jsonpath $.slideshow.slides[0].type == "all" — equals "all".
PASS time < 3000 — Responded in 412 ms (< 3000 ms).

Frequently asked questions about REST API Tester

How do I write assertions?

One per line in the Assertions tab: status == 200, status in 200,201, header Content-Type contains json, header X-Request-Id exists, jsonpath $.data.id == 42, jsonpath $.items[0] exists, body contains "ok", time < 500.

Which JSONPath syntax is supported?

Dot and bracket paths, wildcards, recursive descent (..), slices, unions and filter expressions such as $.items[?(@.price > 10)].id.

Can I save the test?

Use "Export test step" to download a JSON file with the request, the assertions and the last result, ready to drop into a test repository or replay with the cURL command included.

What happens if the body is not JSON?

Status, header, body-contains and time assertions still run; JSONPath assertions fail with a clear message.

Technical notes

Assertion values are parsed as JSON when possible (numbers, booleans, quoted strings, objects) and compared semantically; as a fallback the string forms are compared. JSONPath uses the built-in evaluator shared with the JSONPath Tester.

References

  • RFC 9110: HTTP SemanticsIETF · 2022The meaning of HTTP methods, header fields, status codes and content negotiation, independent of the wire version.
  • OpenAPI SpecificationOpenAPI InitiativeThe standard for describing REST APIs: paths, operations, parameters, schemas, responses and security schemes.
  • OWASP Cheat Sheet Series: REST SecurityOWASP FoundationSecurity rules for REST APIs: HTTPS, authentication on every request, input validation, safe error responses, rate limiting.