A fast, reliable HTTP client with JSON support and intuitive syntax. Inspired by curl but with additional modern features.
- Simple and intuitive command syntax
- Support for all HTTP methods
- Custom headers and request body
- JSON formatting for requests and responses
- Response output to file
- Follow redirects with configurable limits
- Timing information
- Insecure TLS connections for testing
- Color-coded output
brew tap geekyharsh05/gurl
brew install gurl
scoop bucket add geekyharsh05 https://github.com/geekyharsh05/scoop-bucket
scoop install gurl
wget https://github.com/geekyharsh05/gurl/releases/download/v1.0.1/gurl_1.0.1_linux_amd64.deb
sudo apt install ./gurl_1.0.1_linux_amd64.deb
go install github.com/geekyharsh05/gurl@latest
git clone https://github.com/geekyharsh05/gurl.git
cd gurl
go build
gurl request https://dummyjson.com/products
gurl request -o myfile.zip https://example.com/file.zip
gurl request -X POST https://dummyjson.com/products
gurl request -X PUT https://dummyjson.com/products/1
gurl request https://dummyjson.com/auth/login \
-X POST \
-H "Content-Type: application/json" \
-d '{"username":"emilys","password":"emilyspass","expiresInMins":30}'
gurl request https://dummyjson.com/auth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
gurl request -L https://dummyjson.com/http/200
gurl request -j https://dummyjson.com/products/1
gurl request -o response.json https://dummyjson.com/users
gurl request -v https://dummyjson.com/test
gurl request -k https://dummyjson.com/test
gurl request --wait-time 5s https://dummyjson.com/test
gurl request -v --wait-time 3s https://dummyjson.com/test
The download command offers wget-like functionality for downloading files with progress tracking, resume capability, and more:
gurl download https://example.com/file.zip
gurl download -o myfile.zip https://example.com/file.zip
gurl download -P ./downloads/ https://example.com/file.zip
gurl download -c https://example.com/large-file.iso
gurl download -q https://example.com/file.zip
gurl download --tries 5 --retry-delay 5s https://example.com/file.zip
gurl download -t 60s https://example.com/large-file.iso
-k, --insecure
: Allow insecure server connections--timeout duration
: Request timeout (default 30s)--max-redirects int
: Maximum number of redirects to follow (default 10)--wait-time duration
: Wait for the specified duration before making the request
-X, --method string
: HTTP method (default "GET")-d, --data string
: Request body-H, --header strings
: Custom headers-v, --verbose
: Show verbose output-o, --output string
: Write response to file-j, --json
: Format response as JSON-L, --follow
: Follow redirects--json-request
: Set Content-Type to application/json--form
: Set Content-Type to application/x-www-form-urlencoded--no-pretty
: Disable automatic JSON formatting
-o, --output string
: Save file with the specified name-P, --directory string
: Save files to the specified directory-c, --continue
: Resume getting a partially-downloaded file-q, --quiet
: Quiet mode - don't show progress bar-k, --insecure
: Allow insecure server connections-t, --timeout duration
: Set timeout for download (default 30s)-n, --no-redirect
: Don't follow redirects--max-redirects int
: Maximum number of redirects to follow (default 10)-r, --tries int
: Number of retry attempts (default 3, 0 for no retries)--retry-delay duration
: Delay between retries (default 2s)