XH(1) | User Commands | XH(1) |
xh - Friendly and fast tool for sending HTTP requests
xh [OPTIONS] [METHOD] URL [--] [REQUEST_ITEM ...]
xh is an HTTP client with a friendly command line interface. It strives to have readable output and easy-to-use options.
xh is mostly compatible with HTTPie: see http(1).
The --curl option can be used to print a curl(1) translation of the command instead of sending a request.
This defaults to GET, or to POST if the request contains a body.
The URL scheme defaults to "http://" normally, or "https://" if the program is invoked as "xhs".
A leading colon works as shorthand for localhost. ":8000" is equivalent to "localhost:8000", and ":/path" is equivalent to "localhost/path".
The separator is used to determine the type:
Example: "numbers:=[1,2,3] enabled:=true"
To set the filename and mimetype, ";type=" and ";filename=" can be used respectively.
Example: "pfp@ra.jpg;type=image/jpeg;filename=profile.jpg"
A backslash can be used to escape special characters, e.g. "weird\:key=value".
To construct a complex JSON object, the REQUEST_ITEM's key can be set to a JSON path instead of a field name. For more information on this syntax, refer to https://httpie.io/docs/cli/nested-json.
Each --OPTION can be reset with a --no-OPTION argument.
Overrides both --form and --multipart.
Overrides both --json and --multipart.
Overrides both --json and --form.
all (default) Enable both coloring and formatting
colors Apply syntax highlighting to output
format Pretty-print json and sort headers
none Disable both coloring and formatting
Defaults to "format" if the NO_COLOR env is set and to "none" if stdout is not tty.
json.indent:<NUM>
json.format:<true|false>
headers.sort:<true|false>
Example: --format-options=json.indent:2,headers.sort:false.
[possible values: auto, solarized, monokai, fruity]
Example: --response-charset=latin1.
Example: --response-mime=application/json.
'H' request headers
'B' request body
'h' response headers
'b' response body
'm' response metadata
Example: --print=Hb.
Additionally, this enables --all for printing intermediary requests/responses while following redirects.
Using verbose twice i.e. -vv will print the response metadata as well.
Equivalent to --print=HhBb --all.
Logging can be configured in more detail using the `$RUST_LOG` environment variable. Set `RUST_LOG=trace` to show even more messages. See https://docs.rs/env_logger/0.11.3/env_logger/#enabling-logging.
Using quiet twice i.e. -qq will suppress warnings as well.
The Accept-Encoding header is set to identify and any redirects will be followed.
Within a session, custom headers, auth credentials, as well as any cookies sent by the server persist between requests.
[possible values: basic, bearer]
PASS will be prompted if missing. Use a trailing colon (i.e. "USER:") to authenticate with just a username.
TOKEN is expected if --auth-type=bearer.
The exit code will be 4 on 4xx (Client Error), 5 on 5xx (Server Error), or 3 on 3xx (Redirect) if --follow isn't set.
If stdout is redirected then a warning is written to stderr.
The default value is "0", i.e., there is no timeout limit.
PROTOCOL can be "http", "https" or "all".
If your proxy requires credentials, put them in the URL, like so: --proxy http:socks5://user:password@proxy.host:8000.
You can specify proxies for multiple protocols by repeating this option.
The environment variables "http_proxy" and "https_proxy" can also be used, but are completely ignored if --proxy is passed.
Specifying a CA bundle will disable the system's built-in root certificates.
"false" instead of "no" also works. The default is "yes" ("true").
Only necessary if the private key is not contained in the cert file.
"auto" gives the default behavior of negotiating a version with the server.
[possible values: auto, tls1, tls1.1, tls1.2, tls1.3]
[possible values: 1.0, 1.1, 2, 2-prior-knowledge]
You can override multiple domains by repeating this option.
Example: --resolve=example.com:127.0.0.1.
Example: --interface=192.168.0.2.
This disables the default behaviour of reading the request body from stdin when a redirected input is detected.
It is recommended to pass this flag when using xh for scripting purposes. For more information, refer to https://httpie.io/docs/cli/best-practices.
For translating the other way, try https://curl2httpie.online/.
complete-bash
complete-elvish
complete-fish
//complete-nushell (Debian: not packaged)
complete-powershell
complete-zsh
man
Example: xh --generate=complete-bash > xh.bash.
xh's Github issues <https://github.com/ducaale/xh/issues>
curl(1), http(1)
HTTPie's online documentation <https://httpie.io/docs/cli>
2025-01-20 | 0.23.1 |