commit 7409f27
Michael Forney
·
2026-05-15 21:40:05 +0000 UTC
parent 331003e
curl: Simplify x509_minimal wrapper and track curl.1 from git repo
5 files changed,
+3,
-6822
+0,
-1
1@@ -1 +0,0 @@
2-/curl.1.gz
+0,
-6818
1@@ -1,6818 +0,0 @@
2-.\" **************************************************************************
3-.\" * _ _ ____ _
4-.\" * Project ___| | | | _ \| |
5-.\" * / __| | | | |_) | |
6-.\" * | (__| |_| | _ <| |___
7-.\" * \___|\___/|_| \_\_____|
8-.\" *
9-.\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
10-.\" *
11-.\" * This software is licensed as described in the file COPYING, which
12-.\" * you should have received as part of this distribution. The terms
13-.\" * are also available at https://curl.se/docs/copyright.html.
14-.\" *
15-.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
16-.\" * copies of the Software, and permit persons to whom the Software is
17-.\" * furnished to do so, under the terms of the COPYING file.
18-.\" *
19-.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20-.\" * KIND, either express or implied.
21-.\" *
22-.\" * SPDX-License-Identifier: curl
23-.\" *
24-.\" **************************************************************************
25-.\"
26-.\" DO NOT EDIT. Generated by the curl project managen manpage generator.
27-.\"
28-.TH curl 1 "2025-10-07" "curl 8.14.1" "curl Manual"
29-.SH NAME
30-curl \- transfer a URL
31-.SH SYNOPSIS
32-\fBcurl [options / URLs]\fP
33-.SH DESCRIPTION
34-\fBcurl\fP is a tool for transferring data from or to a server using URLs. It
35-supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS,
36-IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP,
37-SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS.
38-
39-curl is powered by libcurl for all transfer\-related features. See
40-\fIlibcurl(3)\fP for details.
41-.SH URL
42-The URL syntax is protocol\-dependent. You find a detailed description in
43-RFC 3986.
44-
45-If you provide a URL without a leading \fBprotocol://\fP scheme, curl guesses
46-what protocol you want. It then defaults to HTTP but assumes others based on
47-often\-used hostname prefixes. For example, for hostnames starting with "ftp."
48-curl assumes you want FTP.
49-
50-You can specify any amount of URLs on the command line. They are fetched in a
51-sequential manner in the specified order unless you use \fI\-Z, \-\-parallel\fP. You can
52-specify command line options and URLs mixed and in any order on the command
53-line.
54-
55-curl attempts to reuse connections when doing multiple transfers, so that
56-getting many files from the same server do not use multiple connects and setup
57-handshakes. This improves speed. Connection reuse can only be done for URLs
58-specified for a single command line invocation and cannot be performed between
59-separate curl runs.
60-
61-Provide an IPv6 zone id in the URL with an escaped percentage sign. Like in
62-
63-.nf
64-\&"http://[fe80::3%25eth0]/"
65-.fi
66-
67-Everything provided on the command line that is not a command line option or
68-its argument, curl assumes is a URL and treats it as such.
69-.SH GLOBBING
70-You can specify multiple URLs or parts of URLs by writing lists within braces
71-or ranges within brackets. We call this "globbing".
72-
73-Provide a list with three different names like this:
74-
75-.nf
76-\&"http://site.{one,two,three}.com"
77-.fi
78-
79-Do sequences of alphanumeric series by using [] as in:
80-
81-.nf
82-\&"ftp://ftp.example.com/file[1\-100].txt"
83-.fi
84-
85-With leading zeroes:
86-
87-.nf
88-\&"ftp://ftp.example.com/file[001\-100].txt"
89-.fi
90-
91-With letters through the alphabet:
92-
93-.nf
94-\&"ftp://ftp.example.com/file[a\-z].txt"
95-.fi
96-
97-Nested sequences are not supported, but you can use several ones next to each
98-other:
99-
100-.nf
101-\&"http://example.com/archive[1996\-1999]/vol[1\-4]/part{a,b,c}.html"
102-.fi
103-
104-You can specify a step counter for the ranges to get every Nth number or
105-letter:
106-
107-.nf
108-\&"http://example.com/file[1\-100:10].txt"
109-
110-\&"http://example.com/file[a\-z:2].txt"
111-.fi
112-
113-When using [] or {} sequences when invoked from a command line prompt, you
114-probably have to put the full URL within double quotes to avoid the shell from
115-interfering with it. This also goes for other characters treated special, like
116-for example \(aq&\(aq, \(aq?\(aq and \(aq*\(aq.
117-
118-Switch off globbing with \fI\-g, \-\-globoff\fP.
119-.SH VARIABLES
120-curl supports command line variables (added in 8.3.0). Set variables with
121-\fI\-\-variable\fP name=content or \fI\-\-variable\fP name@file (where "file" can be stdin if
122-set to a single dash (\-)).
123-
124-Variable contents can be expanded in option parameters using "{{name}}" if the
125-option name is prefixed with "\fI\-\-expand\-\fP". This gets the contents of the
126-variable "name" inserted, or a blank if the name does not exist as a
127-variable. Insert "{{" verbatim in the string by prefixing it with a backslash,
128-like "\\{{".
129-
130-You access and expand environment variables by first importing them. You
131-select to either require the environment variable to be set or you can provide
132-a default value in case it is not already set. Plain "\fI\-\-variable\fP %name"
133-imports the variable called "name" but exits with an error if that environment
134-variable is not already set. To provide a default value if it is not set, use
135-\&"\fI\-\-variable\fP %name=content" or "\fI\-\-variable\fP %name@content".
136-
137-Example. Get the USER environment variable into the URL, fail if USER is not
138-set:
139-
140-.nf
141--\-variable \(aq%USER\(aq
142--\-expand\-url = "https://example.com/api/{{USER}}/method"
143-.fi
144-
145-When expanding variables, curl supports a set of functions that can make the
146-variable contents more convenient to use. It can trim leading and trailing
147-white space with "trim", it can output the contents as a JSON quoted string
148-with "json", URL encode the string with "url", base64 encode it with "b64" and
149-base64 decode it with "64dec". To apply functions to a variable expansion, add
150-them colon separated to the right side of the variable. Variable content
151-holding null bytes that are not encoded when expanded causes an error.
152-
153-Example: get the contents of a file called $HOME/.secret into a variable
154-called "fix". Make sure that the content is trimmed and percent\-encoded when
155-sent as POST data:
156-
157-.nf
158--\-variable %HOME
159--\-expand\-variable fix@{{HOME}}/.secret
160--\-expand\-data "{{fix:trim:url}}"
161-https://example.com/
162-.fi
163-
164-Command line variables and expansions were added in 8.3.0.
165-.SH OUTPUT
166-If not told otherwise, curl writes the received data to stdout. It can be
167-instructed to instead save that data into a local file, using the \fI\-o, \-\-output\fP or
168-\fI\-O, \-\-remote\-name\fP options. If curl is given multiple URLs to transfer on the
169-command line, it similarly needs multiple options for where to save them.
170-
171-curl does not parse or otherwise "understand" the content it gets or writes as
172-output. It does no encoding or decoding, unless explicitly asked to with
173-dedicated command line options.
174-.SH PROTOCOLS
175-curl supports numerous protocols, or put in URL terms: schemes. Your
176-particular build may not support them all.
177-.IP DICT
178-Lets you lookup words using online dictionaries.
179-.IP FILE
180-Read or write local files. curl does not support accessing file:// URL
181-remotely, but when running on Microsoft Windows using the native UNC approach
182-works.
183-.IP FTP(S)
184-curl supports the File Transfer Protocol with a lot of tweaks and levers. With
185-or without using TLS.
186-.IP GOPHER(S)
187-Retrieve files.
188-.IP HTTP(S)
189-curl supports HTTP with numerous options and variations. It can speak HTTP
190-version 0.9, 1.0, 1.1, 2 and 3 depending on build options and the correct
191-command line options.
192-.IP IMAP(S)
193-Using the mail reading protocol, curl can download emails for you. With or
194-without using TLS.
195-.IP LDAP(S)
196-curl can do directory lookups for you, with or without TLS.
197-.IP MQTT
198-curl supports MQTT version 3. Downloading over MQTT equals subscribing to a
199-topic while uploading/posting equals publishing on a topic. MQTT over TLS is not
200-supported (yet).
201-.IP POP3(S)
202-Downloading from a pop3 server means getting an email. With or without using
203-TLS.
204-.IP RTMP(S)
205-The \fBRealtime Messaging Protocol\fP is primarily used to serve streaming media
206-and curl can download it.
207-.IP RTSP
208-curl supports RTSP 1.0 downloads.
209-.IP SCP
210-curl supports SSH version 2 scp transfers.
211-.IP SFTP
212-curl supports SFTP (draft 5) done over SSH version 2.
213-.IP SMB(S)
214-curl supports SMB version 1 for upload and download.
215-.IP SMTP(S)
216-Uploading contents to an SMTP server means sending an email. With or without
217-TLS.
218-.IP TELNET
219-Fetching a telnet URL starts an interactive session where it sends what it
220-reads on stdin and outputs what the server sends it.
221-.IP TFTP
222-curl can do TFTP downloads and uploads.
223-.IP WS(S)
224-WebSocket done over HTTP/1. WSS implies that it works over HTTPS.
225-.SH PROGRESS METER
226-curl normally displays a progress meter during operations, indicating the
227-amount of transferred data, transfer speeds and estimated time left, etc. The
228-progress meter displays the transfer rate in bytes per second. The suffixes
229-(k, M, G, T, P) are 1024 based. For example 1k is 1024 bytes. 1M is 1048576
230-bytes.
231-
232-curl displays this data to the terminal by default, so if you invoke curl to
233-do an operation and it is about to write data to the terminal, it \fIdisables\fP
234-the progress meter as otherwise it would mess up the output mixing progress
235-meter and response data.
236-
237-If you want a progress meter for HTTP POST or PUT requests, you need to
238-redirect the response output to a file, using shell redirect (>), \fI\-o, \-\-output\fP
239-or similar.
240-
241-This does not apply to FTP upload as that operation does not spit out any
242-response data to the terminal.
243-
244-If you prefer a progress bar instead of the regular meter, \fI\-#, \-\-progress\-bar\fP is
245-your friend. You can also disable the progress meter completely with the
246-\fI\-s, \-\-silent\fP option.
247-.SH VERSION
248-This man page describes curl 8.14.1. If you use a later version, chances
249-are this man page does not fully document it. If you use an earlier version,
250-this document tries to include version information about which specific
251-version that introduced changes.
252-
253-You can always learn which the latest curl version is by running
254-
255-.nf
256-curl https://curl.se/info
257-.fi
258-
259-The online version of this man page is always showing the latest incarnation:
260-https://curl.se/docs/manpage.html
261-.SH OPTIONS
262-Options start with one or two dashes. Many of the options require an
263-additional value next to them. If provided text does not start with a dash, it
264-is presumed to be and treated as a URL.
265-
266-The short "single\-dash" form of the options, \-d for example, may be used with
267-or without a space between it and its value, although a space is a recommended
268-separator. The long double\-dash form, \fI\-d, \-\-data\fP for example, requires a space
269-between it and its value.
270-
271-Short version options that do not need any additional values can be used
272-immediately next to each other, like for example you can specify all the
273-options \fI\-O\fP, \fI\-L\fP and \fI\-v\fP at once as \fI\-OLv\fP.
274-
275-In general, all boolean options are enabled with \--\fBoption\fP and yet again
276-disabled with \--\fBno\-\fPoption. That is, you use the same option name but
277-prefix it with "no\-". However, in this list we mostly only list and show the
278--\-\fBoption\fP version of them.
279-
280-When \fI\-:, \-\-next\fP is used, it resets the parser state and you start again with a
281-clean option state, except for the options that are global. Global options
282-retain their values and meaning even after \fI\-:, \-\-next\fP.
283-
284-The first argument that is exactly two dashes ("\--"), marks the end of
285-options; any argument after the end of options is interpreted as a URL
286-argument even if it starts with a dash.
287-
288-The following options are global: \fI\-\-fail\-early\fP, \fI\-\-libcurl\fP, \fI\-\-parallel\-immediate\fP, \fI\-\-parallel\-max\fP, \fI\-Z, \-\-parallel\fP, \fI\-#, \-\-progress\-bar\fP, \fI\-\-rate\fP, \fI\-S, \-\-show\-error\fP, \fI\-\-stderr\fP, \fI\-\-styled\-output\fP, \fI\-\-trace\-ascii\fP, \fI\-\-trace\-config\fP, \fI\-\-trace\-ids\fP, \fI\-\-trace\-time\fP, \fI\-\-trace\fP and \fI\-v, \-\-verbose\fP.
289-.SH ALL OPTIONS
290-.IP "\-\-abstract\-unix\-socket <path>"
291-(HTTP) Connect through an abstract Unix domain socket, instead of using the network.
292-Note: netstat shows the path of an abstract socket prefixed with "@", however
293-the <path> argument should not have this leading character.
294-
295-If --abstract-unix-socket is provided several times, the last set value is used.
296-
297-Example:
298-.nf
299-curl --abstract-unix-socket socketpath https://example.com
300-.fi
301-
302-See also \fI\-\-unix\-socket\fP.
303-.IP "\-\-alt\-svc <filename>"
304-(HTTPS) Enable the alt\-svc parser. If the filename points to an existing alt\-svc cache
305-file, that gets used. After a completed transfer, the cache is saved to the
306-filename again if it has been modified.
307-
308-Specify a "" filename (zero length) to avoid loading/saving and make curl just
309-handle the cache in memory.
310-
311-If this option is used several times, curl loads contents from all the
312-files but the last one is used for saving.
313-
314---alt-svc can be used several times in a command line
315-
316-Example:
317-.nf
318-curl --alt-svc svc.txt https://example.com
319-.fi
320-
321-Added in 7.64.1. See also \fI\-\-resolve\fP and \fI\-\-connect\-to\fP.
322-.IP "\-\-anyauth"
323-(HTTP) Figure out authentication method automatically, and use the most secure one
324-the remote site claims to support. This is done by first doing a request and
325-checking the response\-headers, thus possibly inducing an extra network
326-round\-trip. This option is used instead of setting a specific authentication
327-method, which you can do with \fI\-\-basic\fP, \fI\-\-digest\fP, \fI\-\-ntlm\fP, and \fI\-\-negotiate\fP.
328-
329-Using \fI\-\-anyauth\fP is not recommended if you do uploads from stdin, since it may
330-require data to be sent twice and then the client must be able to rewind. If
331-the need should arise when uploading from stdin, the upload operation fails.
332-
333-Used together with \fI\-u, \-\-user\fP.
334-
335-Providing --anyauth multiple times has no extra effect.
336-
337-Example:
338-.nf
339-curl --anyauth --user me:pwd https://example.com
340-.fi
341-
342-See also \fI\-\-proxy\-anyauth\fP, \fI\-\-basic\fP and \fI\-\-digest\fP.
343-.IP "\-a, \-\-append"
344-(FTP SFTP) When used in an upload, this option makes curl append to the target file
345-instead of overwriting it. If the remote file does not exist, it is
346-created. Note that this flag is ignored by some SFTP servers (including
347-OpenSSH).
348-
349-Providing --append multiple times has no extra effect.
350-Disable it again with \-\-no-append.
351-
352-Example:
353-.nf
354-curl --upload-file local --append ftp://example.com/
355-.fi
356-
357-See also \fI-r, \-\-range\fP and \fI-C, \-\-continue\-at\fP.
358-.IP "\-\-aws\-sigv4 <provider1[:prvdr2[:reg[:srv]]]>"
359-(HTTP) Use AWS V4 signature authentication in the transfer.
360-
361-The provider argument is a string that is used by the algorithm when creating
362-outgoing authentication headers.
363-
364-The region argument is a string that points to a geographic area of
365-a resources collection (region\-code) when the region name is omitted from
366-the endpoint.
367-
368-The service argument is a string that points to a function provided by a cloud
369-(service\-code) when the service name is omitted from the endpoint.
370-
371-If --aws-sigv4 is provided several times, the last set value is used.
372-
373-Example:
374-.nf
375-curl --aws-sigv4 "aws:amz:us-east-2:es" --user "key:secret" https://example.com
376-.fi
377-
378-Added in 7.75.0. See also \fI\-\-basic\fP and \fI-u, \-\-user\fP.
379-.IP "\-\-basic"
380-(HTTP) Use HTTP Basic authentication with the remote host. This method is the default
381-and this option is usually pointless, unless you use it to override a
382-previously set option that sets a different authentication method (such as
383-\fI\-\-ntlm\fP, \fI\-\-digest\fP, or \fI\-\-negotiate\fP).
384-
385-Used together with \fI\-u, \-\-user\fP.
386-
387-Providing --basic multiple times has no extra effect.
388-
389-Example:
390-.nf
391-curl -u name:password --basic https://example.com
392-.fi
393-
394-See also \fI\-\-proxy\-basic\fP.
395-.IP "\-\-ca\-native"
396-(TLS) Use the operating system\(aqs native CA store for certificate verification.
397-
398-This option is independent of other CA certificate locations set at run time or
399-build time. Those locations are searched in addition to the native CA store.
400-
401-This option works with OpenSSL and its forks (LibreSSL, BoringSSL, etc) on
402-Windows. (Added in 7.71.0)
403-
404-This option works with wolfSSL on Windows, Linux (Debian, Ubuntu, Gentoo,
405-Fedora, RHEL), macOS, Android and iOS. (Added in 8.3.0)
406-
407-This option works with GnuTLS. (Added in 8.5.0)
408-
409-This option works with rustls on Windows, macOS, Android and iOS. On Linux it
410-is equivalent to using the Mozilla CA certificate bundle. When used with rustls
411-_only_ the native CA store is consulted, not other locations set at run time or
412-build time. (Added in 8.13.0)
413-
414-This option currently has no effect for Schannel or Secure Transport. Those are
415-native TLS libraries from Microsoft and Apple, respectively, that by default
416-use the native CA store for verification unless overridden by a CA certificate
417-location setting.
418-
419-Providing --ca-native multiple times has no extra effect.
420-Disable it again with \-\-no-ca-native.
421-
422-Example:
423-.nf
424-curl --ca-native https://example.com
425-.fi
426-
427-Added in 8.2.0. See also \fI\-\-cacert\fP, \fI\-\-capath\fP, \fI\-\-dump\-ca\-embed\fP, \fI-k, \-\-insecure\fP and \fI\-\-proxy\-ca\-native\fP.
428-.IP "\-\-cacert <file>"
429-(TLS) Use the specified certificate file to verify the peer. The file may contain
430-multiple CA certificates. The certificate(s) must be in PEM format. Normally
431-curl is built to use a default file for this, so this option is typically used
432-to alter that default file.
433-
434-curl recognizes the environment variable named \(aqCURL_CA_BUNDLE\(aq if it is set
435-and the TLS backend is not Schannel, and uses the given path as a path to a CA
436-cert bundle. This option overrides that variable.
437-
438-(Windows) curl automatically looks for a CA certs file named
439-\(aqcurl\-ca\-bundle.crt\(aq, either in the same directory as curl.exe, or in the
440-Current Working Directory, or in any folder along your PATH.
441-
442-curl 8.11.0 added a build\-time option to disable this search behavior, and
443-another option to restrict search to the application\(aqs directory.
444-
445-(iOS and macOS only) If curl is built against Secure Transport, then this
446-option is supported for backward compatibility with other SSL engines, but it
447-should not be set. If the option is not set, then curl uses the certificates
448-in the system and user Keychain to verify the peer, which is the preferred
449-method of verifying the peer\(aqs certificate chain.
450-
451-(Schannel only) This option is supported for Schannel in Windows 7 or later
452-(added in 7.60.0). This option is supported for backward compatibility with
453-other SSL engines; instead it is recommended to use Windows\(aq store of root
454-certificates (the default for Schannel).
455-
456-If --cacert is provided several times, the last set value is used.
457-
458-Example:
459-.nf
460-curl --cacert CA-file.txt https://example.com
461-.fi
462-
463-See also \fI\-\-capath\fP, \fI\-\-dump\-ca\-embed\fP and \fI-k, \-\-insecure\fP.
464-.IP "\-\-capath <dir>"
465-(TLS) Use the specified certificate directory to verify the peer. Multiple paths can
466-be provided by separating them with colon (":") (e.g. "path1:path2:path3"). The
467-certificates must be in PEM format, and if curl is built against OpenSSL, the
468-directory must have been processed using the c_rehash utility supplied with
469-OpenSSL. Using \fI\-\-capath\fP can allow OpenSSL\-powered curl to make SSL\-connections
470-much more efficiently than using \fI\-\-cacert\fP if the \fI\-\-cacert\fP file contains many
471-CA certificates.
472-
473-If this option is set, the default capath value is ignored.
474-
475-If --capath is provided several times, the last set value is used.
476-
477-Example:
478-.nf
479-curl --capath /local/directory https://example.com
480-.fi
481-
482-See also \fI\-\-cacert\fP, \fI\-\-dump\-ca\-embed\fP and \fI-k, \-\-insecure\fP.
483-.IP "\-E, \-\-cert <certificate[:password]>"
484-(TLS) Use the specified client certificate file when getting a file with HTTPS, FTPS
485-or another SSL\-based protocol. The certificate must be in PKCS#12 format if
486-using Secure Transport, or PEM format if using any other engine. If the
487-optional password is not specified, it is queried for on the terminal. Note
488-that this option assumes a certificate file that is the private key and the
489-client certificate concatenated. See \fI\-E, \-\-cert\fP and \fI\-\-key\fP to specify them
490-independently.
491-
492-In the <certificate> portion of the argument, you must escape the character
493-\&":" as "\\:" so that it is not recognized as the password delimiter. Similarly,
494-you must escape the double quote character as \\" so that it is not recognized
495-as an escape character.
496-
497-If curl is built against OpenSSL, and the engine pkcs11 or pkcs11
498-provider is available, then a PKCS#11 URI (RFC 7512) can be used to specify a
499-certificate located in a PKCS#11 device. A string beginning with "pkcs11:" is
500-interpreted as a PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP
501-option is set as "pkcs11" if none was provided and the \fI\-\-cert\-type\fP option is
502-set as "ENG" or "PROV" if none was provided (depending on OpenSSL version).
503-
504-If curl is built against GnuTLS, a PKCS#11 URI can be used to specify
505-a certificate located in a PKCS#11 device. A string beginning with "pkcs11:"
506-is interpreted as a PKCS#11 URI.
507-
508-(iOS and macOS only) If curl is built against Secure Transport, then the
509-certificate string can either be the name of a certificate/private key in the
510-system or user keychain, or the path to a PKCS#12\-encoded certificate and
511-private key. If you want to use a file from the current directory, please
512-precede it with "./" prefix, in order to avoid confusion with a nickname.
513-
514-(Schannel only) Client certificates must be specified by a path expression to
515-a certificate store. (Loading \fIPFX\fP is not supported; you can import it to a
516-store first). You can use "<store location>\\<store name>\\<thumbprint>"
517-to refer to a certificate in the system certificates store, for example,
518-\fI"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a"\fP. Thumbprint is
519-usually a SHA\-1 hex string which you can see in certificate details. Following
520-store locations are supported: \fICurrentUser\fP, \fILocalMachine\fP,
521-\fICurrentService\fP, \fIServices\fP, \fICurrentUserGroupPolicy\fP,
522-\fILocalMachineGroupPolicy\fP and \fILocalMachineEnterprise\fP.
523-
524-If --cert is provided several times, the last set value is used.
525-
526-Example:
527-.nf
528-curl --cert certfile --key keyfile https://example.com
529-.fi
530-
531-See also \fI\-\-cert\-type\fP, \fI\-\-key\fP and \fI\-\-key\-type\fP.
532-.IP "\-\-cert\-status"
533-(TLS) Verify the status of the server certificate by using the Certificate Status
534-Request (aka. OCSP stapling) TLS extension.
535-
536-If this option is enabled and the server sends an invalid (e.g. expired)
537-response, if the response suggests that the server certificate has been
538-revoked, or no response at all is received, the verification fails.
539-
540-This support is currently only implemented in the OpenSSL and GnuTLS backends.
541-
542-Providing --cert-status multiple times has no extra effect.
543-Disable it again with \-\-no-cert-status.
544-
545-Example:
546-.nf
547-curl --cert-status https://example.com
548-.fi
549-
550-See also \fI\-\-pinnedpubkey\fP.
551-.IP "\-\-cert\-type <type>"
552-(TLS) Set type of the provided client certificate. PEM, DER, ENG, PROV and P12 are
553-recognized types.
554-
555-The default type depends on the TLS backend and is usually PEM, however for
556-Secure Transport and Schannel it is P12. If \fI\-E, \-\-cert\fP is a pkcs11: URI then ENG
557-or PROV is the default type (depending on OpenSSL version).
558-
559-If --cert-type is provided several times, the last set value is used.
560-
561-Example:
562-.nf
563-curl --cert-type PEM --cert file https://example.com
564-.fi
565-
566-See also \fI-E, \-\-cert\fP, \fI\-\-key\fP and \fI\-\-key\-type\fP.
567-.IP "\-\-ciphers <list>"
568-(TLS) Specify which cipher suites to use in the connection if it negotiates TLS 1.2
569-(1.1, 1.0). The list of ciphers suites must specify valid ciphers. Read up on
570-cipher suite details on this URL:
571-
572-https://curl.se/docs/ssl\-ciphers.html
573-
574-If --ciphers is provided several times, the last set value is used.
575-
576-Example:
577-.nf
578-curl --ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 https://example.com
579-.fi
580-
581-See also \fI\-\-tls13\-ciphers\fP, \fI\-\-proxy\-ciphers\fP and \fI\-\-curves\fP.
582-.IP "\-\-compressed"
583-(HTTP) Request a compressed response using one of the algorithms curl supports, and
584-automatically decompress the content.
585-
586-Response headers are not modified when saved, so if they are "interpreted"
587-separately again at a later point they might appear to be saying that the
588-content is (still) compressed; while in fact it has already been decompressed.
589-
590-If this option is used and the server sends an unsupported encoding, curl
591-reports an error. This is a request, not an order; the server may or may not
592-deliver data compressed.
593-
594-Providing --compressed multiple times has no extra effect.
595-Disable it again with \-\-no-compressed.
596-
597-Example:
598-.nf
599-curl --compressed https://example.com
600-.fi
601-
602-See also \fI\-\-compressed\-ssh\fP.
603-.IP "\-\-compressed\-ssh"
604-(SCP SFTP) Enable SSH compression. This is a request, not an order; the server may or may
605-not do it.
606-
607-Providing --compressed-ssh multiple times has no extra effect.
608-Disable it again with \-\-no-compressed-ssh.
609-
610-Example:
611-.nf
612-curl --compressed-ssh sftp://example.com/
613-.fi
614-
615-See also \fI\-\-compressed\fP.
616-.IP "\-K, \-\-config <file>"
617-Specify a text file to read curl arguments from. The command line arguments
618-found in the text file are used as if they were provided on the command
619-line.
620-
621-Options and their parameters must be specified on the same line in the file,
622-separated by whitespace, colon, or the equals sign. Long option names can
623-optionally be given in the config file without the initial double dashes and
624-if so, the colon or equals characters can be used as separators. If the option
625-is specified with one or two dashes, there can be no colon or equals character
626-between the option and its parameter.
627-
628-If the parameter contains whitespace or starts with a colon (:) or equals sign
629-(=), it must be specified enclosed within double quotes ("like this"). Within
630-double quotes the following escape sequences are available: \\\\, \\", \\t, \\n, \\r
631-and \\v. A backslash preceding any other letter is ignored.
632-
633-If the first non\-blank column of a config line is a \(aq#\(aq character, that line
634-is treated as a comment.
635-
636-Only write one option per physical line in the config file. A single line is
637-required to be no more than 10 megabytes (since 8.2.0).
638-
639-Specify the filename to \fI\-K, \-\-config\fP as minus "\-" to make curl read the file from
640-stdin.
641-
642-Note that to be able to specify a URL in the config file, you need to specify
643-it using the \fI\-\-url\fP option, and not by simply writing the URL on its own
644-line. So, it could look similar to this:
645-
646-.nf
647-url = "https://curl.se/docs/"
648-
649-# \--\- Example file \--\-
650-# this is a comment
651-url = "example.com"
652-output = "curlhere.html"
653-user\-agent = "superagent/1.0"
654-
655-# and fetch another URL too
656-url = "example.com/docs/manpage.html"
657--O
658-referer = "http://nowhereatall.example.com/"
659-# \--\- End of example file \--\-
660-.fi
661-
662-When curl is invoked, it (unless \fI\-q, \-\-disable\fP is used) checks for a default
663-config file and uses it if found, even when \fI\-K, \-\-config\fP is used. The default
664-config file is checked for in the following places in this order:
665-
666-1) \fB"$CURL_HOME/.curlrc"\fP
667-
668-2) \fB"$XDG_CONFIG_HOME/curlrc"\fP (Added in 7.73.0)
669-
670-3) \fB"$HOME/.curlrc"\fP
671-
672-4) Windows: \fB"%USERPROFILE%\\.curlrc"\fP
673-
674-5) Windows: \fB"%APPDATA%\\.curlrc"\fP
675-
676-6) Windows: \fB"%USERPROFILE%\\Application Data\\.curlrc"\fP
677-
678-7) Non\-Windows: use getpwuid to find the home directory
679-
680-8) On Windows, if it finds no \fI.curlrc\fP file in the sequence described above, it
681-checks for one in the same directory the curl executable is placed.
682-
683-On Windows two filenames are checked per location: \fI.curlrc\fP and \fI_curlrc\fP,
684-preferring the former. Older versions on Windows checked for \fI_curlrc\fP only.
685-
686---config can be used several times in a command line
687-
688-Example:
689-.nf
690-curl --config file.txt https://example.com
691-.fi
692-
693-See also \fI-q, \-\-disable\fP.
694-.IP "\-\-connect\-timeout <seconds>"
695-Maximum time in seconds that you allow curl\(aqs connection to take. This only
696-limits the connection phase, so if curl connects within the given period it
697-continues \- if not it exits.
698-
699-This option accepts decimal values. The decimal value needs
700-to be provided using a dot (.) as decimal separator \- not the local version
701-even if it might be using another separator.
702-
703-The connection phase is considered complete when the DNS lookup and requested
704-TCP, TLS or QUIC handshakes are done.
705-
706-If --connect-timeout is provided several times, the last set value is used.
707-
708-Examples:
709-.nf
710-curl --connect-timeout 20 https://example.com
711-curl --connect-timeout 3.14 https://example.com
712-.fi
713-
714-See also \fI-m, \-\-max\-time\fP.
715-.IP "\-\-connect\-to <HOST1:PORT1:HOST2:PORT2>"
716-For a request intended for the "HOST1:PORT1" pair, connect to "HOST2:PORT2"
717-instead. This option is only used to establish the network connection. It does
718-NOT affect the hostname/port number that is used for TLS/SSL (e.g. SNI,
719-certificate verification) or for the application protocols.
720-
721-\&"HOST1" and "PORT1" may be empty strings, meaning any host or any port number.
722-\&"HOST2" and "PORT2" may also be empty strings, meaning use the request\(aqs
723-original hostname and port number.
724-
725-A hostname specified to this option is compared as a string, so it needs to
726-match the name used in the request URL. It can be either numerical such as
727-\&"127.0.0.1" or the full host name such as "example.org".
728-
729-Example: redirect connects from the example.com hostname to 127.0.0.1
730-independently of port number:
731-
732-.nf
733-curl \--connect\-to example.com::127.0.0.1: https://example.com/
734-.fi
735-
736-Example: redirect connects from all hostnames to 127.0.0.1 independently of
737-port number:
738-
739-.nf
740-curl \--connect\-to ::127.0.0.1: http://example.com/
741-.fi
742-
743---connect-to can be used several times in a command line
744-
745-Example:
746-.nf
747-curl --connect-to example.com:443:example.net:8443 https://example.com
748-.fi
749-
750-See also \fI\-\-resolve\fP and \fI-H, \-\-header\fP.
751-.IP "\-C, \-\-continue\-at <offset>"
752-Resume a previous transfer from the given byte offset. The given offset is the
753-exact number of bytes that are skipped, counting from the beginning of the
754-source file before it is transferred to the destination. If used with uploads,
755-the FTP server command SIZE is not used by curl.
756-
757-Use "\-C \-" to instruct curl to automatically find out where/how to resume the
758-transfer. It then uses the given output/input files to figure that out.
759-
760-When using this option for HTTP uploads using POST or PUT, functionality is
761-not guaranteed. The HTTP protocol has no standard interoperable resume upload
762-and curl uses a set of headers for this purpose that once proved working for
763-some servers and have been left for those who find that useful.
764-
765-This command line option is mutually exclusive with \fI\-r, \-\-range\fP: you can only use
766-one of them for a single transfer.
767-
768-The \fI\-\-no\-clobber\fP and \fI\-\-remove\-on\-error\fP options cannot be used together with
769-\fI\-C, \-\-continue\-at\fP.
770-
771-If --continue-at is provided several times, the last set value is used.
772-
773-Examples:
774-.nf
775-curl -C - https://example.com
776-curl -C 400 https://example.com
777-.fi
778-
779-See also \fI-r, \-\-range\fP.
780-.IP "\-b, \-\-cookie <data|filename>"
781-(HTTP) This option has two slightly separate cookie sending functions.
782-
783-Either: pass the exact data to send to the HTTP server in the Cookie header.
784-It is supposedly data previously received from the server in a "Set\-Cookie:"
785-line. The data should be in the format "NAME1=VALUE1; NAME2=VALUE2". When
786-given a set of specific cookies, curl populates its cookie header with this
787-content explicitly in all outgoing request(s). If multiple requests are done
788-due to authentication, followed redirects or similar, they all get this cookie
789-header passed on.
790-
791-Or: If no "=" symbol is used in the argument, it is instead treated as a
792-filename to read previously stored cookie from. This option also activates the
793-cookie engine which makes curl record incoming cookies, which may be handy if
794-you are using this in combination with the \fI\-L, \-\-location\fP option or do multiple
795-URL transfers on the same invoke.
796-
797-If the filename is a single minus ("\-"), curl reads the contents from stdin.
798-If the filename is an empty string ("") and is the only cookie input, curl
799-activates the cookie engine without any cookies.
800-
801-The file format of the file to read cookies from should be plain HTTP headers
802-(Set\-Cookie style) or the Netscape/Mozilla cookie file format.
803-
804-The file specified with \fI\-b, \-\-cookie\fP is only used as input. No cookies are written
805-to that file. To store cookies, use the \fI\-c, \-\-cookie\-jar\fP option.
806-
807-If you use the Set\-Cookie file format and do not specify a domain then the
808-cookie is not sent since the domain never matches. To address this, set a
809-domain in Set\-Cookie line (doing that includes subdomains) or preferably: use
810-the Netscape format.
811-
812-Users often want to both read cookies from a file and write updated cookies
813-back to a file, so using both \fI\-b, \-\-cookie\fP and \fI\-c, \-\-cookie\-jar\fP in the same command
814-line is common.
815-
816-If curl is built with PSL (\fBPublic Suffix List\fP) support, it detects and
817-discards cookies that are specified for such suffix domains that should not be
818-allowed to have cookies. If curl is \fInot\fP built with PSL support, it has no
819-ability to stop super cookies.
820-
821---cookie can be used several times in a command line
822-
823-Examples:
824-.nf
825-curl -b "" https://example.com
826-curl -b cookiefile https://example.com
827-curl -b cookiefile -c cookiefile https://example.com
828-curl -b name=Jane https://example.com
829-.fi
830-
831-See also \fI-c, \-\-cookie\-jar\fP and \fI-j, \-\-junk\-session\-cookies\fP.
832-.IP "\-c, \-\-cookie\-jar <filename>"
833-(HTTP) Specify to which file you want curl to write all cookies after a completed
834-operation. curl writes all cookies from its in\-memory cookie storage to the
835-given file at the end of operations. Even if no cookies are known, a file is
836-created so that it removes any formerly existing cookies from the file. The
837-file uses the Netscape cookie file format. If you set the filename to a single
838-minus, "\-", the cookies are written to stdout.
839-
840-The file specified with \fI\-c, \-\-cookie\-jar\fP is only used for output. No cookies are
841-read from the file. To read cookies, use the \fI\-b, \-\-cookie\fP option. Both options
842-can specify the same file.
843-
844-This command line option activates the cookie engine that makes curl record
845-and use cookies. The \fI\-b, \-\-cookie\fP option also activates it.
846-
847-If the cookie jar cannot be created or written to, the whole curl operation
848-does not fail or even report an error clearly. Using \fI\-v, \-\-verbose\fP gets a warning
849-displayed, but that is the only visible feedback you get about this possibly
850-lethal situation.
851-
852-If --cookie-jar is provided several times, the last set value is used.
853-
854-Examples:
855-.nf
856-curl -c store-here.txt https://example.com
857-curl -c store-here.txt -b read-these https://example.com
858-.fi
859-
860-See also \fI-b, \-\-cookie\fP and \fI-j, \-\-junk\-session\-cookies\fP.
861-.IP "\-\-create\-dirs"
862-When used in conjunction with the \fI\-o, \-\-output\fP option, curl creates the necessary
863-local directory hierarchy as needed. This option creates the directories
864-mentioned with the \fI\-o, \-\-output\fP option combined with the path possibly set with
865-\fI\-\-output\-dir\fP. If the combined output filename uses no directory, or if the
866-directories it mentions already exist, no directories are created.
867-
868-Created directories are made with mode 0750 on Unix\-style file systems.
869-
870-To create remote directories when using FTP or SFTP, try \fI\-\-ftp\-create\-dirs\fP.
871-
872-Providing --create-dirs multiple times has no extra effect.
873-Disable it again with \-\-no-create-dirs.
874-
875-Example:
876-.nf
877-curl --create-dirs --output local/dir/file https://example.com
878-.fi
879-
880-See also \fI\-\-ftp\-create\-dirs\fP and \fI\-\-output\-dir\fP.
881-.IP "\-\-create\-file\-mode <mode>"
882-(SFTP SCP FILE) When curl is used to create files remotely using one of the supported
883-protocols, this option allows the user to set which \(aqmode\(aq to set on the file
884-at creation time, instead of the default 0644.
885-
886-This option takes an octal number as argument.
887-
888-If --create-file-mode is provided several times, the last set value is used.
889-
890-Example:
891-.nf
892-curl --create-file-mode 0777 -T localfile sftp://example.com/new
893-.fi
894-
895-Added in 7.75.0. See also \fI\-\-ftp\-create\-dirs\fP.
896-.IP "\-\-crlf"
897-(FTP SMTP) Convert line feeds to carriage return plus line feeds in upload. Useful for
898-\fBMVS (OS/390)\fP.
899-
900-Providing --crlf multiple times has no extra effect.
901-Disable it again with \-\-no-crlf.
902-
903-Example:
904-.nf
905-curl --crlf -T file ftp://example.com/
906-.fi
907-
908-See also \fI-B, \-\-use\-ascii\fP.
909-.IP "\-\-crlfile <file>"
910-(TLS) Provide a file using PEM format with a Certificate Revocation List that may
911-specify peer certificates that are to be considered revoked.
912-
913-If --crlfile is provided several times, the last set value is used.
914-
915-Example:
916-.nf
917-curl --crlfile rejects.txt https://example.com
918-.fi
919-
920-See also \fI\-\-cacert\fP and \fI\-\-capath\fP.
921-.IP "\-\-curves <list>"
922-(TLS) Set specific curves to use during SSL session establishment according to RFC
923-8422, 5.1. Multiple algorithms can be provided by separating them with ":"
924-(e.g. "X25519:P\-521"). The parameter is available identically in the OpenSSL
925-\&"s_client" and "s_server" utilities.
926-
927-\fI\-\-curves\fP allows a OpenSSL powered curl to make SSL\-connections with exactly
928-the (EC) curve requested by the client, avoiding nontransparent client/server
929-negotiations.
930-
931-If this option is set, the default curves list built into OpenSSL are ignored.
932-
933-If --curves is provided several times, the last set value is used.
934-
935-Example:
936-.nf
937-curl --curves X25519 https://example.com
938-.fi
939-
940-Added in 7.73.0. See also \fI\-\-ciphers\fP.
941-.IP "\-d, \-\-data <data>"
942-(HTTP MQTT) Send the specified data in a POST request to the HTTP server, in the same way
943-that a browser does when a user has filled in an HTML form and presses the
944-submit button. This option makes curl pass the data to the server using the
945-content\-type application/x\-www\-form\-urlencoded. Compared to \fI\-F, \-\-form\fP.
946-
947-\fI\-\-data\-raw\fP is almost the same but does not have a special interpretation of
948-the @ character. To post data purely binary, you should instead use the
949-\fI\-\-data\-binary\fP option. To URL\-encode the value of a form field you may use
950-\fI\-\-data\-urlencode\fP.
951-
952-If any of these options is used more than once on the same command line, the
953-data pieces specified are merged with a separating &\-symbol. Thus, using
954-\(aq\-d name=daniel \-d skill=lousy\(aq would generate a post chunk that looks like
955-\(aqname=daniel&skill=lousy\(aq.
956-
957-If you start the data with the letter @, the rest should be a filename to read
958-the data from, or \- if you want curl to read the data from stdin. Posting data
959-from a file named \(aqfoobar\(aq would thus be done with \fI\-d, \-\-data\fP @foobar. When \fI\-d, \-\-data\fP
960-is told to read from a file like that, carriage returns, newlines and null
961-bytes are stripped out. If you do not want the @ character to have a special
962-interpretation use \fI\-\-data\-raw\fP instead.
963-
964-The data for this option is passed on to the server exactly as provided on the
965-command line. curl does not convert, change or improve it. It is up to the
966-user to provide the data in the correct form.
967-
968---data can be used several times in a command line
969-
970-Examples:
971-.nf
972-curl -d "name=curl" https://example.com
973-curl -d "name=curl" -d "tool=cmdline" https://example.com
974-curl -d @filename https://example.com
975-.fi
976-
977-This option is mutually exclusive with \fI-F, \-\-form\fP, \fI-I, \-\-head\fP and \fI-T, \-\-upload\-file\fP.
978-See also \fI\-\-data\-binary\fP, \fI\-\-data\-urlencode\fP and \fI\-\-data\-raw\fP.
979-.IP "\-\-data\-ascii <data>"
980-(HTTP) This option is just an alias for \fI\-d, \-\-data\fP.
981-
982---data-ascii can be used several times in a command line
983-
984-Example:
985-.nf
986-curl --data-ascii @file https://example.com
987-.fi
988-
989-See also \fI\-\-data\-binary\fP, \fI\-\-data\-raw\fP and \fI\-\-data\-urlencode\fP.
990-.IP "\-\-data\-binary <data>"
991-(HTTP) Post data exactly as specified with no extra processing whatsoever.
992-
993-If you start the data with the letter @, the rest should be a filename.
994-\&"@\-" makes curl read the data from stdin. Data is posted in a similar
995-manner as \fI\-d, \-\-data\fP does, except that newlines and carriage returns are
996-preserved and conversions are never done.
997-
998-Like \fI\-d, \-\-data\fP the default content\-type sent to the server is
999-application/x\-www\-form\-urlencoded. If you want the data to be treated as
1000-arbitrary binary data by the server then set the content\-type to octet\-stream:
1001--H "Content\-Type: application/octet\-stream".
1002-
1003-If this option is used several times, the ones following the first append
1004-data as described in \fI\-d, \-\-data\fP.
1005-
1006---data-binary can be used several times in a command line
1007-
1008-Example:
1009-.nf
1010-curl --data-binary @filename https://example.com
1011-.fi
1012-
1013-See also \fI\-\-data\-ascii\fP.
1014-.IP "\-\-data\-raw <data>"
1015-(HTTP) Post data similarly to \fI\-d, \-\-data\fP but without the special interpretation of the @
1016-character.
1017-
1018---data-raw can be used several times in a command line
1019-
1020-Examples:
1021-.nf
1022-curl --data-raw "hello" https://example.com
1023-curl --data-raw "@at@at@" https://example.com
1024-.fi
1025-
1026-See also \fI-d, \-\-data\fP.
1027-.IP "\-\-data\-urlencode <data>"
1028-(HTTP) Post data, similar to the other \fI\-d, \-\-data\fP options with the exception that this
1029-performs URL\-encoding.
1030-
1031-To be CGI\-compliant, the <data> part should begin with a \fIname\fP followed by
1032-a separator and a content specification. The <data> part can be passed to
1033-curl using one of the following syntaxes:
1034-.RS
1035-.IP content
1036-URL\-encode the content and pass that on. Just be careful so that the content
1037-does not contain any "=" or "@" symbols, as that makes the syntax match one of
1038-the other cases below.
1039-.IP =content
1040-URL\-encode the content and pass that on. The preceding "=" symbol is not
1041-included in the data.
1042-.IP name=content
1043-URL\-encode the content part and pass that on. Note that the name part is
1044-expected to be URL\-encoded already.
1045-.IP @filename
1046-load data from the given file (including any newlines), URL\-encode that data
1047-and pass it on in the POST. Using "@\-" makes curl read the data from stdin.
1048-.IP name@filename
1049-load data from the given file (including any newlines), URL\-encode that data
1050-and pass it on in the POST. The name part gets an equal sign appended,
1051-resulting in \fIname=urlencoded\-file\-content\fP. Note that the name is expected to
1052-be URL\-encoded already.
1053-.RE
1054-.IP
1055-
1056---data-urlencode can be used several times in a command line
1057-
1058-Examples:
1059-.nf
1060-curl --data-urlencode name=val https://example.com
1061-curl --data-urlencode =encodethis https://example.com
1062-curl --data-urlencode name@file https://example.com
1063-curl --data-urlencode @fileonly https://example.com
1064-.fi
1065-
1066-See also \fI-d, \-\-data\fP and \fI\-\-data\-raw\fP.
1067-.IP "\-\-delegation <LEVEL>"
1068-(GSS/kerberos) Set LEVEL what curl is allowed to delegate when it comes to user credentials.
1069-.RS
1070-.IP none
1071-Do not allow any delegation.
1072-.IP policy
1073-Delegates if and only if the OK\-AS\-DELEGATE flag is set in the Kerberos
1074-service ticket, which is a matter of realm policy.
1075-.IP always
1076-Unconditionally allow the server to delegate.
1077-.RE
1078-.IP
1079-
1080-If --delegation is provided several times, the last set value is used.
1081-
1082-Example:
1083-.nf
1084-curl --delegation "none" https://example.com
1085-.fi
1086-
1087-See also \fI-k, \-\-insecure\fP and \fI\-\-ssl\fP.
1088-.IP "\-\-digest"
1089-(HTTP) Enable HTTP Digest authentication. This authentication scheme avoids sending
1090-the password over the wire in clear text. Use this in combination with the
1091-normal \fI\-u, \-\-user\fP option to set username and password.
1092-
1093-Providing --digest multiple times has no extra effect.
1094-Disable it again with \-\-no-digest.
1095-
1096-Example:
1097-.nf
1098-curl -u name:password --digest https://example.com
1099-.fi
1100-
1101-This option is mutually exclusive with \fI\-\-basic\fP, \fI\-\-ntlm\fP and \fI\-\-negotiate\fP.
1102-See also \fI-u, \-\-user\fP, \fI\-\-proxy\-digest\fP and \fI\-\-anyauth\fP.
1103-.IP "\-q, \-\-disable"
1104-If used as the \fBfirst\fP parameter on the command line, the \fIcurlrc\fP config
1105-file is not read or used. See the \fI\-K, \-\-config\fP for details on the default config
1106-file search path.
1107-
1108-Providing --disable multiple times has no extra effect.
1109-Disable it again with \-\-no-disable.
1110-
1111-Example:
1112-.nf
1113-curl -q https://example.com
1114-.fi
1115-
1116-See also \fI-K, \-\-config\fP.
1117-.IP "\-\-disable\-eprt"
1118-(FTP) Disable the use of the EPRT and LPRT commands when doing active FTP transfers.
1119-curl normally first attempts to use EPRT before using PORT, but with this
1120-option, it uses PORT right away. EPRT is an extension to the original FTP
1121-protocol, and does not work on all servers, but enables more functionality in
1122-a better way than the traditional PORT command.
1123-
1124-\fI\-\-eprt\fP can be used to explicitly enable EPRT again and \fI\-\-no\-eprt\fP is an alias
1125-for \fI\-\-disable\-eprt\fP.
1126-
1127-If the server is accessed using IPv6, this option has no effect as EPRT is
1128-necessary then.
1129-
1130-Disabling EPRT only changes the active behavior. If you want to switch to
1131-passive mode you need to not use \fI\-P, \-\-ftp\-port\fP or force it with \fI\-\-ftp\-pasv\fP.
1132-
1133-Providing --disable-eprt multiple times has no extra effect.
1134-Disable it again with \-\-no-disable-eprt.
1135-
1136-Example:
1137-.nf
1138-curl --disable-eprt ftp://example.com/
1139-.fi
1140-
1141-See also \fI\-\-disable\-epsv\fP and \fI-P, \-\-ftp\-port\fP.
1142-.IP "\-\-disable\-epsv"
1143-(FTP) Disable the use of the EPSV command when doing passive FTP transfers. curl
1144-normally first attempts to use EPSV before PASV, but with this option, it does
1145-not try EPSV.
1146-
1147-\fI\-\-epsv\fP can be used to explicitly enable EPSV again and \fI\-\-no\-epsv\fP is an alias
1148-for \fI\-\-disable\-epsv\fP.
1149-
1150-If the server is an IPv6 host, this option has no effect as EPSV is necessary
1151-then.
1152-
1153-Disabling EPSV only changes the passive behavior. If you want to switch to
1154-active mode you need to use \fI\-P, \-\-ftp\-port\fP.
1155-
1156-Providing --disable-epsv multiple times has no extra effect.
1157-Disable it again with \-\-no-disable-epsv.
1158-
1159-Example:
1160-.nf
1161-curl --disable-epsv ftp://example.com/
1162-.fi
1163-
1164-See also \fI\-\-disable\-eprt\fP and \fI-P, \-\-ftp\-port\fP.
1165-.IP "\-\-disallow\-username\-in\-url"
1166-Exit with error if passed a URL containing a username. Probably most useful
1167-when the URL is being provided at runtime or similar.
1168-
1169-Providing --disallow-username-in-url multiple times has no extra effect.
1170-Disable it again with \-\-no-disallow-username-in-url.
1171-
1172-Example:
1173-.nf
1174-curl --disallow-username-in-url https://example.com
1175-.fi
1176-
1177-Added in 7.61.0. See also \fI\-\-proto\fP.
1178-.IP "\-\-dns\-interface <interface>"
1179-(DNS) Send outgoing DNS requests through the given interface. This option is a
1180-counterpart to \fI\-\-interface\fP (which does not affect DNS). The supplied string
1181-must be an interface name (not an address).
1182-
1183-If --dns-interface is provided several times, the last set value is used.
1184-
1185-Example:
1186-.nf
1187-curl --dns-interface eth0 https://example.com
1188-.fi
1189-
1190-\fI\-\-dns\-interface\fP requires that libcurl is built to support c-ares.
1191-See also \fI\-\-dns\-ipv4\-addr\fP and \fI\-\-dns\-ipv6\-addr\fP.
1192-.IP "\-\-dns\-ipv4\-addr <address>"
1193-(DNS) Bind to a specific IP address when making IPv4 DNS requests, so that the DNS
1194-requests originate from this address. The argument should be a single IPv4
1195-address.
1196-
1197-If --dns-ipv4-addr is provided several times, the last set value is used.
1198-
1199-Example:
1200-.nf
1201-curl --dns-ipv4-addr 10.1.2.3 https://example.com
1202-.fi
1203-
1204-\fI\-\-dns\-ipv4\-addr\fP requires that libcurl is built to support c-ares.
1205-See also \fI\-\-dns\-interface\fP and \fI\-\-dns\-ipv6\-addr\fP.
1206-.IP "\-\-dns\-ipv6\-addr <address>"
1207-(DNS) Bind to a specific IP address when making IPv6 DNS requests, so that the DNS
1208-requests originate from this address. The argument should be a single IPv6
1209-address.
1210-
1211-If --dns-ipv6-addr is provided several times, the last set value is used.
1212-
1213-Example:
1214-.nf
1215-curl --dns-ipv6-addr 2a04:4e42::561 https://example.com
1216-.fi
1217-
1218-\fI\-\-dns\-ipv6\-addr\fP requires that libcurl is built to support c-ares.
1219-See also \fI\-\-dns\-interface\fP and \fI\-\-dns\-ipv4\-addr\fP.
1220-.IP "\-\-dns\-servers <addresses>"
1221-(DNS) Set the list of DNS servers to be used instead of the system default. The list
1222-of IP addresses should be separated with commas. Port numbers may also
1223-optionally be given, appended to the IP address separated with a colon.
1224-
1225-If --dns-servers is provided several times, the last set value is used.
1226-
1227-Examples:
1228-.nf
1229-curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com
1230-curl --dns-servers 10.0.0.1:53 https://example.com
1231-.fi
1232-
1233-\fI\-\-dns\-servers\fP requires that libcurl is built to support c-ares.
1234-See also \fI\-\-dns\-interface\fP and \fI\-\-dns\-ipv4\-addr\fP.
1235-.IP "\-\-doh\-cert\-status"
1236-Same as \fI\-\-cert\-status\fP but used for DoH (DNS\-over\-HTTPS).
1237-
1238-Verify the status of the DoH servers\(aq certificate by using the Certificate
1239-Status Request (aka. OCSP stapling) TLS extension.
1240-
1241-If this option is enabled and the DoH server sends an invalid (e.g. expired)
1242-response, if the response suggests that the server certificate has been
1243-revoked, or no response at all is received, the verification fails.
1244-
1245-This support is currently only implemented in the OpenSSL and GnuTLS backends.
1246-
1247-Providing --doh-cert-status multiple times has no extra effect.
1248-Disable it again with \-\-no-doh-cert-status.
1249-
1250-Example:
1251-.nf
1252-curl --doh-cert-status --doh-url https://doh.example https://example.com
1253-.fi
1254-
1255-Added in 7.76.0. See also \fI\-\-doh\-insecure\fP.
1256-.IP "\-\-doh\-insecure"
1257-By default, every connection curl makes to a DoH server is verified to be
1258-secure before the transfer takes place. This option tells curl to skip the
1259-verification step and proceed without checking.
1260-
1261-\fBWARNING\fP: using this option makes the DoH transfer and name resolution
1262-insecure.
1263-
1264-This option is equivalent to \fI\-k, \-\-insecure\fP and \fI\-\-proxy\-insecure\fP but used for DoH
1265-(DNS\-over\-HTTPS) only.
1266-
1267-Providing --doh-insecure multiple times has no extra effect.
1268-Disable it again with \-\-no-doh-insecure.
1269-
1270-Example:
1271-.nf
1272-curl --doh-insecure --doh-url https://doh.example https://example.com
1273-.fi
1274-
1275-Added in 7.76.0. See also \fI\-\-doh\-url\fP, \fI-k, \-\-insecure\fP and \fI\-\-proxy\-insecure\fP.
1276-.IP "\-\-doh\-url <URL>"
1277-Specify which DNS\-over\-HTTPS (DoH) server to use to resolve hostnames, instead
1278-of using the default name resolver mechanism. The URL must be HTTPS.
1279-
1280-Some SSL options that you set for your transfer also apply to DoH since the
1281-name lookups take place over SSL. However, the certificate verification
1282-settings are not inherited but are controlled separately via \fI\-\-doh\-insecure\fP
1283-and \fI\-\-doh\-cert\-status\fP.
1284-
1285-By default, DoH is bypassed when initially looking up DNS records of the DoH server. You can specify the IP address(es) of the DoH server with \fI\-\-resolve\fP to avoid this.
1286-
1287-This option is unset if an empty string "" is used as the URL.
1288-(Added in 7.85.0)
1289-
1290-If --doh-url is provided several times, the last set value is used.
1291-
1292-Examples:
1293-.nf
1294-curl --doh-url https://doh.example https://example.com
1295-curl --doh-url https://doh.example --resolve doh.example:443:192.0.2.1 https://example.com
1296-.fi
1297-
1298-Added in 7.62.0. See also \fI\-\-doh\-insecure\fP.
1299-.IP "\-\-dump\-ca\-embed"
1300-(TLS) Write the CA bundle embedded in curl to standard output, then quit.
1301-
1302-If curl was not built with a default CA bundle embedded, the output is empty.
1303-
1304-Providing --dump-ca-embed multiple times has no extra effect.
1305-Disable it again with \-\-no-dump-ca-embed.
1306-
1307-Example:
1308-.nf
1309-curl --dump-ca-embed
1310-.fi
1311-
1312-Added in 8.10.0. See also \fI\-\-ca\-native\fP, \fI\-\-cacert\fP, \fI\-\-capath\fP, \fI\-\-proxy\-ca\-native\fP, \fI\-\-proxy\-cacert\fP and \fI\-\-proxy\-capath\fP.
1313-.IP "\-D, \-\-dump\-header <filename>"
1314-(HTTP FTP) Write the received protocol headers to the specified file. If no headers are
1315-received, the use of this option creates an empty file. Specify "\-" as
1316-filename (a single minus) to have it written to stdout.
1317-
1318-Starting in curl 8.10.0, specify "%" (a single percent sign) as filename
1319-writes the output to stderr.
1320-
1321-When used in FTP, the FTP server response lines are considered being "headers"
1322-and thus are saved there.
1323-
1324-Starting in curl 8.11.0, using the \fI\-\-create\-dirs\fP option can also create
1325-missing directory components for the path provided in \fI\-D, \-\-dump\-header\fP.
1326-
1327-Having multiple transfers in one set of operations (i.e. the URLs in one
1328-\fI\-:, \-\-next\fP clause), appends them to the same file, separated by a blank line.
1329-
1330-If --dump-header is provided several times, the last set value is used.
1331-
1332-Examples:
1333-.nf
1334-curl --dump-header store.txt https://example.com
1335-curl --dump-header - https://example.com -o save
1336-.fi
1337-
1338-See also \fI-o, \-\-output\fP.
1339-.IP "\-\-ech <config>"
1340-(HTTPS) Specify how to do ECH (Encrypted Client Hello).
1341-
1342-The values allowed for <config> can be:
1343-.RS
1344-.IP false
1345-Do not attempt ECH. The is the default.
1346-.IP grease
1347-Send a GREASE ECH extension
1348-.IP true
1349-Attempt ECH if possible, but do not fail if ECH is not attempted.
1350-(The connection fails if ECH is attempted but fails.)
1351-.IP hard
1352-Attempt ECH and fail if that is not possible. ECH only works with TLS 1.3 and
1353-also requires using DoH or providing an ECHConfigList on the command line.
1354-.IP ecl:<b64val>
1355-A base64 encoded ECHConfigList that is used for ECH.
1356-.IP pn:<name>
1357-A name to use to over\-ride the "public_name" field of an ECHConfigList (only
1358-available with OpenSSL TLS support)
1359-.RE
1360-.IP
1361-Most ECH related errors cause error \fICURLE_ECH_REQUIRED\fP (101).
1362-
1363-If --ech is provided several times, the last set value is used.
1364-
1365-Example:
1366-.nf
1367-curl --ech true https://example.com
1368-.fi
1369-
1370-Added in 8.8.0. See also \fI\-\-doh\-url\fP.
1371-.IP "\-\-egd\-file <file>"
1372-(TLS) Deprecated option (added in 7.84.0). Prior to that it only had an effect on
1373-curl if built to use old versions of OpenSSL.
1374-
1375-Specify the path name to the Entropy Gathering Daemon socket. The socket is
1376-used to seed the random engine for SSL connections.
1377-
1378-If --egd-file is provided several times, the last set value is used.
1379-
1380-Example:
1381-.nf
1382-curl --egd-file /random/here https://example.com
1383-.fi
1384-
1385-See also \fI\-\-random\-file\fP.
1386-.IP "\-\-engine <name>"
1387-(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI\-\-engine\fP
1388-list to print a list of build\-time supported engines. Note that not all (and
1389-possibly none) of the engines may be available at runtime.
1390-
1391-If --engine is provided several times, the last set value is used.
1392-
1393-Example:
1394-.nf
1395-curl --engine flavor https://example.com
1396-.fi
1397-
1398-See also \fI\-\-ciphers\fP and \fI\-\-curves\fP.
1399-.IP "\-\-etag\-compare <file>"
1400-(HTTP) Make a conditional HTTP request for the specific ETag read from the given file
1401-by sending a custom If\-None\-Match header using the stored ETag.
1402-
1403-For correct results, make sure that the specified file contains only a single
1404-line with the desired ETag. A non\-existing or empty file is treated as an
1405-empty ETag.
1406-
1407-Use the option \fI\-\-etag\-save\fP to first save the ETag from a response, and then
1408-use this option to compare against the saved ETag in a subsequent request.
1409-
1410-Use this option with a single URL only.
1411-
1412-If --etag-compare is provided several times, the last set value is used.
1413-
1414-Example:
1415-.nf
1416-curl --etag-compare etag.txt https://example.com
1417-.fi
1418-
1419-Added in 7.68.0. See also \fI\-\-etag\-save\fP and \fI-z, \-\-time\-cond\fP.
1420-.IP "\-\-etag\-save <file>"
1421-(HTTP) Save an HTTP ETag to the specified file. An ETag is a caching related header,
1422-usually returned in a response. Use this option with a single URL only.
1423-
1424-If no ETag is sent by the server, an empty file is created.
1425-
1426-In many situations you want to use an existing etag in the request to avoid
1427-downloading the same resource again but also save the new etag if it has
1428-indeed changed, by using both etag options \fI\-\-etag\-save\fP and \fI\-\-etag\-compare\fP with
1429-the same filename, in the same command line.
1430-
1431-Starting in curl 8.12.0, using the \fI\-\-create\-dirs\fP option can also create
1432-missing directory components for the path provided in \fI\-\-etag\-save\fP.
1433-
1434-If --etag-save is provided several times, the last set value is used.
1435-
1436-Example:
1437-.nf
1438-curl --etag-save storetag.txt https://example.com
1439-.fi
1440-
1441-Added in 7.68.0. See also \fI\-\-etag\-compare\fP.
1442-.IP "\-\-expect100\-timeout <seconds>"
1443-(HTTP) Maximum time in seconds that you allow curl to wait for a 100\-continue
1444-response when curl emits an Expects: 100\-continue header in its request. By
1445-default curl waits one second. This option accepts decimal values. When curl
1446-stops waiting, it continues as if a response was received.
1447-
1448-The decimal value needs to be provided using a dot (".") as decimal separator \-
1449-not the local version even if it might be using another separator.
1450-
1451-If --expect100-timeout is provided several times, the last set value is used.
1452-
1453-Example:
1454-.nf
1455-curl --expect100-timeout 2.5 -T file https://example.com
1456-.fi
1457-
1458-See also \fI\-\-connect\-timeout\fP.
1459-.IP "\-f, \-\-fail"
1460-(HTTP) Fail with error code 22 and with no response body output at all for HTTP
1461-transfers returning HTTP response codes at 400 or greater.
1462-
1463-In normal cases when an HTTP server fails to deliver a document, it returns a
1464-body of text stating so (which often also describes why and more) and a 4xx
1465-HTTP response code. This command line option prevents curl from outputting
1466-that data and instead returns error 22 early. By default, curl does not
1467-consider HTTP response codes to indicate failure.
1468-
1469-To get both the error code and also save the content, use \fI\-\-fail\-with\-body\fP
1470-instead.
1471-
1472-This method is not fail\-safe and there are occasions where non\-successful
1473-response codes slip through, especially when authentication is involved
1474-(response codes 401 and 407).
1475-
1476-Providing --fail multiple times has no extra effect.
1477-Disable it again with \-\-no-fail.
1478-
1479-Example:
1480-.nf
1481-curl --fail https://example.com
1482-.fi
1483-
1484-This option is mutually exclusive with \fI\-\-fail\-with\-body\fP.
1485-See also \fI\-\-fail\-with\-body\fP and \fI\-\-fail\-early\fP.
1486-.IP "\-\-fail\-early"
1487-Fail and exit on the first detected transfer error.
1488-
1489-When curl is used to do multiple transfers on the command line, it attempts to
1490-operate on each given URL, one by one. By default, it ignores errors if there
1491-are more URLs given and the last URL\(aqs success determines the error code curl
1492-returns. Early failures are "hidden" by subsequent successful transfers.
1493-
1494-Using this option, curl instead returns an error on the first transfer that
1495-fails, independent of the amount of URLs that are given on the command
1496-line. This way, no transfer failures go undetected by scripts and similar.
1497-
1498-This option does not imply \fI\-f, \-\-fail\fP, which causes transfers to fail due to the
1499-server\(aqs HTTP status code. You can combine the two options, however note \fI\-f, \-\-fail\fP
1500-is not global and is therefore contained by \fI\-:, \-\-next\fP.
1501-
1502-This option is global and does not need to be specified for each use of --next.
1503-
1504-Providing --fail-early multiple times has no extra effect.
1505-Disable it again with \-\-no-fail-early.
1506-
1507-Example:
1508-.nf
1509-curl --fail-early https://example.com https://two.example
1510-.fi
1511-
1512-See also \fI-f, \-\-fail\fP and \fI\-\-fail\-with\-body\fP.
1513-.IP "\-\-fail\-with\-body"
1514-(HTTP) Return an error on server errors where the HTTP response code is 400 or
1515-greater). In normal cases when an HTTP server fails to deliver a document, it
1516-returns an HTML document stating so (which often also describes why and more).
1517-This option allows curl to output and save that content but also to return
1518-error 22.
1519-
1520-This is an alternative option to \fI\-f, \-\-fail\fP which makes curl fail for the same
1521-circumstances but without saving the content.
1522-
1523-Providing --fail-with-body multiple times has no extra effect.
1524-Disable it again with \-\-no-fail-with-body.
1525-
1526-Example:
1527-.nf
1528-curl --fail-with-body https://example.com
1529-.fi
1530-
1531-This option is mutually exclusive with \fI-f, \-\-fail\fP.
1532-Added in 7.76.0. See also \fI-f, \-\-fail\fP and \fI\-\-fail\-early\fP.
1533-.IP "\-\-false\-start"
1534-(TLS) Use false start during the TLS handshake. False start is a mode where a TLS
1535-client starts sending application data before verifying the server\(aqs Finished
1536-message, thus saving a round trip when performing a full handshake.
1537-
1538-This functionality is currently only implemented in the Secure Transport (on
1539-iOS 7.0 or later, or macOS 10.9 or later) backend.
1540-
1541-Providing --false-start multiple times has no extra effect.
1542-Disable it again with \-\-no-false-start.
1543-
1544-Example:
1545-.nf
1546-curl --false-start https://example.com
1547-.fi
1548-
1549-See also \fI\-\-tcp\-fastopen\fP.
1550-.IP "\-F, \-\-form <name=content>"
1551-(HTTP SMTP IMAP) For the HTTP protocol family, emulate a filled\-in form in which a user has
1552-pressed the submit button. This makes curl POST data using the Content\-Type
1553-multipart/form\-data according to RFC 2388.
1554-
1555-For SMTP and IMAP protocols, this composes a multipart mail message to
1556-transmit.
1557-
1558-This enables uploading of binary files etc. To force the \(aqcontent\(aq part to be
1559-a file, prefix the filename with an @ sign. To just get the content part from
1560-a file, prefix the filename with the symbol <. The difference between @ and
1561-< is then that @ makes a file get attached in the post as a file upload,
1562-while the < makes a text field and just gets the contents for that text field
1563-from a file.
1564-
1565-Read content from stdin instead of a file by using a single "\-" as filename.
1566-This goes for both @ and < constructs. When stdin is used, the contents is
1567-buffered in memory first by curl to determine its size and allow a possible
1568-resend. Defining a part\(aqs data from a named non\-regular file (such as a named
1569-pipe or similar) is not subject to buffering and is instead read at
1570-transmission time; since the full size is unknown before the transfer starts,
1571-such data is sent as chunks by HTTP and rejected by IMAP.
1572-
1573-Example: send an image to an HTTP server, where \(aqprofile\(aq is the name of the
1574-form\-field to which the file \fBportrait.jpg\fP is the input:
1575-
1576-.nf
1577-curl \-F profile=@portrait.jpg https://example.com/upload.cgi
1578-.fi
1579-
1580-Example: send your name and shoe size in two text fields to the server:
1581-
1582-.nf
1583-curl \-F name=John \-F shoesize=11 https://example.com/
1584-.fi
1585-
1586-Example: send your essay in a text field to the server. Send it as a plain
1587-text field, but get the contents for it from a local file:
1588-
1589-.nf
1590-curl \-F "story=<hugefile.txt" https://example.com/
1591-.fi
1592-
1593-You can also instruct curl what Content\-Type to use by using "type=", in a
1594-manner similar to:
1595-
1596-.nf
1597-curl \-F "web=@index.html;type=text/html" example.com
1598-.fi
1599-
1600-or
1601-
1602-.nf
1603-curl \-F "name=daniel;type=text/foo" example.com
1604-.fi
1605-
1606-You can also explicitly change the name field of a file upload part by setting
1607-filename=, like this:
1608-
1609-.nf
1610-curl \-F "file=@localfile;filename=nameinpost" example.com
1611-.fi
1612-
1613-If filename/path contains \(aq,\(aq or \(aq;\(aq, it must be quoted by double\-quotes like:
1614-
1615-.nf
1616-curl \-F "file=@\\"local,file\\";filename=\\"name;in;post\\"" \\
1617- https://example.com
1618-.fi
1619-
1620-or
1621-
1622-.nf
1623-curl \-F \(aqfile=@"local,file";filename="name;in;post"\(aq \\
1624- https://example.com
1625-.fi
1626-
1627-Note that if a filename/path is quoted by double\-quotes, any double\-quote
1628-or backslash within the filename must be escaped by backslash.
1629-
1630-Quoting must also be applied to non\-file data if it contains semicolons,
1631-leading/trailing spaces or leading double quotes:
1632-
1633-.nf
1634-curl \-F \(aqcolors="red; green; blue";type=text/x\-myapp\(aq \\
1635- https://example.com
1636-.fi
1637-
1638-You can add custom headers to the field by setting headers=, like
1639-
1640-.nf
1641-curl \-F "submit=OK;headers=\\"X\-submit\-type: OK\\"" example.com
1642-.fi
1643-
1644-or
1645-
1646-.nf
1647-curl \-F "submit=OK;headers=@headerfile" example.com
1648-.fi
1649-
1650-The headers= keyword may appear more than once and above notes about quoting
1651-apply. When headers are read from a file, empty lines and lines starting
1652-with \(aq#\(aq are ignored; each header can be folded by splitting
1653-between two words and starting the continuation line with a space; embedded
1654-carriage\-returns and trailing spaces are stripped.
1655-Here is an example of a header file contents:
1656-
1657-.nf
1658-# This file contains two headers.
1659-X\-header\-1: this is a header
1660-
1661-# The following header is folded.
1662-X\-header\-2: this is
1663- another header
1664-.fi
1665-
1666-To support sending multipart mail messages, the syntax is extended as follows:
1667-
1668-- name can be omitted: the equal sign is the first character of the argument,
1669-
1670-- if data starts with \(aq(\(aq, this signals to start a new multipart: it can be
1671-followed by a content type specification.
1672-
1673-- a multipart can be terminated with a \(aq=)\(aq argument.
1674-
1675-Example: the following command sends an SMTP mime email consisting in an
1676-inline part in two alternative formats: plain text and HTML. It attaches a
1677-text file:
1678-
1679-.nf
1680-curl \-F \(aq=(;type=multipart/alternative\(aq \\
1681- \-F \(aq=plain text message\(aq \\
1682- \-F \(aq= <body>HTML message</body>;type=text/html\(aq \\
1683- \-F \(aq=)\(aq \-F \(aq=@textfile.txt\(aq ... smtp://example.com
1684-.fi
1685-
1686-Data can be encoded for transfer using encoder=. Available encodings are
1687-\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
1688-Content\-Transfer\-Encoding header, \fI7bit\fP that only rejects 8\-bit characters
1689-with a transfer error, \fIquoted\-printable\fP and \fIbase64\fP that encodes data
1690-according to the corresponding schemes, limiting lines length to 76
1691-characters.
1692-
1693-Example: send multipart mail with a quoted\-printable text message and a
1694-base64 attached file:
1695-
1696-.nf
1697-curl \-F \(aq=text message;encoder=quoted\-printable\(aq \\
1698- \-F \(aq=@localfile;encoder=base64\(aq ... smtp://example.com
1699-.fi
1700-
1701-See further examples and details in the MANUAL.
1702-
1703---form can be used several times in a command line
1704-
1705-Example:
1706-.nf
1707-curl --form "name=curl" --form "file=@loadthis" https://example.com
1708-.fi
1709-
1710-This option is mutually exclusive with \fI-d, \-\-data\fP, \fI-I, \-\-head\fP and \fI-T, \-\-upload\-file\fP.
1711-See also \fI-d, \-\-data\fP, \fI\-\-form\-string\fP and \fI\-\-form\-escape\fP.
1712-.IP "\-\-form\-escape"
1713-(HTTP imap smtp) Pass on names of multipart form fields and files using backslash\-escaping
1714-instead of percent\-encoding.
1715-
1716-If --form-escape is provided several times, the last set value is used.
1717-
1718-Example:
1719-.nf
1720-curl --form-escape -F 'field\\name=curl' -F 'file=@load"this' https://example.com
1721-.fi
1722-
1723-Added in 7.81.0. See also \fI-F, \-\-form\fP.
1724-.IP "\-\-form\-string <name=string>"
1725-(HTTP SMTP IMAP) Similar to \fI\-F, \-\-form\fP except that the value string for the named parameter is used
1726-literally. Leading @ and < characters, and the ";type=" string in the value
1727-have no special meaning. Use this in preference to \fI\-F, \-\-form\fP if there is any
1728-possibility that the string value may accidentally trigger the @ or <
1729-features of \fI\-F, \-\-form\fP.
1730-
1731---form-string can be used several times in a command line
1732-
1733-Example:
1734-.nf
1735-curl --form-string "name=data" https://example.com
1736-.fi
1737-
1738-See also \fI-F, \-\-form\fP.
1739-.IP "\-\-ftp\-account <data>"
1740-(FTP) When an FTP server asks for "account data" after username and password has
1741-been provided, this data is sent off using the ACCT command.
1742-
1743-If --ftp-account is provided several times, the last set value is used.
1744-
1745-Example:
1746-.nf
1747-curl --ftp-account "mr.robot" ftp://example.com/
1748-.fi
1749-
1750-See also \fI-u, \-\-user\fP.
1751-.IP "\-\-ftp\-alternative\-to\-user <command>"
1752-(FTP) If authenticating with the USER and PASS commands fails, send this command.
1753-When connecting to Tumbleweed\(aqs Secure Transport server over FTPS using a
1754-client certificate, using "SITE AUTH" tells the server to retrieve the
1755-username from the certificate.
1756-
1757-If --ftp-alternative-to-user is provided several times, the last set value is used.
1758-
1759-Example:
1760-.nf
1761-curl --ftp-alternative-to-user "U53r" ftp://example.com
1762-.fi
1763-
1764-See also \fI\-\-ftp\-account\fP and \fI-u, \-\-user\fP.
1765-.IP "\-\-ftp\-create\-dirs"
1766-(FTP SFTP) When an FTP or SFTP URL/operation uses a path that does not currently exist on
1767-the server, the standard behavior of curl is to fail. Using this option, curl
1768-instead attempts to create missing directories.
1769-
1770-Providing --ftp-create-dirs multiple times has no extra effect.
1771-Disable it again with \-\-no-ftp-create-dirs.
1772-
1773-Example:
1774-.nf
1775-curl --ftp-create-dirs -T file ftp://example.com/remote/path/file
1776-.fi
1777-
1778-See also \fI\-\-create\-dirs\fP.
1779-.IP "\-\-ftp\-method <method>"
1780-(FTP) Control what method curl should use to reach a file on an FTP(S)
1781-server. The method argument should be one of the following alternatives:
1782-.RS
1783-.IP multicwd
1784-Do a single CWD operation for each path part in the given URL. For deep
1785-hierarchies this means many commands. This is how RFC 1738 says it should be
1786-done. This is the default but the slowest behavior.
1787-.IP nocwd
1788-Do no CWD at all. curl does SIZE, RETR, STOR etc and gives the full path to
1789-the server for each of these commands. This is the fastest behavior.
1790-.IP singlecwd
1791-Do one CWD with the full target directory and then operate on the file
1792-\&"normally" (like in the multicwd case). This is somewhat more standards
1793-compliant than "nocwd" but without the full penalty of "multicwd".
1794-.RE
1795-.IP
1796-
1797-If --ftp-method is provided several times, the last set value is used.
1798-
1799-Examples:
1800-.nf
1801-curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
1802-curl --ftp-method nocwd ftp://example.com/dir1/dir2/file
1803-curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file
1804-.fi
1805-
1806-See also \fI-l, \-\-list\-only\fP.
1807-.IP "\-\-ftp\-pasv"
1808-(FTP) Use passive mode for the data connection. Passive is the internal default
1809-behavior, but using this option can be used to override a previous \fI\-P, \-\-ftp\-port\fP
1810-option.
1811-
1812-Reversing an enforced passive really is not doable but you must then instead
1813-enforce the correct \fI\-P, \-\-ftp\-port\fP again.
1814-
1815-Passive mode means that curl tries the EPSV command first and then PASV,
1816-unless \fI\-\-disable\-epsv\fP is used.
1817-
1818-Providing --ftp-pasv multiple times has no extra effect.
1819-Disable it again with \-\-no-ftp-pasv.
1820-
1821-Example:
1822-.nf
1823-curl --ftp-pasv ftp://example.com/
1824-.fi
1825-
1826-See also \fI\-\-disable\-epsv\fP.
1827-.IP "\-P, \-\-ftp\-port <address>"
1828-(FTP) Reverse the default initiator/listener roles when connecting with FTP. This
1829-option makes curl use active mode. curl then commands the server to connect
1830-back to the client\(aqs specified address and port, while passive mode asks the
1831-server to setup an IP address and port for it to connect to. <address>
1832-should be one of:
1833-.RS
1834-.IP interface
1835-e.g. \fBeth0\fP to specify which interface\(aqs IP address you want to use (Unix only)
1836-.IP "IP address"
1837-e.g. \fB192.168.10.1\fP to specify the exact IP address
1838-.IP hostname
1839-e.g. \fBmy.host.domain\fP to specify the machine
1840-.IP -
1841-make curl pick the same IP address that is already used for the control
1842-connection. This is the recommended choice.
1843-.RE
1844-.IP
1845-Disable the use of PORT with \fI\-\-ftp\-pasv\fP. Disable the attempt to use the EPRT
1846-command instead of PORT by using \fI\-\-disable\-eprt\fP. EPRT is really PORT++.
1847-
1848-You can also append ":[start]\-[end]" to the right of the address, to tell
1849-curl what TCP port range to use. That means you specify a port range, from a
1850-lower to a higher number. A single number works as well, but do note that it
1851-increases the risk of failure since the port may not be available.
1852-
1853-
1854-If --ftp-port is provided several times, the last set value is used.
1855-
1856-Examples:
1857-.nf
1858-curl -P - ftp:/example.com
1859-curl -P eth0 ftp:/example.com
1860-curl -P 192.168.0.2 ftp:/example.com
1861-.fi
1862-
1863-See also \fI\-\-ftp\-pasv\fP and \fI\-\-disable\-eprt\fP.
1864-.IP "\-\-ftp\-pret"
1865-(FTP) Send a PRET command before PASV (and EPSV). Certain FTP servers, mainly
1866-drftpd, require this non\-standard command for directory listings as well as up
1867-and downloads in PASV mode.
1868-
1869-Providing --ftp-pret multiple times has no extra effect.
1870-Disable it again with \-\-no-ftp-pret.
1871-
1872-Example:
1873-.nf
1874-curl --ftp-pret ftp://example.com/
1875-.fi
1876-
1877-See also \fI-P, \-\-ftp\-port\fP and \fI\-\-ftp\-pasv\fP.
1878-.IP "\-\-ftp\-skip\-pasv\-ip"
1879-(FTP) Do not use the IP address the server suggests in its response to curl\(aqs PASV
1880-command when curl connects the data connection. Instead curl reuses the same
1881-IP address it already uses for the control connection.
1882-
1883-This option is enabled by default (added in 7.74.0).
1884-
1885-This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
1886-
1887-Providing --ftp-skip-pasv-ip multiple times has no extra effect.
1888-Disable it again with \-\-no-ftp-skip-pasv-ip.
1889-
1890-Example:
1891-.nf
1892-curl --ftp-skip-pasv-ip ftp://example.com/
1893-.fi
1894-
1895-See also \fI\-\-ftp\-pasv\fP.
1896-.IP "\-\-ftp\-ssl\-ccc"
1897-(FTP) Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after
1898-authenticating. The rest of the control channel communication is
1899-unencrypted. This allows NAT routers to follow the FTP transaction. The
1900-default mode is passive.
1901-
1902-Providing --ftp-ssl-ccc multiple times has no extra effect.
1903-Disable it again with \-\-no-ftp-ssl-ccc.
1904-
1905-Example:
1906-.nf
1907-curl --ftp-ssl-ccc ftps://example.com/
1908-.fi
1909-
1910-See also \fI\-\-ssl\fP and \fI\-\-ftp\-ssl\-ccc\-mode\fP.
1911-.IP "\-\-ftp\-ssl\-ccc\-mode <active/passive>"
1912-(FTP) Set the CCC mode. The passive mode does not initiate the shutdown, but instead
1913-waits for the server to do it, and does not reply to the shutdown from the
1914-server. The active mode initiates the shutdown and waits for a reply from the
1915-server.
1916-
1917-Providing --ftp-ssl-ccc-mode multiple times has no extra effect.
1918-Disable it again with \-\-no-ftp-ssl-ccc-mode.
1919-
1920-Example:
1921-.nf
1922-curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
1923-.fi
1924-
1925-See also \fI\-\-ftp\-ssl\-ccc\fP.
1926-.IP "\-\-ftp\-ssl\-control"
1927-(FTP) Require SSL/TLS for the FTP login, clear for transfer. Allows secure
1928-authentication, but non\-encrypted data transfers for efficiency. Fails the
1929-transfer if the server does not support SSL/TLS.
1930-
1931-Providing --ftp-ssl-control multiple times has no extra effect.
1932-Disable it again with \-\-no-ftp-ssl-control.
1933-
1934-Example:
1935-.nf
1936-curl --ftp-ssl-control ftp://example.com
1937-.fi
1938-
1939-See also \fI\-\-ssl\fP.
1940-.IP "\-G, \-\-get"
1941-(HTTP) When used, this option makes all data specified with \fI\-d, \-\-data\fP, \fI\-\-data\-binary\fP or
1942-\fI\-\-data\-urlencode\fP to be used in an HTTP GET request instead of the POST request
1943-that otherwise would be used. curl appends the provided data to the URL as a
1944-query string.
1945-
1946-If used in combination with \fI\-I, \-\-head\fP, the POST data is instead appended to the
1947-URL with a HEAD request.
1948-
1949-Providing --get multiple times has no extra effect.
1950-Disable it again with \-\-no-get.
1951-
1952-Examples:
1953-.nf
1954-curl --get https://example.com
1955-curl --get -d "tool=curl" -d "age=old" https://example.com
1956-curl --get -I -d "tool=curl" https://example.com
1957-.fi
1958-
1959-See also \fI-d, \-\-data\fP and \fI-X, \-\-request\fP.
1960-.IP "\-g, \-\-globoff"
1961-Switch off the URL globbing function. When you set this option, you can
1962-specify URLs that contain the letters {}[] without having curl itself
1963-interpret them. Note that these letters are not normal legal URL contents but
1964-they should be encoded according to the URI standard.
1965-
1966-Providing --globoff multiple times has no extra effect.
1967-Disable it again with \-\-no-globoff.
1968-
1969-Example:
1970-.nf
1971-curl -g "https://example.com/{[]}}}}"
1972-.fi
1973-
1974-See also \fI-K, \-\-config\fP and \fI-q, \-\-disable\fP.
1975-.IP "\-\-happy\-eyeballs\-timeout\-ms <ms>"
1976-Set the timeout for Happy Eyeballs.
1977-
1978-Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
1979-addresses for dual\-stack hosts, giving IPv6 a head\-start of the specified
1980-number of milliseconds. If the IPv6 address cannot be connected to within that
1981-time, then a connection attempt is made to the IPv4 address in parallel. The
1982-first connection to be established is the one that is used.
1983-
1984-The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
1985-\&"It is RECOMMENDED that connection attempts be paced 150\-250 ms apart to
1986-balance human factors against network load." libcurl currently defaults to
1987-200 ms. Firefox and Chrome currently default to 300 ms.
1988-
1989-If --happy-eyeballs-timeout-ms is provided several times, the last set value is used.
1990-
1991-Example:
1992-.nf
1993-curl --happy-eyeballs-timeout-ms 500 https://example.com
1994-.fi
1995-
1996-See also \fI-m, \-\-max\-time\fP and \fI\-\-connect\-timeout\fP.
1997-.IP "\-\-haproxy\-clientip <ip>"
1998-(HTTP) Set a client IP in HAProxy PROXY protocol v1 header at the beginning of the
1999-connection.
2000-
2001-For valid requests, IPv4 addresses must be indicated as a series of exactly
2002-4 integers in the range [0..255] inclusive written in decimal representation
2003-separated by exactly one dot between each other. Heading zeroes are not
2004-permitted in front of numbers in order to avoid any possible confusion
2005-with octal numbers. IPv6 addresses must be indicated as series of 4 hexadecimal
2006-digits (upper or lower case) delimited by colons between each other, with the
2007-acceptance of one double colon sequence to replace the largest acceptable range
2008-of consecutive zeroes. The total number of decoded bits must be exactly 128.
2009-
2010-Otherwise, any string can be accepted for the client IP and get sent.
2011-
2012-It replaces \fI\-\-haproxy\-protocol\fP if used, it is not necessary to specify both flags.
2013-
2014-If --haproxy-clientip is provided several times, the last set value is used.
2015-
2016-Example:
2017-.nf
2018-curl --haproxy-clientip $IP
2019-.fi
2020-
2021-Added in 8.2.0. See also \fI-x, \-\-proxy\fP.
2022-.IP "\-\-haproxy\-protocol"
2023-(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the connection.
2024-This is used by some load balancers and reverse proxies to indicate the
2025-client\(aqs true IP address and port.
2026-
2027-This option is primarily useful when sending test requests to a service that
2028-expects this header.
2029-
2030-Providing --haproxy-protocol multiple times has no extra effect.
2031-Disable it again with \-\-no-haproxy-protocol.
2032-
2033-Example:
2034-.nf
2035-curl --haproxy-protocol https://example.com
2036-.fi
2037-
2038-Added in 7.60.0. See also \fI-x, \-\-proxy\fP.
2039-.IP "\-I, \-\-head"
2040-(HTTP FTP FILE) Fetch the headers only. HTTP\-servers feature the command HEAD which this uses
2041-to get nothing but the header of a document. When used on an FTP or FILE URL,
2042-curl displays the file size and last modification time only.
2043-
2044-Providing --head multiple times has no extra effect.
2045-Disable it again with \-\-no-head.
2046-
2047-Example:
2048-.nf
2049-curl -I https://example.com
2050-.fi
2051-
2052-See also \fI-G, \-\-get\fP, \fI-v, \-\-verbose\fP and \fI\-\-trace\-ascii\fP.
2053-.IP "\-H, \-\-header <header/@file>"
2054-(HTTP IMAP SMTP) Extra header to include in information sent. When used within an HTTP request,
2055-it is added to the regular request headers.
2056-
2057-For an IMAP or SMTP MIME uploaded mail built with \fI\-F, \-\-form\fP options, it is
2058-prepended to the resulting MIME document, effectively including it at the mail
2059-global level. It does not affect raw uploaded mails.
2060-
2061-You may specify any number of extra headers. Note that if you should add a
2062-custom header that has the same name as one of the internal ones curl would
2063-use, your externally set header is used instead of the internal one. This
2064-allows you to make even trickier stuff than curl would normally do. You should
2065-not replace internally set headers without knowing perfectly well what you are
2066-doing. Remove an internal header by giving a replacement without content on
2067-the right side of the colon, as in: \-H "Host:". If you send the custom header
2068-with no\-value then its header must be terminated with a semicolon, such as \-H
2069-\&"X\-Custom\-Header;" to send "X\-Custom\-Header:".
2070-
2071-curl makes sure that each header you add/replace is sent with the proper
2072-end\-of\-line marker, you should thus \fBnot\fP add that as a part of the header
2073-content: do not add newlines or carriage returns, they only mess things up for
2074-you. curl passes on the verbatim string you give it without any filter or
2075-other safe guards. That includes white space and control characters.
2076-
2077-This option can take an argument in @filename style, which then adds a header
2078-for each line in the input file. Using @\- makes curl read the header file from
2079-stdin.
2080-
2081-Please note that most anti\-spam utilities check the presence and value of
2082-several MIME mail headers: these are "From:", "To:", "Date:" and "Subject:"
2083-among others and should be added with this option.
2084-
2085-You need \fI\-\-proxy\-header\fP to send custom headers intended for an HTTP proxy.
2086-
2087-
2088-Passing on a "Transfer\-Encoding: chunked" header when doing an HTTP request
2089-with a request body, makes curl send the data using chunked encoding.
2090-
2091-\fBWARNING\fP: headers set with this option are set in all HTTP requests \- even
2092-after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can lead to
2093-the header being sent to other hosts than the original host, so sensitive
2094-headers should be used with caution combined with following redirects.
2095-
2096-\&"Authorization:" and "Cookie:" headers are explicitly \fInot\fP passed on in HTTP
2097-requests when following redirects to other origins, unless \fI\-\-location\-trusted\fP
2098-is used.
2099-
2100---header can be used several times in a command line
2101-
2102-Examples:
2103-.nf
2104-curl -H "X-First-Name: Joe" https://example.com
2105-curl -H "User-Agent: yes-please/2000" https://example.com
2106-curl -H "Host:" https://example.com
2107-curl -H @headers.txt https://example.com
2108-.fi
2109-
2110-See also \fI-A, \-\-user\-agent\fP and \fI-e, \-\-referer\fP.
2111-.IP "\-h, \-\-help <subject>"
2112-Usage help. Provide help for the subject given as an optional argument.
2113-
2114-If no argument is provided, curl displays the most important command line
2115-arguments.
2116-
2117-The argument can either be a \fBcategory\fP or a \fBcommand line option\fP. When a
2118-category is provided, curl shows all command line options within the given
2119-category. Specify category "all" to list all available options.
2120-
2121-If "category" is specified, curl displays all available help categories.
2122-
2123-If the provided subject is instead an existing command line option, specified
2124-either in its short form with a single dash and a single letter, or in the
2125-long form with two dashes and a longer name, curl displays a help text for
2126-that option in the terminal.
2127-
2128-The help output is extensive for some options.
2129-
2130-If the provided command line option is not known, curl says so.
2131-
2132-Examples:
2133-.nf
2134-curl --help all
2135-curl --help --insecure
2136-curl --help -f
2137-.fi
2138-
2139-See also \fI-v, \-\-verbose\fP.
2140-.IP "\-\-hostpubmd5 <md5>"
2141-(SFTP SCP) Pass a string containing 32 hexadecimal digits. The string should be the 128
2142-bit \fBMD5\fP checksum of the remote host\(aqs public key, curl refuses the
2143-connection with the host unless the checksums match.
2144-
2145-If --hostpubmd5 is provided several times, the last set value is used.
2146-
2147-Example:
2148-.nf
2149-curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
2150-.fi
2151-
2152-See also \fI\-\-hostpubsha256\fP.
2153-.IP "\-\-hostpubsha256 <sha256>"
2154-(SFTP SCP) Pass a string containing a Base64\-encoded SHA256 hash of the remote host\(aqs
2155-public key. curl refuses the connection with the host unless the hashes match.
2156-
2157-This feature requires libcurl to be built with libssh2 and does not work with
2158-other SSH backends.
2159-
2160-If --hostpubsha256 is provided several times, the last set value is used.
2161-
2162-Example:
2163-.nf
2164-curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
2165-.fi
2166-
2167-Added in 7.80.0. See also \fI\-\-hostpubmd5\fP.
2168-.IP "\-\-hsts <filename>"
2169-(HTTPS) Enable HSTS for the transfer. If the filename points to an existing HSTS cache
2170-file, that is used. After a completed transfer, the cache is saved to the
2171-filename again if it has been modified.
2172-
2173-If curl is told to use HTTP:// for a transfer involving a hostname that exists
2174-in the HSTS cache, it upgrades the transfer to use HTTPS. Each HSTS cache
2175-entry has an individual lifetime after which the upgrade is no longer
2176-performed.
2177-
2178-Specify a "" filename (zero length) to avoid loading/saving and make curl just
2179-handle HSTS in memory.
2180-
2181-If this option is used several times, curl loads contents from all the
2182-files but the last one is used for saving.
2183-
2184---hsts can be used several times in a command line
2185-
2186-Example:
2187-.nf
2188-curl --hsts cache.txt https://example.com
2189-.fi
2190-
2191-Added in 7.74.0. See also \fI\-\-proto\fP.
2192-.IP "\-\-http0.9"
2193-(HTTP) Accept an HTTP version 0.9 response.
2194-
2195-HTTP/0.9 is a response without headers and therefore you can also connect with
2196-this to non\-HTTP servers and still get a response since curl simply
2197-transparently downgrades \- if allowed.
2198-
2199-HTTP/0.9 is disabled by default (added in 7.66.0)
2200-
2201-Providing --http0.9 multiple times has no extra effect.
2202-Disable it again with \-\-no-http0.9.
2203-
2204-Example:
2205-.nf
2206-curl --http0.9 https://example.com
2207-.fi
2208-
2209-Added in 7.64.0. See also \fI\-\-http1.1\fP, \fI\-\-http2\fP and \fI\-\-http3\fP.
2210-.IP "\-0, \-\-http1.0"
2211-(HTTP) Use HTTP version 1.0 instead of using its internally preferred HTTP version.
2212-
2213-Providing --http1.0 multiple times has no extra effect.
2214-
2215-Example:
2216-.nf
2217-curl --http1.0 https://example.com
2218-.fi
2219-
2220-This option is mutually exclusive with \fI\-\-http1.1\fP, \fI\-\-http2\fP, \fI\-\-http2\-prior\-knowledge\fP and \fI\-\-http3\fP.
2221-See also \fI\-\-http0.9\fP and \fI\-\-http1.1\fP.
2222-.IP "\-\-http1.1"
2223-(HTTP) Use HTTP version 1.1. This is the default with HTTP:// URLs.
2224-
2225-Providing --http1.1 multiple times has no extra effect.
2226-
2227-Example:
2228-.nf
2229-curl --http1.1 https://example.com
2230-.fi
2231-
2232-This option is mutually exclusive with \fI\-\-http1.0\fP, \fI\-\-http2\fP, \fI\-\-http2\-prior\-knowledge\fP and \fI\-\-http3\fP.
2233-See also \fI\-\-http1.0\fP and \fI\-\-http0.9\fP.
2234-.IP "\-\-http2"
2235-(HTTP) Use HTTP/2.
2236-
2237-For HTTPS, this means curl negotiates HTTP/2 in the TLS handshake. curl does
2238-this by default.
2239-
2240-For HTTP, this means curl attempts to upgrade the request to HTTP/2 using the
2241-Upgrade: request header.
2242-
2243-When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
2244-higher even though that is required by the specification. A user can add this
2245-version requirement with \fI\-\-tlsv1.2\fP.
2246-
2247-Providing --http2 multiple times has no extra effect.
2248-
2249-Example:
2250-.nf
2251-curl --http2 https://example.com
2252-.fi
2253-
2254-\fI\-\-http2\fP requires that libcurl is built to support HTTP/2.
2255-This option is mutually exclusive with \fI\-\-http1.1\fP, \fI\-\-http1.0\fP, \fI\-\-http2\-prior\-knowledge\fP and \fI\-\-http3\fP.
2256-See also \fI\-\-http1.1\fP, \fI\-\-http3\fP and \fI\-\-no\-alpn\fP.
2257-.IP "\-\-http2\-prior\-knowledge"
2258-(HTTP) Issue a non\-TLS HTTP request using HTTP/2 directly without HTTP/1.1 Upgrade.
2259-It requires prior knowledge that the server supports HTTP/2 straight away.
2260-HTTPS requests still do HTTP/2 the standard way with negotiated protocol
2261-versions in the TLS handshake.
2262-
2263-Since 8.10.0 if this option is set for an HTTPS request then the application
2264-layer protocol version (ALPN) offered to the server is only HTTP/2. Prior to
2265-that both HTTP/1.1 and HTTP/2 were offered.
2266-
2267-Providing --http2-prior-knowledge multiple times has no extra effect.
2268-Disable it again with \-\-no-http2-prior-knowledge.
2269-
2270-Example:
2271-.nf
2272-curl --http2-prior-knowledge https://example.com
2273-.fi
2274-
2275-\fI\-\-http2\-prior\-knowledge\fP requires that libcurl is built to support HTTP/2.
2276-This option is mutually exclusive with \fI\-\-http1.1\fP, \fI\-\-http1.0\fP, \fI\-\-http2\fP and \fI\-\-http3\fP.
2277-See also \fI\-\-http2\fP and \fI\-\-http3\fP.
2278-.IP "\-\-http3"
2279-(HTTP) Attempt HTTP/3 to the host in the URL, but fallback to earlier HTTP versions
2280-if the HTTP/3 connection establishment fails or is slow. HTTP/3 is only
2281-available for HTTPS and not for HTTP URLs.
2282-
2283-This option allows a user to avoid using the Alt\-Svc method of upgrading to
2284-HTTP/3 when you know or suspect that the target speaks HTTP/3 on the given
2285-host and port.
2286-
2287-When asked to use HTTP/3, curl issues a separate attempt to use older HTTP
2288-versions with a slight delay, so if the HTTP/3 transfer fails or is slow, curl
2289-still tries to proceed with an older HTTP version. The fallback performs the
2290-regular negotiation between HTTP/1 and HTTP/2.
2291-
2292-Use \fI\-\-http3\-only\fP for similar functionality \fIwithout\fP a fallback.
2293-
2294-Providing --http3 multiple times has no extra effect.
2295-
2296-Example:
2297-.nf
2298-curl --http3 https://example.com
2299-.fi
2300-
2301-\fI\-\-http3\fP requires that libcurl is built to support HTTP/3.
2302-This option is mutually exclusive with \fI\-\-http1.1\fP, \fI\-\-http1.0\fP, \fI\-\-http2\fP, \fI\-\-http2\-prior\-knowledge\fP and \fI\-\-http3\-only\fP.
2303-Added in 7.66.0. See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
2304-.IP "\-\-http3\-only"
2305-(HTTP) Instruct curl to use HTTP/3 to the host in the URL, with no fallback to
2306-earlier HTTP versions. HTTP/3 can only be used for HTTPS and not for HTTP
2307-URLs. For HTTP, this option triggers an error.
2308-
2309-This option allows a user to avoid using the Alt\-Svc method of upgrading to
2310-HTTP/3 when you know that the target speaks HTTP/3 on the given host and port.
2311-
2312-This option makes curl fail if a QUIC connection cannot be established, it
2313-does not attempt any other HTTP versions on its own. Use \fI\-\-http3\fP for similar
2314-functionality \fIwith\fP a fallback.
2315-
2316-Providing --http3-only multiple times has no extra effect.
2317-
2318-Example:
2319-.nf
2320-curl --http3-only https://example.com
2321-.fi
2322-
2323-\fI\-\-http3\-only\fP requires that libcurl is built to support HTTP/3.
2324-This option is mutually exclusive with \fI\-\-http1.1\fP, \fI\-\-http1.0\fP, \fI\-\-http2\fP, \fI\-\-http2\-prior\-knowledge\fP and \fI\-\-http3\fP.
2325-Added in 7.88.0. See also \fI\-\-http1.1\fP, \fI\-\-http2\fP and \fI\-\-http3\fP.
2326-.IP "\-\-ignore\-content\-length"
2327-(FTP HTTP) For HTTP, ignore the Content\-Length header. This is particularly useful for
2328-servers running Apache 1.x, which reports incorrect Content\-Length for files
2329-larger than 2 gigabytes.
2330-
2331-For FTP, this makes curl skip the SIZE command to figure out the size before
2332-downloading a file.
2333-
2334-Providing --ignore-content-length multiple times has no extra effect.
2335-Disable it again with \-\-no-ignore-content-length.
2336-
2337-Example:
2338-.nf
2339-curl --ignore-content-length https://example.com
2340-.fi
2341-
2342-See also \fI\-\-ftp\-skip\-pasv\-ip\fP.
2343-.IP "\-k, \-\-insecure"
2344-(TLS SFTP SCP) By default, every secure connection curl makes is verified to be secure before
2345-the transfer takes place. This option makes curl skip the verification step
2346-and proceed without checking.
2347-
2348-When this option is not used for protocols using TLS, curl verifies the
2349-server\(aqs TLS certificate before it continues: that the certificate contains
2350-the right name which matches the hostname used in the URL and that the
2351-certificate has been signed by a CA certificate present in the cert store. See
2352-this online resource for further details:
2353-\fBhttps://curl.se/docs/sslcerts.html\fP
2354-
2355-For SFTP and SCP, this option makes curl skip the \fIknown_hosts\fP verification.
2356-\fIknown_hosts\fP is a file normally stored in the user\(aqs home directory in the
2357-\&".ssh" subdirectory, which contains hostnames and their public keys.
2358-
2359-\fBWARNING\fP: using this option makes the transfer insecure.
2360-
2361-When curl uses secure protocols it trusts responses and allows for example
2362-HSTS and Alt\-Svc information to be stored and used subsequently. Using
2363-\fI\-k, \-\-insecure\fP can make curl trust and use such information from malicious
2364-servers.
2365-
2366-Providing --insecure multiple times has no extra effect.
2367-Disable it again with \-\-no-insecure.
2368-
2369-Example:
2370-.nf
2371-curl --insecure https://example.com
2372-.fi
2373-
2374-See also \fI\-\-proxy\-insecure\fP, \fI\-\-cacert\fP and \fI\-\-capath\fP.
2375-.IP "\-\-interface <name>"
2376-Perform the operation using a specified interface. You can enter interface
2377-name, IP address or hostname. If you prefer to be specific, you can use the
2378-following special syntax:
2379-.RS
2380-.IP if!<name>
2381-Interface name. If the provided name does not match an existing interface,
2382-curl returns with error 45.
2383-.IP host!<name>
2384-IP address or hostname.
2385-.IP ifhost!<interface>!<host>
2386-Interface name and IP address or hostname. This syntax requires libcurl 8.9.0
2387-or later.
2388-
2389-If the provided name does not match an existing interface, curl returns with
2390-error 45.
2391-.RE
2392-.IP
2393-curl does not support using network interface names for this option on
2394-Windows.
2395-
2396-That name resolve operation if a hostname is provided does \fBnot\fP use
2397-DNS\-over\-HTTPS even if \fI\-\-doh\-url\fP is set.
2398-
2399-On Linux this option can be used to specify a \fBVRF\fP (Virtual Routing and
2400-Forwarding) device, but the binary then needs to either have the
2401-\fBCAP_NET_RAW\fP capability set or to be run as root.
2402-
2403-If --interface is provided several times, the last set value is used.
2404-
2405-Examples:
2406-.nf
2407-curl --interface eth0 https://example.com
2408-curl --interface "host!10.0.0.1" https://example.com
2409-curl --interface "if!enp3s0" https://example.com
2410-.fi
2411-
2412-See also \fI\-\-dns\-interface\fP.
2413-.IP "\-\-ip\-tos <string>"
2414-(All) Set Type of Service (TOS) for IPv4 or Traffic Class for IPv6.
2415-
2416-The values allowed for <string> can be a numeric value between 1 and 255
2417-or one of the following:
2418-
2419-CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23,
2420-AF31, AF32, AF33, AF41, AF42, AF43, EF, VOICE\-ADMIT, ECT1, ECT0, CE, LE,
2421-LOWCOST, LOWDELAY, THROUGHPUT, RELIABILITY, MINCOST
2422-
2423-If --ip-tos is provided several times, the last set value is used.
2424-
2425-Example:
2426-.nf
2427-curl --ip-tos CS5 https://example.com
2428-.fi
2429-
2430-Added in 8.9.0. See also \fI\-\-tcp\-nodelay\fP and \fI\-\-vlan\-priority\fP.
2431-.IP "\-\-ipfs\-gateway <URL>"
2432-(IPFS) Specify which gateway to use for IPFS and IPNS URLs. Not specifying this
2433-instead makes curl check if the IPFS_GATEWAY environment variable is set, or
2434-if a "~/.ipfs/gateway" file holding the gateway URL exists.
2435-
2436-If you run a local IPFS node, this gateway is by default available under
2437-\&"http://localhost:8080". A full example URL would look like:
2438-
2439-.nf
2440-curl \--ipfs\-gateway http://localhost:8080 \\
2441- ipfs://bafybeigagd5nmnn2iys2f3
2442-.fi
2443-
2444-There are many public IPFS gateways. See for example:
2445-https://ipfs.github.io/public\-gateway\-checker/
2446-
2447-If you opt to go for a remote gateway you need to be aware that you completely
2448-trust the gateway. This might be fine in local gateways that you host
2449-yourself. With remote gateways there could potentially be malicious actors
2450-returning you data that does not match the request you made, inspect or even
2451-interfere with the request. You may not notice this when using curl. A
2452-mitigation could be to go for a "trustless" gateway. This means you locally
2453-verify the data. Consult the docs page on trusted vs trustless:
2454-https://docs.ipfs.tech/reference/http/gateway/#trusted\-vs\-trustless
2455-
2456-If --ipfs-gateway is provided several times, the last set value is used.
2457-
2458-Example:
2459-.nf
2460-curl --ipfs-gateway https://example.com ipfs://
2461-.fi
2462-
2463-Added in 8.4.0. See also \fI-h, \-\-help\fP and \fI-M, \-\-manual\fP.
2464-.IP "\-4, \-\-ipv4"
2465-Use IPv4 addresses only when resolving hostnames, and not for example try
2466-IPv6.
2467-
2468-Providing --ipv4 multiple times has no extra effect.
2469-
2470-Example:
2471-.nf
2472-curl --ipv4 https://example.com
2473-.fi
2474-
2475-This option is mutually exclusive with \fI-6, \-\-ipv6\fP.
2476-See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
2477-.IP "\-6, \-\-ipv6"
2478-Use IPv6 addresses only when resolving hostnames, and not for example try
2479-IPv4.
2480-
2481-Your resolver may respond to an IPv6\-only resolve request by returning IPv6
2482-addresses that contain "mapped" IPv4 addresses for compatibility purposes.
2483-macOS is known to do this.
2484-
2485-Providing --ipv6 multiple times has no extra effect.
2486-
2487-Example:
2488-.nf
2489-curl --ipv6 https://example.com
2490-.fi
2491-
2492-This option is mutually exclusive with \fI-4, \-\-ipv4\fP.
2493-See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
2494-.IP "\-\-json <data>"
2495-(HTTP) Send the specified JSON data in a POST request to the HTTP server. \fI\-\-json\fP
2496-works as a shortcut for passing on these three options:
2497-
2498-.nf
2499--\-data\-binary [arg]
2500--\-header "Content\-Type: application/json"
2501--\-header "Accept: application/json"
2502-.fi
2503-
2504-There is \fBno verification\fP that the passed in data is actual JSON or that
2505-the syntax is correct.
2506-
2507-If you start the data with the letter @, the rest should be a filename to read
2508-the data from, or a single dash (\-) if you want curl to read the data from
2509-stdin. Posting data from a file named \(aqfoobar\(aq would thus be done with \fI\-\-json\fP
2510-@foobar and to instead read the data from stdin, use \fI\-\-json\fP @\-.
2511-
2512-If this option is used more than once on the same command line, the additional
2513-data pieces are concatenated to the previous before sending.
2514-
2515-The headers this option sets can be overridden with \fI\-H, \-\-header\fP as usual.
2516-
2517---json can be used several times in a command line
2518-
2519-Examples:
2520-.nf
2521-curl --json '{ "drink": "coffe" }' https://example.com
2522-curl --json '{ "drink":' --json ' "coffe" }' https://example.com
2523-curl --json @prepared https://example.com
2524-curl --json @- https://example.com < json.txt
2525-.fi
2526-
2527-This option is mutually exclusive with \fI-F, \-\-form\fP, \fI-I, \-\-head\fP and \fI-T, \-\-upload\-file\fP.
2528-Added in 7.82.0. See also \fI\-\-data\-binary\fP and \fI\-\-data\-raw\fP.
2529-.IP "\-j, \-\-junk\-session\-cookies"
2530-(HTTP) When curl is told to read cookies from a given file, this option makes it
2531-discard all "session cookies". This has the same effect as if a new session is
2532-started. Typical browsers discard session cookies when they are closed down.
2533-
2534-Providing --junk-session-cookies multiple times has no extra effect.
2535-Disable it again with \-\-no-junk-session-cookies.
2536-
2537-Example:
2538-.nf
2539-curl --junk-session-cookies -b cookies.txt https://example.com
2540-.fi
2541-
2542-See also \fI-b, \-\-cookie\fP and \fI-c, \-\-cookie\-jar\fP.
2543-.IP "\-\-keepalive\-cnt <integer>"
2544-Set the maximum number of keepalive probes TCP should send but get no response
2545-before dropping the connection. This option is usually used in conjunction
2546-with \fI\-\-keepalive\-time\fP.
2547-
2548-This option is supported on Linux, *BSD/macOS, Windows >=10.0.16299, Solaris
2549-11.4, and recent AIX, HP\-UX and more. This option has no effect if
2550-\fI\-\-no\-keepalive\fP is used.
2551-
2552-If unspecified, the option defaults to 9.
2553-
2554-If --keepalive-cnt is provided several times, the last set value is used.
2555-
2556-Example:
2557-.nf
2558-curl --keepalive-cnt 3 https://example.com
2559-.fi
2560-
2561-Added in 8.9.0. See also \fI\-\-keepalive\-time\fP and \fI\-\-no\-keepalive\fP.
2562-.IP "\-\-keepalive\-time <seconds>"
2563-Set the time a connection needs to remain idle before sending keepalive probes
2564-and the time between individual keepalive probes. It is currently effective on
2565-operating systems offering the "TCP_KEEPIDLE" and "TCP_KEEPINTVL" socket
2566-options (meaning Linux, *BSD/macOS, Windows, Solaris, and recent AIX, HP\-UX and more).
2567-Keepalive is used by the TCP stack to detect broken networks on idle connections.
2568-The number of missed keepalive probes before declaring the connection down is OS
2569-dependent and is commonly 8 (*BSD/macOS/AIX), 9 (Linux/AIX) or 5/10 (Windows), and
2570-this number can be changed by specifying the curl option "keepalive\-cnt".
2571-Note that this option has no effect if \fI\-\-no\-keepalive\fP is used.
2572-
2573-If unspecified, the option defaults to 60 seconds.
2574-
2575-If --keepalive-time is provided several times, the last set value is used.
2576-
2577-Example:
2578-.nf
2579-curl --keepalive-time 20 https://example.com
2580-.fi
2581-
2582-See also \fI\-\-no\-keepalive\fP, \fI\-\-keepalive\-cnt\fP and \fI-m, \-\-max\-time\fP.
2583-.IP "\-\-key <key>"
2584-(TLS SSH) Private key filename. Allows you to provide your private key in this separate
2585-file. For SSH, if not specified, curl tries the following candidates in order:
2586-\&"~/.ssh/id_rsa", "~/.ssh/id_dsa", "./id_rsa", "./id_dsa".
2587-
2588-If curl is built against OpenSSL library, and the engine pkcs11 or pkcs11
2589-provider is available, then a PKCS#11 URI (RFC 7512) can be used to specify a
2590-private key located in a PKCS#11 device. A string beginning with "pkcs11:" is
2591-interpreted as a PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP
2592-option is set as "pkcs11" if none was provided and the \fI\-\-key\-type\fP option is
2593-set as "ENG" or "PROV" if none was provided (depending on OpenSSL version).
2594-
2595-If curl is built against Secure Transport or Schannel then this option is
2596-ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
2597-to be already present in the keychain or PKCS#12 file containing the
2598-certificate.
2599-
2600-If --key is provided several times, the last set value is used.
2601-
2602-Example:
2603-.nf
2604-curl --cert certificate --key here https://example.com
2605-.fi
2606-
2607-See also \fI\-\-key\-type\fP and \fI-E, \-\-cert\fP.
2608-.IP "\-\-key\-type <type>"
2609-(TLS) Private key file type. Specify which type your \fI\-\-key\fP provided private key
2610-is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.
2611-
2612-If --key-type is provided several times, the last set value is used.
2613-
2614-Example:
2615-.nf
2616-curl --key-type DER --key here https://example.com
2617-.fi
2618-
2619-See also \fI\-\-key\fP.
2620-.IP "\-\-krb <level>"
2621-(FTP) Enable Kerberos authentication and use. The level must be entered and should
2622-be one of \(aqclear\(aq, \(aqsafe\(aq, \(aqconfidential\(aq, or \(aqprivate\(aq. Should you use a
2623-level that is not one of these, \(aqprivate\(aq is used.
2624-
2625-If --krb is provided several times, the last set value is used.
2626-
2627-Example:
2628-.nf
2629-curl --krb clear ftp://example.com/
2630-.fi
2631-
2632-\fI\-\-krb\fP requires that libcurl is built to support Kerberos.
2633-See also \fI\-\-delegation\fP and \fI\-\-ssl\fP.
2634-.IP "\-\-libcurl <file>"
2635-Append this option to any ordinary curl command line, and you get
2636-libcurl\-using C source code written to the file that does the equivalent of
2637-what your command\-line operation does.
2638-
2639-This option is global and does not need to be specified for each use of --next.
2640-
2641-If --libcurl is provided several times, the last set value is used.
2642-
2643-Example:
2644-.nf
2645-curl --libcurl client.c https://example.com
2646-.fi
2647-
2648-See also \fI-v, \-\-verbose\fP.
2649-.IP "\-\-limit\-rate <speed>"
2650-Specify the maximum transfer rate you want curl to use \- for both downloads
2651-and uploads. This feature is useful if you have a limited pipe and you would
2652-like your transfer not to use your entire bandwidth. To make it slower than it
2653-otherwise would be.
2654-
2655-The given speed is measured in bytes/second, unless a suffix is appended.
2656-Appending \(aqk\(aq or \(aqK\(aq counts the number as kilobytes, \(aqm\(aq or \(aqM\(aq makes it
2657-megabytes, while \(aqg\(aq or \(aqG\(aq makes it gigabytes. The suffixes (k, M, G, T, P)
2658-are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G.
2659-
2660-The rate limiting logic works on averaging the transfer speed to no more than
2661-the set threshold over a period of multiple seconds.
2662-
2663-If you also use the \fI\-Y, \-\-speed\-limit\fP option, that option takes precedence and
2664-might cripple the rate\-limiting slightly, to help keep the speed\-limit
2665-logic working.
2666-
2667-If --limit-rate is provided several times, the last set value is used.
2668-
2669-Examples:
2670-.nf
2671-curl --limit-rate 100K https://example.com
2672-curl --limit-rate 1000 https://example.com
2673-curl --limit-rate 10M https://example.com
2674-.fi
2675-
2676-See also \fI\-\-rate\fP, \fI-Y, \-\-speed\-limit\fP and \fI-y, \-\-speed\-time\fP.
2677-.IP "\-l, \-\-list\-only"
2678-(FTP POP3 SFTP FILE) When listing an FTP directory, force a name\-only view. Maybe particularly
2679-useful if the user wants to machine\-parse the contents of an FTP directory
2680-since the normal directory view does not use a standard look or format. When
2681-used like this, the option causes an NLST command to be sent to the server
2682-instead of LIST.
2683-
2684-Note: Some FTP servers list only files in their response to NLST; they do not
2685-include sub\-directories and symbolic links.
2686-
2687-When listing an SFTP directory, this switch forces a name\-only view, one per
2688-line. This is especially useful if the user wants to machine\-parse the
2689-contents of an SFTP directory since the normal directory view provides more
2690-information than just filenames.
2691-
2692-When retrieving a specific email from POP3, this switch forces a LIST command
2693-to be performed instead of RETR. This is particularly useful if the user wants
2694-to see if a specific message\-id exists on the server and what size it is.
2695-
2696-For FILE, this option has no effect yet as directories are always listed in
2697-this mode.
2698-
2699-Note: When combined with \fI\-X, \-\-request\fP, this option can be used to send a UIDL
2700-command instead, so the user may use the email\(aqs unique identifier rather than
2701-its message\-id to make the request.
2702-
2703-Providing --list-only multiple times has no extra effect.
2704-Disable it again with \-\-no-list-only.
2705-
2706-Example:
2707-.nf
2708-curl --list-only ftp://example.com/dir/
2709-.fi
2710-
2711-See also \fI-Q, \-\-quote\fP and \fI-X, \-\-request\fP.
2712-.IP "\-\-local\-port <range>"
2713-Set a preferred single number or range (FROM\-TO) of local port numbers to use
2714-for the connection(s). Note that port numbers by nature are a scarce resource
2715-so setting this range to something too narrow might cause unnecessary
2716-connection setup failures.
2717-
2718-If --local-port is provided several times, the last set value is used.
2719-
2720-Example:
2721-.nf
2722-curl --local-port 1000-3000 https://example.com
2723-.fi
2724-
2725-See also \fI-g, \-\-globoff\fP.
2726-.IP "\-L, \-\-location"
2727-(HTTP) If the server reports that the requested page has moved to a different
2728-location (indicated with a Location: header and a 3XX response code), this
2729-option makes curl redo the request to the new place. If used together with
2730-\fI\-i, \-\-show\-headers\fP or \fI\-I, \-\-head\fP, headers from all requested pages are shown.
2731-
2732-When authentication is used, or when sending a cookie with "\-H Cookie:", curl
2733-only sends its credentials to the initial host. If a redirect takes curl to a
2734-different host, it does not get the credentials passed on. See
2735-\fI\-\-location\-trusted\fP on how to change this.
2736-
2737-Limit the amount of redirects to follow by using the \fI\-\-max\-redirs\fP option.
2738-
2739-When curl follows a redirect and if the request is a POST, it sends the
2740-following request with a GET if the HTTP response was 301, 302, or 303. If the
2741-response code was any other 3xx code, curl resends the following request using
2742-the same unmodified method.
2743-
2744-You can tell curl to not change POST requests to GET after a 30x response by
2745-using the dedicated options for that: \fI\-\-post301\fP, \fI\-\-post302\fP and \fI\-\-post303\fP.
2746-
2747-The method set with \fI\-X, \-\-request\fP overrides the method curl would otherwise select
2748-to use.
2749-
2750-Providing --location multiple times has no extra effect.
2751-Disable it again with \-\-no-location.
2752-
2753-Example:
2754-.nf
2755-curl -L https://example.com
2756-.fi
2757-
2758-See also \fI\-\-resolve\fP and \fI\-\-alt\-svc\fP.
2759-.IP "\-\-location\-trusted"
2760-(HTTP) Instruct curl to follow HTTP redirects like \fI\-L, \-\-location\fP, but permit curl to
2761-send credentials and other secrets along to other hosts than the initial one.
2762-
2763-This may or may not introduce a security breach if the site redirects you to a
2764-site to which you send this sensitive data to. Another host means that one or
2765-more of hostname, protocol scheme or port number changed.
2766-
2767-This option also allows curl to pass long cookies set explicitly with \fI\-H, \-\-header\fP.
2768-
2769-Providing --location-trusted multiple times has no extra effect.
2770-Disable it again with \-\-no-location-trusted.
2771-
2772-Examples:
2773-.nf
2774-curl --location-trusted -u user:password https://example.com
2775-curl --location-trusted -H "Cookie: session=abc" https://example.com
2776-.fi
2777-
2778-See also \fI-u, \-\-user\fP.
2779-.IP "\-\-login\-options <options>"
2780-(IMAP LDAP POP3 SMTP) Specify the login options to use during server authentication.
2781-
2782-You can use login options to specify protocol specific options that may be
2783-used during authentication. At present only IMAP, POP3 and SMTP support login
2784-options. For more information about login options please see RFC 2384,
2785-RFC 5092 and the IETF draft
2786-https://datatracker.ietf.org/doc/html/draft\-earhart\-url\-smtp\-00
2787-
2788-Since 8.2.0, IMAP supports the login option "AUTH=+LOGIN". With this option,
2789-curl uses the plain (not SASL) "LOGIN IMAP" command even if the server
2790-advertises SASL authentication. Care should be taken in using this option, as
2791-it sends your password over the network in plain text. This does not work if
2792-the IMAP server disables the plain "LOGIN" (e.g. to prevent password
2793-snooping).
2794-
2795-If --login-options is provided several times, the last set value is used.
2796-
2797-Example:
2798-.nf
2799-curl --login-options 'AUTH=*' imap://example.com
2800-.fi
2801-
2802-See also \fI-u, \-\-user\fP.
2803-.IP "\-\-mail\-auth <address>"
2804-(SMTP) Specify a single address. This is used to specify the authentication address
2805-(identity) of a submitted message that is being relayed to another server.
2806-
2807-If --mail-auth is provided several times, the last set value is used.
2808-
2809-Example:
2810-.nf
2811-curl --mail-auth user@example.com -T mail smtp://example.com/
2812-.fi
2813-
2814-See also \fI\-\-mail\-rcpt\fP and \fI\-\-mail\-from\fP.
2815-.IP "\-\-mail\-from <address>"
2816-(SMTP) Specify a single address that the given mail should get sent from.
2817-
2818-If --mail-from is provided several times, the last set value is used.
2819-
2820-Example:
2821-.nf
2822-curl --mail-from user@example.com -T mail smtp://example.com/
2823-.fi
2824-
2825-See also \fI\-\-mail\-rcpt\fP and \fI\-\-mail\-auth\fP.
2826-.IP "\-\-mail\-rcpt <address>"
2827-(SMTP) Specify a single email address, username or mailing list name. Repeat this
2828-option several times to send to multiple recipients.
2829-
2830-When performing an address verification (\fBVRFY\fP command), the recipient
2831-should be specified as the username or username and domain (as per Section 3.5
2832-of RFC 5321).
2833-
2834-When performing a mailing list expand (EXPN command), the recipient should be
2835-specified using the mailing list name, such as "Friends" or "London\-Office".
2836-
2837-
2838---mail-rcpt can be used several times in a command line
2839-
2840-Example:
2841-.nf
2842-curl --mail-rcpt user@example.net smtp://example.com
2843-.fi
2844-
2845-See also \fI\-\-mail\-rcpt\-allowfails\fP.
2846-.IP "\-\-mail\-rcpt\-allowfails"
2847-(SMTP) When sending data to multiple recipients, by default curl aborts SMTP
2848-conversation if at least one of the recipients causes RCPT TO command to
2849-return an error.
2850-
2851-The default behavior can be changed by passing \fI\-\-mail\-rcpt\-allowfails\fP
2852-command\-line option which makes curl ignore errors and proceed with the
2853-remaining valid recipients.
2854-
2855-If all recipients trigger RCPT TO failures and this flag is specified, curl
2856-still aborts the SMTP conversation and returns the error received from to the
2857-last RCPT TO command.
2858-
2859-Providing --mail-rcpt-allowfails multiple times has no extra effect.
2860-Disable it again with \-\-no-mail-rcpt-allowfails.
2861-
2862-Example:
2863-.nf
2864-curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
2865-.fi
2866-
2867-Added in 7.69.0. See also \fI\-\-mail\-rcpt\fP.
2868-.IP "\-M, \-\-manual"
2869-Manual. Display the huge help text.
2870-
2871-Example:
2872-.nf
2873-curl --manual
2874-.fi
2875-
2876-See also \fI-v, \-\-verbose\fP, \fI\-\-libcurl\fP and \fI\-\-trace\fP.
2877-.IP "\-\-max\-filesize <bytes>"
2878-(FTP HTTP MQTT) When set to a non\-zero value, it specifies the maximum size (in bytes) of a
2879-file to download. If the file requested is larger than this value, the
2880-transfer does not start and curl returns with exit code 63.
2881-
2882-Setting the maximum value to zero disables the limit.
2883-
2884-A size modifier may be used. For example, Appending \(aqk\(aq or \(aqK\(aq counts the
2885-number as kilobytes, \(aqm\(aq or \(aqM\(aq makes it megabytes, while \(aqg\(aq or \(aqG\(aq makes it
2886-gigabytes. Examples: 200K, 3m and 1G.
2887-
2888-\fBNOTE\fP: before curl 8.4.0, when the file size is not known prior to
2889-download, for such files this option has no effect even if the file transfer
2890-ends up being larger than this given limit.
2891-
2892-Starting with curl 8.4.0, this option aborts the transfer if it reaches the
2893-threshold during transfer.
2894-
2895-If --max-filesize is provided several times, the last set value is used.
2896-
2897-Example:
2898-.nf
2899-curl --max-filesize 100K https://example.com
2900-.fi
2901-
2902-See also \fI\-\-limit\-rate\fP.
2903-.IP "\-\-max\-redirs <num>"
2904-(HTTP) Set the maximum number of redirections to follow. When \fI\-L, \-\-location\fP is used, to
2905-prevent curl from following too many redirects, by default, the limit is
2906-set to 50 redirects. Set this option to \-1 to make it unlimited.
2907-
2908-If --max-redirs is provided several times, the last set value is used.
2909-
2910-Example:
2911-.nf
2912-curl --max-redirs 3 --location https://example.com
2913-.fi
2914-
2915-See also \fI-L, \-\-location\fP.
2916-.IP "\-m, \-\-max\-time <seconds>"
2917-Set the maximum time in seconds that you allow each transfer to take. Prevents
2918-your batch jobs from hanging for hours due to slow networks or links going
2919-down. This option accepts decimal values.
2920-
2921-If you enable retrying the transfer (\fI\-\-retry\fP) then the maximum time counter is
2922-reset each time the transfer is retried. You can use \fI\-\-retry\-max\-time\fP to limit
2923-the retry time.
2924-
2925-The decimal value needs to be provided using a dot (.) as decimal separator \-
2926-not the local version even if it might be using another separator.
2927-
2928-If --max-time is provided several times, the last set value is used.
2929-
2930-Examples:
2931-.nf
2932-curl --max-time 10 https://example.com
2933-curl --max-time 2.92 https://example.com
2934-.fi
2935-
2936-See also \fI\-\-connect\-timeout\fP and \fI\-\-retry\-max\-time\fP.
2937-.IP "\-\-metalink"
2938-This option was previously used to specify a Metalink resource. Metalink
2939-support is disabled in curl for security reasons (added in 7.78.0).
2940-
2941-If --metalink is provided several times, the last set value is used.
2942-
2943-Example:
2944-.nf
2945-curl --metalink file https://example.com
2946-.fi
2947-
2948-See also \fI-Z, \-\-parallel\fP.
2949-.IP "\-\-mptcp"
2950-Enable the use of Multipath TCP (MPTCP) for connections. MPTCP is an extension
2951-to the standard TCP that allows multiple TCP streams over different network
2952-paths between the same source and destination. This can enhance bandwidth and
2953-improve reliability by using multiple paths simultaneously.
2954-
2955-MPTCP is beneficial in networks where multiple paths exist between clients and
2956-servers, such as mobile networks where a device may switch between WiFi and
2957-cellular data or in wired networks with multiple Internet Service Providers.
2958-
2959-This option is currently only supported on Linux starting from kernel 5.6. Only
2960-TCP connections are modified, hence this option does not affect HTTP/3 (QUIC)
2961-or UDP connections.
2962-
2963-The server curl connects to must also support MPTCP. If not, the connection
2964-seamlessly falls back to TCP.
2965-
2966-Providing --mptcp multiple times has no extra effect.
2967-Disable it again with \-\-no-mptcp.
2968-
2969-Example:
2970-.nf
2971-curl --mptcp https://example.com
2972-.fi
2973-
2974-Added in 8.9.0. See also \fI\-\-tcp\-fastopen\fP.
2975-.IP "\-\-negotiate"
2976-(HTTP) Enable Negotiate (SPNEGO) authentication.
2977-
2978-This option requires a library built with GSS\-API or SSPI support. Use
2979-\fI\-V, \-\-version\fP to see if your curl supports GSS\-API/SSPI or SPNEGO.
2980-
2981-When using this option, you must also provide a fake \fI\-u, \-\-user\fP option to activate
2982-the authentication code properly. Sending a \(aq\-u :\(aq is enough as the username
2983-and password from the \fI\-u, \-\-user\fP option are not actually used.
2984-
2985-Providing --negotiate multiple times has no extra effect.
2986-
2987-Example:
2988-.nf
2989-curl --negotiate -u : https://example.com
2990-.fi
2991-
2992-See also \fI\-\-basic\fP, \fI\-\-ntlm\fP, \fI\-\-anyauth\fP and \fI\-\-proxy\-negotiate\fP.
2993-.IP "\-n, \-\-netrc"
2994-Make curl scan the \fI.netrc\fP file in the user\(aqs home directory for login name
2995-and password. This is typically used for FTP on Unix. If used with HTTP, curl
2996-enables user authentication. See \fInetrc(5)\fP and \fIftp(1)\fP for details on the
2997-file format. curl does not complain if that file does not have the right
2998-permissions (it should be neither world\- nor group\-readable). The environment
2999-variable "HOME" is used to find the home directory.
3000-
3001-On Windows two filenames in the home directory are checked: \fI.netrc\fP and
3002-\fI_netrc\fP, preferring the former. Older versions on Windows checked for \fI_netrc\fP
3003-only.
3004-
3005-A quick and simple example of how to setup a \fI.netrc\fP to allow curl to FTP to
3006-the machine host.example.com with username \(aqmyself\(aq and password \(aqsecret\(aq could
3007-look similar to:
3008-
3009-.nf
3010-machine host.example.com
3011-login myself
3012-password secret
3013-.fi
3014-
3015-Providing --netrc multiple times has no extra effect.
3016-Disable it again with \-\-no-netrc.
3017-
3018-Example:
3019-.nf
3020-curl --netrc https://example.com
3021-.fi
3022-
3023-This option is mutually exclusive with \fI\-\-netrc\-file\fP and \fI\-\-netrc\-optional\fP.
3024-See also \fI\-\-netrc\-file\fP, \fI-K, \-\-config\fP and \fI-u, \-\-user\fP.
3025-.IP "\-\-netrc\-file <filename>"
3026-Set the netrc file to use. Similar to \fI\-n, \-\-netrc\fP, except that you also provide
3027-the path (absolute or relative).
3028-
3029-It abides by \fI\-\-netrc\-optional\fP if specified.
3030-
3031-If --netrc-file is provided several times, the last set value is used.
3032-
3033-Example:
3034-.nf
3035-curl --netrc-file netrc https://example.com
3036-.fi
3037-
3038-This option is mutually exclusive with \fI-n, \-\-netrc\fP.
3039-See also \fI-n, \-\-netrc\fP, \fI-u, \-\-user\fP and \fI-K, \-\-config\fP.
3040-.IP "\-\-netrc\-optional"
3041-Similar to \fI\-n, \-\-netrc\fP, but this option makes the .netrc usage \fBoptional\fP
3042-and not mandatory as the \fI\-n, \-\-netrc\fP option does.
3043-
3044-Providing --netrc-optional multiple times has no extra effect.
3045-Disable it again with \-\-no-netrc-optional.
3046-
3047-Example:
3048-.nf
3049-curl --netrc-optional https://example.com
3050-.fi
3051-
3052-This option is mutually exclusive with \fI-n, \-\-netrc\fP.
3053-See also \fI\-\-netrc\-file\fP.
3054-.IP "\-:, \-\-next"
3055-Use a separate operation for the following URL and associated options. This
3056-allows you to send several URL requests, each with their own specific options,
3057-for example, such as different usernames or custom requests for each.
3058-
3059-\fI\-:, \-\-next\fP resets all local options and only global ones have their values survive
3060-over to the operation following the \fI\-:, \-\-next\fP instruction. Global options include
3061-\fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \fI\-\-trace\-ascii\fP and \fI\-\-fail\-early\fP.
3062-
3063-For example, you can do both a GET and a POST in a single command line:
3064-
3065-.nf
3066-curl www1.example.com \--next \-d postthis www2.example.com
3067-.fi
3068-
3069---next can be used several times in a command line
3070-
3071-Examples:
3072-.nf
3073-curl https://example.com --next -d postthis www2.example.com
3074-curl -I https://example.com --next https://example.net/
3075-.fi
3076-
3077-See also \fI-Z, \-\-parallel\fP and \fI-K, \-\-config\fP.
3078-.IP "\-\-no\-alpn"
3079-(HTTPS) Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
3080-with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
3081-HTTP/2 to negotiate HTTP/2 support with the server during https sessions.
3082-
3083-Note that this is the negated option name documented. You can use \fI\-\-alpn\fP to
3084-enable ALPN.
3085-
3086-Providing --no-alpn multiple times has no extra effect.
3087-Disable it again with \-\-alpn.
3088-
3089-Example:
3090-.nf
3091-curl --no-alpn https://example.com
3092-.fi
3093-
3094-\fI\-\-no\-alpn\fP requires that libcurl is built to support TLS.
3095-See also \fI\-\-no\-npn\fP and \fI\-\-http2\fP.
3096-.IP "\-N, \-\-no\-buffer"
3097-Disable the buffering of the output stream. In normal work situations, curl
3098-uses a standard buffered output stream that has the effect that it outputs the
3099-data in chunks, not necessarily exactly when the data arrives. Using this
3100-option disables that buffering.
3101-
3102-Note that this is the negated option name documented. You can use \fI\-\-buffer\fP to
3103-enable buffering again.
3104-
3105-Providing --no-buffer multiple times has no extra effect.
3106-Disable it again with \-\-buffer.
3107-
3108-Example:
3109-.nf
3110-curl --no-buffer https://example.com
3111-.fi
3112-
3113-See also \fI-#, \-\-progress\-bar\fP.
3114-.IP "\-\-no\-clobber"
3115-When used in conjunction with the \fI\-o, \-\-output\fP, \fI\-J, \-\-remote\-header\-name\fP,
3116-\fI\-O, \-\-remote\-name\fP, or \fI\-\-remote\-name\-all\fP options, curl avoids overwriting files
3117-that already exist. Instead, a dot and a number gets appended to the name of
3118-the file that would be created, up to filename.100 after which it does not
3119-create any file.
3120-
3121-Note that this is the negated option name documented. You can thus use
3122-\fI\-\-clobber\fP to enforce the clobbering, even if \fI\-J, \-\-remote\-header\-name\fP is
3123-specified.
3124-
3125-The \fI\-C, \-\-continue\-at\fP option cannot be used together with \fI\-\-no\-clobber\fP.
3126-
3127-Providing --no-clobber multiple times has no extra effect.
3128-Disable it again with \-\-clobber.
3129-
3130-Example:
3131-.nf
3132-curl --no-clobber --output local/dir/file https://example.com
3133-.fi
3134-
3135-Added in 7.83.0. See also \fI-o, \-\-output\fP and \fI-O, \-\-remote\-name\fP.
3136-.IP "\-\-no\-keepalive"
3137-Disable the use of keepalive messages on the TCP connection. curl otherwise
3138-enables them by default.
3139-
3140-Note that this is the negated option name documented. You can thus use
3141-\fI\-\-keepalive\fP to enforce keepalive.
3142-
3143-Providing --no-keepalive multiple times has no extra effect.
3144-Disable it again with \-\-keepalive.
3145-
3146-Example:
3147-.nf
3148-curl --no-keepalive https://example.com
3149-.fi
3150-
3151-See also \fI\-\-keepalive\-time\fP and \fI\-\-keepalive\-cnt\fP.
3152-.IP "\-\-no\-npn"
3153-(HTTPS) curl never uses NPN, this option has no effect (added in 7.86.0).
3154-
3155-Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
3156-with an SSL library that supports NPN. NPN is used by a libcurl that supports
3157-HTTP/2 to negotiate HTTP/2 support with the server during https sessions.
3158-
3159-Providing --no-npn multiple times has no extra effect.
3160-Disable it again with \-\-npn.
3161-
3162-Example:
3163-.nf
3164-curl --no-npn https://example.com
3165-.fi
3166-
3167-\fI\-\-no\-npn\fP requires that libcurl is built to support TLS.
3168-See also \fI\-\-no\-alpn\fP and \fI\-\-http2\fP.
3169-.IP "\-\-no\-progress\-meter"
3170-Option to switch off the progress meter output without muting or otherwise
3171-affecting warning and informational messages like \fI\-s, \-\-silent\fP does.
3172-
3173-Note that this is the negated option name documented. You can thus use
3174-\fI\-\-progress\-meter\fP to enable the progress meter again.
3175-
3176-Providing --no-progress-meter multiple times has no extra effect.
3177-Disable it again with \-\-progress-meter.
3178-
3179-Example:
3180-.nf
3181-curl --no-progress-meter -o store https://example.com
3182-.fi
3183-
3184-Added in 7.67.0. See also \fI-v, \-\-verbose\fP and \fI-s, \-\-silent\fP.
3185-.IP "\-\-no\-sessionid"
3186-(TLS) Disable curl\(aqs use of SSL session\-ID caching. By default all transfers are
3187-done using the cache. Note that while nothing should ever get hurt by
3188-attempting to reuse SSL session\-IDs, there seem to be broken SSL
3189-implementations in the wild that may require you to disable this in order for
3190-you to succeed.
3191-
3192-Note that this is the negated option name documented. You can thus use
3193-\fI\-\-sessionid\fP to enforce session\-ID caching.
3194-
3195-Providing --no-sessionid multiple times has no extra effect.
3196-Disable it again with \-\-sessionid.
3197-
3198-Example:
3199-.nf
3200-curl --no-sessionid https://example.com
3201-.fi
3202-
3203-See also \fI-k, \-\-insecure\fP.
3204-.IP "\-\-noproxy <no\-proxy\-list>"
3205-Comma\-separated list of hosts for which not to use a proxy, if one is
3206-specified. The only wildcard is a single "*" character, which matches all
3207-hosts, and effectively disables the proxy. Each name in this list is matched
3208-as either a domain which contains the hostname, or the hostname itself. For
3209-example, "local.com" would match "local.com", "local.com:80", and
3210-\&"www.local.com", but not "www.notlocal.com".
3211-
3212-This option overrides the environment variables that disable the proxy
3213-("no_proxy" and "NO_PROXY"). If there is an environment
3214-variable disabling a proxy, you can set the no proxy list to "" to override
3215-it.
3216-
3217-IP addresses specified to this option can be provided using CIDR notation
3218-(added in 7.86.0): an appended slash and number specifies the number of
3219-network bits out of the address to use in the comparison. For example
3220-\&"192.168.0.0/16" would match all addresses starting with "192.168".
3221-
3222-If --noproxy is provided several times, the last set value is used.
3223-
3224-Example:
3225-.nf
3226-curl --noproxy "www.example" https://example.com
3227-.fi
3228-
3229-See also \fI-x, \-\-proxy\fP.
3230-.IP "\-\-ntlm"
3231-(HTTP) Use NTLM authentication. The NTLM authentication method was designed by
3232-Microsoft and is used by IIS web servers. It is a proprietary protocol,
3233-reverse\-engineered by clever people and implemented in curl based on their
3234-efforts. This kind of behavior should not be endorsed, you should encourage
3235-everyone who uses NTLM to switch to a public and documented authentication
3236-method instead, such as Digest.
3237-
3238-If you want to enable NTLM for your proxy authentication, then use
3239-\fI\-\-proxy\-ntlm\fP.
3240-
3241-Providing --ntlm multiple times has no extra effect.
3242-
3243-Example:
3244-.nf
3245-curl --ntlm -u user:password https://example.com
3246-.fi
3247-
3248-\fI\-\-ntlm\fP requires that libcurl is built to support TLS.
3249-This option is mutually exclusive with \fI\-\-basic\fP, \fI\-\-negotiate\fP, \fI\-\-digest\fP and \fI\-\-anyauth\fP.
3250-See also \fI\-\-proxy\-ntlm\fP.
3251-.IP "\-\-ntlm\-wb"
3252-(HTTP) Deprecated option (added in 8.8.0).
3253-
3254-Enabled NTLM much in the style \fI\-\-ntlm\fP does, but handed over the authentication
3255-to a separate executable that was executed when needed.
3256-
3257-Providing --ntlm-wb multiple times has no extra effect.
3258-
3259-Example:
3260-.nf
3261-curl --ntlm-wb -u user:password https://example.com
3262-.fi
3263-
3264-See also \fI\-\-ntlm\fP and \fI\-\-proxy\-ntlm\fP.
3265-.IP "\-\-oauth2\-bearer <token>"
3266-(IMAP LDAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
3267-is used in conjunction with the username which can be specified as part of the
3268-\fI\-\-url\fP or \fI\-u, \-\-user\fP options.
3269-
3270-The Bearer Token and username are formatted according to RFC 6750.
3271-
3272-If --oauth2-bearer is provided several times, the last set value is used.
3273-
3274-Example:
3275-.nf
3276-curl --oauth2-bearer "mF_9.B5f-4.1JqM" https://example.com
3277-.fi
3278-
3279-See also \fI\-\-basic\fP, \fI\-\-ntlm\fP and \fI\-\-digest\fP.
3280-.IP "\-o, \-\-output <file>"
3281-Write output to the given file instead of stdout. If you are using globbing to
3282-fetch multiple documents, you should quote the URL and you can use "#"
3283-followed by a number in the filename. That variable is then replaced with the
3284-current string for the URL being fetched. Like in:
3285-
3286-.nf
3287-curl "http://{one,two}.example.com" \-o "file_#1.txt"
3288-.fi
3289-
3290-or use several variables like:
3291-
3292-.nf
3293-curl "http://{site,host}.host[1\-5].example" \-o "#1_#2"
3294-.fi
3295-
3296-You may use this option as many times as the number of URLs you have. For
3297-example, if you specify two URLs on the same command line, you can use it like
3298-this:
3299-
3300-.nf
3301-curl \-o aa example.com \-o bb example.net
3302-.fi
3303-
3304-and the order of the \-o options and the URLs does not matter, just that the
3305-first \-o is for the first URL and so on, so the above command line can also be
3306-written as
3307-
3308-.nf
3309-curl example.com example.net \-o aa \-o bb
3310-.fi
3311-
3312-See also the \fI\-\-create\-dirs\fP option to create the local directories
3313-dynamically. Specifying the output as \(aq\-\(aq (a single dash) passes the output to
3314-stdout.
3315-
3316-To suppress response bodies, you can redirect output to /dev/null:
3317-
3318-.nf
3319-curl example.com \-o /dev/null
3320-.fi
3321-
3322-Or for Windows:
3323-
3324-.nf
3325-curl example.com \-o nul
3326-.fi
3327-
3328-Specify the filename as single minus to force the output to stdout, to
3329-override curl\(aqs internal binary output in terminal prevention:
3330-
3331-.nf
3332-curl https://example.com/jpeg \-o \-
3333-.fi
3334-
3335---output is associated with a single URL. Use it once per URL when you use several URLs in a command line.
3336-
3337-Examples:
3338-.nf
3339-curl -o file https://example.com
3340-curl "http://{one,two}.example.com" -o "file_#1.txt"
3341-curl "http://{site,host}.host[1-5].example" -o "#1_#2"
3342-curl -o file https://example.com -o file2 https://example.net
3343-.fi
3344-
3345-See also \fI-O, \-\-remote\-name\fP, \fI\-\-remote\-name\-all\fP and \fI-J, \-\-remote\-header\-name\fP.
3346-.IP "\-\-output\-dir <dir>"
3347-Specify the directory in which files should be stored, when \fI\-O, \-\-remote\-name\fP or
3348-\fI\-o, \-\-output\fP are used.
3349-
3350-The given output directory is used for all URLs and output options on the
3351-command line, up until the first \fI\-:, \-\-next\fP.
3352-
3353-If the specified target directory does not exist, the operation fails unless
3354-\fI\-\-create\-dirs\fP is also used.
3355-
3356-If --output-dir is provided several times, the last set value is used.
3357-
3358-Example:
3359-.nf
3360-curl --output-dir "tmp" -O https://example.com
3361-.fi
3362-
3363-Added in 7.73.0. See also \fI-O, \-\-remote\-name\fP and \fI-J, \-\-remote\-header\-name\fP.
3364-.IP "\-Z, \-\-parallel"
3365-Make curl perform all transfers in parallel as compared to the regular serial
3366-manner. Parallel transfer means that curl runs up to N concurrent transfers
3367-simultaneously and if there are more than N transfers to handle, it starts new
3368-ones when earlier transfers finish.
3369-
3370-With parallel transfers, the progress meter output is different from when
3371-doing serial transfers, as it then displays the transfer status for multiple
3372-transfers in a single line.
3373-
3374-The maximum amount of concurrent transfers is set with \fI\-\-parallel\-max\fP and it
3375-defaults to 50.
3376-
3377-This option is global and does not need to be specified for each use of --next.
3378-
3379-Providing --parallel multiple times has no extra effect.
3380-Disable it again with \-\-no-parallel.
3381-
3382-Example:
3383-.nf
3384-curl --parallel https://example.com -o file1 https://example.com -o file2
3385-.fi
3386-
3387-Added in 7.66.0. See also \fI-:, \-\-next\fP, \fI-v, \-\-verbose\fP, \fI\-\-parallel\-max\fP and \fI\-\-parallel\-immediate\fP.
3388-.IP "\-\-parallel\-immediate"
3389-When doing parallel transfers, this option instructs curl to prefer opening up
3390-more connections in parallel at once rather than waiting to see if new
3391-transfers can be added as multiplexed streams on another connection.
3392-
3393-By default, without this option set, curl prefers to wait a little and
3394-multiplex new transfers over existing connections. It keeps the number of
3395-connections low at the expense of risking a slightly slower transfer startup.
3396-
3397-This option is global and does not need to be specified for each use of --next.
3398-
3399-Providing --parallel-immediate multiple times has no extra effect.
3400-Disable it again with \-\-no-parallel-immediate.
3401-
3402-Example:
3403-.nf
3404-curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2
3405-.fi
3406-
3407-Added in 7.68.0. See also \fI-Z, \-\-parallel\fP and \fI\-\-parallel\-max\fP.
3408-.IP "\-\-parallel\-max <num>"
3409-When asked to do parallel transfers, using \fI\-Z, \-\-parallel\fP, this option controls
3410-the maximum amount of transfers to do simultaneously.
3411-
3412-The default is 50. 300 is the largest supported value.
3413-
3414-This option is global and does not need to be specified for each use of --next.
3415-
3416-If --parallel-max is provided several times, the last set value is used.
3417-
3418-Example:
3419-.nf
3420-curl --parallel-max 100 -Z https://example.com ftp://example.com/
3421-.fi
3422-
3423-Added in 7.66.0. See also \fI-Z, \-\-parallel\fP.
3424-.IP "\-\-pass <phrase>"
3425-(SSH TLS) Passphrase for the private key used for SSH or TLS.
3426-
3427-If --pass is provided several times, the last set value is used.
3428-
3429-Example:
3430-.nf
3431-curl --pass secret --key file https://example.com
3432-.fi
3433-
3434-See also \fI\-\-key\fP and \fI-u, \-\-user\fP.
3435-.IP "\-\-path\-as\-is"
3436-Do not handle sequences of /../ or /./ in the given URL path. Normally curl
3437-squashes or merges them according to standards but with this option set you
3438-tell it not to do that.
3439-
3440-Providing --path-as-is multiple times has no extra effect.
3441-Disable it again with \-\-no-path-as-is.
3442-
3443-Example:
3444-.nf
3445-curl --path-as-is https://example.com/../../etc/passwd
3446-.fi
3447-
3448-See also \fI\-\-request\-target\fP.
3449-.IP "\-\-pinnedpubkey <hashes>"
3450-(TLS) Use the specified public key file (or hashes) to verify the peer. This can be
3451-a path to a file which contains a single public key in PEM or DER format, or
3452-any number of base64 encoded sha256 hashes preceded by \(aqsha256//\(aq and
3453-separated by \(aq;\(aq.
3454-
3455-When negotiating a TLS or SSL connection, the server sends a certificate
3456-indicating its identity. A public key is extracted from this certificate and
3457-if it does not exactly match the public key provided to this option, curl
3458-aborts the connection before sending or receiving any data.
3459-
3460-This option is independent of option \fI\-k, \-\-insecure\fP. If you use both options
3461-together then the peer is still verified by public key.
3462-
3463-PEM/DER support:
3464-
3465-OpenSSL and GnuTLS, wolfSSL,
3466-mbedTLS,
3467-Secure Transport macOS 10.7+/iOS 10+,
3468-Schannel
3469-
3470-sha256 support:
3471-
3472-OpenSSL, GnuTLS and wolfSSL, mbedTLS,
3473-Secure Transport macOS 10.7+/iOS 10+, Schannel
3474-
3475-
3476-Other SSL backends not supported.
3477-
3478-If --pinnedpubkey is provided several times, the last set value is used.
3479-
3480-Examples:
3481-.nf
3482-curl --pinnedpubkey keyfile https://example.com
3483-curl --pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com
3484-.fi
3485-
3486-See also \fI\-\-hostpubsha256\fP.
3487-.IP "\-\-post301"
3488-(HTTP) Respect RFC 7231/6.4.2 and do not convert POST requests into GET requests when
3489-following a 301 redirect. The non\-RFC behavior is ubiquitous in web browsers,
3490-so curl does the conversion by default to maintain consistency. However, a
3491-server may require a POST to remain a POST after such a redirection. This
3492-option is meaningful only when using \fI\-L, \-\-location\fP.
3493-
3494-Providing --post301 multiple times has no extra effect.
3495-Disable it again with \-\-no-post301.
3496-
3497-Example:
3498-.nf
3499-curl --post301 --location -d "data" https://example.com
3500-.fi
3501-
3502-See also \fI\-\-post302\fP, \fI\-\-post303\fP and \fI-L, \-\-location\fP.
3503-.IP "\-\-post302"
3504-(HTTP) Respect RFC 7231/6.4.3 and do not convert POST requests into GET requests when
3505-following a 302 redirect. The non\-RFC behavior is ubiquitous in web browsers,
3506-so curl does the conversion by default to maintain consistency. However, a
3507-server may require a POST to remain a POST after such a redirection. This
3508-option is meaningful only when using \fI\-L, \-\-location\fP.
3509-
3510-Providing --post302 multiple times has no extra effect.
3511-Disable it again with \-\-no-post302.
3512-
3513-Example:
3514-.nf
3515-curl --post302 --location -d "data" https://example.com
3516-.fi
3517-
3518-See also \fI\-\-post301\fP, \fI\-\-post303\fP and \fI-L, \-\-location\fP.
3519-.IP "\-\-post303"
3520-(HTTP) Violate RFC 7231/6.4.4 and do not convert POST requests into GET requests when
3521-following 303 redirect. A server may require a POST to remain a POST after a
3522-303 redirection. This option is meaningful only when using \fI\-L, \-\-location\fP.
3523-
3524-Providing --post303 multiple times has no extra effect.
3525-Disable it again with \-\-no-post303.
3526-
3527-Example:
3528-.nf
3529-curl --post303 --location -d "data" https://example.com
3530-.fi
3531-
3532-See also \fI\-\-post302\fP, \fI\-\-post301\fP and \fI-L, \-\-location\fP.
3533-.IP "\-\-preproxy <[protocol://]host[:port]>"
3534-Use the specified SOCKS proxy before connecting to an HTTP or HTTPS \fI\-x, \-\-proxy\fP. In
3535-such a case curl first connects to the SOCKS proxy and then connects (through
3536-SOCKS) to the HTTP or HTTPS proxy. Hence pre proxy.
3537-
3538-The pre proxy string should be specified with a protocol:// prefix to specify
3539-alternative proxy protocols. Use socks4://, socks4a://, socks5:// or
3540-socks5h:// to request the specific SOCKS version to be used. No protocol
3541-specified makes curl default to SOCKS4.
3542-
3543-If the port number is not specified in the proxy string, it is assumed to be
3544-1080.
3545-
3546-User and password that might be provided in the proxy string are URL decoded
3547-by curl. This allows you to pass in special characters such as @ by using %40
3548-or pass in a colon with %3a.
3549-
3550-If --preproxy is provided several times, the last set value is used.
3551-
3552-Example:
3553-.nf
3554-curl --preproxy socks5://proxy.example -x http://http.example https://example.com
3555-.fi
3556-
3557-See also \fI-x, \-\-proxy\fP and \fI\-\-socks5\fP.
3558-.IP "\-#, \-\-progress\-bar"
3559-Make curl display transfer progress as a simple progress bar instead of the
3560-standard, more informational, meter.
3561-
3562-This progress bar draws a single line of \(aq#\(aq characters across the screen and
3563-shows a percentage if the transfer size is known. For transfers without a
3564-known size, there is a space ship (\-=o=\-) that moves back and forth but only
3565-while data is being transferred, with a set of flying hash sign symbols on
3566-top.
3567-
3568-This option is global and does not need to be specified for each use of --next.
3569-
3570-Providing --progress-bar multiple times has no extra effect.
3571-Disable it again with \-\-no-progress-bar.
3572-
3573-Example:
3574-.nf
3575-curl -# -O https://example.com
3576-.fi
3577-
3578-See also \fI\-\-styled\-output\fP.
3579-.IP "\-\-proto <protocols>"
3580-Limit what protocols to allow for transfers. Protocols are evaluated left to
3581-right, are comma separated, and are each a protocol name or \(aqall\(aq, optionally
3582-prefixed by zero or more modifiers. Available modifiers are:
3583-.RS
3584-.IP +
3585-Permit this protocol in addition to protocols already permitted (this is
3586-the default if no modifier is used).
3587-.IP -
3588-Deny this protocol, removing it from the list of protocols already permitted.
3589-.IP =
3590-Permit only this protocol (ignoring the list already permitted), though
3591-subject to later modification by subsequent entries in the comma separated
3592-list.
3593-.RE
3594-.IP
3595-For example: \fI\-\-proto\fP \-ftps uses the default protocols, but disables ftps
3596-
3597-\fI\-\-proto\fP \-all,https,+http only enables http and https
3598-
3599-\fI\-\-proto\fP =http,https also only enables http and https
3600-
3601-Unknown and disabled protocols produce a warning. This allows scripts to
3602-safely rely on being able to disable potentially dangerous protocols, without
3603-relying upon support for that protocol being built into curl to avoid an error.
3604-
3605-This option can be used multiple times, in which case the effect is the same
3606-as concatenating the protocols into one instance of the option.
3607-
3608-If --proto is provided several times, the last set value is used.
3609-
3610-Example:
3611-.nf
3612-curl --proto =http,https,sftp https://example.com
3613-.fi
3614-
3615-See also \fI\-\-proto\-redir\fP and \fI\-\-proto\-default\fP.
3616-.IP "\-\-proto\-default <protocol>"
3617-Use \fIprotocol\fP for any provided URL missing a scheme.
3618-
3619-An unknown or unsupported protocol causes error \fICURLE_UNSUPPORTED_PROTOCOL\fP.
3620-
3621-This option does not change the default proxy protocol (http).
3622-
3623-Without this option set, curl guesses protocol based on the hostname, see
3624-\fI\-\-url\fP for details.
3625-
3626-If --proto-default is provided several times, the last set value is used.
3627-
3628-Example:
3629-.nf
3630-curl --proto-default https ftp.example.com
3631-.fi
3632-
3633-See also \fI\-\-proto\fP and \fI\-\-proto\-redir\fP.
3634-.IP "\-\-proto\-redir <protocols>"
3635-Limit what protocols to allow on redirects. Protocols denied by \fI\-\-proto\fP are
3636-not overridden by this option. See \fI\-\-proto\fP for how protocols are represented.
3637-
3638-Example, allow only HTTP and HTTPS on redirect:
3639-
3640-.nf
3641-curl \--proto\-redir \-all,http,https http://example.com
3642-.fi
3643-
3644-By default curl only allows HTTP, HTTPS, FTP and FTPS on redirects
3645-(added in 7.65.2). Specifying \fIall\fP or \fI+all\fP enables all protocols on
3646-redirects, which is not good for security.
3647-
3648-If --proto-redir is provided several times, the last set value is used.
3649-
3650-Example:
3651-.nf
3652-curl --proto-redir =http,https https://example.com
3653-.fi
3654-
3655-See also \fI\-\-proto\fP.
3656-.IP "\-x, \-\-proxy <[protocol://]host[:port]>"
3657-Use the specified proxy.
3658-
3659-The proxy string can be specified with a protocol:// prefix. No protocol
3660-specified or http:// it is treated as an HTTP proxy. Use socks4://,
3661-socks4a://, socks5:// or socks5h:// to request a specific SOCKS version to be
3662-used.
3663-
3664-Unix domain sockets are supported for socks proxy. Set localhost for the host
3665-part. e.g. socks5h://localhost/path/to/socket.sock
3666-
3667-HTTPS proxy support works with the https:// protocol prefix for OpenSSL
3668-and GnuTLS. It also works for BearSSL, mbedTLS, Rustls,
3669-Schannel, Secure Transport and wolfSSL (added in 7.87.0).
3670-
3671-Unrecognized and unsupported proxy protocols cause an error.
3672-Ancient curl versions ignored unknown schemes and used http:// instead.
3673-
3674-If the port number is not specified in the proxy string, it is assumed to be
3675-1080.
3676-
3677-This option overrides existing environment variables that set the proxy to
3678-use. If there is an environment variable setting a proxy, you can set proxy to
3679-\&"" to override it.
3680-
3681-All operations that are performed over an HTTP proxy are transparently
3682-converted to HTTP. It means that certain protocol specific operations might
3683-not be available. This is not the case if you can tunnel through the proxy, as
3684-one with the \fI\-p, \-\-proxytunnel\fP option.
3685-
3686-User and password that might be provided in the proxy string are URL decoded
3687-by curl. This allows you to pass in special characters such as @ by using %40
3688-or pass in a colon with %3a.
3689-
3690-The proxy host can be specified the same way as the proxy environment
3691-variables, including the protocol prefix (http://) and the embedded user +
3692-password.
3693-
3694-When a proxy is used, the active FTP mode as set with \fI\-P, \-\-ftp\-port\fP, cannot be
3695-used.
3696-
3697-Doing FTP over an HTTP proxy without \fI\-p, \-\-proxytunnel\fP makes curl do HTTP with an
3698-FTP URL over the proxy. For such transfers, common FTP specific options do not
3699-work, including \fI\-\-ssl\-reqd\fP and \fI\-\-ftp\-ssl\-control\fP.
3700-
3701-If --proxy is provided several times, the last set value is used.
3702-
3703-Example:
3704-.nf
3705-curl --proxy http://proxy.example https://example.com
3706-.fi
3707-
3708-See also \fI\-\-socks5\fP and \fI\-\-proxy\-basic\fP.
3709-.IP "\-\-proxy\-anyauth"
3710-Automatically pick a suitable authentication method when communicating with
3711-the given HTTP proxy. This might cause an extra request/response round\-trip.
3712-
3713-Providing --proxy-anyauth multiple times has no extra effect.
3714-
3715-Example:
3716-.nf
3717-curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com
3718-.fi
3719-
3720-See also \fI-x, \-\-proxy\fP, \fI\-\-proxy\-basic\fP and \fI\-\-proxy\-digest\fP.
3721-.IP "\-\-proxy\-basic"
3722-Use HTTP Basic authentication when communicating with the given proxy. Use
3723-\fI\-\-basic\fP for enabling HTTP Basic with a remote host. Basic is the default
3724-authentication method curl uses with proxies.
3725-
3726-Providing --proxy-basic multiple times has no extra effect.
3727-
3728-Example:
3729-.nf
3730-curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com
3731-.fi
3732-
3733-See also \fI-x, \-\-proxy\fP, \fI\-\-proxy\-anyauth\fP and \fI\-\-proxy\-digest\fP.
3734-.IP "\-\-proxy\-ca\-native"
3735-(TLS) Use the operating system\(aqs native CA store for certificate verification of the
3736-HTTPS proxy.
3737-
3738-This option is independent of other HTTPS proxy CA certificate locations set at
3739-run time or build time. Those locations are searched in addition to the native
3740-CA store.
3741-
3742-Equivalent to \fI\-\-ca\-native\fP but used in HTTPS proxy context. Refer to \fI\-\-ca\-native\fP
3743-for TLS backend limitations.
3744-
3745-Providing --proxy-ca-native multiple times has no extra effect.
3746-Disable it again with \-\-no-proxy-ca-native.
3747-
3748-Example:
3749-.nf
3750-curl --proxy-ca-native https://example.com
3751-.fi
3752-
3753-Added in 8.2.0. See also \fI\-\-ca\-native\fP, \fI\-\-cacert\fP, \fI\-\-capath\fP, \fI\-\-dump\-ca\-embed\fP and \fI-k, \-\-insecure\fP.
3754-.IP "\-\-proxy\-cacert <file>"
3755-Use the specified certificate file to verify the HTTPS proxy. The file may
3756-contain multiple CA certificates. The certificate(s) must be in PEM format.
3757-
3758-This allows you to use a different trust for the proxy compared to the remote
3759-server connected to via the proxy.
3760-
3761-Equivalent to \fI\-\-cacert\fP but used in HTTPS proxy context.
3762-
3763-If --proxy-cacert is provided several times, the last set value is used.
3764-
3765-Example:
3766-.nf
3767-curl --proxy-cacert CA-file.txt -x https://proxy https://example.com
3768-.fi
3769-
3770-See also \fI\-\-proxy\-capath\fP, \fI\-\-cacert\fP, \fI\-\-capath\fP, \fI\-\-dump\-ca\-embed\fP and \fI-x, \-\-proxy\fP.
3771-.IP "\-\-proxy\-capath <dir>"
3772-Same as \fI\-\-capath\fP but used in HTTPS proxy context.
3773-
3774-Use the specified certificate directory to verify the proxy. Multiple paths
3775-can be provided by separating them with colon (":") (e.g. "path1:path2:path3"). The
3776-certificates must be in PEM format, and if curl is built against OpenSSL, the
3777-directory must have been processed using the c_rehash utility supplied with
3778-OpenSSL. Using \fI\-\-proxy\-capath\fP can allow OpenSSL\-powered curl to make
3779-SSL\-connections much more efficiently than using \fI\-\-proxy\-cacert\fP if the
3780-\fI\-\-proxy\-cacert\fP file contains many CA certificates.
3781-
3782-If this option is set, the default capath value is ignored.
3783-
3784-If --proxy-capath is provided several times, the last set value is used.
3785-
3786-Example:
3787-.nf
3788-curl --proxy-capath /local/directory -x https://proxy https://example.com
3789-.fi
3790-
3791-See also \fI\-\-proxy\-cacert\fP, \fI-x, \-\-proxy\fP, \fI\-\-capath\fP and \fI\-\-dump\-ca\-embed\fP.
3792-.IP "\-\-proxy\-cert <cert[:passwd]>"
3793-Use the specified client certificate file when communicating with an HTTPS
3794-proxy. The certificate must be in PKCS#12 format if using Secure Transport, or
3795-PEM format if using any other engine. If the optional password is not
3796-specified, it is queried for on the terminal. Use \fI\-\-proxy\-key\fP to provide the
3797-private key.
3798-
3799-This option is the equivalent to \fI\-E, \-\-cert\fP but used in HTTPS proxy context.
3800-
3801-If --proxy-cert is provided several times, the last set value is used.
3802-
3803-Example:
3804-.nf
3805-curl --proxy-cert file -x https://proxy https://example.com
3806-.fi
3807-
3808-See also \fI-x, \-\-proxy\fP, \fI\-\-proxy\-key\fP and \fI\-\-proxy\-cert\-type\fP.
3809-.IP "\-\-proxy\-cert\-type <type>"
3810-Set type of the provided client certificate when using HTTPS proxy. PEM, DER,
3811-ENG, PROV and P12 are recognized types.
3812-
3813-The default type depends on the TLS backend and is usually PEM, however for
3814-Secure Transport and Schannel it is P12. If \fI\-\-proxy\-cert\fP is a pkcs11: URI then
3815-ENG or PROV is the default type (depending on OpenSSL version).
3816-
3817-Equivalent to \fI\-\-cert\-type\fP but used in HTTPS proxy context.
3818-
3819-If --proxy-cert-type is provided several times, the last set value is used.
3820-
3821-Example:
3822-.nf
3823-curl --proxy-cert-type PEM --proxy-cert file -x https://proxy https://example.com
3824-.fi
3825-
3826-See also \fI\-\-proxy\-cert\fP and \fI\-\-proxy\-key\fP.
3827-.IP "\-\-proxy\-ciphers <list>"
3828-(TLS) Same as \fI\-\-ciphers\fP but used in HTTPS proxy context.
3829-
3830-Specify which cipher suites to use in the connection to your HTTPS proxy when
3831-it negotiates TLS 1.2 (1.1, 1.0). The list of ciphers suites must specify
3832-valid ciphers. Read up on cipher suite details on this URL:
3833-
3834-https://curl.se/docs/ssl\-ciphers.html
3835-
3836-If --proxy-ciphers is provided several times, the last set value is used.
3837-
3838-Example:
3839-.nf
3840-curl --proxy-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 -x https://proxy https://example.com
3841-.fi
3842-
3843-See also \fI\-\-proxy\-tls13\-ciphers\fP, \fI\-\-ciphers\fP and \fI-x, \-\-proxy\fP.
3844-.IP "\-\-proxy\-crlfile <file>"
3845-Provide filename for a PEM formatted file with a Certificate Revocation List
3846-that specifies peer certificates that are considered revoked when
3847-communicating with an HTTPS proxy.
3848-
3849-Equivalent to \fI\-\-crlfile\fP but only used in HTTPS proxy context.
3850-
3851-If --proxy-crlfile is provided several times, the last set value is used.
3852-
3853-Example:
3854-.nf
3855-curl --proxy-crlfile rejects.txt -x https://proxy https://example.com
3856-.fi
3857-
3858-See also \fI\-\-crlfile\fP and \fI-x, \-\-proxy\fP.
3859-.IP "\-\-proxy\-digest"
3860-Use HTTP Digest authentication when communicating with the given proxy. Use
3861-\fI\-\-digest\fP for enabling HTTP Digest with a remote host.
3862-
3863-Providing --proxy-digest multiple times has no extra effect.
3864-
3865-Example:
3866-.nf
3867-curl --proxy-digest --proxy-user user:passwd -x proxy https://example.com
3868-.fi
3869-
3870-See also \fI-x, \-\-proxy\fP, \fI\-\-proxy\-anyauth\fP and \fI\-\-proxy\-basic\fP.
3871-.IP "\-\-proxy\-header <header/@file>"
3872-(HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
3873-specify any number of extra headers. This is the equivalent option to \fI\-H, \-\-header\fP
3874-but is for proxy communication only like in CONNECT requests when you want a
3875-separate header sent to the proxy to what is sent to the actual remote host.
3876-
3877-curl makes sure that each header you add/replace is sent with the proper
3878-end\-of\-line marker, you should thus \fBnot\fP add that as a part of the header
3879-content: do not add newlines or carriage returns, they only mess things up for
3880-you.
3881-
3882-Headers specified with this option are not included in requests that curl
3883-knows are not to be sent to a proxy.
3884-
3885-This option can take an argument in @filename style, which then adds a header
3886-for each line in the input file. Using @\- makes curl read
3887-the headers from stdin.
3888-
3889-This option can be used multiple times to add/replace/remove multiple headers.
3890-
3891---proxy-header can be used several times in a command line
3892-
3893-Examples:
3894-.nf
3895-curl --proxy-header "X-First-Name: Joe" -x http://proxy https://example.com
3896-curl --proxy-header "User-Agent: surprise" -x http://proxy https://example.com
3897-curl --proxy-header "Host:" -x http://proxy https://example.com
3898-.fi
3899-
3900-See also \fI-x, \-\-proxy\fP.
3901-.IP "\-\-proxy\-http2"
3902-(HTTP) Negotiate HTTP/2 with an HTTPS proxy. The proxy might still only offer HTTP/1
3903-and then curl sticks to using that version.
3904-
3905-This has no effect for any other kinds of proxies.
3906-
3907-Providing --proxy-http2 multiple times has no extra effect.
3908-Disable it again with \-\-no-proxy-http2.
3909-
3910-Example:
3911-.nf
3912-curl --proxy-http2 -x proxy https://example.com
3913-.fi
3914-
3915-\fI\-\-proxy\-http2\fP requires that libcurl is built to support HTTP/2.
3916-Added in 8.1.0. See also \fI-x, \-\-proxy\fP.
3917-.IP "\-\-proxy\-insecure"
3918-Same as \fI\-k, \-\-insecure\fP but used in HTTPS proxy context.
3919-
3920-Every secure connection curl makes is verified to be secure before the
3921-transfer takes place. This option makes curl skip the verification step with a
3922-proxy and proceed without checking.
3923-
3924-When this option is not used for a proxy using HTTPS, curl verifies the
3925-proxy\(aqs TLS certificate before it continues: that the certificate contains the
3926-right name which matches the hostname and that the certificate has been signed
3927-by a CA certificate present in the cert store. See this online resource for
3928-further details: \fBhttps://curl.se/docs/sslcerts.html\fP
3929-
3930-\fBWARNING\fP: using this option makes the transfer to the proxy insecure.
3931-
3932-Providing --proxy-insecure multiple times has no extra effect.
3933-Disable it again with \-\-no-proxy-insecure.
3934-
3935-Example:
3936-.nf
3937-curl --proxy-insecure -x https://proxy https://example.com
3938-.fi
3939-
3940-See also \fI-x, \-\-proxy\fP and \fI-k, \-\-insecure\fP.
3941-.IP "\-\-proxy\-key <key>"
3942-Specify the filename for your private key when using client certificates with
3943-your HTTPS proxy. This option is the equivalent to \fI\-\-key\fP but used in HTTPS
3944-proxy context.
3945-
3946-If --proxy-key is provided several times, the last set value is used.
3947-
3948-Example:
3949-.nf
3950-curl --proxy-key here -x https://proxy https://example.com
3951-.fi
3952-
3953-See also \fI\-\-proxy\-key\-type\fP and \fI-x, \-\-proxy\fP.
3954-.IP "\-\-proxy\-key\-type <type>"
3955-Specify the private key file type your \fI\-\-proxy\-key\fP provided private key uses.
3956-DER, PEM, and ENG are supported. If not specified, PEM is assumed.
3957-
3958-Equivalent to \fI\-\-key\-type\fP but used in HTTPS proxy context.
3959-
3960-If --proxy-key-type is provided several times, the last set value is used.
3961-
3962-Example:
3963-.nf
3964-curl --proxy-key-type DER --proxy-key here -x https://proxy https://example.com
3965-.fi
3966-
3967-See also \fI\-\-proxy\-key\fP and \fI-x, \-\-proxy\fP.
3968-.IP "\-\-proxy\-negotiate"
3969-Use HTTP Negotiate (SPNEGO) authentication when communicating with the given
3970-proxy. Use \fI\-\-negotiate\fP for enabling HTTP Negotiate (SPNEGO) with a remote
3971-host.
3972-
3973-Providing --proxy-negotiate multiple times has no extra effect.
3974-
3975-Example:
3976-.nf
3977-curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com
3978-.fi
3979-
3980-See also \fI\-\-proxy\-anyauth\fP, \fI\-\-proxy\-basic\fP and \fI\-\-proxy\-service\-name\fP.
3981-.IP "\-\-proxy\-ntlm"
3982-Use HTTP NTLM authentication when communicating with the given proxy. Use
3983-\fI\-\-ntlm\fP for enabling NTLM with a remote host.
3984-
3985-Providing --proxy-ntlm multiple times has no extra effect.
3986-
3987-Example:
3988-.nf
3989-curl --proxy-ntlm --proxy-user user:passwd -x http://proxy https://example.com
3990-.fi
3991-
3992-See also \fI\-\-proxy\-negotiate\fP, \fI\-\-proxy\-anyauth\fP and \fI-U, \-\-proxy\-user\fP.
3993-.IP "\-\-proxy\-pass <phrase>"
3994-Passphrase for the private key for HTTPS proxy client certificate.
3995-
3996-Equivalent to \fI\-\-pass\fP but used in HTTPS proxy context.
3997-
3998-If --proxy-pass is provided several times, the last set value is used.
3999-
4000-Example:
4001-.nf
4002-curl --proxy-pass secret --proxy-key here -x https://proxy https://example.com
4003-.fi
4004-
4005-See also \fI-x, \-\-proxy\fP and \fI\-\-proxy\-key\fP.
4006-.IP "\-\-proxy\-pinnedpubkey <hashes>"
4007-(TLS) Use the specified public key file (or hashes) to verify the proxy. This can be
4008-a path to a file which contains a single public key in PEM or DER format, or
4009-any number of base64 encoded sha256 hashes preceded by \(aqsha256//\(aq and
4010-separated by \(aq;\(aq.
4011-
4012-When negotiating a TLS or SSL connection, the server sends a certificate
4013-indicating its identity. A public key is extracted from this certificate and
4014-if it does not exactly match the public key provided to this option, curl
4015-aborts the connection before sending or receiving any data.
4016-
4017-Before curl 8.10.0 this option did not work due to a bug.
4018-
4019-If --proxy-pinnedpubkey is provided several times, the last set value is used.
4020-
4021-Examples:
4022-.nf
4023-curl --proxy-pinnedpubkey keyfile https://example.com
4024-curl --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com
4025-.fi
4026-
4027-See also \fI\-\-pinnedpubkey\fP and \fI-x, \-\-proxy\fP.
4028-.IP "\-\-proxy\-service\-name <name>"
4029-Set the service name for SPNEGO when doing proxy authentication.
4030-
4031-If --proxy-service-name is provided several times, the last set value is used.
4032-
4033-Example:
4034-.nf
4035-curl --proxy-service-name "shrubbery" -x proxy https://example.com
4036-.fi
4037-
4038-See also \fI\-\-service\-name\fP, \fI-x, \-\-proxy\fP and \fI\-\-proxy\-negotiate\fP.
4039-.IP "\-\-proxy\-ssl\-allow\-beast"
4040-Do not work around a security flaw in the TLS1.0 protocol known as BEAST when
4041-communicating to an HTTPS proxy. If this option is not used, the TLS layer may
4042-use workarounds known to cause interoperability problems with some older
4043-server implementations.
4044-
4045-This option only changes how curl does TLS 1.0 with an HTTPS proxy and has no
4046-effect on later TLS versions.
4047-
4048-\fBWARNING\fP: this option loosens the TLS security, and by using this flag you
4049-ask for exactly that.
4050-
4051-Equivalent to \fI\-\-ssl\-allow\-beast\fP but used in HTTPS proxy context.
4052-
4053-Providing --proxy-ssl-allow-beast multiple times has no extra effect.
4054-Disable it again with \-\-no-proxy-ssl-allow-beast.
4055-
4056-Example:
4057-.nf
4058-curl --proxy-ssl-allow-beast -x https://proxy https://example.com
4059-.fi
4060-
4061-See also \fI\-\-ssl\-allow\-beast\fP and \fI-x, \-\-proxy\fP.
4062-.IP "\-\-proxy\-ssl\-auto\-client\-cert"
4063-Same as \fI\-\-ssl\-auto\-client\-cert\fP but used in HTTPS proxy context.
4064-
4065-This is only supported by Schannel.
4066-
4067-Providing --proxy-ssl-auto-client-cert multiple times has no extra effect.
4068-Disable it again with \-\-no-proxy-ssl-auto-client-cert.
4069-
4070-Example:
4071-.nf
4072-curl --proxy-ssl-auto-client-cert -x https://proxy https://example.com
4073-.fi
4074-
4075-Added in 7.77.0. See also \fI\-\-ssl\-auto\-client\-cert\fP and \fI-x, \-\-proxy\fP.
4076-.IP "\-\-proxy\-tls13\-ciphers <list>"
4077-(TLS) Same as \fI\-\-tls13\-ciphers\fP but used in HTTPS proxy context.
4078-
4079-Specify which cipher suites to use in the connection to your HTTPS proxy when
4080-it negotiates TLS 1.3. The list of ciphers suites must specify valid ciphers.
4081-Read up on TLS 1.3 cipher suite details on this URL:
4082-
4083-https://curl.se/docs/ssl\-ciphers.html
4084-
4085-This option is used when curl is built to use OpenSSL 1.1.1 or later,
4086-Schannel, wolfSSL, or mbedTLS 3.6.0 or later.
4087-
4088-Before curl 8.10.0 with mbedTLS or wolfSSL, TLS 1.3 cipher suites were set
4089-by using the \fI\-\-proxy\-ciphers\fP option.
4090-
4091-If --proxy-tls13-ciphers is provided several times, the last set value is used.
4092-
4093-Example:
4094-.nf
4095-curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com
4096-.fi
4097-
4098-Added in 7.61.0. See also \fI\-\-proxy\-ciphers\fP, \fI\-\-tls13\-ciphers\fP and \fI-x, \-\-proxy\fP.
4099-.IP "\-\-proxy\-tlsauthtype <type>"
4100-Set TLS authentication type with HTTPS proxy. The only supported option is
4101-\&"SRP", for TLS\-SRP (RFC 5054). This option works only if the underlying
4102-libcurl is built with TLS\-SRP support.
4103-
4104-Equivalent to \fI\-\-tlsauthtype\fP but used in HTTPS proxy context.
4105-
4106-If --proxy-tlsauthtype is provided several times, the last set value is used.
4107-
4108-Example:
4109-.nf
4110-curl --proxy-tlsauthtype SRP -x https://proxy https://example.com
4111-.fi
4112-
4113-See also \fI-x, \-\-proxy\fP, \fI\-\-proxy\-tlsuser\fP and \fI\-\-proxy\-tlspassword\fP.
4114-.IP "\-\-proxy\-tlspassword <string>"
4115-Set password to use with the TLS authentication method specified with
4116-\fI\-\-proxy\-tlsauthtype\fP when using HTTPS proxy. Requires that \fI\-\-proxy\-tlsuser\fP is
4117-set.
4118-
4119-This option does not work with TLS 1.3.
4120-
4121-Equivalent to \fI\-\-tlspassword\fP but used in HTTPS proxy context.
4122-
4123-If --proxy-tlspassword is provided several times, the last set value is used.
4124-
4125-Example:
4126-.nf
4127-curl --proxy-tlspassword passwd -x https://proxy https://example.com
4128-.fi
4129-
4130-See also \fI-x, \-\-proxy\fP and \fI\-\-proxy\-tlsuser\fP.
4131-.IP "\-\-proxy\-tlsuser <name>"
4132-Set username for use for HTTPS proxy with the TLS authentication method
4133-specified with \fI\-\-proxy\-tlsauthtype\fP. Requires that \fI\-\-proxy\-tlspassword\fP also is
4134-set.
4135-
4136-This option does not work with TLS 1.3.
4137-
4138-If --proxy-tlsuser is provided several times, the last set value is used.
4139-
4140-Example:
4141-.nf
4142-curl --proxy-tlsuser smith -x https://proxy https://example.com
4143-.fi
4144-
4145-See also \fI-x, \-\-proxy\fP and \fI\-\-proxy\-tlspassword\fP.
4146-.IP "\-\-proxy\-tlsv1"
4147-Use at least TLS version 1.x when negotiating with an HTTPS proxy. That means
4148-TLS version 1.0 or higher
4149-
4150-Equivalent to \fI\-1, \-\-tlsv1\fP but for an HTTPS proxy context.
4151-
4152-Providing --proxy-tlsv1 multiple times has no extra effect.
4153-
4154-Example:
4155-.nf
4156-curl --proxy-tlsv1 -x https://proxy https://example.com
4157-.fi
4158-
4159-See also \fI-x, \-\-proxy\fP.
4160-.IP "\-U, \-\-proxy\-user <user:password>"
4161-Specify the username and password to use for proxy authentication.
4162-
4163-If you use a Windows SSPI\-enabled curl binary and do either Negotiate or NTLM
4164-authentication then you can tell curl to select the username and password from
4165-your environment by specifying a single colon with this option: "\-U :".
4166-
4167-On systems where it works, curl hides the given option argument from process
4168-listings. This is not enough to protect credentials from possibly getting seen
4169-by other users on the same system as they still are visible for a moment
4170-before being cleared. Such sensitive data should be retrieved from a file instead or
4171-similar and never used in clear text in a command line.
4172-
4173-If --proxy-user is provided several times, the last set value is used.
4174-
4175-Example:
4176-.nf
4177-curl --proxy-user smith:secret -x proxy https://example.com
4178-.fi
4179-
4180-See also \fI\-\-proxy\-pass\fP.
4181-.IP "\-\-proxy1.0 <host[:port]>"
4182-Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
4183-assumed at port 1080.
4184-
4185-The only difference between this and the HTTP proxy option \fI\-x, \-\-proxy\fP, is that
4186-attempts to use CONNECT through the proxy specifies an HTTP 1.0 protocol
4187-instead of the default HTTP 1.1.
4188-
4189-Providing --proxy1.0 multiple times has no extra effect.
4190-
4191-Example:
4192-.nf
4193-curl --proxy1.0 http://proxy https://example.com
4194-.fi
4195-
4196-See also \fI-x, \-\-proxy\fP, \fI\-\-socks5\fP and \fI\-\-preproxy\fP.
4197-.IP "\-p, \-\-proxytunnel"
4198-When an HTTP proxy is used \fI\-x, \-\-proxy\fP, this option makes curl tunnel the traffic
4199-through the proxy. The tunnel approach is made with the HTTP proxy CONNECT
4200-request and requires that the proxy allows direct connection to the remote port
4201-number curl wants to tunnel through to.
4202-
4203-To suppress proxy CONNECT response headers when curl is set to output headers
4204-use \fI\-\-suppress\-connect\-headers\fP.
4205-
4206-Providing --proxytunnel multiple times has no extra effect.
4207-Disable it again with \-\-no-proxytunnel.
4208-
4209-Example:
4210-.nf
4211-curl --proxytunnel -x http://proxy https://example.com
4212-.fi
4213-
4214-See also \fI-x, \-\-proxy\fP.
4215-.IP "\-\-pubkey <key>"
4216-(SFTP SCP) Public key filename. Allows you to provide your public key in this separate
4217-file.
4218-
4219-curl attempts to automatically extract the public key from the private key
4220-file, so passing this option is generally not required. Note that this public
4221-key extraction requires libcurl to be linked against a copy of libssh2 1.2.8
4222-or higher that is itself linked against OpenSSL.
4223-
4224-If --pubkey is provided several times, the last set value is used.
4225-
4226-Example:
4227-.nf
4228-curl --pubkey file.pub sftp://example.com/
4229-.fi
4230-
4231-See also \fI\-\-pass\fP.
4232-.IP "\-Q, \-\-quote <command>"
4233-(FTP SFTP) Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
4234-sent BEFORE the transfer takes place (just after the initial \fBPWD\fP command
4235-in an FTP transfer, to be exact). To make commands take place after a
4236-successful transfer, prefix them with a dash \(aq\-\(aq.
4237-
4238-(FTP only) To make commands be sent after curl has changed the working
4239-directory, just before the file transfer command(s), prefix the command with a
4240-\(aq+\(aq. This is not performed when a directory listing is performed.
4241-
4242-You may specify any number of commands.
4243-
4244-By default curl stops at first failure. To make curl continue even if the
4245-command fails, prefix the command with an asterisk (*). Otherwise, if the
4246-server returns failure for one of the commands, the entire operation is
4247-aborted.
4248-
4249-You must send syntactically correct FTP commands as RFC 959 defines to FTP
4250-servers, or one of the commands listed below to SFTP servers.
4251-
4252-SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands
4253-itself before sending them to the server. Filenames may be quoted shell\-style
4254-to embed spaces or special characters. Following is the list of all supported
4255-SFTP quote commands:
4256-.RS
4257-.IP "atime date file"
4258-The atime command sets the last access time of the file named by the file
4259-operand. The date expression can be all sorts of date strings, see the
4260-\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
4261-.IP "chgrp group file"
4262-The chgrp command sets the group ID of the file named by the file operand to
4263-the group ID specified by the group operand. The group operand is a decimal
4264-integer group ID.
4265-.IP "chmod mode file"
4266-The chmod command modifies the file mode bits of the specified file. The
4267-mode operand is an octal integer mode number.
4268-.IP "chown user file"
4269-The chown command sets the owner of the file named by the file operand to the
4270-user ID specified by the user operand. The user operand is a decimal
4271-integer user ID.
4272-.IP "ln source_file target_file"
4273-The ln and symlink commands create a symbolic link at the target_file location
4274-pointing to the source_file location.
4275-.IP "mkdir directory_name"
4276-The mkdir command creates the directory named by the directory_name operand.
4277-.IP "mtime date file"
4278-The mtime command sets the last modification time of the file named by the
4279-file operand. The date expression can be all sorts of date strings, see the
4280-\fIcurl_getdate(3)\fP man page for date expression details. (Added in 7.73.0)
4281-.IP pwd
4282-The pwd command returns the absolute path name of the current working directory.
4283-.IP "rename source target"
4284-The rename command renames the file or directory named by the source
4285-operand to the destination path named by the target operand.
4286-.IP "rm file"
4287-The rm command removes the file specified by the file operand.
4288-.IP "rmdir directory"
4289-The rmdir command removes the directory entry specified by the directory
4290-operand, provided it is empty.
4291-.IP "symlink source_file target_file"
4292-See ln.
4293-.RE
4294-.IP
4295-
4296---quote can be used several times in a command line
4297-
4298-Example:
4299-.nf
4300-curl --quote "DELE file" ftp://example.com/foo
4301-.fi
4302-
4303-See also \fI-X, \-\-request\fP.
4304-.IP "\-\-random\-file <file>"
4305-Deprecated option. This option is ignored (added in 7.84.0). Prior to that it
4306-only had an effect on curl if built to use old versions of OpenSSL.
4307-
4308-Specify the path name to file containing random data. The data may be used to
4309-seed the random engine for SSL connections.
4310-
4311-If --random-file is provided several times, the last set value is used.
4312-
4313-Example:
4314-.nf
4315-curl --random-file rubbish https://example.com
4316-.fi
4317-
4318-See also \fI\-\-egd\-file\fP.
4319-.IP "\-r, \-\-range <range>"
4320-(HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
4321-server or a local FILE. Ranges can be specified in a number of ways.
4322-.RS
4323-.IP 0-499
4324-specifies the first 500 bytes
4325-.IP 500-999
4326-specifies the second 500 bytes
4327-.IP -500
4328-specifies the last 500 bytes
4329-.IP 9500-
4330-specifies the bytes from offset 9500 and forward
4331-.IP 0-0,-1
4332-specifies the first and last byte only(*)(HTTP)
4333-.IP 100-199,500-599
4334-specifies two separate 100\-byte ranges(*) (HTTP)
4335-.RE
4336-.IP
4337-(*) = NOTE that if specifying multiple ranges and the server supports it then
4338-it replies with a multiple part response that curl returns as\-is. It
4339-contains meta information in addition to the requested bytes. Parsing or
4340-otherwise transforming this response is the responsibility of the caller.
4341-
4342-Only digit characters (0\-9) are valid in the \(aqstart\(aq and \(aqstop\(aq fields of the
4343-\(aqstart\-stop\(aq range syntax. If a non\-digit character is given in the range, the
4344-server\(aqs response is unspecified, depending on the server\(aqs configuration.
4345-
4346-Many HTTP/1.1 servers do not have this feature enabled, so that when you
4347-attempt to get a range, curl instead gets the whole document.
4348-
4349-FTP and SFTP range downloads only support the simple \(aqstart\-stop\(aq syntax
4350-(optionally with one of the numbers omitted). FTP use depends on the extended
4351-FTP command SIZE.
4352-
4353-When using this option for HTTP uploads using POST or PUT, functionality is
4354-not guaranteed. The HTTP protocol has no standard interoperable resume upload
4355-and curl uses a set of headers for this purpose that once proved working for
4356-some servers and have been left for those who find that useful.
4357-
4358-This command line option is mutually exclusive with \fI\-C, \-\-continue\-at\fP: you can only
4359-use one of them for a single transfer.
4360-
4361-If --range is provided several times, the last set value is used.
4362-
4363-Example:
4364-.nf
4365-curl --range 22-44 https://example.com
4366-.fi
4367-
4368-See also \fI-C, \-\-continue\-at\fP and \fI-a, \-\-append\fP.
4369-.IP "\-\-rate <max request rate>"
4370-Specify the maximum transfer frequency you allow curl to use \- in number of
4371-transfer starts per time unit (sometimes called request rate). Without this
4372-option, curl starts the next transfer as fast as possible.
4373-
4374-If given several URLs and a transfer completes faster than the allowed rate,
4375-curl waits until the next transfer is started to maintain the requested
4376-rate. This option has no effect when \fI\-Z, \-\-parallel\fP is used.
4377-
4378-The request rate is provided as "N/U" where N is an integer number and U is a
4379-time unit. Supported units are \(aqs\(aq (second), \(aqm\(aq (minute), \(aqh\(aq (hour) and \(aqd\(aq
4380-/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
4381-is number of transfers per hour.
4382-
4383-If curl is told to allow 10 requests per minute, it does not start the next
4384-request until 6 seconds have elapsed since the previous transfer was started.
4385-
4386-This function uses millisecond resolution. If the allowed frequency is set
4387-more than 1000 per second, it instead runs unrestricted.
4388-
4389-When retrying transfers, enabled with \fI\-\-retry\fP, the separate retry delay logic
4390-is used and not this setting.
4391-
4392-Starting in version 8.10.0, you can specify the number of time units in the rate
4393-expression. Make curl do no more than 5 transfers per 15 seconds with "5/15s"
4394-or limit it to 3 transfers per 4 hours with "3/4h". No spaces allowed.
4395-
4396-This option is global and does not need to be specified for each use of --next.
4397-
4398-If --rate is provided several times, the last set value is used.
4399-
4400-Examples:
4401-.nf
4402-curl --rate 2/s https://example.com ...
4403-curl --rate 3/h https://example.com ...
4404-curl --rate 14/m https://example.com ...
4405-.fi
4406-
4407-Added in 7.84.0. See also \fI\-\-limit\-rate\fP and \fI\-\-retry\-delay\fP.
4408-.IP "\-\-raw"
4409-(HTTP) When used, it disables all internal HTTP decoding of content or transfer
4410-encodings and instead makes them passed on unaltered, raw.
4411-
4412-Providing --raw multiple times has no extra effect.
4413-Disable it again with \-\-no-raw.
4414-
4415-Example:
4416-.nf
4417-curl --raw https://example.com
4418-.fi
4419-
4420-See also \fI\-\-tr\-encoding\fP.
4421-.IP "\-e, \-\-referer <URL>"
4422-(HTTP) Set the referrer URL in the HTTP request. This can also be set with the
4423-\fI\-H, \-\-header\fP flag of course. When used with \fI\-L, \-\-location\fP you can append ";auto"" to
4424-the \fI\-e, \-\-referer\fP URL to make curl automatically set the previous URL when it
4425-follows a Location: header. The ";auto" string can be used alone, even if you
4426-do not set an initial \fI\-e, \-\-referer\fP.
4427-
4428-If --referer is provided several times, the last set value is used.
4429-
4430-Examples:
4431-.nf
4432-curl --referer "https://fake.example" https://example.com
4433-curl --referer "https://fake.example;auto" -L https://example.com
4434-curl --referer ";auto" -L https://example.com
4435-.fi
4436-
4437-See also \fI-A, \-\-user\-agent\fP and \fI-H, \-\-header\fP.
4438-.IP "\-J, \-\-remote\-header\-name"
4439-(HTTP) Tell the \fI\-O, \-\-remote\-name\fP option to use the server\-specified Content\-Disposition
4440-filename instead of extracting a filename from the URL. If the server\-provided
4441-filename contains a path, that is stripped off before the filename is used.
4442-
4443-The file is saved in the current directory, or in the directory specified with
4444-\fI\-\-output\-dir\fP.
4445-
4446-If the server specifies a filename and a file with that name already exists in
4447-the destination directory, it is not overwritten and an error occurs \- unless
4448-you allow it by using the \fI\-\-clobber\fP option. If the server does not specify a
4449-filename then this option has no effect.
4450-
4451-There is no attempt to decode %\-sequences (yet) in the provided filename, so
4452-this option may provide you with rather unexpected filenames.
4453-
4454-This feature uses the name from the "filename" field, it does not yet support
4455-the "filename*" field (filenames with explicit character sets).
4456-
4457-\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
4458-rogue server could send you the name of a DLL or other file that could be
4459-loaded automatically by Windows or some third party software.
4460-
4461-Providing --remote-header-name multiple times has no extra effect.
4462-Disable it again with \-\-no-remote-header-name.
4463-
4464-Example:
4465-.nf
4466-curl -OJ https://example.com/file
4467-.fi
4468-
4469-See also \fI-O, \-\-remote\-name\fP.
4470-.IP "\-O, \-\-remote\-name"
4471-Write output to a local file named like the remote file we get. (Only the file
4472-part of the remote file is used, the path is cut off.)
4473-
4474-The file is saved in the current working directory. If you want the file saved
4475-in a different directory, make sure you change the current working directory
4476-before invoking curl with this option or use \fI\-\-output\-dir\fP.
4477-
4478-The remote filename to use for saving is extracted from the given URL, nothing
4479-else, and if it already exists it is overwritten. If you want the server to be
4480-able to choose the filename refer to \fI\-J, \-\-remote\-header\-name\fP which can be used in
4481-addition to this option. If the server chooses a filename and that name
4482-already exists it is not overwritten.
4483-
4484-There is no URL decoding done on the filename. If it has %20 or other URL
4485-encoded parts of the name, they end up as\-is as filename.
4486-
4487-You may use this option as many times as the number of URLs you have.
4488-
4489-Before curl 8.10.0, curl returned an error if the URL ended with a slash,
4490-which means that there is no filename part in the URL. Starting in 8.10.0,
4491-curl sets the filename to the last directory part of the URL or if that also
4492-is missing to "curl_response" (without extension) for this situation.
4493-
4494---remote-name is associated with a single URL. Use it once per URL when you use several URLs in a command line.
4495-
4496-Examples:
4497-.nf
4498-curl -O https://example.com/filename
4499-curl -O https://example.com/filename -O https://example.com/file2
4500-.fi
4501-
4502-See also \fI\-\-remote\-name\-all\fP, \fI\-\-output\-dir\fP and \fI-J, \-\-remote\-header\-name\fP.
4503-.IP "\-\-remote\-name\-all"
4504-Change the default action for all given URLs to be dealt with as if
4505-\fI\-O, \-\-remote\-name\fP were used for each one. If you want to disable that for a
4506-specific URL after \fI\-\-remote\-name\-all\fP has been used, you must use "\-o \-" or
4507-\fI\-\-no\-remote\-name\fP.
4508-
4509-Providing --remote-name-all multiple times has no extra effect.
4510-Disable it again with \-\-no-remote-name-all.
4511-
4512-Example:
4513-.nf
4514-curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2
4515-.fi
4516-
4517-See also \fI-O, \-\-remote\-name\fP.
4518-.IP "\-R, \-\-remote\-time"
4519-Make curl attempt to figure out the timestamp of the remote file that is
4520-getting downloaded, and if that is available make the local file get that same
4521-timestamp.
4522-
4523-Providing --remote-time multiple times has no extra effect.
4524-Disable it again with \-\-no-remote-time.
4525-
4526-Example:
4527-.nf
4528-curl --remote-time -o foo https://example.com
4529-.fi
4530-
4531-See also \fI-O, \-\-remote\-name\fP and \fI-z, \-\-time\-cond\fP.
4532-.IP "\-\-remove\-on\-error"
4533-Remove the output file if an error occurs. If curl returns an error when told to
4534-save output in a local file. This prevents curl from leaving a partial file in
4535-the case of an error during transfer.
4536-
4537-If the output is not a regular file, this option has no effect.
4538-
4539-The \fI\-C, \-\-continue\-at\fP option cannot be used together with \fI\-\-remove\-on\-error\fP.
4540-
4541-Providing --remove-on-error multiple times has no extra effect.
4542-Disable it again with \-\-no-remove-on-error.
4543-
4544-Example:
4545-.nf
4546-curl --remove-on-error -o output https://example.com
4547-.fi
4548-
4549-Added in 7.83.0. See also \fI-f, \-\-fail\fP.
4550-.IP "\-X, \-\-request <method>"
4551-Change the method to use when starting the transfer.
4552-
4553-curl passes on the verbatim string you give it in the request without any
4554-filter or other safe guards. That includes white space and control characters.
4555-.RS
4556-.IP HTTP
4557-Specifies a custom request method to use when communicating with the HTTP
4558-server. The specified request method is used instead of the method otherwise
4559-used (which defaults to \fIGET\fP). Read the HTTP 1.1 specification for details
4560-and explanations. Common additional HTTP requests include \fIPUT\fP and \fIDELETE\fP,
4561-while related technologies like WebDAV offers \fIPROPFIND\fP, \fICOPY\fP, \fIMOVE\fP and
4562-more.
4563-
4564-Normally you do not need this option. All sorts of \fIGET\fP, \fIHEAD\fP, \fIPOST\fP and
4565-\fIPUT\fP requests are rather invoked by using dedicated command line options.
4566-
4567-This option only changes the actual word used in the HTTP request, it does not
4568-alter the way curl behaves. For example if you want to make a proper HEAD
4569-request, using \-X HEAD does not suffice. You need to use the \fI\-I, \-\-head\fP option.
4570-
4571-The method string you set with \fI\-X, \-\-request\fP is used for all requests, which
4572-if you for example use \fI\-L, \-\-location\fP may cause unintended side\-effects when curl
4573-does not change request method according to the HTTP 30x response codes \- and
4574-similar.
4575-.IP FTP
4576-Specifies a custom FTP command to use instead of \fILIST\fP when doing file lists
4577-with FTP.
4578-.IP POP3
4579-Specifies a custom POP3 command to use instead of \fILIST\fP or \fIRETR\fP.
4580-
4581-.IP IMAP
4582-Specifies a custom IMAP command to use instead of \fILIST\fP.
4583-.IP SMTP
4584-Specifies a custom SMTP command to use instead of \fIHELP\fP or \fBVRFY\fP.
4585-.RE
4586-.IP
4587-
4588-If --request is provided several times, the last set value is used.
4589-
4590-Examples:
4591-.nf
4592-curl -X "DELETE" https://example.com
4593-curl -X NLST ftp://example.com/
4594-.fi
4595-
4596-See also \fI\-\-request\-target\fP.
4597-.IP "\-\-request\-target <path>"
4598-(HTTP) Use an alternative target (path) instead of using the path as provided in the
4599-URL. Particularly useful when wanting to issue HTTP requests without leading
4600-slash or other data that does not follow the regular URL pattern, like
4601-\&"OPTIONS *".
4602-
4603-curl passes on the verbatim string you give it in the request without any
4604-filter or other safe guards. That includes white space and control characters.
4605-
4606-If --request-target is provided several times, the last set value is used.
4607-
4608-Example:
4609-.nf
4610-curl --request-target "*" -X OPTIONS https://example.com
4611-.fi
4612-
4613-See also \fI-X, \-\-request\fP.
4614-.IP "\-\-resolve <[+]host:port:addr[,addr]...>"
4615-Provide a custom address for a specific host and port pair. Using this, you
4616-can make the curl requests(s) use a specified address and prevent the
4617-otherwise normally resolved address to be used. Consider it a sort of
4618-/etc/hosts alternative provided on the command line. The port number should be
4619-the number used for the specific protocol the host is used for. It means you
4620-need several entries if you want to provide addresses for the same host but
4621-different ports.
4622-
4623-By specifying "*" as host you can tell curl to resolve any host and specific
4624-port pair to the specified address. Wildcard is resolved last so any \fI\-\-resolve\fP
4625-with a specific host and port is used first.
4626-
4627-The provided address set by this option is used even if \fI\-4, \-\-ipv4\fP or \fI\-6, \-\-ipv6\fP is
4628-set to make curl use another IP version.
4629-
4630-By prefixing the host with a \(aq+\(aq you can make the entry time out after curl\(aqs
4631-default timeout (1 minute). Note that this only makes sense for long running
4632-parallel transfers with a lot of files. In such cases, if this option is used
4633-curl tries to resolve the host as it normally would once the timeout has
4634-expired.
4635-
4636-Provide IPv6 addresses within [brackets].
4637-
4638-To redirect connects from a specific hostname or any hostname, independently
4639-of port number, consider the \fI\-\-connect\-to\fP option.
4640-
4641-Support for resolving with wildcard was added in 7.64.0.
4642-
4643-Support for the \(aq+\(aq prefix was added in 7.75.0.
4644-
4645-Support for specifying the host component as an IPv6 address was added in 8.13.0.
4646-
4647---resolve can be used several times in a command line
4648-
4649-Examples:
4650-.nf
4651-curl --resolve example.com:443:127.0.0.1 https://example.com
4652-curl --resolve example.com:443:[2001:db8::252f:efd6] https://example.com
4653-.fi
4654-
4655-See also \fI\-\-connect\-to\fP and \fI\-\-alt\-svc\fP.
4656-.IP "\-\-retry <num>"
4657-If a transient error is returned when curl tries to perform a transfer, it
4658-retries this number of times before giving up. Setting the number to 0
4659-makes curl do no retries (which is the default). Transient error means either:
4660-a timeout, an FTP 4xx response code or an HTTP 408, 429, 500, 502, 503 or 504
4661-response code.
4662-
4663-When curl is about to retry a transfer, it first waits one second and then for
4664-all forthcoming retries it doubles the waiting time until it reaches 10
4665-minutes, which then remains the set fixed delay time between the rest of the
4666-retries. By using \fI\-\-retry\-delay\fP you disable this exponential backoff algorithm.
4667-See also \fI\-\-retry\-max\-time\fP to limit the total time allowed for retries.
4668-
4669-curl complies with the Retry\-After: response header if one was present to know
4670-when to issue the next retry (added in 7.66.0).
4671-
4672-If --retry is provided several times, the last set value is used.
4673-
4674-Example:
4675-.nf
4676-curl --retry 7 https://example.com
4677-.fi
4678-
4679-See also \fI\-\-retry\-max\-time\fP.
4680-.IP "\-\-retry\-all\-errors"
4681-Retry on any error. This option is used together with \fI\-\-retry\fP.
4682-
4683-This option is the "sledgehammer" of retrying. Do not use this option by
4684-default (for example in your \fBcurlrc\fP), there may be unintended consequences
4685-such as sending or receiving duplicate data. Do not use with redirected input
4686-or output. You might be better off handling your unique problems in a shell
4687-script. Please read the example below.
4688-
4689-\fBWARNING\fP: For server compatibility curl attempts to retry failed flaky
4690-transfers as close as possible to how they were started, but this is not
4691-possible with redirected input or output. For example, before retrying it
4692-removes output data from a failed partial transfer that was written to an
4693-output file. However this is not true of data redirected to a | pipe or >
4694-file, which are not reset. We strongly suggest you do not parse or record
4695-output via redirect in combination with this option, since you may receive
4696-duplicate data.
4697-
4698-By default curl does not return an error for transfers with an HTTP response code
4699-that indicates an HTTP error, if the transfer was successful. For example, if
4700-a server replies 404 Not Found and the reply is fully received then that is
4701-not an error. When \fI\-\-retry\fP is used then curl retries on some HTTP response
4702-codes that indicate transient HTTP errors, but that does not include most 4xx
4703-response codes such as 404. If you want to retry on all response codes that
4704-indicate HTTP errors (4xx and 5xx) then combine with \fI\-f, \-\-fail\fP.
4705-
4706-Providing --retry-all-errors multiple times has no extra effect.
4707-Disable it again with \-\-no-retry-all-errors.
4708-
4709-Example:
4710-.nf
4711-curl --retry 5 --retry-all-errors https://example.com
4712-.fi
4713-
4714-Added in 7.71.0. See also \fI\-\-retry\fP.
4715-.IP "\-\-retry\-connrefused"
4716-In addition to the other conditions, consider ECONNREFUSED as a transient
4717-error too for \fI\-\-retry\fP. This option is used together with \fI\-\-retry\fP.
4718-
4719-Providing --retry-connrefused multiple times has no extra effect.
4720-Disable it again with \-\-no-retry-connrefused.
4721-
4722-Example:
4723-.nf
4724-curl --retry-connrefused --retry 7 https://example.com
4725-.fi
4726-
4727-See also \fI\-\-retry\fP and \fI\-\-retry\-all\-errors\fP.
4728-.IP "\-\-retry\-delay <seconds>"
4729-Make curl sleep this amount of time before each retry when a transfer has
4730-failed with a transient error (it changes the default backoff time algorithm
4731-between retries). This option is only interesting if \fI\-\-retry\fP is also
4732-used. Setting this delay to zero makes curl use the default backoff time.
4733-
4734-If --retry-delay is provided several times, the last set value is used.
4735-
4736-Example:
4737-.nf
4738-curl --retry-delay 5 --retry 7 https://example.com
4739-.fi
4740-
4741-See also \fI\-\-retry\fP.
4742-.IP "\-\-retry\-max\-time <seconds>"
4743-The retry timer is reset before the first transfer attempt. Retries are done
4744-as usual (see \fI\-\-retry\fP) as long as the timer has not reached this given
4745-limit. Notice that if the timer has not reached the limit, the request is
4746-made and while performing, it may take longer than this given time period. To
4747-limit a single request\(aqs maximum time, use \fI\-m, \-\-max\-time\fP. Set this option to zero
4748-to not timeout retries.
4749-
4750-If --retry-max-time is provided several times, the last set value is used.
4751-
4752-Example:
4753-.nf
4754-curl --retry-max-time 30 --retry 10 https://example.com
4755-.fi
4756-
4757-See also \fI\-\-retry\fP.
4758-.IP "\-\-sasl\-authzid <identity>"
4759-Use this authorization identity (\fBauthzid\fP), during SASL PLAIN
4760-authentication, in addition to the authentication identity (\fBauthcid\fP) as
4761-specified by \fI\-u, \-\-user\fP.
4762-
4763-If the option is not specified, the server derives the \fBauthzid\fP from the
4764-\fBauthcid\fP, but if specified, and depending on the server implementation, it
4765-may be used to access another user\(aqs inbox, that the user has been granted
4766-access to, or a shared mailbox for example.
4767-
4768-If --sasl-authzid is provided several times, the last set value is used.
4769-
4770-Example:
4771-.nf
4772-curl --sasl-authzid zid imap://example.com/
4773-.fi
4774-
4775-Added in 7.66.0. See also \fI\-\-login\-options\fP.
4776-.IP "\-\-sasl\-ir"
4777-Enable initial response in SASL authentication.
4778-
4779-Providing --sasl-ir multiple times has no extra effect.
4780-Disable it again with \-\-no-sasl-ir.
4781-
4782-Example:
4783-.nf
4784-curl --sasl-ir imap://example.com/
4785-.fi
4786-
4787-See also \fI\-\-sasl\-authzid\fP.
4788-.IP "\-\-service\-name <name>"
4789-Set the service name for SPNEGO.
4790-
4791-If --service-name is provided several times, the last set value is used.
4792-
4793-Example:
4794-.nf
4795-curl --service-name sockd/server https://example.com
4796-.fi
4797-
4798-See also \fI\-\-negotiate\fP and \fI\-\-proxy\-service\-name\fP.
4799-.IP "\-S, \-\-show\-error"
4800-When used with \fI\-s, \-\-silent\fP, it makes curl show an error message if it fails.
4801-
4802-This option is global and does not need to be specified for each use of --next.
4803-
4804-Providing --show-error multiple times has no extra effect.
4805-Disable it again with \-\-no-show-error.
4806-
4807-Example:
4808-.nf
4809-curl --show-error --silent https://example.com
4810-.fi
4811-
4812-See also \fI\-\-no\-progress\-meter\fP.
4813-.IP "\-i, \-\-show\-headers"
4814-(HTTP FTP) Show response headers in the output. HTTP response headers can include things
4815-like server name, cookies, date of the document, HTTP version and more. With
4816-non\-HTTP protocols, the "headers" are other server communication.
4817-
4818-This option makes the response headers get saved in the same stream/output as
4819-the data. \fI\-D, \-\-dump\-header\fP exists to save headers in a separate stream.
4820-
4821-To view the request headers, consider the \fI\-v, \-\-verbose\fP option.
4822-
4823-Prior to 7.75.0 curl did not print the headers if \fI\-f, \-\-fail\fP was used in
4824-combination with this option and there was an error reported by the server.
4825-
4826-This option was called \fI\-\-include\fP before 8.10.0. The previous name remains
4827-functional.
4828-
4829-Providing --show-headers multiple times has no extra effect.
4830-Disable it again with \-\-no-show-headers.
4831-
4832-Example:
4833-.nf
4834-curl -i https://example.com
4835-.fi
4836-
4837-See also \fI-v, \-\-verbose\fP and \fI-D, \-\-dump\-header\fP.
4838-.IP "\-\-sigalgs <list>"
4839-(TLS) Set specific signature algorithms to use during SSL session establishment according to RFC
4840-5246, 7.4.1.4.1.
4841-
4842-An algorithm can use either a signature algorithm and a hash algorithm pair separated by a
4843-\&"+" (e.g. "ECDSA+SHA224"), or its TLS 1.3 signature scheme name (e.g. "ed25519").
4844-
4845-Multiple algorithms can be provided by separating them with ":"
4846-(e.g. "DSA+SHA256:rsa_pss_pss_sha256"). The parameter is available as "\-sigalgs" in the
4847-OpenSSL "s_client" and "s_server" utilities.
4848-
4849-\&"\fI\-\-sigalgs\fP" allows a OpenSSL powered curl to make SSL\-connections with exactly
4850-the signature algorithms requested by the client, avoiding nontransparent client/server
4851-negotiations.
4852-
4853-If this option is set, the default signature algorithm list built into OpenSSL are ignored.
4854-
4855-If --sigalgs is provided several times, the last set value is used.
4856-
4857-Example:
4858-.nf
4859-curl --sigalgs ecdsa_secp256r1_sha256 https://example.com
4860-.fi
4861-
4862-Added in 8.14.0. See also \fI\-\-ciphers\fP.
4863-.IP "\-s, \-\-silent"
4864-Silent or quiet mode. Do not show progress meter or error messages. Makes curl
4865-mute. It still outputs the data you ask for, potentially even to the
4866-terminal/stdout unless you redirect it.
4867-
4868-Use \fI\-S, \-\-show\-error\fP in addition to this option to disable progress meter but
4869-still show error messages.
4870-
4871-Providing --silent multiple times has no extra effect.
4872-Disable it again with \-\-no-silent.
4873-
4874-Example:
4875-.nf
4876-curl -s https://example.com
4877-.fi
4878-
4879-See also \fI-v, \-\-verbose\fP, \fI\-\-stderr\fP and \fI\-\-no\-progress\-meter\fP.
4880-.IP "\-\-skip\-existing"
4881-If there is a local file present when a download is requested, the operation
4882-is skipped. Note that curl cannot know if the local file was previously
4883-downloaded fine, or if it is incomplete etc, it just knows if there is a
4884-filename present in the file system or not and it skips the transfer if it is.
4885-
4886-Providing --skip-existing multiple times has no extra effect.
4887-Disable it again with \-\-no-skip-existing.
4888-
4889-Example:
4890-.nf
4891-curl --skip-existing --output local/dir/file https://example.com
4892-.fi
4893-
4894-Added in 8.10.0. See also \fI-o, \-\-output\fP, \fI-O, \-\-remote\-name\fP and \fI\-\-no\-clobber\fP.
4895-.IP "\-\-socks4 <host[:port]>"
4896-Use the specified SOCKS4 proxy. If the port number is not specified, it is
4897-assumed at port 1080. Using this socket type makes curl resolve the hostname
4898-and pass the address on to the proxy.
4899-
4900-To specify proxy on a Unix domain socket, use localhost for host, e.g.
4901-\&"socks4://localhost/path/to/socket.sock"
4902-
4903-This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
4904-exclusive.
4905-
4906-This option is superfluous since you can specify a socks4 proxy with \fI\-x, \-\-proxy\fP
4907-using a socks4:// protocol prefix.
4908-
4909-\fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time proxy is used
4910-with an HTTP/HTTPS proxy. In such a case, curl first
4911-connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or
4912-HTTPS proxy.
4913-
4914-If --socks4 is provided several times, the last set value is used.
4915-
4916-Example:
4917-.nf
4918-curl --socks4 hostname:4096 https://example.com
4919-.fi
4920-
4921-See also \fI\-\-socks4a\fP, \fI\-\-socks5\fP and \fI\-\-socks5\-hostname\fP.
4922-.IP "\-\-socks4a <host[:port]>"
4923-Use the specified SOCKS4a proxy. If the port number is not specified, it is
4924-assumed at port 1080. This asks the proxy to resolve the hostname.
4925-
4926-To specify proxy on a Unix domain socket, use localhost for host, e.g.
4927-\&"socks4a://localhost/path/to/socket.sock"
4928-
4929-This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
4930-exclusive.
4931-
4932-This option is superfluous since you can specify a socks4a proxy with \fI\-x, \-\-proxy\fP
4933-using a socks4a:// protocol prefix.
4934-
4935-\fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time \fI\-x, \-\-proxy\fP is
4936-used with an HTTP/HTTPS proxy. In such a case, curl first
4937-connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or
4938-HTTPS proxy.
4939-
4940-If --socks4a is provided several times, the last set value is used.
4941-
4942-Example:
4943-.nf
4944-curl --socks4a hostname:4096 https://example.com
4945-.fi
4946-
4947-See also \fI\-\-socks4\fP, \fI\-\-socks5\fP and \fI\-\-socks5\-hostname\fP.
4948-.IP "\-\-socks5 <host[:port]>"
4949-Use the specified SOCKS5 proxy \- but resolve the hostname locally. If the
4950-port number is not specified, it is assumed at port 1080.
4951-
4952-To specify proxy on a Unix domain socket, use localhost for host, e.g.
4953-\&"socks5://localhost/path/to/socket.sock"
4954-
4955-This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
4956-exclusive.
4957-
4958-This option is superfluous since you can specify a socks5 proxy with \fI\-x, \-\-proxy\fP
4959-using a socks5:// protocol prefix.
4960-
4961-\fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time \fI\-x, \-\-proxy\fP is
4962-used with an HTTP/HTTPS proxy. In such a case, curl first
4963-connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or
4964-HTTPS proxy.
4965-
4966-This option does not work with FTPS or LDAP.
4967-
4968-If --socks5 is provided several times, the last set value is used.
4969-
4970-Example:
4971-.nf
4972-curl --socks5 proxy.example:7000 https://example.com
4973-.fi
4974-
4975-See also \fI\-\-socks5\-hostname\fP and \fI\-\-socks4a\fP.
4976-.IP "\-\-socks5\-basic"
4977-Use username/password authentication when connecting to a SOCKS5 proxy. The
4978-username/password authentication is enabled by default. Use \fI\-\-socks5\-gssapi\fP to
4979-force GSS\-API authentication to SOCKS5 proxies.
4980-
4981-Providing --socks5-basic multiple times has no extra effect.
4982-
4983-Example:
4984-.nf
4985-curl --socks5-basic --socks5 hostname:4096 https://example.com
4986-.fi
4987-
4988-See also \fI\-\-socks5\fP.
4989-.IP "\-\-socks5\-gssapi"
4990-Use GSS\-API authentication when connecting to a SOCKS5 proxy. The GSS\-API
4991-authentication is enabled by default (if curl is compiled with GSS\-API
4992-support). Use \fI\-\-socks5\-basic\fP to force username/password authentication to
4993-SOCKS5 proxies.
4994-
4995-Providing --socks5-gssapi multiple times has no extra effect.
4996-Disable it again with \-\-no-socks5-gssapi.
4997-
4998-Example:
4999-.nf
5000-curl --socks5-gssapi --socks5 hostname:4096 https://example.com
5001-.fi
5002-
5003-See also \fI\-\-socks5\fP.
5004-.IP "\-\-socks5\-gssapi\-nec"
5005-As part of the GSS\-API negotiation a protection mode is negotiated. RFC 1961
5006-says in section 4.3/4.4 it should be protected, but the NEC reference
5007-implementation does not. The option \fI\-\-socks5\-gssapi\-nec\fP allows the
5008-unprotected exchange of the protection mode negotiation.
5009-
5010-Providing --socks5-gssapi-nec multiple times has no extra effect.
5011-Disable it again with \-\-no-socks5-gssapi-nec.
5012-
5013-Example:
5014-.nf
5015-curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com
5016-.fi
5017-
5018-See also \fI\-\-socks5\fP.
5019-.IP "\-\-socks5\-gssapi\-service <name>"
5020-Set the service name for a socks server. Default is \fBrcmd/server\-fqdn\fP.
5021-
5022-If --socks5-gssapi-service is provided several times, the last set value is used.
5023-
5024-Example:
5025-.nf
5026-curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com
5027-.fi
5028-
5029-See also \fI\-\-socks5\fP.
5030-.IP "\-\-socks5\-hostname <host[:port]>"
5031-Use the specified SOCKS5 proxy (and let the proxy resolve the hostname). If
5032-the port number is not specified, it is assumed at port 1080.
5033-
5034-To specify proxy on a Unix domain socket, use localhost for host, e.g.
5035-\&"socks5h://localhost/path/to/socket.sock"
5036-
5037-This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
5038-exclusive.
5039-
5040-This option is superfluous since you can specify a socks5 hostname proxy with
5041-\fI\-x, \-\-proxy\fP using a socks5h:// protocol prefix.
5042-
5043-\fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time \fI\-x, \-\-proxy\fP is
5044-used with an HTTP/HTTPS proxy. In such a case, curl first
5045-connects to the SOCKS proxy and then connects (through SOCKS) to the HTTP or
5046-HTTPS proxy.
5047-
5048-If --socks5-hostname is provided several times, the last set value is used.
5049-
5050-Example:
5051-.nf
5052-curl --socks5-hostname proxy.example:7000 https://example.com
5053-.fi
5054-
5055-See also \fI\-\-socks5\fP and \fI\-\-socks4a\fP.
5056-.IP "\-Y, \-\-speed\-limit <speed>"
5057-If a transfer is slower than this set speed (in bytes per second) for a given
5058-number of seconds, it gets aborted. The time period is set with \fI\-y, \-\-speed\-time\fP
5059-and is 30 seconds by default.
5060-
5061-If --speed-limit is provided several times, the last set value is used.
5062-
5063-Example:
5064-.nf
5065-curl --speed-limit 300 --speed-time 10 https://example.com
5066-.fi
5067-
5068-See also \fI-y, \-\-speed\-time\fP, \fI\-\-limit\-rate\fP and \fI-m, \-\-max\-time\fP.
5069-.IP "\-y, \-\-speed\-time <seconds>"
5070-If a transfer runs slower than speed\-limit bytes per second during a
5071-speed\-time period, the transfer is aborted. If speed\-time is used, the default
5072-speed\-limit is 1 unless set with \fI\-Y, \-\-speed\-limit\fP.
5073-
5074-This option controls transfers (in both directions) but does not affect slow
5075-connects etc. If this is a concern for you, try the \fI\-\-connect\-timeout\fP option.
5076-
5077-If --speed-time is provided several times, the last set value is used.
5078-
5079-Example:
5080-.nf
5081-curl --speed-limit 300 --speed-time 10 https://example.com
5082-.fi
5083-
5084-See also \fI-Y, \-\-speed\-limit\fP and \fI\-\-limit\-rate\fP.
5085-.IP "\-\-ssl"
5086-(FTP IMAP POP3 SMTP LDAP) Warning: this is considered an insecure option. Consider using \fI\-\-ssl\-reqd\fP
5087-instead to be sure curl upgrades to a secure connection.
5088-
5089-Try to use SSL/TLS for the connection \- often referred to as STARTTLS or STLS
5090-because of the involved commands. Reverts to a non\-secure connection if the
5091-server does not support SSL/TLS. See also \fI\-\-ftp\-ssl\-control\fP and \fI\-\-ssl\-reqd\fP for
5092-different levels of encryption required.
5093-
5094-This option is handled in LDAP (added in 7.81.0). It is fully supported by the
5095-OpenLDAP backend and ignored by the generic ldap backend.
5096-
5097-Please note that a server may close the connection if the negotiation does
5098-not succeed.
5099-
5100-This option was formerly known as \fI\-\-ftp\-ssl\fP. That option
5101-name can still be used but might be removed in a future version.
5102-
5103-Providing --ssl multiple times has no extra effect.
5104-Disable it again with \-\-no-ssl.
5105-
5106-Example:
5107-.nf
5108-curl --ssl pop3://example.com/
5109-.fi
5110-
5111-See also \fI\-\-ssl\-reqd\fP, \fI-k, \-\-insecure\fP and \fI\-\-ciphers\fP.
5112-.IP "\-\-ssl\-allow\-beast"
5113-(TLS) Do not work around a security flaw in the TLS1.0 protocol known as BEAST. If
5114-this option is not used, the TLS layer may use workarounds known to cause
5115-interoperability problems with some older server implementations.
5116-
5117-This option only changes how curl does TLS 1.0 and has no effect on later TLS
5118-versions.
5119-
5120-\fBWARNING\fP: this option loosens the TLS security, and by using this flag you
5121-ask for exactly that.
5122-
5123-Providing --ssl-allow-beast multiple times has no extra effect.
5124-Disable it again with \-\-no-ssl-allow-beast.
5125-
5126-Example:
5127-.nf
5128-curl --ssl-allow-beast https://example.com
5129-.fi
5130-
5131-See also \fI\-\-proxy\-ssl\-allow\-beast\fP and \fI-k, \-\-insecure\fP.
5132-.IP "\-\-ssl\-auto\-client\-cert"
5133-(TLS) (Schannel) Automatically locate and use a client certificate for
5134-authentication, when requested by the server. Since the server can request any
5135-certificate that supports client authentication in the OS certificate store it
5136-could be a privacy violation and unexpected.
5137-
5138-Providing --ssl-auto-client-cert multiple times has no extra effect.
5139-Disable it again with \-\-no-ssl-auto-client-cert.
5140-
5141-Example:
5142-.nf
5143-curl --ssl-auto-client-cert https://example.com
5144-.fi
5145-
5146-Added in 7.77.0. See also \fI\-\-proxy\-ssl\-auto\-client\-cert\fP.
5147-.IP "\-\-ssl\-no\-revoke"
5148-(TLS) (Schannel) Disable certificate revocation checks. WARNING: this option loosens
5149-the SSL security, and by using this flag you ask for exactly that.
5150-
5151-Providing --ssl-no-revoke multiple times has no extra effect.
5152-Disable it again with \-\-no-ssl-no-revoke.
5153-
5154-Example:
5155-.nf
5156-curl --ssl-no-revoke https://example.com
5157-.fi
5158-
5159-See also \fI\-\-crlfile\fP.
5160-.IP "\-\-ssl\-reqd"
5161-(FTP IMAP POP3 SMTP LDAP) Require SSL/TLS for the connection \- often referred to as STARTTLS or STLS
5162-because of the involved commands. Terminates the connection if the transfer
5163-cannot be upgraded to use SSL/TLS.
5164-
5165-This option is handled in LDAP (added in 7.81.0). It is fully supported by the
5166-OpenLDAP backend and rejected by the generic ldap backend if explicit TLS is
5167-required.
5168-
5169-This option is unnecessary if you use a URL scheme that in itself implies
5170-immediate and implicit use of TLS, like for FTPS, IMAPS, POP3S, SMTPS and
5171-LDAPS. Such a transfer always fails if the TLS handshake does not work.
5172-
5173-This option was formerly known as \fI\-\-ftp\-ssl\-reqd\fP.
5174-
5175-Providing --ssl-reqd multiple times has no extra effect.
5176-Disable it again with \-\-no-ssl-reqd.
5177-
5178-Example:
5179-.nf
5180-curl --ssl-reqd ftp://example.com
5181-.fi
5182-
5183-See also \fI\-\-ssl\fP and \fI-k, \-\-insecure\fP.
5184-.IP "\-\-ssl\-revoke\-best\-effort"
5185-(TLS) (Schannel) Ignore certificate revocation checks when they failed due to
5186-missing/offline distribution points for the revocation check lists.
5187-
5188-Providing --ssl-revoke-best-effort multiple times has no extra effect.
5189-Disable it again with \-\-no-ssl-revoke-best-effort.
5190-
5191-Example:
5192-.nf
5193-curl --ssl-revoke-best-effort https://example.com
5194-.fi
5195-
5196-Added in 7.70.0. See also \fI\-\-crlfile\fP and \fI-k, \-\-insecure\fP.
5197-.IP "\-\-ssl\-sessions <filename>"
5198-(TLS) Use the given file to load SSL session tickets into curl\(aqs cache before
5199-starting any transfers. At the end of a successful curl run, the cached
5200-SSL sessions tickets are saved to the file, replacing any previous content.
5201-
5202-The file does not have to exist, but curl reports an error if it is
5203-unable to create it. Unused loaded tickets are saved again, unless they
5204-get replaced or purged from the cache for space reasons.
5205-
5206-Using a session file allows "\fI\-\-tls\-earlydata\fP" to send the first request
5207-in "0\-RTT" mode, should an SSL session with the feature be found. Note that
5208-a server may not support early data. Also note that early data does
5209-not provide forward secrecy, e.g. is not as secure.
5210-
5211-The SSL session tickets are stored as base64 encoded text, each ticket on
5212-its own line. The hostnames are cryptographically salted and hashed. While
5213-this prevents someone from easily seeing the hosts you contacted, they could
5214-still check if a specific hostname matches one of the values.
5215-
5216-If --ssl-sessions is provided several times, the last set value is used.
5217-
5218-Example:
5219-.nf
5220-curl --ssl-sessions sessions.txt https://example.com
5221-.fi
5222-
5223-Added in 8.12.0. See also \fI\-\-tls\-earlydata\fP.
5224-.IP "\-2, \-\-sslv2"
5225-(SSL) This option previously asked curl to use SSLv2, but is now ignored
5226-(added in 7.77.0). SSLv2 is widely considered insecure (see RFC 6176).
5227-
5228-Providing --sslv2 multiple times has no extra effect.
5229-
5230-Example:
5231-.nf
5232-curl --sslv2 https://example.com
5233-.fi
5234-
5235-\fI-2, \-\-sslv2\fP requires that libcurl is built to support TLS.
5236-This option is mutually exclusive with \fI-3, \-\-sslv3\fP, \fI-1, \-\-tlsv1\fP, \fI\-\-tlsv1.1\fP and \fI\-\-tlsv1.2\fP.
5237-See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
5238-.IP "\-3, \-\-sslv3"
5239-(SSL) This option previously asked curl to use SSLv3, but is now ignored
5240-(added in 7.77.0). SSLv3 is widely considered insecure (see RFC 7568).
5241-
5242-Providing --sslv3 multiple times has no extra effect.
5243-
5244-Example:
5245-.nf
5246-curl --sslv3 https://example.com
5247-.fi
5248-
5249-\fI-3, \-\-sslv3\fP requires that libcurl is built to support TLS.
5250-This option is mutually exclusive with \fI-2, \-\-sslv2\fP, \fI-1, \-\-tlsv1\fP, \fI\-\-tlsv1.1\fP and \fI\-\-tlsv1.2\fP.
5251-See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
5252-.IP "\-\-stderr <file>"
5253-Redirect all writes to stderr to the specified file instead. If the filename
5254-is a plain \(aq\-\(aq, it is instead written to stdout.
5255-
5256-This option is global and does not need to be specified for each use of --next.
5257-
5258-If --stderr is provided several times, the last set value is used.
5259-
5260-Example:
5261-.nf
5262-curl --stderr output.txt https://example.com
5263-.fi
5264-
5265-See also \fI-v, \-\-verbose\fP and \fI-s, \-\-silent\fP.
5266-.IP "\-\-styled\-output"
5267-Enable automatic use of bold font styles when writing HTTP headers to the
5268-terminal. Use \fI\-\-no\-styled\-output\fP to switch them off.
5269-
5270-Styled output requires a terminal that supports bold fonts. This feature is
5271-not present on curl for Windows due to lack of this capability.
5272-
5273-This option is global and does not need to be specified for each use of --next.
5274-
5275-Providing --styled-output multiple times has no extra effect.
5276-Disable it again with \-\-no-styled-output.
5277-
5278-Example:
5279-.nf
5280-curl --styled-output -I https://example.com
5281-.fi
5282-
5283-Added in 7.61.0. See also \fI-I, \-\-head\fP and \fI-v, \-\-verbose\fP.
5284-.IP "\-\-suppress\-connect\-headers"
5285-When \fI\-p, \-\-proxytunnel\fP is used and a CONNECT request is made, do not output proxy
5286-CONNECT response headers. This option is meant to be used with \fI\-D, \-\-dump\-header\fP
5287-or \fI\-i, \-\-show\-headers\fP which are used to show protocol headers in the output. It
5288-has no effect on debug options such as \fI\-v, \-\-verbose\fP or \fI\-\-trace\fP, or any
5289-statistics.
5290-
5291-Providing --suppress-connect-headers multiple times has no extra effect.
5292-Disable it again with \-\-no-suppress-connect-headers.
5293-
5294-Example:
5295-.nf
5296-curl --suppress-connect-headers --show-headers -x proxy https://example.com
5297-.fi
5298-
5299-See also \fI-D, \-\-dump\-header\fP, \fI-i, \-\-show\-headers\fP and \fI-p, \-\-proxytunnel\fP.
5300-.IP "\-\-tcp\-fastopen"
5301-Enable use of TCP Fast Open (RFC 7413). TCP Fast Open is a TCP extension that
5302-allows data to be sent earlier over the connection (before the final
5303-handshake ACK) if the client and server have been connected previously.
5304-
5305-Providing --tcp-fastopen multiple times has no extra effect.
5306-Disable it again with \-\-no-tcp-fastopen.
5307-
5308-Example:
5309-.nf
5310-curl --tcp-fastopen https://example.com
5311-.fi
5312-
5313-See also \fI\-\-false\-start\fP.
5314-.IP "\-\-tcp\-nodelay"
5315-Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
5316-details about this option.
5317-
5318-curl sets this option by default and you need to explicitly switch it off if
5319-you do not want it on.
5320-
5321-Providing --tcp-nodelay multiple times has no extra effect.
5322-Disable it again with \-\-no-tcp-nodelay.
5323-
5324-Example:
5325-.nf
5326-curl --tcp-nodelay https://example.com
5327-.fi
5328-
5329-See also \fI-N, \-\-no\-buffer\fP.
5330-.IP "\-t, \-\-telnet\-option <opt=val>"
5331-Pass options to the telnet protocol. Supported options are:
5332-.RS
5333-.IP TTYPE=<term>
5334-Sets the terminal type.
5335-.IP "XDISPLOC=<X display>"
5336-Sets the X display location.
5337-.IP NEW_ENV=<var,val>
5338-Sets an environment variable.
5339-.RE
5340-.IP
5341-
5342---telnet-option can be used several times in a command line
5343-
5344-Example:
5345-.nf
5346-curl -t TTYPE=vt100 telnet://example.com/
5347-.fi
5348-
5349-See also \fI-K, \-\-config\fP.
5350-.IP "\-\-tftp\-blksize <value>"
5351-(TFTP) Set the TFTP \fBBLKSIZE\fP option (must be 512 or larger). This is the block
5352-size that curl tries to use when transferring data to or from a TFTP
5353-server. By default 512 bytes are used.
5354-
5355-If --tftp-blksize is provided several times, the last set value is used.
5356-
5357-Example:
5358-.nf
5359-curl --tftp-blksize 1024 tftp://example.com/file
5360-.fi
5361-
5362-See also \fI\-\-tftp\-no\-options\fP.
5363-.IP "\-\-tftp\-no\-options"
5364-(TFTP) Do not send TFTP options requests. This improves interop with some legacy
5365-servers that do not acknowledge or properly implement TFTP options. When this
5366-option is used \fI\-\-tftp\-blksize\fP is ignored.
5367-
5368-Providing --tftp-no-options multiple times has no extra effect.
5369-Disable it again with \-\-no-tftp-no-options.
5370-
5371-Example:
5372-.nf
5373-curl --tftp-no-options tftp://192.168.0.1/
5374-.fi
5375-
5376-See also \fI\-\-tftp\-blksize\fP.
5377-.IP "\-z, \-\-time\-cond <time>"
5378-(HTTP FTP) Request a file that has been modified later than the given time and date, or
5379-one that has been modified before that time. The date expression can be all
5380-sorts of date strings or if it does not match any internal ones, it is treated
5381-as a filename and curl tries to get the modification date (mtime) from that
5382-file instead. See the \fIcurl_getdate(3)\fP man pages for date expression details.
5383-
5384-Start the date expression with a dash (\-) to make it request for a document
5385-that is older than the given date/time, default is a document that is newer
5386-than the specified date/time.
5387-
5388-If provided a non\-existing file, curl outputs a warning about that fact and
5389-proceeds to do the transfer without a time condition.
5390-
5391-If --time-cond is provided several times, the last set value is used.
5392-
5393-Examples:
5394-.nf
5395-curl -z "Wed 01 Sep 2021 12:18:00" https://example.com
5396-curl -z "-Wed 01 Sep 2021 12:18:00" https://example.com
5397-curl -z file https://example.com
5398-.fi
5399-
5400-See also \fI\-\-etag\-compare\fP and \fI-R, \-\-remote\-time\fP.
5401-.IP "\-\-tls\-earlydata"
5402-(TLS) Enable the use of TLSv1.3 early data, also known as \(aq0RTT\(aq where possible.
5403-This has security implications for the requests sent that way.
5404-
5405-This option is used when curl is built to use GnuTLS.
5406-
5407-If a server supports this TLSv1.3 feature, and to what extent, is announced
5408-as part of the TLS "session" sent back to curl. Until curl has seen such
5409-a session in a previous request, early data cannot be used.
5410-
5411-When a new connection is initiated with a known TLSv1.3 session, and that
5412-session announced early data support, the first request on this connection is
5413-sent \fIbefore\fP the TLS handshake is complete. While the early data is also
5414-encrypted, it is not protected against replays. An attacker can send
5415-your early data to the server again and the server would accept it.
5416-
5417-If your request contacts a public server and only retrieves a file, there
5418-may be no harm in that. If the first request orders a refrigerator
5419-for you, it is probably not a good idea to use early data for it. curl
5420-cannot deduce what the security implications of your requests actually
5421-are and make this decision for you.
5422-
5423-The amount of early data sent can be inspected by using the "\fI\-w, \-\-write\-out\fP"
5424-variable "tls_earlydata".
5425-
5426-\fBWARNING\fP: this option has security implications. See above for more
5427-details.
5428-
5429-Providing --tls-earlydata multiple times has no extra effect.
5430-Disable it again with \-\-no-tls-earlydata.
5431-
5432-Example:
5433-.nf
5434-curl --tls-earlydata https://example.com
5435-.fi
5436-
5437-Added in 8.11.0. See also \fI\-\-tlsv1.3\fP, \fI\-\-tls\-max\fP and \fI\-\-ssl\-sessions\fP.
5438-.IP "\-\-tls\-max <VERSION>"
5439-(TLS) Set the maximum allowed TLS version. The minimum acceptable version is set by
5440-tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.
5441-
5442-If the connection is done without TLS, this option has no effect. This
5443-includes QUIC\-using (HTTP/3) transfers.
5444-.RS
5445-.IP default
5446-Use up to the recommended TLS version.
5447-.IP 1.0
5448-Use up to TLSv1.0.
5449-.IP 1.1
5450-Use up to TLSv1.1.
5451-.IP 1.2
5452-Use up to TLSv1.2.
5453-.IP 1.3
5454-Use up to TLSv1.3.
5455-.RE
5456-.IP
5457-
5458-If --tls-max is provided several times, the last set value is used.
5459-
5460-Examples:
5461-.nf
5462-curl --tls-max 1.2 https://example.com
5463-curl --tls-max 1.3 --tlsv1.2 https://example.com
5464-.fi
5465-
5466-\fI\-\-tls\-max\fP requires that libcurl is built to support TLS.
5467-See also \fI\-\-tlsv1.0\fP, \fI\-\-tlsv1.1\fP, \fI\-\-tlsv1.2\fP and \fI\-\-tlsv1.3\fP.
5468-.IP "\-\-tls13\-ciphers <list>"
5469-(TLS) Set which cipher suites to use in the connection if it negotiates TLS 1.3. The
5470-list of ciphers suites must specify valid ciphers. Read up on TLS 1.3 cipher
5471-suite details on this URL:
5472-
5473-https://curl.se/docs/ssl\-ciphers.html
5474-
5475-This option is used when curl is built to use OpenSSL 1.1.1 or later,
5476-wolfSSL, or mbedTLS 3.6.0 or later.
5477-
5478-Before curl 8.10.0 with mbedTLS or wolfSSL, TLS 1.3 cipher suites were set
5479-by using the \fI\-\-ciphers\fP option.
5480-
5481-If --tls13-ciphers is provided several times, the last set value is used.
5482-
5483-Example:
5484-.nf
5485-curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com
5486-.fi
5487-
5488-Added in 7.61.0. See also \fI\-\-ciphers\fP, \fI\-\-proxy\-tls13\-ciphers\fP and \fI\-\-curves\fP.
5489-.IP "\-\-tlsauthtype <type>"
5490-(TLS) Set TLS authentication type. Currently, the only supported option is "SRP",
5491-for TLS\-SRP (RFC 5054). If \fI\-\-tlsuser\fP and \fI\-\-tlspassword\fP are specified but
5492-\fI\-\-tlsauthtype\fP is not, then this option defaults to "SRP". This option works
5493-only if the underlying libcurl is built with TLS\-SRP support, which requires
5494-OpenSSL or GnuTLS with TLS\-SRP support.
5495-
5496-If --tlsauthtype is provided several times, the last set value is used.
5497-
5498-Example:
5499-.nf
5500-curl --tlsauthtype SRP https://example.com
5501-.fi
5502-
5503-See also \fI\-\-tlsuser\fP.
5504-.IP "\-\-tlspassword <string>"
5505-(TLS) Set password to use with the TLS authentication method specified with
5506-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlsuser\fP is set.
5507-
5508-This option does not work with TLS 1.3.
5509-
5510-If --tlspassword is provided several times, the last set value is used.
5511-
5512-Example:
5513-.nf
5514-curl --tlspassword pwd --tlsuser user https://example.com
5515-.fi
5516-
5517-See also \fI\-\-tlsuser\fP.
5518-.IP "\-\-tlsuser <name>"
5519-(TLS) Set username for use with the TLS authentication method specified with
5520-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlspassword\fP also is set.
5521-
5522-This option does not work with TLS 1.3.
5523-
5524-If --tlsuser is provided several times, the last set value is used.
5525-
5526-Example:
5527-.nf
5528-curl --tlspassword pwd --tlsuser user https://example.com
5529-.fi
5530-
5531-See also \fI\-\-tlspassword\fP.
5532-.IP "\-1, \-\-tlsv1"
5533-(TLS) Use at least TLS version 1.x when negotiating with a remote TLS server. That
5534-means TLS version 1.0 or higher
5535-
5536-Providing --tlsv1 multiple times has no extra effect.
5537-
5538-Example:
5539-.nf
5540-curl --tlsv1 https://example.com
5541-.fi
5542-
5543-\fI-1, \-\-tlsv1\fP requires that libcurl is built to support TLS.
5544-This option is mutually exclusive with \fI\-\-tlsv1.1\fP, \fI\-\-tlsv1.2\fP and \fI\-\-tlsv1.3\fP.
5545-See also \fI\-\-http1.1\fP and \fI\-\-http2\fP.
5546-.IP "\-\-tlsv1.0"
5547-(TLS) Force curl to use TLS version 1.0 or later when connecting to a remote TLS server.
5548-
5549-In old versions of curl this option was documented to allow _only_ TLS 1.0.
5550-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls\-max\fP if
5551-you want to set a maximum TLS version.
5552-
5553-Providing --tlsv1.0 multiple times has no extra effect.
5554-
5555-Example:
5556-.nf
5557-curl --tlsv1.0 https://example.com
5558-.fi
5559-
5560-See also \fI\-\-tlsv1.3\fP.
5561-.IP "\-\-tlsv1.1"
5562-(TLS) Force curl to use TLS version 1.1 or later when connecting to a remote TLS server.
5563-
5564-In old versions of curl this option was documented to allow _only_ TLS 1.1.
5565-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls\-max\fP if
5566-you want to set a maximum TLS version.
5567-
5568-Providing --tlsv1.1 multiple times has no extra effect.
5569-
5570-Example:
5571-.nf
5572-curl --tlsv1.1 https://example.com
5573-.fi
5574-
5575-See also \fI\-\-tlsv1.3\fP and \fI\-\-tls\-max\fP.
5576-.IP "\-\-tlsv1.2"
5577-(TLS) Force curl to use TLS version 1.2 or later when connecting to a remote TLS server.
5578-
5579-In old versions of curl this option was documented to allow _only_ TLS 1.2.
5580-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls\-max\fP if
5581-you want to set a maximum TLS version.
5582-
5583-Providing --tlsv1.2 multiple times has no extra effect.
5584-
5585-Example:
5586-.nf
5587-curl --tlsv1.2 https://example.com
5588-.fi
5589-
5590-See also \fI\-\-tlsv1.3\fP and \fI\-\-tls\-max\fP.
5591-.IP "\-\-tlsv1.3"
5592-(TLS) Force curl to use TLS version 1.3 or later when connecting to a remote TLS
5593-server.
5594-
5595-If the connection is done without TLS, this option has no effect. This
5596-includes QUIC\-using (HTTP/3) transfers.
5597-
5598-Note that TLS 1.3 is not supported by all TLS backends.
5599-
5600-Providing --tlsv1.3 multiple times has no extra effect.
5601-
5602-Example:
5603-.nf
5604-curl --tlsv1.3 https://example.com
5605-.fi
5606-
5607-See also \fI\-\-tlsv1.2\fP and \fI\-\-tls\-max\fP.
5608-.IP "\-\-tr\-encoding"
5609-(HTTP) Request a compressed Transfer\-Encoding response using one of the algorithms
5610-curl supports, and uncompress the data while receiving it.
5611-
5612-Providing --tr-encoding multiple times has no extra effect.
5613-Disable it again with \-\-no-tr-encoding.
5614-
5615-Example:
5616-.nf
5617-curl --tr-encoding https://example.com
5618-.fi
5619-
5620-See also \fI\-\-compressed\fP.
5621-.IP "\-\-trace <file>"
5622-Save a full trace dump of all incoming and outgoing data, including
5623-descriptive information, in the given output file. Use "\-" as filename to have
5624-the output sent to stdout. Use "%" as filename to have the output sent to
5625-stderr.
5626-
5627-Note that verbose output of curl activities and network traffic might contain
5628-sensitive data, including usernames, credentials or secret data content. Be
5629-aware and be careful when sharing trace logs with others.
5630-
5631-This option is global and does not need to be specified for each use of --next.
5632-
5633-If --trace is provided several times, the last set value is used.
5634-
5635-Example:
5636-.nf
5637-curl --trace log.txt https://example.com
5638-.fi
5639-
5640-This option is mutually exclusive with \fI-v, \-\-verbose\fP and \fI\-\-trace\-ascii\fP.
5641-See also \fI\-\-trace\-ascii\fP, \fI\-\-trace\-config\fP, \fI\-\-trace\-ids\fP and \fI\-\-trace\-time\fP.
5642-.IP "\-\-trace\-ascii <file>"
5643-Save a full trace dump of all incoming and outgoing data, including
5644-descriptive information, in the given output file. Use "\-" as filename to have
5645-the output sent to stdout. Use "%" as filename to send the output to stderr.
5646-
5647-This is similar to \fI\-\-trace\fP, but leaves out the hex part and only shows the
5648-ASCII part of the dump. It makes smaller output that might be easier to read
5649-for untrained humans.
5650-
5651-Note that verbose output of curl activities and network traffic might contain
5652-sensitive data, including usernames, credentials or secret data content. Be
5653-aware and be careful when sharing trace logs with others.
5654-
5655-This option is global and does not need to be specified for each use of --next.
5656-
5657-If --trace-ascii is provided several times, the last set value is used.
5658-
5659-Example:
5660-.nf
5661-curl --trace-ascii log.txt https://example.com
5662-.fi
5663-
5664-This option is mutually exclusive with \fI\-\-trace\fP and \fI-v, \-\-verbose\fP.
5665-See also \fI-v, \-\-verbose\fP and \fI\-\-trace\fP.
5666-.IP "\-\-trace\-config <string>"
5667-Set configuration for trace output. A comma\-separated list of components where
5668-detailed output can be made available from. Names are case\-insensitive.
5669-Specify \(aqall\(aq to enable all trace components.
5670-
5671-In addition to trace component names, specify "ids" and "time" to avoid extra
5672-\fI\-\-trace\-ids\fP or \fI\-\-trace\-time\fP parameters.
5673-
5674-See the \fIcurl_global_trace(3)\fP man page for more details.
5675-
5676-This option is global and does not need to be specified for each use of --next.
5677-
5678---trace-config can be used several times in a command line
5679-
5680-Example:
5681-.nf
5682-curl --trace-config ids,http/2 https://example.com
5683-.fi
5684-
5685-Added in 8.3.0. See also \fI-v, \-\-verbose\fP and \fI\-\-trace\fP.
5686-.IP "\-\-trace\-ids"
5687-Prepend the transfer and connection identifiers to each trace or verbose line
5688-that curl displays.
5689-
5690-This option is global and does not need to be specified for each use of --next.
5691-
5692-Providing --trace-ids multiple times has no extra effect.
5693-Disable it again with \-\-no-trace-ids.
5694-
5695-Example:
5696-.nf
5697-curl --trace-ids --trace-ascii output https://example.com
5698-.fi
5699-
5700-Added in 8.2.0. See also \fI\-\-trace\fP and \fI-v, \-\-verbose\fP.
5701-.IP "\-\-trace\-time"
5702-Prepend a time stamp to each trace or verbose line that curl displays.
5703-
5704-This option is global and does not need to be specified for each use of --next.
5705-
5706-Providing --trace-time multiple times has no extra effect.
5707-Disable it again with \-\-no-trace-time.
5708-
5709-Example:
5710-.nf
5711-curl --trace-time --trace-ascii output https://example.com
5712-.fi
5713-
5714-See also \fI\-\-trace\fP and \fI-v, \-\-verbose\fP.
5715-.IP "\-\-unix\-socket <path>"
5716-(HTTP) Connect through this Unix domain socket, instead of using the network.
5717-
5718-If --unix-socket is provided several times, the last set value is used.
5719-
5720-Example:
5721-.nf
5722-curl --unix-socket socket-path https://example.com
5723-.fi
5724-
5725-See also \fI\-\-abstract\-unix\-socket\fP.
5726-.IP "\-T, \-\-upload\-file <file>"
5727-Upload the specified local file to the remote URL.
5728-
5729-If there is no file part in the specified URL, curl appends the local file
5730-name to the end of the URL before the operation starts. You must use a
5731-trailing slash (/) on the last directory to prove to curl that there is no
5732-filename or curl thinks that your last directory name is the remote filename
5733-to use.
5734-
5735-When putting the local filename at the end of the URL, curl ignores what is on
5736-the left side of any slash (/) or backslash (\\\\) used in the filename and only
5737-appends what is on the right side of the rightmost such character.
5738-
5739-Use the filename "\-" (a single dash) to use stdin instead of a given file.
5740-Alternately, the filename "." (a single period) may be specified instead of
5741-\&"\-" to use stdin in non\-blocking mode to allow reading server output while
5742-stdin is being uploaded.
5743-
5744-If this option is used with an HTTP(S) URL, the PUT method is used.
5745-
5746-You can specify one \fI\-T, \-\-upload\-file\fP for each URL on the command line. Each
5747-\fI\-T, \-\-upload\-file\fP + URL pair specifies what to upload and to where. curl also
5748-supports globbing of the \fI\-T, \-\-upload\-file\fP argument, meaning that you can upload
5749-multiple files to a single URL by using the same URL globbing style supported
5750-in the URL.
5751-
5752-When uploading to an SMTP server: the uploaded data is assumed to be RFC 5322
5753-formatted. It has to feature the necessary set of headers and mail body
5754-formatted correctly by the user as curl does not transcode nor encode it
5755-further in any way.
5756-
5757---upload-file is associated with a single URL. Use it once per URL when you use several URLs in a command line.
5758-
5759-Examples:
5760-.nf
5761-curl -T file https://example.com
5762-curl -T "img[1-1000].png" ftp://ftp.example.com/
5763-curl --upload-file "{file1,file2}" https://example.com
5764-curl -T file -T file2 https://example.com https://example.com
5765-.fi
5766-
5767-See also \fI-G, \-\-get\fP, \fI-I, \-\-head\fP, \fI-X, \-\-request\fP and \fI-d, \-\-data\fP.
5768-.IP "\-\-upload\-flags <flags>"
5769-Specify additional behavior to apply to uploaded files. Flags are
5770-specified as either a single flag value or a comma\-separated list
5771-of flag values. These values are case\-sensitive and may be negated
5772-by prepending them with a \(aq\-\(aq character. Currently the following
5773-flag values are accepted: answered, deleted, draft, flagged, and
5774-seen. The currently\-accepted flag values are used to set flags on
5775-IMAP uploads.
5776-
5777-If --upload-flags is provided several times, the last set value is used.
5778-
5779-Example:
5780-.nf
5781-curl --upload-flags Flagged,!Seen --upload-file local/dir/file https://example.com
5782-.fi
5783-
5784-Added in 8.13.0. See also \fI-T, \-\-upload\-file\fP.
5785-.IP "\-\-url <url/file>"
5786-Specify a URL to fetch or send data to.
5787-
5788-If the given URL is missing a scheme (such as "http://" or "ftp://" etc) curl
5789-guesses which scheme to use based on the hostname. If the outermost subdomain
5790-name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP case insensitively, then that
5791-protocol is used, otherwise it assumes HTTP. Scheme guessing can be avoided by
5792-providing a full URL including the scheme, or disabled by setting a default
5793-protocol, see \fI\-\-proto\-default\fP for details.
5794-
5795-To control where the contents of a retrieved URL is written instead of the
5796-default stdout, use the \fI\-o, \-\-output\fP or the \fI\-O, \-\-remote\-name\fP options. When retrieving
5797-multiple URLs in a single invoke, each provided URL needs its own dedicated
5798-destination option unless \fI\-\-remote\-name\-all\fP is used.
5799-
5800-On Windows, "file://" accesses can be converted to network accesses by the
5801-operating system.
5802-
5803-Starting in curl 8.13.0, curl can be told to download URLs provided in a text
5804-file, one URL per line. It is done with "\fI\-\-url\fP @filename": so instead of a
5805-URL, you specify a filename prefixed with the "@" symbol. It can be told to
5806-load the list of URLs from stdin by providing an argument like "@\-".
5807-
5808-When downloading URLs given in a file, it implies using \fI\-O, \-\-remote\-name\fP for each
5809-provided URL. The URLs are full, there is no globbing applied or done on
5810-these. Features such as \fI\-\-skip\-existing\fP work fine in combination with this.
5811-
5812-Lines in the URL file that start with "#" are treated as comments and are
5813-skipped.
5814-
5815---url can be used several times in a command line
5816-
5817-Examples:
5818-.nf
5819-curl --url https://example.com
5820-curl --url @file
5821-.fi
5822-
5823-See also \fI-:, \-\-next\fP, \fI-K, \-\-config\fP, \fI\-\-path\-as\-is\fP and \fI\-\-disallow\-username\-in\-url\fP.
5824-.IP "\-\-url\-query <data>"
5825-(all) Add a piece of data, usually a name + value pair, to the end of the URL query
5826-part. The syntax is identical to that used for \fI\-\-data\-urlencode\fP with one
5827-extension:
5828-
5829-If the argument starts with a \(aq+\(aq (plus), the rest of the string is provided
5830-as\-is unencoded.
5831-
5832-The query part of a URL is the one following the question mark on the right
5833-end.
5834-
5835---url-query can be used several times in a command line
5836-
5837-Examples:
5838-.nf
5839-curl --url-query name=val https://example.com
5840-curl --url-query =encodethis http://example.net/foo
5841-curl --url-query name@file https://example.com
5842-curl --url-query @fileonly https://example.com
5843-curl --url-query "+name=%20foo" https://example.com
5844-.fi
5845-
5846-Added in 7.87.0. See also \fI\-\-data\-urlencode\fP and \fI-G, \-\-get\fP.
5847-.IP "\-B, \-\-use\-ascii"
5848-(FTP LDAP) Enable ASCII transfer mode. For FTP, this can also be enforced by using a URL
5849-that ends with ";type=A". This option causes data sent to stdout to be in text
5850-mode for Win32 systems.
5851-
5852-Providing --use-ascii multiple times has no extra effect.
5853-Disable it again with \-\-no-use-ascii.
5854-
5855-Example:
5856-.nf
5857-curl -B ftp://example.com/README
5858-.fi
5859-
5860-See also \fI\-\-crlf\fP and \fI\-\-data\-ascii\fP.
5861-.IP "\-u, \-\-user <user:password>"
5862-Specify the username and password to use for server authentication. Overrides
5863-\fI\-n, \-\-netrc\fP and \fI\-\-netrc\-optional\fP.
5864-
5865-If you simply specify the username, curl prompts for a password.
5866-
5867-The username and passwords are split up on the first colon, which makes it
5868-impossible to use a colon in the username with this option. The password can,
5869-still.
5870-
5871-On systems where it works, curl hides the given option argument from process
5872-listings. This is not enough to protect credentials from possibly getting seen
5873-by other users on the same system as they still are visible for a moment
5874-before being cleared. Such sensitive data should be retrieved from a file
5875-instead or similar and never used in clear text in a command line.
5876-
5877-When using Kerberos V5 with a Windows based server you should include the
5878-Windows domain name in the username, in order for the server to successfully
5879-obtain a Kerberos Ticket. If you do not, then the initial authentication
5880-handshake may fail.
5881-
5882-When using NTLM, the username can be specified simply as the username, without
5883-the domain, if there is a single domain and forest in your setup for example.
5884-
5885-To specify the domain name use either Down\-Level Logon Name or UPN (User
5886-Principal Name) formats. For example, EXAMPLE\\user and user@example.com
5887-respectively.
5888-
5889-If you use a Windows SSPI\-enabled curl binary and perform Kerberos V5,
5890-Negotiate, NTLM or Digest authentication then you can tell curl to select the
5891-username and password from your environment by specifying a single colon with
5892-this option: "\-u :".
5893-
5894-If --user is provided several times, the last set value is used.
5895-
5896-Example:
5897-.nf
5898-curl -u user:secret https://example.com
5899-.fi
5900-
5901-See also \fI-n, \-\-netrc\fP and \fI-K, \-\-config\fP.
5902-.IP "\-A, \-\-user\-agent <name>"
5903-(HTTP) Specify the User\-Agent string to send to the HTTP server. To encode blanks in
5904-the string, surround the string with single quote marks. This header can also
5905-be set with the \fI\-H, \-\-header\fP or the \fI\-\-proxy\-header\fP options.
5906-
5907-If you give an empty argument to \fI\-A, \-\-user\-agent\fP (""), it removes the header
5908-completely from the request. If you prefer a blank header, you can set it to a
5909-single space (" ").
5910-
5911-By default, curl uses curl/VERSION, such as User\-Agent: curl/8.14.1.
5912-
5913-If --user-agent is provided several times, the last set value is used.
5914-
5915-Example:
5916-.nf
5917-curl -A "Agent 007" https://example.com
5918-.fi
5919-
5920-See also \fI-H, \-\-header\fP and \fI\-\-proxy\-header\fP.
5921-.IP "\-\-variable <[%]name=text/@file>"
5922-Set a variable with "name=content" or "name@file" (where "file" can be stdin
5923-if set to a single dash ("\-")). The name is a case sensitive identifier that
5924-must consist of no other letters than a\-z, A\-Z, 0\-9 or underscore. The
5925-specified content is then associated with this identifier.
5926-
5927-Setting the same variable name again overwrites the old contents with the new.
5928-
5929-The contents of a variable can be referenced in a later command line option
5930-when that option name is prefixed with "\fI\-\-expand\-\fP", and the name is used as
5931-\&"{{name}}".
5932-
5933-\fI\-\-variable\fP can import environment variables into the name space. Opt to either
5934-require the environment variable to be set or provide a default value for the
5935-variable in case it is not already set.
5936-
5937-\fI\-\-variable\fP %name imports the variable called "name" but exits with an error if
5938-that environment variable is not already set. To provide a default value if
5939-the environment variable is not set, use \fI\-\-variable\fP %name=content or
5940-\fI\-\-variable\fP %name@content. Note that on some systems \- but not all \-
5941-environment variables are case insensitive.
5942-
5943-Added in curl 8.12.0: you can get a byte range from the source by appending
5944-\&"[start\-end]" to the variable name, where \fIstart\fP and \fIend\fP are byte offsets
5945-to include from the contents. For example, asking for offset "2\-10" means
5946-offset two to offset ten, inclusive, resulting in 9 bytes in total. "2\-2"
5947-means a single byte at offset 2. Not providing a second number implies to the
5948-end of data. The start offset cannot be larger than the end offset. Asking for
5949-a range that is outside of the file size makes the variable contents empty.
5950-For example, getting the first one hundred bytes from a given file:
5951-
5952-.nf
5953-curl \--variable "fraction[0\-99]@filename"
5954-.fi
5955-
5956-Given a byte range that has no data results in an empty string. Asking for a
5957-range that is larger than the content makes curl use the piece of the data
5958-that exists.
5959-
5960-To assign a variable using contents from another variable, use
5961-\fI\-\-expand\-variable\fP. Like for example assigning a new variable using contents
5962-from two other:
5963-
5964-.nf
5965-curl \--expand\-variable "user={{firstname}} {{lastname}}"
5966-.fi
5967-
5968-When expanding variables, curl supports a set of functions that can make the
5969-variable contents more convenient to use. You apply a function to a variable
5970-expansion by adding a colon and then list the desired functions in a
5971-comma\-separated list that is evaluated in a left\-to\-right order. Variable
5972-content holding null bytes that are not encoded when expanded causes an
5973-error.
5974-
5975-Available functions:
5976-.RS
5977-.IP trim
5978-removes all leading and trailing white space.
5979-
5980-Example:
5981-
5982-.nf
5983-curl \--expand\-url https://example.com/{{var:trim}}
5984-.fi
5985-.IP json
5986-outputs the content using JSON string quoting rules.
5987-
5988-Example:
5989-
5990-.nf
5991-curl \--expand\-data {{data:json}} https://example.com
5992-.fi
5993-.IP url
5994-shows the content URL (percent) encoded.
5995-
5996-Example:
5997-
5998-.nf
5999-curl \--expand\-url https://example.com/{{path:url}}
6000-.fi
6001-.IP b64
6002-expands the variable base64 encoded
6003-
6004-Example:
6005-
6006-.nf
6007-curl \--expand\-url https://example.com/{{var:b64}}
6008-.fi
6009-.IP 64dec
6010-decodes a base64 encoded character sequence. If the sequence is not possible
6011-to decode, it instead outputs "[64dec\-fail]"
6012-
6013-Example:
6014-
6015-.nf
6016-curl \--expand\-url https://example.com/{{var:64dec}}
6017-.fi
6018-
6019-(Added in 8.13.0)
6020-.RE
6021-.IP
6022-
6023---variable can be used several times in a command line
6024-
6025-Example:
6026-.nf
6027-curl --variable name=smith --expand-url "https://example.com/{{name}}"
6028-.fi
6029-
6030-Added in 8.3.0. See also \fI-K, \-\-config\fP.
6031-.IP "\-v, \-\-verbose"
6032-Make curl output verbose information during the operation. Useful for
6033-debugging and seeing what\(aqs going on under the hood. A line starting with >
6034-means header data sent by curl, < means header data received by curl that is
6035-hidden in normal cases, and a line starting with * means additional info
6036-provided by curl.
6037-
6038-If you only want HTTP headers in the output, \fI\-i, \-\-show\-headers\fP or \fI\-D, \-\-dump\-header\fP
6039-might be more suitable options.
6040-
6041-Since curl 8.10, mentioning this option several times in the same argument
6042-increases the level of the trace output. However, as before, a single
6043-\fI\-v, \-\-verbose\fP or \fI\-\-no\-verbose\fP reverts any additions by previous "\-vv" again. This
6044-means that "\-vv \-v" is equivalent to a single \-v. This avoids unwanted
6045-verbosity when the option is mentioned in the command line \fIand\fP curl config
6046-files.
6047-
6048-Using it twice, e.g. "\-vv", outputs time (\fI\-\-trace\-time\fP) and transfer ids
6049-(\fI\-\-trace\-ids\fP), as well as enabling tracing for all protocols (\fI\-\-trace\-config\fP
6050-protocol).
6051-
6052-Adding a third verbose outputs transfer content (\fI\-\-trace\-ascii\fP %) and enables
6053-tracing of more components (\fI\-\-trace\-config\fP read,write,ssl).
6054-
6055-A fourth time adds tracing of all network components. (\fI\-\-trace\-config\fP network).
6056-
6057-Any addition of the verbose option after that has no effect.
6058-
6059-If you think this option does not give you the right details, consider using
6060-\fI\-\-trace\fP or \fI\-\-trace\-ascii\fP instead. Or use it only once and use \fI\-\-trace\-config\fP
6061-to trace the specific components you wish to see.
6062-
6063-Note that verbose output of curl activities and network traffic might contain
6064-sensitive data, including usernames, credentials or secret data content. Be
6065-aware and be careful when sharing trace logs with others.
6066-
6067-When the output contains protocol headers, those lines might include carriage
6068-return (ASCII code 13) characters, even on platforms that otherwise normally
6069-only use linefeed to signify line separations \- as curl shows the exact
6070-contents arriving from the server.
6071-
6072-This option is global and does not need to be specified for each use of --next.
6073-
6074-Providing --verbose multiple times has no extra effect.
6075-Disable it again with \-\-no-verbose.
6076-
6077-Example:
6078-.nf
6079-curl --verbose https://example.com
6080-.fi
6081-
6082-This option is mutually exclusive with \fI\-\-trace\fP and \fI\-\-trace\-ascii\fP.
6083-See also \fI-i, \-\-show\-headers\fP, \fI-s, \-\-silent\fP, \fI\-\-trace\fP and \fI\-\-trace\-ascii\fP.
6084-.IP "\-V, \-\-version"
6085-Display information about curl and the libcurl version it uses.
6086-
6087-The first line includes the full version of curl, libcurl and other 3rd party
6088-libraries linked with the executable.
6089-
6090-This line may contain one or more TLS libraries. curl can be built to support
6091-more than one TLS library which then makes curl \- at start\-up \- select which
6092-particular backend to use for this invocation.
6093-
6094-If curl supports more than one TLS library like this, the ones that are \fInot\fP
6095-selected by default are listed within parentheses. Thus, if you do not specify
6096-which backend to use (with the "CURL_SSL_BACKEND" environment variable) the
6097-one listed without parentheses is used. Such builds also have "MultiSSL" set as
6098-a feature.
6099-
6100-The second line (starts with "Release\-Date:") shows the release date.
6101-
6102-The third line (starts with "Protocols:") shows all protocols that libcurl
6103-reports to support.
6104-
6105-The fourth line (starts with "Features:") shows specific features libcurl
6106-reports to offer. Available features include:
6107-.RS
6108-.IP alt-svc
6109-Support for the Alt\-Svc: header is provided.
6110-.IP AsynchDNS
6111-This curl uses asynchronous name resolves. Asynchronous name resolves can be
6112-done using either the c\-ares or the threaded resolver backends.
6113-.IP brotli
6114-Support for automatic brotli compression over HTTP(S).
6115-.IP CharConv
6116-curl was built with support for character set conversions (like EBCDIC)
6117-.IP Debug
6118-This curl uses a libcurl built with Debug. This enables more error\-tracking
6119-and memory debugging etc. For curl\-developers only.
6120-.IP ECH
6121-ECH support is present.
6122-.IP gsasl
6123-The built\-in SASL authentication includes extensions to support SCRAM because
6124-libcurl was built with libgsasl.
6125-.IP GSS-API
6126-GSS\-API is supported.
6127-.IP HSTS
6128-HSTS support is present.
6129-.IP HTTP2
6130-HTTP/2 support has been built\-in.
6131-.IP HTTP3
6132-HTTP/3 support has been built\-in.
6133-.IP HTTPS-proxy
6134-This curl is built to support HTTPS proxy.
6135-.IP IDN
6136-This curl supports IDN \- international domain names.
6137-.IP IPv6
6138-You can use IPv6 with this.
6139-.IP Kerberos
6140-Kerberos V5 authentication is supported.
6141-.IP Largefile
6142-This curl supports transfers of large files, files larger than 2GB.
6143-.IP libz
6144-Automatic decompression (via gzip, deflate) of compressed files over HTTP is
6145-supported.
6146-.IP MultiSSL
6147-This curl supports multiple TLS backends.
6148-.IP NTLM
6149-NTLM authentication is supported.
6150-.IP NTLM_WB
6151-NTLM delegation to winbind helper is supported.
6152-This feature was removed from curl in 8.8.0.
6153-.IP PSL
6154-PSL is short for Public Suffix List and means that this curl has been built
6155-with knowledge about "public suffixes".
6156-.IP SPNEGO
6157-SPNEGO authentication is supported.
6158-.IP SSL
6159-SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S
6160-and so on.
6161-.IP SSLS-EXPORT
6162-This build supports TLS session export/import, like with the \fI\-\-ssl\-sessions\fP.
6163-.IP SSPI
6164-SSPI is supported.
6165-.IP TLS-SRP
6166-SRP (Secure Remote Password) authentication is supported for TLS.
6167-.IP TrackMemory
6168-Debug memory tracking is supported.
6169-.IP Unicode
6170-Unicode support on Windows.
6171-.IP UnixSockets
6172-Unix sockets support is provided.
6173-.IP zstd
6174-Automatic decompression (via zstd) of compressed files over HTTP is supported.
6175-.RE
6176-.IP
6177-
6178-Example:
6179-.nf
6180-curl --version
6181-.fi
6182-
6183-See also \fI-h, \-\-help\fP and \fI-M, \-\-manual\fP.
6184-.IP "\-\-vlan\-priority <priority>"
6185-(All) Set VLAN priority as defined in IEEE 802.1Q.
6186-
6187-This field is set on Ethernet level, and only works within a local network.
6188-
6189-The valid range for <priority> is 0 to 7.
6190-
6191-If --vlan-priority is provided several times, the last set value is used.
6192-
6193-Example:
6194-.nf
6195-curl --vlan-priority 4 https://example.com
6196-.fi
6197-
6198-Added in 8.9.0. See also \fI\-\-ip\-tos\fP.
6199-.IP "\-w, \-\-write\-out <format>"
6200-Make curl display information on stdout after a completed transfer. The format
6201-is a string that may contain plain text mixed with any number of variables.
6202-The format can be specified as a literal "string", or you can have curl read
6203-the format from a file with "@filename" and to tell curl to read the format
6204-from stdin you write "@\-".
6205-
6206-The variables present in the output format are substituted by the value or
6207-text that curl thinks fit, as described below. All variables are specified as
6208-%{variable_name} and to output a normal % you just write them as %%. You can
6209-output a newline by using \\n, a carriage return with \\r and a tab space with
6210-\\t.
6211-
6212-The output is by default written to standard output, but can be changed with
6213-%{stderr} and %output{}.
6214-
6215-Output HTTP header values from the transfer\(aqs most recent server response by
6216-using \fI%header{name}\fP where \fIname\fP is the case insensitive name of the header
6217-(without the trailing colon). The header contents are exactly as delivered over
6218-the network but with leading and trailing whitespace and newlines stripped off
6219-(added in 7.84.0).
6220-
6221-Select a specific target destination file to write the output to, by using
6222-\fI%output{name}\fP (added in curl 8.3.0) where \fIname\fP is the full filename. The
6223-output following that instruction is then written to that file. More than one
6224-\fI%output{}\fP instruction can be specified in the same write\-out argument. If
6225-the filename cannot be created, curl leaves the output destination to the one
6226-used prior to the \fI%output{}\fP instruction. Use \fI%output{>>name}\fP to append
6227-data to an existing file.
6228-
6229-This output is done independently of if the file transfer was successful or
6230-not.
6231-
6232-If the specified action or output specified with this option fails in any way,
6233-it does not make curl return a (different) error.
6234-
6235-\fBNOTE:\fP On Windows, the %\-symbol is a special symbol used to expand
6236-environment variables. In batch files, all occurrences of % must be doubled
6237-when using this option to properly escape. If this option is used at the
6238-command prompt then the % cannot be escaped and unintended expansion is
6239-possible.
6240-
6241-The variables available are:
6242-.RS
6243-.IP certs
6244-Output the certificate chain with details. Supported only by the OpenSSL,
6245-GnuTLS, Schannel, Rustls, and Secure Transport backends. (Added in 7.88.0)
6246-.IP conn_id
6247-The connection identifier last used by the transfer. The connection id is
6248-unique number among all connections using the same connection cache.
6249-(Added in 8.2.0)
6250-.IP content_type
6251-The Content\-Type of the requested document, if there was any.
6252-.IP errormsg
6253-The error message. (Added in 7.75.0)
6254-.IP exitcode
6255-The numerical exit code of the transfer. (Added in 7.75.0)
6256-.IP filename_effective
6257-The ultimate filename that curl writes out to. This is only meaningful if curl
6258-is told to write to a file with the \fI\-O, \-\-remote\-name\fP or \fI\-o, \-\-output\fP option. It is
6259-most useful in combination with the \fI\-J, \-\-remote\-header\-name\fP option.
6260-
6261-.IP ftp_entry_path
6262-The initial path curl ended up in when logging on to the remote FTP
6263-server.
6264-.IP header{name}
6265-The value of header "name" from the transfer\(aqs most recent server response.
6266-Unlike other variables, the variable name "header" is not in braces. For
6267-example "%header{date}". Refer to \fI\-w, \-\-write\-out\fP remarks. (Added in 7.84.0)
6268-.IP header_json
6269-A JSON object with all HTTP response headers from the recent transfer. Values
6270-are provided as arrays, since in the case of multiple headers there can be
6271-multiple values. (Added in 7.83.0)
6272-
6273-The header names provided in lowercase, listed in order of appearance over the
6274-wire. Except for duplicated headers. They are grouped on the first occurrence
6275-of that header, each value is presented in the JSON array.
6276-.IP http_code
6277-The numerical response code that was found in the last retrieved HTTP(S) or
6278-FTP(s) transfer.
6279-.IP http_connect
6280-The numerical code that was found in the last response (from a proxy) to a
6281-curl CONNECT request.
6282-.IP http_version
6283-The http version that was effectively used.
6284-.IP json
6285-A JSON object with all available keys. (Added in 7.70.0)
6286-.IP local_ip
6287-The IP address of the local end of the most recently done connection \- can be
6288-either IPv4 or IPv6.
6289-.IP local_port
6290-The local port number of the most recently done connection.
6291-.IP method
6292-The http method used in the most recent HTTP request. (Added in 7.72.0)
6293-.IP num_certs
6294-Number of server certificates received in the TLS handshake. Supported only by
6295-the OpenSSL, GnuTLS, Schannel, Rustls and Secure Transport backends.
6296-(Added in 7.88.0)
6297-.IP num_connects
6298-Number of new connects made in the recent transfer.
6299-.IP num_headers
6300-The number of response headers in the most recent request (restarted at each
6301-redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
6302-.IP num_redirects
6303-Number of redirects that were followed in the request.
6304-.IP num_retries
6305-Number of retries actually performed when "\fI\-\-retry\fP" has been used.
6306-(Added in 8.9.0)
6307-.IP onerror
6308-The rest of the output is only shown if the transfer returned a non\-zero error.
6309-(Added in 7.75.0)
6310-.IP output{filename}
6311-From this point on, the \fI\-w, \-\-write\-out\fP output is written to the filename specified
6312-in braces. The filename can be prefixed with ">>" to append to the file. Unlike
6313-other variables, the variable name "output" is not in braces. For example
6314-\&"%output{>>stats.txt}". Refer to \fI\-w, \-\-write\-out\fP remarks. (Added in 8.3.0)
6315-.IP proxy_ssl_verify_result
6316-The result of the HTTPS proxy\(aqs SSL peer certificate verification that was
6317-requested. 0 means the verification was successful.
6318-.IP proxy_used
6319-Returns 1 if the previous transfer used a proxy, otherwise 0. Useful to for
6320-example determine if a "NOPROXY" pattern matched the hostname or not. (Added
6321-in 8.7.0)
6322-.IP redirect_url
6323-When an HTTP request was made without \fI\-L, \-\-location\fP to follow redirects (or when
6324-\fI\-\-max\-redirs\fP is met), this variable shows the actual URL a redirect
6325-\fIwould\fP have gone to.
6326-.IP referer
6327-The Referer: header, if there was any. (Added in 7.76.0)
6328-.IP remote_ip
6329-The remote IP address of the most recently done connection \- can be either
6330-IPv4 or IPv6.
6331-.IP remote_port
6332-The remote port number of the most recently done connection.
6333-.IP response_code
6334-The numerical response code that was found in the last transfer (formerly
6335-known as "http_code").
6336-.IP scheme
6337-The URL scheme (sometimes called protocol) that was effectively used.
6338-.IP size_download
6339-The total amount of bytes that were downloaded. This is the size of the
6340-body/data that was transferred, excluding headers.
6341-.IP size_header
6342-The total amount of bytes of the downloaded headers.
6343-.IP size_request
6344-The total amount of bytes that were sent in the HTTP request.
6345-.IP size_upload
6346-The total amount of bytes that were uploaded. This is the size of the
6347-body/data that was transferred, excluding headers.
6348-.IP speed_download
6349-The average download speed that curl measured for the complete download. Bytes
6350-per second.
6351-.IP speed_upload
6352-The average upload speed that curl measured for the complete upload. Bytes per
6353-second.
6354-.IP ssl_verify_result
6355-The result of the SSL peer certificate verification that was requested. 0
6356-means the verification was successful.
6357-.IP stderr
6358-From this point on, the \fI\-w, \-\-write\-out\fP output is written to standard
6359-error. (Added in 7.63.0)
6360-.IP stdout
6361-From this point on, the \fI\-w, \-\-write\-out\fP output is written to standard output.
6362-This is the default, but can be used to switch back after switching to stderr.
6363-(Added in 7.63.0)
6364-.IP time_appconnect
6365-The time, in seconds, it took from the start until the SSL/SSH/etc
6366-connect/handshake to the remote host was completed.
6367-.IP time_connect
6368-The time, in seconds, it took from the start until the TCP connect to the
6369-remote host (or proxy) was completed.
6370-.IP time_namelookup
6371-The time, in seconds, it took from the start until the name resolving was
6372-completed.
6373-.IP time_posttransfer
6374-The time it took from the start until the last byte is sent by libcurl.
6375-In microseconds. (Added in 8.10.0)
6376-.IP time_pretransfer
6377-The time, in seconds, it took from the start until the file transfer was just
6378-about to begin. This includes all pre\-transfer commands and negotiations that
6379-are specific to the particular protocol(s) involved.
6380-.IP time_queue
6381-The time, in seconds, the transfer was queued during its run. This adds
6382-the queue time for each redirect step that may have happened. Transfers
6383-may be queued for significant amounts of time when connection or parallel
6384-limits are in place. (Added in 8.12.0)
6385-.IP time_redirect
6386-The time, in seconds, it took for all redirection steps including name lookup,
6387-connect, pretransfer and transfer before the final transaction was
6388-started. "time_redirect" shows the complete execution time for multiple
6389-redirections.
6390-.IP time_starttransfer
6391-The time, in seconds, it took from the start until the first byte was received.
6392-This includes time_pretransfer and also the time the server needed to calculate
6393-the result.
6394-.IP time_total
6395-The total time, in seconds, that the full operation lasted.
6396-.IP tls_earlydata
6397-The amount of bytes that were sent as TLSv1.3 early data. This is 0
6398-if this TLS feature was not used and negative if the data sent had
6399-been rejected by the server. The use of early data is enabled via
6400-the command line option "\fI\-\-tls\-earlydata\fP". (Added in 8.12.0)
6401-.IP url
6402-The URL that was fetched. (Added in 7.75.0)
6403-.IP url.scheme
6404-The scheme part of the URL that was fetched. (Added in 8.1.0)
6405-.IP url.user
6406-The user part of the URL that was fetched. (Added in 8.1.0)
6407-.IP url.password
6408-The password part of the URL that was fetched. (Added in 8.1.0)
6409-.IP url.options
6410-The options part of the URL that was fetched. (Added in 8.1.0)
6411-.IP url.host
6412-The host part of the URL that was fetched. (Added in 8.1.0)
6413-.IP url.port
6414-The port number of the URL that was fetched. If no port number was specified
6415-and the URL scheme is known, that scheme\(aqs default port number is
6416-shown. (Added in 8.1.0)
6417-.IP url.path
6418-The path part of the URL that was fetched. (Added in 8.1.0)
6419-.IP url.query
6420-The query part of the URL that was fetched. (Added in 8.1.0)
6421-.IP url.fragment
6422-The fragment part of the URL that was fetched. (Added in 8.1.0)
6423-.IP url.zoneid
6424-The zone id part of the URL that was fetched. (Added in 8.1.0)
6425-.IP urle.scheme
6426-The scheme part of the effective (last) URL that was fetched. (Added in 8.1.0)
6427-.IP urle.user
6428-The user part of the effective (last) URL that was fetched. (Added in 8.1.0)
6429-.IP urle.password
6430-The password part of the effective (last) URL that was fetched. (Added in 8.1.0)
6431-.IP urle.options
6432-The options part of the effective (last) URL that was fetched. (Added in 8.1.0)
6433-.IP urle.host
6434-The host part of the effective (last) URL that was fetched. (Added in 8.1.0)
6435-.IP urle.port
6436-The port number of the effective (last) URL that was fetched. If no port
6437-number was specified, but the URL scheme is known, that scheme\(aqs default port
6438-number is shown. (Added in 8.1.0)
6439-.IP urle.path
6440-The path part of the effective (last) URL that was fetched. (Added in 8.1.0)
6441-.IP urle.query
6442-The query part of the effective (last) URL that was fetched. (Added in 8.1.0)
6443-.IP urle.fragment
6444-The fragment part of the effective (last) URL that was fetched. (Added in 8.1.0)
6445-.IP urle.zoneid
6446-The zone id part of the effective (last) URL that was fetched. (Added in 8.1.0)
6447-.IP urlnum
6448-The URL index number of this transfer, 0\-indexed. Unglobbed URLs share the
6449-same index number as the origin globbed URL. (Added in 7.75.0)
6450-.IP url_effective
6451-The URL that was fetched last. This is most meaningful if you have told curl
6452-to follow location: headers.
6453-.IP xfer_id
6454-The numerical identifier of the last transfer done. \-1 if no transfer has been
6455-started yet for the handle. The transfer id is unique among all transfers
6456-performed using the same connection cache.
6457-(Added in 8.2.0)
6458-.RE
6459-.IP
6460-
6461-If --write-out is provided several times, the last set value is used.
6462-
6463-Example:
6464-.nf
6465-curl -w '%{response_code}\\n' https://example.com
6466-.fi
6467-
6468-See also \fI-v, \-\-verbose\fP and \fI-I, \-\-head\fP.
6469-.IP "\-\-xattr"
6470-Store metadata in the extended file attributes.
6471-
6472-When saving output to a file, tell curl to store file metadata in extended
6473-file attributes. Currently, "curl" is stored in the "creator" attribute,
6474-the URL is stored in the "xdg.origin.url" attribute and, for HTTP, the content
6475-type is stored in the "mime_type" attribute. If the file system does not
6476-support extended attributes, a warning is issued.
6477-
6478-Providing --xattr multiple times has no extra effect.
6479-Disable it again with \-\-no-xattr.
6480-
6481-Example:
6482-.nf
6483-curl --xattr -o storage https://example.com
6484-.fi
6485-
6486-See also \fI-R, \-\-remote\-time\fP, \fI-w, \-\-write\-out\fP and \fI-v, \-\-verbose\fP.
6487-.SH FILES
6488-\fI~/.curlrc\fP
6489-
6490-Default config file, see \fI\-K, \-\-config\fP for details.
6491-.SH ENVIRONMENT
6492-The environment variables can be specified in lower case or upper case. The
6493-lower case version has precedence. "http_proxy" is an exception as it is only
6494-available in lower case.
6495-
6496-Using an environment variable to set the proxy has the same effect as using
6497-the \fI\-x, \-\-proxy\fP option.
6498-.IP "http_proxy [protocol://]<host>[:port]"
6499-Sets the proxy server to use for HTTP.
6500-.IP "HTTPS_PROXY [protocol://]<host>[:port]"
6501-Sets the proxy server to use for HTTPS.
6502-.IP "[url-protocol]_PROXY [protocol://]<host>[:port]"
6503-Sets the proxy server to use for [url\-protocol], where the protocol is a
6504-protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP,
6505-SMTP, LDAP, etc.
6506-.IP "ALL_PROXY [protocol://]<host>[:port]"
6507-Sets the proxy server to use if no protocol\-specific proxy is set.
6508-.IP "NO_PROXY <comma-separated list of hosts/domains>"
6509-list of hostnames that should not go through any proxy. If set to an asterisk
6510-\(aq*\(aq only, it matches all hosts. Each name in this list is matched as either a
6511-domain name which contains the hostname, or the hostname itself.
6512-
6513-This environment variable disables use of the proxy even when specified with
6514-the \fI\-x, \-\-proxy\fP option. That is
6515-
6516-.nf
6517-NO_PROXY=direct.example.com curl \-x http://proxy.example.com
6518-http://direct.example.com
6519-.fi
6520-
6521-accesses the target URL directly, and
6522-
6523-.nf
6524-NO_PROXY=direct.example.com curl \-x http://proxy.example.com
6525-http://somewhere.example.com
6526-.fi
6527-
6528-accesses the target URL through the proxy.
6529-
6530-The list of hostnames can also include numerical IP addresses, and IPv6
6531-versions should then be given without enclosing brackets.
6532-
6533-IP addresses can be specified using CIDR notation: an appended slash and
6534-number specifies the number of "network bits" out of the address to use in the
6535-comparison (added in 7.86.0). For example "192.168.0.0/16" would match all
6536-addresses starting with "192.168".
6537-.IP "APPDATA <dir>"
6538-On Windows, this variable is used when trying to find the home directory. If
6539-the primary home variables are all unset.
6540-.IP "COLUMNS <terminal width>"
6541-If set, the specified number of characters is used as the terminal width when
6542-the alternative progress\-bar is shown. If not set, curl tries to figure it out
6543-using other ways.
6544-.IP "CURL_CA_BUNDLE <file>"
6545-If set, it is used as the \fI\-\-cacert\fP value. This environment variable is ignored
6546-if Schannel is used as the TLS backend.
6547-.IP "CURL_HOME <dir>"
6548-If set, is the first variable curl checks when trying to find its home
6549-directory. If not set, it continues to check \fIXDG_CONFIG_HOME\fP
6550-.IP "CURL_SSL_BACKEND <TLS backend>"
6551-If curl was built with support for "MultiSSL", meaning that it has built\-in
6552-support for more than one TLS backend, this environment variable can be set to
6553-the case insensitive name of the particular backend to use when curl is
6554-invoked. Setting a name that is not a built\-in alternative makes curl stay
6555-with the default.
6556-
6557-SSL backend names (case\-insensitive): \fBbearssl\fP, \fBgnutls\fP, \fBmbedtls\fP,
6558-\fBopenssl\fP, \fBrustls\fP, \fBschannel\fP, \fBsecure\-transport\fP, \fBwolfssl\fP
6559-.IP "HOME <dir>"
6560-If set, this is used to find the home directory when that is needed. Like when
6561-looking for the default .curlrc. \fICURL_HOME\fP and \fIXDG_CONFIG_HOME\fP
6562-have preference.
6563-.IP "QLOGDIR <directory name>"
6564-If curl was built with HTTP/3 support, setting this environment variable to a
6565-local directory makes curl produce \fBqlogs\fP in that directory, using file
6566-names named after the destination connection id (in hex). Do note that these
6567-files can become rather large. Works with the ngtcp2 and quiche QUIC backends.
6568-.IP SHELL
6569-Used on VMS when trying to detect if using a \fBDCL\fP or a \fBUnix\fP shell.
6570-.IP "SSL_CERT_DIR <dir>"
6571-If set, it is used as the \fI\-\-capath\fP value. This environment variable is ignored
6572-if Schannel is used as the TLS backend.
6573-.IP "SSL_CERT_FILE <path>"
6574-If set, it is used as the \fI\-\-cacert\fP value. This environment variable is ignored
6575-if Schannel is used as the TLS backend.
6576-.IP "SSLKEYLOGFILE <filename>"
6577-If you set this environment variable to a filename, curl stores TLS secrets
6578-from its connections in that file when invoked to enable you to analyze the
6579-TLS traffic in real time using network analyzing tools such as Wireshark. This
6580-works with the following TLS backends: OpenSSL, LibreSSL (TLS 1.2 max),
6581-BoringSSL, GnuTLS, wolfSSL and Rustls.
6582-.IP "USERPROFILE <dir>"
6583-On Windows, this variable is used when trying to find the home directory. If
6584-the other, primary, variables are all unset. If set, curl uses the path
6585-\fB"$USERPROFILE\\Application Data"\fP.
6586-.IP "XDG_CONFIG_HOME <dir>"
6587-If \fICURL_HOME\fP is not set, this variable is checked when looking for a
6588-default .curlrc file.
6589-.SH PROXY PROTOCOL PREFIXES
6590-The proxy string may be specified with a protocol:// prefix to specify
6591-alternative proxy protocols.
6592-
6593-If no protocol is specified in the proxy string or if the string does not
6594-match a supported one, the proxy is treated as an HTTP proxy.
6595-
6596-The supported proxy protocol prefixes are as follows:
6597-.IP http://
6598-Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
6599-.IP https://
6600-Makes it treated as an \fBHTTPS\fP proxy.
6601-.IP socks4://
6602-Makes it the equivalent of \fI\-\-socks4\fP
6603-.IP socks4a://
6604-Makes it the equivalent of \fI\-\-socks4a\fP
6605-.IP socks5://
6606-Makes it the equivalent of \fI\-\-socks5\fP
6607-.IP socks5h://
6608-Makes it the equivalent of \fI\-\-socks5\-hostname\fP
6609-.SH EXIT CODES
6610-There are a bunch of different error codes and their corresponding error
6611-messages that may appear under error conditions. At the time of this writing,
6612-the exit codes are:
6613-.IP 0
6614-Success. The operation completed successfully according to the instructions.
6615-.IP 1
6616-Unsupported protocol. This build of curl has no support for this protocol.
6617-.IP 2
6618-Failed to initialize.
6619-.IP 3
6620-URL malformed. The syntax was not correct.
6621-.IP 4
6622-A feature or option that was needed to perform the desired request was not
6623-enabled or was explicitly disabled at build\-time. To make curl able to do
6624-this, you probably need another build of libcurl.
6625-.IP 5
6626-Could not resolve proxy. The given proxy host could not be resolved.
6627-.IP 6
6628-Could not resolve host. The given remote host could not be resolved.
6629-.IP 7
6630-Failed to connect to host.
6631-.IP 8
6632-Weird server reply. The server sent data curl could not parse.
6633-.IP 9
6634-FTP access denied. The server denied login or denied access to the particular
6635-resource or directory you wanted to reach. Most often you tried to change to a
6636-directory that does not exist on the server.
6637-.IP 10
6638-FTP accept failed. While waiting for the server to connect back when an active
6639-FTP session is used, an error code was sent over the control connection or
6640-similar.
6641-.IP 11
6642-FTP weird PASS reply. curl could not parse the reply sent to the PASS request.
6643-.IP 12
6644-During an active FTP session while waiting for the server to connect back to
6645-curl, the timeout expired.
6646-.IP 13
6647-FTP weird PASV reply, curl could not parse the reply sent to the PASV request.
6648-.IP 14
6649-FTP weird 227 format. curl could not parse the 227\-line the server sent.
6650-.IP 15
6651-FTP cannot use host. Could not resolve the host IP we got in the 227\-line.
6652-.IP 16
6653-HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is
6654-somewhat generic and can be one out of several problems, see the error message
6655-for details.
6656-.IP 17
6657-FTP could not set binary. Could not change transfer method to binary.
6658-.IP 18
6659-Partial file. Only a part of the file was transferred.
6660-.IP 19
6661-FTP could not download/access the given file, the RETR (or similar) command
6662-failed.
6663-.IP 21
6664-FTP quote error. A quote command returned error from the server.
6665-.IP 22
6666-HTTP page not retrieved. The requested URL was not found or returned another
6667-error with the HTTP error code being 400 or above. This return code only
6668-appears if \fI\-f, \-\-fail\fP is used.
6669-.IP 23
6670-Write error. curl could not write data to a local filesystem or similar.
6671-.IP 25
6672-Failed starting the upload. For FTP, the server typically denied the STOR
6673-command.
6674-.IP 26
6675-Read error. Various reading problems.
6676-.IP 27
6677-Out of memory. A memory allocation request failed.
6678-.IP 28
6679-Operation timeout. The specified time\-out period was reached according to the
6680-conditions.
6681-.IP 30
6682-FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT
6683-command, try doing a transfer using PASV instead.
6684-.IP 31
6685-FTP could not use REST. The REST command failed. This command is used for
6686-resumed FTP transfers.
6687-.IP 33
6688-HTTP range error. The range "command" did not work.
6689-.IP 34
6690-HTTP post error. Internal post\-request generation error.
6691-.IP 35
6692-SSL connect error. The SSL handshaking failed.
6693-.IP 36
6694-Bad download resume. Could not continue an earlier aborted download.
6695-.IP 37
6696-FILE could not read file. Failed to open the file. Permissions?
6697-.IP 38
6698-LDAP cannot bind. LDAP bind operation failed.
6699-.IP 39
6700-LDAP search failed.
6701-.IP 41
6702-Function not found. A required LDAP function was not found.
6703-.IP 42
6704-Aborted by callback. An application told curl to abort the operation.
6705-.IP 43
6706-Internal error. A function was called with a bad parameter.
6707-.IP 45
6708-Interface error. A specified outgoing interface could not be used.
6709-.IP 47
6710-Too many redirects. When following redirects, curl hit the maximum amount.
6711-.IP 48
6712-Unknown option specified to libcurl. This indicates that you passed a weird
6713-option to curl that was passed on to libcurl and rejected. Read up in the
6714-manual.
6715-.IP 49
6716-Malformed telnet option.
6717-.IP 52
6718-The server did not reply anything, which here is considered an error.
6719-.IP 53
6720-SSL crypto engine not found.
6721-.IP 54
6722-Cannot set SSL crypto engine as default.
6723-.IP 55
6724-Failed sending network data.
6725-.IP 56
6726-Failure in receiving network data.
6727-.IP 58
6728-Problem with the local certificate.
6729-.IP 59
6730-Could not use specified SSL cipher.
6731-.IP 60
6732-Peer certificate cannot be authenticated with known CA certificates.
6733-.IP 61
6734-Unrecognized transfer encoding.
6735-.IP 63
6736-Maximum file size exceeded.
6737-.IP 64
6738-Requested FTP SSL level failed.
6739-.IP 65
6740-Sending the data requires a rewind that failed.
6741-.IP 66
6742-Failed to initialize SSL Engine.
6743-.IP 67
6744-The username, password, or similar was not accepted and curl failed to log in.
6745-.IP 68
6746-File not found on TFTP server.
6747-.IP 69
6748-Permission problem on TFTP server.
6749-.IP 70
6750-Out of disk space on TFTP server.
6751-.IP 71
6752-Illegal TFTP operation.
6753-.IP 72
6754-Unknown TFTP transfer ID.
6755-.IP 73
6756-File already exists (TFTP).
6757-.IP 74
6758-No such user (TFTP).
6759-.IP 77
6760-Problem reading the SSL CA cert (path? access rights?).
6761-.IP 78
6762-The resource referenced in the URL does not exist.
6763-.IP 79
6764-An unspecified error occurred during the SSH session.
6765-.IP 80
6766-Failed to shut down the SSL connection.
6767-.IP 82
6768-Could not load CRL file, missing or wrong format.
6769-.IP 83
6770-Issuer check failed.
6771-.IP 84
6772-The FTP PRET command failed.
6773-.IP 85
6774-Mismatch of RTSP CSeq numbers.
6775-.IP 86
6776-Mismatch of RTSP Session Identifiers.
6777-.IP 87
6778-Unable to parse FTP file list.
6779-.IP 88
6780-FTP chunk callback reported error.
6781-.IP 89
6782-No connection available, the session is queued.
6783-.IP 90
6784-SSL public key does not match pinned public key.
6785-.IP 91
6786-Invalid SSL certificate status.
6787-.IP 92
6788-Stream error in HTTP/2 framing layer.
6789-.IP 93
6790-An API function was called from inside a callback.
6791-.IP 94
6792-An authentication function returned an error.
6793-.IP 95
6794-A problem was detected in the HTTP/3 layer. This is somewhat generic and can
6795-be one out of several problems, see the error message for details.
6796-.IP 96
6797-QUIC connection error. This error may be caused by an SSL library error. QUIC
6798-is the protocol used for HTTP/3 transfers.
6799-.IP 97
6800-Proxy handshake error.
6801-.IP 98
6802-A client\-side certificate is required to complete the TLS handshake.
6803-.IP 99
6804-Poll or select returned fatal error.
6805-.IP 100
6806-A value or data field grew larger than allowed.
6807-.IP XX
6808-More error codes might appear here in future releases. The existing ones are
6809-meant to never change.
6810-.SH BUGS
6811-If you experience any problems with curl, submit an issue in the project\(aqs bug
6812-tracker on GitHub: https://github.com/curl/curl/issues
6813-.SH AUTHORS
6814-Daniel Stenberg is the main author, but the whole list of contributors is
6815-found in the separate THANKS file.
6816-.SH WWW
6817-https://curl.se
6818-.SH SEE ALSO
6819-\fBftp(1)\fP, \fBwget(1)\fP
+1,
-1
1@@ -287,6 +287,6 @@ exe('curl', [[
2 ]])
3
4 file('bin/curl', '755', '$outdir/curl')
5-man{'$dir/curl.1'}
6+man{'docs/cmdline-opts/curl.1'}
7
8 fetch 'git'
+1,
-1
1@@ -1 +1 @@
2-Subproject commit 8d19ecece5fafb5c532d185f150dfd8ef72e9eeb
3+Subproject commit 9a98ab94845244587d0d87be2f159634a3618123
+1,
-1
1@@ -1 +1 @@
2-8.20.0 r2
3+8.20.0 r3