#compdef curl # curl zsh completion local curcontext="$curcontext" state state_descr line typeset -A opt_args local rc=1 _arguments -C -S \ {-X,--request}'[Specify request method to use]':'<method>':'(DELETE GET HEAD POST PUT)' \ --ssl-sessions'[Load/save SSL session tickets from/to this file]':'<filename>':_files \ {-c,--cookie-jar}'[Save cookies to <filename> after operation]':'<filename>':_files \ {-D,--dump-header}'[Write the received headers to <filename>]':'<filename>':_files \ {-y,--speed-time}'[Trigger '\''speed-limit'\'' abort after this time]':'<seconds>' \ --abstract-unix-socket'[Connect via abstract Unix domain socket]':'<path>':_files \ --connect-to'[Connect to host2 instead of host1]':'<HOST1\:PORT1\:HOST2\:PORT2>' \ --proxy-capath'[CA directory to verify proxy against]':'<dir>':'_path_files -/' \ {-E,--cert}'[Client certificate file and password]':'<certificate[\:password]>' \ --proxy-pinnedpubkey'[FILE/HASHES public key to verify proxy with]':'<hashes>' \ --resolve'[Resolve host+port to address]':'<[+]host\:port\:addr[,addr]...>' \ --aws-sigv4'[AWS V4 signature auth]':'<provider1[\:prvdr2[\:reg[\:srv]]]>' \ --socks5-hostname'[SOCKS5 proxy, pass hostname to proxy]':'<host[\:port]>' \ {-b,--cookie}'[Send cookies from string/load from file]':'<data|filename>' \ --ftp-method'[Control CWD usage]':'<method>':'(multicwd nocwd singlecwd)' \ --proto-default'[Use PROTOCOL for any URL missing a scheme]':'<protocol>' \ --proxy-cacert'[CA certificates to verify proxy against]':'<file>':_files \ --socks5-gssapi-service'[SOCKS5 proxy service name for GSS-API]':'<name>' \ --capath'[CA directory to verify peer against]':'<dir>':'_path_files -/' \ --ftp-alternative-to-user'[String to replace USER \[name\]]':'<command>' \ --libcurl'[Generate libcurl code for this command line]':'<file>':_files \ --unix-socket'[Connect through this Unix domain socket]':'<path>':_files \ {-T,--upload-file}'[Transfer local FILE to destination]':'<file>':_files \ --hostpubsha256'[Acceptable SHA256 hash of host public key]':'<sha256>' \ --proxy-ciphers'[TLS 1.2 (1.1, 1.0) ciphers to use for proxy]':'<list>' \ --proxy-tlsauthtype'[TLS authentication type for HTTPS proxy]':'<type>' \ --request-target'[Specify the target for this request]':'<path>':_files \ --etag-save'[Parse incoming ETag and save to a file]':'<file>':_files \ --proxy-cert-type'[Client certificate type for HTTPS proxy]':'<type>' \ --proxy-pass'[Passphrase for private key for HTTPS proxy]':'<phrase>' \ --sasl-authzid'[Identity for SASL PLAIN authentication]':'<identity>' \ --suppress-connect-headers'[Suppress proxy CONNECT response headers]' \ --trace-ascii'[Like --trace, but without hex output]':'<file>':_files \ {-Q,--quote}'[Send command(s) to server before transfer]':'<command>' \ --alt-svc'[Enable alt-svc with this cache file]':'<filename>':_files \ --expect100-timeout'[How long to wait for 100-continue]':'<seconds>' \ --location-trusted'[As --location, but send secrets to other hosts]' \ --parallel-max'[Maximum concurrency for parallel transfers]':'<num>' \ {-j,--junk-session-cookies}'[Ignore session cookies read from file]' \ --dns-ipv4-addr'[IPv4 address to use for DNS requests]':'<address>' \ --dns-ipv6-addr'[IPv6 address to use for DNS requests]':'<address>' \ --mail-auth'[Originator address of the original email]':'<address>' \ --noproxy'[List of hosts which do not use proxy]':'<no-proxy-list>' \ --output-dir'[Directory to save files in]':'<dir>':'_path_files -/' \ --proto-redir'[Enable/disable PROTOCOLS on redirect]':'<protocols>' \ --proxy-cert'[Set client certificate for proxy]':'<cert[\:passwd]>' \ --proxy-ssl-allow-beast'[Allow this security flaw for HTTPS proxy]' \ --trace-config'[Details to log in trace/verbose output]':'<string>' \ --dns-interface'[Interface to use for DNS requests]':'<interface>' \ --dump-ca-embed'[Write the embedded CA bundle to standard output]' \ --keepalive-time'[Interval time for keepalive probes]':'<seconds>' \ --random-file'[File for reading random data from]':'<file>':_files \ --cacert'[CA certificate to verify peer against]':'<file>':_files \ --ignore-content-length'[Ignore the size of the remote resource]' \ --keepalive-cnt'[Maximum number of keepalive probes]':'<integer>' \ --preproxy'[Use this proxy first]':'<[protocol\://]host[\:port]>' \ --proxy-header'[Pass custom header(s) to proxy]':'<header/@file>' \ --proxy-ssl-auto-client-cert'[Auto client certificate for proxy]' \ --retry-connrefused'[Retry on connection refused (with --retry)]' \ {-H,--header}'[Pass custom header(s) to server]':'<header/@file>' \ --connect-timeout'[Maximum time allowed to connect]':'<seconds>' \ --curves'[(EC) TLS key exchange algorithms to request]':'<list>' \ --proxy-negotiate'[HTTP Negotiate (SPNEGO) auth with the proxy]' \ --rate'[Request rate for serial transfers]':'<max request rate>' \ --socks4a'[SOCKS4a proxy on given host + port]':'<host[\:port]>' \ --ssl-auto-client-cert'[Use auto client certificate (Schannel)]' \ {-m,--max-time}'[Maximum time allowed for transfer]':'<seconds>' \ {-o,--output}'[Write to file instead of stdout]':'<file>':_files \ --cert-type'[Certificate type (DER/PEM/ENG/PROV/P12)]':'<type>' \ --happy-eyeballs-timeout-ms'[Time for IPv6 before IPv4]':'<ms>' \ --proxy1.0'[Use HTTP/1.0 proxy on given port]':'<host[\:port]>' \ --ssl-revoke-best-effort'[Ignore missing cert CRL dist points]' \ {-O,--remote-name}'[Write output to file named as remote file]' \ {-R,--remote-time}'[Set remote file'\''s time on local output]' \ {-U,--proxy-user}'[Proxy user and password]':'<user\:password>' \ {-Y,--speed-limit}'[Stop transfers slower than this]':'<speed>' \ {-z,--time-cond}'[Transfer based on a time condition]':'<time>' \ --doh-cert-status'[Verify DoH server cert status OCSP-staple]' \ --ftp-ssl-control'[Require TLS for login, clear for transfer]' \ --hostpubmd5'[Acceptable MD5 hash of host public key]':'<md5>' \ --hsts'[Enable HSTS with this cache file]':'<filename>':_files \ --http2-prior-knowledge'[Use HTTP/2 without HTTP/1.1 Upgrade]' \ --ip-tos'[Set IP Type of Service or Traffic Class]':'<string>' \ --local-port'[Use a local port number within RANGE]':'<range>' \ --pinnedpubkey'[Public key to verify peer against]':'<hashes>' \ --proxy-ca-native'[Load CA certs from the OS to verify proxy]' \ --proxy-tlspassword'[TLS password for HTTPS proxy]':'<string>' \ --socks4'[SOCKS4 proxy on given host + port]':'<host[\:port]>' \ --socks5'[SOCKS5 proxy on given host + port]':'<host[\:port]>' \ {-A,--user-agent}'[Send User-Agent <name> to server]':'<name>' \ {-r,--range}'[Retrieve only the bytes within RANGE]':'<range>' \ --egd-file'[EGD socket path for random data]':'<file>':_files \ --proxy-tls13-ciphers'[TLS 1.3 proxy cipher suites]':'<list>' \ --retry-max-time'[Retry only within this period]':'<seconds>' \ --skip-existing'[Skip download if local file already exists]' \ {-J,--remote-header-name}'[Use the header-provided filename]' \ {-w,--write-out}'[Output FORMAT after completion]':'<format>' \ {-x,--proxy}'[Use this proxy]':'<[protocol\://]host[\:port]>' \ --proxy-key-type'[Private key file type for proxy]':'<type>' \ --retry'[Retry request if transient problems occur]':'<num>' \ --ssl-no-revoke'[Disable cert revocation checks (Schannel)]' \ --create-dirs'[Create necessary local directory hierarchy]' \ --haproxy-protocol'[Send HAProxy PROXY protocol v1 header]' \ --max-redirs'[Maximum number of redirects allowed]':'<num>' \ --proxy-crlfile'[Set a CRL list for proxy]':'<file>':_files \ --socks5-basic'[Username/password auth for SOCKS5 proxies]' \ --socks5-gssapi-nec'[Compatibility with NEC SOCKS5 server]' \ --ssl-allow-beast'[Allow security flaw to improve interop]' \ --create-file-mode'[File mode for created files]':'<mode>' \ --ftp-create-dirs'[Create the remote dirs if not present]' \ --key-type'[Private key file type (DER/PEM/ENG)]':'<type>' \ --netrc-file'[Specify FILE for netrc]':'<filename>':_files \ --proxy-service-name'[SPNEGO proxy service name]':'<name>' \ --trace-ids'[Transfer + connection ids in verbose output]' \ {-N,--no-buffer}'[Disable buffering of the output stream]' \ {-n,--netrc}'[Must read .netrc for username and password]' \ {-u,--user}'[Server user and password]':'<user\:password>' \ --fail-with-body'[Fail on HTTP errors but save the body]' \ --haproxy-clientip'[Set address in HAProxy PROXY]':'<ip>' \ --max-filesize'[Maximum file size to download]':'<bytes>' \ --negotiate'[Use HTTP Negotiate (SPNEGO) authentication]' \ --no-clobber'[Do not overwrite files that already exist]' \ --no-keepalive'[Disable TCP keepalive on the connection]' \ --remote-name-all'[Use the remote filename for all URLs]' \ --socks5-gssapi'[Enable GSS-API auth for SOCKS5 proxies]' \ --tls-earlydata'[Allow use of TLSv1.3 early data (0RTT)]' \ {-#,--progress-bar}'[Display transfer progress as a bar]' \ --crlfile'[Certificate Revocation list]':'<file>':_files \ --data-raw'[HTTP POST data, '\''@'\'' allowed]':'<data>' \ --krb'[Enable Kerberos with security <level>]':'<level>' \ --proxy-tlsuser'[TLS username for HTTPS proxy]':'<name>' \ --styled-output'[Enable styled output for HTTP headers]' \ --tls13-ciphers'[TLS 1.3 cipher suites to use]':'<list>' \ {-C,--continue-at}'[Resumed transfer offset]':'<offset>' \ {-K,--config}'[Read config from a file]':'<file>':_files \ {-P,--ftp-port}'[Send PORT instead of PASV]':'<address>' \ --ciphers'[TLS 1.2 (1.1, 1.0) ciphers to use]':'<list>' \ --data-urlencode'[HTTP POST data URL encoded]':'<data>' \ --delegation'[GSS-API delegation permission]':'<LEVEL>' \ --doh-insecure'[Allow insecure DoH server connections]' \ --mail-rcpt-allowfails'[Allow RCPT TO command to fail]' \ --proxy-anyauth'[Pick any proxy authentication method]' \ --trace-time'[Add time stamps to trace/verbose output]' \ {-g,--globoff}'[Disable URL globbing with {} and \[\]]' \ {-p,--proxytunnel}'[HTTP proxy tunnel (using CONNECT)]' \ --cert-status'[Verify server cert status OCSP-staple]' \ --disallow-username-in-url'[Disallow username in URL]' \ --dns-servers'[DNS server addrs to use]':'<addresses>' \ --limit-rate'[Limit transfer speed to RATE]':'<speed>' \ --path-as-is'[Do not squash .. sequences in URL path]' \ --post301'[Do not switch to GET after a 301 redirect]' \ --post302'[Do not switch to GET after a 302 redirect]' \ --post303'[Do not switch to GET after a 303 redirect]' \ --proxy-basic'[Use Basic authentication on the proxy]' \ --proxy-insecure'[Skip HTTPS proxy cert verification]' \ --retry-delay'[Wait time between retries]':'<seconds>' \ --trace'[Write a debug trace to FILE]':'<file>':_files \ {-G,--get}'[Put the post data in the URL and use GET]' \ {-f,--fail}'[Fail fast with no output on HTTP errors]' \ {-i,--show-headers}'[Show response headers in output]' \ --doh-url'[Resolve hostnames over DoH]':'<URL>':_urls \ --etag-compare'[Load ETag from file]':'<file>':_files \ --ftp-ssl-ccc-mode'[Set CCC mode]':'<active/passive>' \ --metalink'[Process given URLs as metalink XML file]' \ --no-progress-meter'[Do not show the progress meter]' \ --retry-all-errors'[Retry all errors (with --retry)]' \ --tr-encoding'[Request compressed transfer encoding]' \ --xattr'[Store metadata in extended file attributes]' \ {-a,--append}'[Append to target file when uploading]' \ --parallel-immediate'[Do not wait for multiplexing]' \ --sasl-ir'[Initial response in SASL authentication]' \ --stderr'[Where to redirect stderr]':'<file>':_files \ --tls-max'[Maximum allowed TLS version]':'<VERSION>' \ {-S,--show-error}'[Show error even when -s is used]' \ {-k,--insecure}'[Allow insecure server connections]' \ --form-escape'[Escape form fields using backslash]' \ --form-string'[Specify multipart MIME data]':'<name=string>' \ --login-options'[Server login options]':'<options>' \ --pass'[Passphrase for the private key]':'<phrase>' \ --tftp-blksize'[Set TFTP BLKSIZE option]':'<value>' \ {-v,--verbose}'[Make the operation more talkative]' \ --ftp-skip-pasv-ip'[Skip the IP address for PASV]' \ --ntlm-wb'[HTTP NTLM authentication with winbind]' \ --proxy-key'[Private key for HTTPS proxy]':'<key>' \ --proxy-ntlm'[NTLM authentication with the proxy]' \ --mail-from'[Mail from this address]':'<address>' \ --oauth2-bearer'[OAuth 2 Bearer Token]':'<token>' \ --proto'[Enable/disable PROTOCOLS]':'<protocols>' \ --remove-on-error'[Remove output file on errors]' \ --tftp-no-options'[Do not send any TFTP options]' \ --tlsauthtype'[TLS authentication type]':'<type>' \ --vlan-priority'[Set VLAN priority]':'<priority>' \ {-:,--next}'[Make next URL use separate options]' \ {-F,--form}'[Specify multipart MIME data]':'<name=content>' \ --ipfs-gateway'[Gateway for IPFS]':'<URL>':_urls \ --no-sessionid'[Disable SSL session-ID reusing]' \ --upload-flags'[IMAP upload behavior]':'<flags>' \ {-Z,--parallel}'[Perform transfers in parallel]' \ {-h,--help}'[Get help for commands]':'<subject>' \ --data-binary'[HTTP POST binary data]':'<data>' \ --mail-rcpt'[Mail to this address]':'<address>' \ {-t,--telnet-option}'[Set telnet option]':'<opt=val>' \ --ftp-ssl-ccc'[Send CCC after authenticating]' \ --service-name'[SPNEGO service name]':'<name>' \ {-4,--ipv4}'[Resolve names to IPv4 addresses]' \ {-6,--ipv6}'[Resolve names to IPv6 addresses]' \ {-V,--version}'[Show version number and quit]' \ --data-ascii'[HTTP POST ASCII data]':'<data>' \ --ftp-account'[Account data string]':'<data>' \ --interface'[Use network interface]':'<name>' \ --disable-eprt'[Inhibit using EPRT or LPRT]' \ --fail-early'[Fail on first transfer error]' \ --ftp-pasv'[Send PASV/EPSV instead of PORT]' \ --netrc-optional'[Use either .netrc or URL]' \ --proxy-digest'[Digest auth with the proxy]' \ --proxy-http2'[Use HTTP/2 with HTTPS proxy]' \ --url-query'[Add a URL query part]':'<data>' \ {-e,--referer}'[Referrer URL]':'<URL>':_urls \ --anyauth'[Pick any authentication method]' \ --compressed'[Request compressed response]' \ --no-alpn'[Disable the ALPN TLS extension]' \ --pubkey'[SSH Public key filename]':'<key>' \ {-B,--use-ascii}'[Use ASCII/text transfer]' \ --compressed-ssh'[Enable SSH compression]' \ --raw'[Do HTTP raw; no transfer decoding]' \ --engine'[Crypto engine to use]':'<name>' \ --no-npn'[Disable the NPN TLS extension]' \ --url'[URL(s) to work with]':'<url/file>' \ --ca-native'[Load CA certs from the OS]' \ --tlspassword'[TLS password]':'<string>' \ {-M,--manual}'[Display the full manual]' \ --false-start'[Enable TLS False Start]' \ --crlf'[Convert LF to CRLF in upload]' \ --digest'[HTTP Digest Authentication]' \ --proxy-tlsv1'[TLSv1 for HTTPS proxy]' \ {-I,--head}'[Show document info only]' \ {-d,--data}'[HTTP POST data]':'<data>' \ --http0.9'[Allow HTTP/0.9 responses]' \ --key'[Private key filename]':'<key>' \ --basic'[HTTP Basic Authentication]' \ --disable-epsv'[Inhibit using EPSV]' \ --variable'[Set variable]':'<[%]name=text/@file>' \ --ftp-pret'[Send PRET before PASV]' \ --tcp-fastopen'[Use TCP Fast Open]' \ {-L,--location}'[Follow redirects]' \ --ntlm'[HTTP NTLM authentication]' \ --tlsuser'[TLS username]':'<name>' \ {-1,--tlsv1}'[TLSv1.0 or greater]' \ {-l,--list-only}'[List only mode]' \ --ech'[Configure ECH]':'<config>' \ --json'[HTTP POST JSON]':'<data>' \ {-q,--disable}'[Disable .curlrc]' \ --tcp-nodelay'[Set TCP_NODELAY]' \ --http3-only'[Use HTTP/3 only]' \ --mptcp'[Enable Multipath TCP]' \ --tlsv1.0'[TLSv1.0 or greater]' \ --tlsv1.1'[TLSv1.1 or greater]' \ --tlsv1.2'[TLSv1.2 or greater]' \ --tlsv1.3'[TLSv1.3 or greater]' \ {-0,--http1.0}'[Use HTTP/1.0]' \ --ssl-reqd'[Require SSL/TLS]' \ {-s,--silent}'[Silent mode]' \ --http1.1'[Use HTTP/1.1]' \ --ssl'[Try enabling TLS]' \ --http2'[Use HTTP/2]' \ --http3'[Use HTTP/3]' \ {-2,--sslv2}'[SSLv2]' \ {-3,--sslv3}'[SSLv3]' \ '*:URL:_urls' && rc=0 return rc