A developer-friendly HTTP client for agents and scripts. Supports all HTTP methods, authentication, request bodies, pretty-printed responses, timing, and request history — all without needing curl flags memorized.
bash
# Simple GET request
python3 scripts/http_client.py GET https://httpbin.org/get
# POST with JSON body
python3 scripts/http_client.py POST https://httpbin.org/post --json '{"name": "test"}'
# POST with form data
python3 scripts/http_client.py POST https://httpbin.org/post --form "name=test&value=42"
# PUT request
python3 scripts/http_client.py PUT https://api.example.com/users/1 --json '{"role": "admin"}'
# DELETE request
python3 scripts/http_client.py DELETE https://api.example.com/users/1
# Bearer token auth
python3 scripts/http_client.py GET https://api.example.com/me --bearer "mytoken123"
# Basic auth
python3 scripts/http_client.py GET https://api.example.com/data --auth "user:password"
# API key header
python3 scripts/http_client.py GET https://api.example.com/data --api-key "X-API-Key:abc123"
# Custom headers
python3 scripts/http_client.py GET https://api.example.com/ --header "Accept: application/json" --header "X-App: myapp"
# Follow redirects
python3 scripts/http_client.py GET https://example.com/ --follow
# Show only status code
python3 scripts/http_client.py GET https://api.example.com/health --status-only
# Output response to file
python3 scripts/http_client.py GET https://example.com/data.json --output response.json
# Timeout
python3 scripts/http_client.py GET https://slow.api.example.com/ --timeout 10
# Show request timing
python3 scripts/http_client.py GET https://httpbin.org/get --timing
# Output as JSON (for scripting)
python3 scripts/http_client.py GET https://httpbin.org/get --output-json
OptionDescriptionGET/POST/PUT/DELETE/PATCH/HEADHTTP method<url>Target URL--json <body>JSON request body (sets Content-Type: application/json)--form <data>Form-encoded body (key=value&key2=val2)--bearer <token>Bearer token Authorization header--auth <user:pass>Basic auth--api-key <Header:value>Custom API key header--header <H: V>Add custom header (repeatable)--followFollow redirects (default: no)--timeout NRequest timeout in seconds (default: 30)--status-onlyPrint only the HTTP status code--output <file>Save response body to file--output-jsonOutput full response as JSON (status, headers, body, timing)--timingShow request/response timing--no-verifySkip TLS certificate verification--verboseShow request headers sent
By default, responses are pretty-printed:
0 — HTTP 2xx response1 — HTTP 4xx/5xx response2 — Network error, timeout, or usage error