Test, validate, and benchmark REST APIs with a single command. No external dependencies — uses only Python standard library.
bash
# 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"}'
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
Validate API responses automatically:
bash
python3 skills/api-tester/scripts/api_tester.py \
--url https://jsonplaceholder.typicode.com/posts/1 \
--validate --validate-keys userId id title body
Output:
text
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
Test endpoint performance over multiple iterations:
bash
python3 skills/api-tester/scripts/api_tester.py \
--url https://jsonplaceholder.typicode.com/posts \
--benchmark --iterations 10
Output:
text
Benchmark: GET https://jsonplaceholder.typicode.com/posts
Iterations: 10
Min: 142ms
Max: 312ms
Avg: 198ms
Median: 189ms
Success: 10/10
Generate a styled HTML report for sharing:
bash
python3 skills/api-tester/scripts/api_tester.py \
--url https://jsonplaceholder.typicode.com/posts/1 \
--verbose --report
# Creates: api-test-report-20260510-133000.html
Test all endpoints defined in an OpenAPI/Swagger specification:
bash
python3 skills/api-tester/scripts/api_tester.py \
--spec openapi.json \
--test-all
urllib from standard library