REST API Tester

REST API testing and validation toolkit. Send requests, validate responses, benchmark performance, generate HTML reports. Use when the user wants to: (1) Test a REST API endpoint, (2) Validate API responses against expectations, (3) Benchmark API endpoint performance, (4) Test all endpoints from an OpenAPI/Swagger spec, (5) Generate API test reports, (6) Debug HTTP responses including status codes, headers, and bodies.

Audits

Pass

Install

openclaw skills install rest-api-test-cli

API Tester

Test, validate, and benchmark REST APIs with a single command. No external dependencies — uses only Python standard library.

Quick start

# Test a single endpoint
python3 skills/api-tester/scripts/api_tester.py --url https://api.github.com/repos/openclaw/openclaw

# POST with JSON body
python3 skills/api-tester/scripts/api_tester.py \
  --url https://jsonplaceholder.typicode.com/posts \
  --method POST \
  --body '{"title":"test","body":"hello","userId":1}'

# Test with custom headers
python3 skills/api-tester/scripts/api_tester.py \
  --url https://api.example.com/secure \
  --headers '{"Authorization":"Bearer token123"}'

Common commands

CommandAction
--url URLTarget API endpoint (required)
--method GET|POST|PUT|DELETE|PATCHHTTP method
--headers '{"K":"V"}'Custom headers as JSON
--body '{"key":"value"}'Request JSON body
--body-file path.jsonRead body from file
--verboseShow response body
--validateValidate status code + response time
--expected-status 201Expected HTTP status (default: 200)
--validate-keys id name emailExpected JSON keys in response
--benchmarkRun multiple iterations
--iterations 10Benchmark iterations (default: 5)
--max-time 5000Max acceptable time in ms (default: 3000)
--timeout 60Request timeout (default: 30)
--reportGenerate HTML test report
--output report.htmlSave report to path
--spec openapi.json --test-allTest all endpoints from spec

Validation

Validate API responses automatically:

python3 skills/api-tester/scripts/api_tester.py \
  --url https://jsonplaceholder.typicode.com/posts/1 \
  --validate --validate-keys userId id title body

Output:

Validation: ✅ PASS
  3/3 checks passed
  ✅ status_code: expected=200, actual=200
  ✅ response_time: expected=<3000ms, actual=234ms
  ✅ key_exists: userId: expected=present, actual=found

Benchmarking

Test endpoint performance over multiple iterations:

python3 skills/api-tester/scripts/api_tester.py \
  --url https://jsonplaceholder.typicode.com/posts \
  --benchmark --iterations 10

Output:

Benchmark: GET https://jsonplaceholder.typicode.com/posts
  Iterations: 10
  Min:    142ms
  Max:    312ms
  Avg:    198ms
  Median: 189ms
  Success: 10/10

HTML Reports

Generate a styled HTML report for sharing:

python3 skills/api-tester/scripts/api_tester.py \
  --url https://jsonplaceholder.typicode.com/posts/1 \
  --verbose --report
# Creates: api-test-report-20260510-133000.html

Testing from OpenAPI Spec

Test all endpoints defined in an OpenAPI/Swagger specification:

python3 skills/api-tester/scripts/api_tester.py \
  --spec openapi.json \
  --test-all

Requirements

  • Python 3.6+ (no pip install needed)
  • Uses only urllib from standard library
  • Works on Linux, macOS, Windows
  • No external API calls