1curl(1)                           curl Manual                          curl(1)
2
3
4

NAME

6       curl - transfer a URL
7

SYNOPSIS

9       curl [options / URLs]
10

DESCRIPTION

12       curl  is  a tool for transferring data from or to a server. It supports
13       these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS,  HTTP,  HTTPS,
14       IMAP,  IMAPS,  LDAP,  LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP,
15       SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. The command  is
16       designed to work without user interaction.
17
18       curl offers a busload of useful tricks like proxy support, user authen‐
19       tication, FTP upload, HTTP post, SSL connections, cookies, file  trans‐
20       fer resume and more. As you will see below, the number of features will
21       make your head spin.
22
23       curl is powered by  libcurl  for  all  transfer-related  features.  See
24       libcurl(3) for details.
25

URL

27       The  URL  syntax is protocol-dependent. You find a detailed description
28       in RFC 3986.
29
30       You can specify multiple URLs or parts of URLs  by  writing  part  sets
31       within braces and quoting the URL as in:
32
33         "http://site.{one,two,three}.com"
34
35       or you can get sequences of alphanumeric series by using [] as in:
36
37         "ftp://ftp.example.com/file[1-100].txt"
38
39         "ftp://ftp.example.com/file[001-100].txt"    (with leading zeros)
40
41         "ftp://ftp.example.com/file[a-z].txt"
42
43       Nested  sequences  are not supported, but you can use several ones next
44       to each other:
45
46         "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
47
48       You can specify any amount of URLs on the command line.  They  will  be
49       fetched  in a sequential manner in the specified order. You can specify
50       command line options and URLs mixed and in any  order  on  the  command
51       line.
52
53       You  can  specify a step counter for the ranges to get every Nth number
54       or letter:
55
56         "http://example.com/file[1-100:10].txt"
57
58         "http://example.com/file[a-z:2].txt"
59
60       When using [] or {} sequences when invoked from a command line  prompt,
61       you probably have to put the full URL within double quotes to avoid the
62       shell from interfering with it. This also  goes  for  other  characters
63       treated special, like for example '&', '?' and '*'.
64
65       Provide  the IPv6 zone index in the URL with an escaped percentage sign
66       and the interface name. Like in
67
68         "http://[fe80::3%25eth0]/"
69
70       If you specify URL without protocol:// prefix,  curl  will  attempt  to
71       guess  what  protocol  you might want. It will then default to HTTP but
72       try other protocols based on often-used host name prefixes.  For  exam‐
73       ple,  for  host names starting with "ftp." curl will assume you want to
74       speak FTP.
75
76       curl will do its best to use what you pass to it as a URL.  It  is  not
77       trying  to  validate it as a syntactically correct URL by any means but
78       is fairly liberal with what it accepts.
79
80       curl will attempt to re-use connections for multiple file transfers, so
81       that  getting many files from the same server will not do multiple con‐
82       nects / handshakes. This improves speed. Of course this is only done on
83       files  specified  on  a  single command line and cannot be used between
84       separate curl invocations.
85

OUTPUT

87       If not told otherwise, curl writes the received data to stdout. It  can
88       be  instructed  to  instead save that data into a local file, using the
89       -o, --output or -O, --remote-name options. If curl  is  given  multiple
90       URLs  to  transfer on the command line, it similarly needs multiple op‐
91       tions for where to save them.
92
93       curl does not parse or otherwise "understand" the content  it  gets  or
94       writes  as  output.  It does no encoding or decoding, unless explicitly
95       asked to with dedicated command line options.
96

PROTOCOLS

98       curl supports numerous protocols, or put in URL  terms:  schemes.  Your
99       particular build may not support them all.
100
101       DICT   Lets you lookup words using online dictionaries.
102
103       FILE   Read  or  write  local  files.  curl  does not support accessing
104              file:// URL remotely, but when running on Microsoft Windows  us‐
105              ing the native UNC approach will work.
106
107       FTP(S) curl  supports  the  File Transfer Protocol with a lot of tweaks
108              and levers. With or without using TLS.
109
110       GOPHER(S)
111              Retrieve files.
112
113       HTTP(S)
114              curl supports HTTP with numerous options and variations. It  can
115              speak HTTP version 0.9, 1.0, 1.1, 2 and 3 depending on build op‐
116              tions and the correct command line options.
117
118       IMAP(S)
119              Using the mail reading protocol, curl can "download" emails  for
120              you. With or without using TLS.
121
122       LDAP(S)
123              curl can do directory lookups for you, with or without TLS.
124
125       MQTT   curl supports MQTT version 3. Downloading over MQTT equals "sub‐
126              scribe" to a topic while uploading/posting equals "publish" on a
127              topic. MQTT over TLS is not supported (yet).
128
129       POP3(S)
130              Downloading  from  a  pop3  server means getting a mail. With or
131              without using TLS.
132
133       RTMP(S)
134              The Realtime Messaging Protocol  is  primarily  used  to  server
135              streaming media and curl can download it.
136
137       RTSP   curl supports RTSP 1.0 downloads.
138
139       SCP    curl supports SSH version 2 scp transfers.
140
141       SFTP   curl supports SFTP (draft 5) done over SSH version 2.
142
143       SMB(S) curl supports SMB version 1 for upload and download.
144
145       SMTP(S)
146              Uploading  contents  to  an  SMTP server means sending an email.
147              With or without TLS.
148
149       TELNET Telling curl to fetch a telnet URL starts an interactive session
150              where  it  sends  what  it  reads  on stdin and outputs what the
151              server sends it.
152
153       TFTP   curl can do TFTP downloads and uploads.
154

PROGRESS METER

156       curl normally displays a progress meter during  operations,  indicating
157       the  amount  of  transferred  data,  transfer speeds and estimated time
158       left, etc. The progress meter displays the transfer rate in  bytes  per
159       second.  The suffixes (k, M, G, T, P) are 1024 based. For example 1k is
160       1024 bytes. 1M is 1048576 bytes.
161
162       curl displays this data to the terminal by default, so  if  you  invoke
163       curl  to do an operation and it is about to write data to the terminal,
164       it disables the progress meter as otherwise it would mess up the output
165       mixing progress meter and response data.
166
167       If you want a progress meter for HTTP POST or PUT requests, you need to
168       redirect the response output to a file, using shell redirect  (>),  -o,
169       --output or similar.
170
171       This  does  not apply to FTP upload as that operation does not spit out
172       any response data to the terminal.
173
174       If you prefer a progress  "bar"  instead  of  the  regular  meter,  -#,
175       --progress-bar  is your friend. You can also disable the progress meter
176       completely with the -s, --silent option.
177

OPTIONS

179       Options start with one or two dashes. Many of the  options  require  an
180       additional value next to them.
181
182       The  short  "single-dash"  form  of the options, -d for example, may be
183       used with or without a space between it and its value, although a space
184       is a recommended separator. The long "double-dash" form, -d, --data for
185       example, requires a space between it and its value.
186
187       Short version options that do not need any  additional  values  can  be
188       used  immediately  next to each other, like for example you can specify
189       all the options -O, -L and -v at once as -OLv.
190
191       In general, all boolean options are enabled with --option and yet again
192       disabled  with  --no-option.  That is, you use the same option name but
193       prefix it with "no-". However, in this list we  mostly  only  list  and
194       show the --option version of them.
195
196       When -:, --next is used, it resets the parser state and you start again
197       with a clean option state, except for the options  that  are  "global".
198       Global  options  will  retain  their  values and meaning even after -:,
199       --next.
200
201       The following options are global: --fail-early, --libcurl,  --parallel-
202       immediate,  -Z,  --parallel, -#, --progress-bar, --rate, -S, --show-er‐
203       ror, --stderr, --styled-output,  --trace-ascii,  --trace-time,  --trace
204       and -v, --verbose.
205
206
207       --abstract-unix-socket <path>
208              (HTTP)  Connect  through an abstract Unix domain socket, instead
209              of using the network.  Note: netstat shows the path  of  an  ab‐
210              stract  socket  prefixed  with  '@', however the <path> argument
211              should not have this leading character.
212
213              If --abstract-unix-socket is provided several  times,  the  last
214              set value will be used.
215
216              Example:
217               curl --abstract-unix-socket socketpath https://example.com
218
219              See also --unix-socket. Added in 7.53.0.
220
221       --alt-svc <file name>
222              (HTTPS)  This  option enables the alt-svc parser in curl. If the
223              file name points to an existing alt-svc cache file, that will be
224              used. After a completed transfer, the cache will be saved to the
225              file name again if it has been modified.
226
227              Specify a "" file name (zero length) to avoid loading/saving and
228              make curl just handle the cache in memory.
229
230              If  this  option  is used several times, curl will load contents
231              from all the files but the last one will be used for saving.
232
233              --alt-svc can be used several times in a command line
234
235              Example:
236               curl --alt-svc svc.txt https://example.com
237
238              See also --resolve and --connect-to. Added in 7.64.1.
239
240       --anyauth
241              (HTTP) Tells curl to figure out authentication method by itself,
242              and  use  the most secure one the remote site claims to support.
243              This is done by first doing a request and checking the response-
244              headers,  thus  possibly  inducing  an extra network round-trip.
245              This is  used  instead  of  setting  a  specific  authentication
246              method,  which  you  can  do with --basic, --digest, --ntlm, and
247              --negotiate.
248
249              Using --anyauth is not recommended if you do uploads from stdin,
250              since  it  may require data to be sent twice and then the client
251              must be able to rewind. If the need should arise when  uploading
252              from stdin, the upload operation will fail.
253
254              Used together with -u, --user.
255
256              Providing --anyauth multiple times has no extra effect.
257
258              Example:
259               curl --anyauth --user me:pwd https://example.com
260
261              See also --proxy-anyauth, --basic and --digest.
262
263       -a, --append
264              (FTP SFTP) When used in an upload, this makes curl append to the
265              target file instead of overwriting it. If the remote  file  does
266              not exist, it will be created. Note that this flag is ignored by
267              some SFTP servers (including OpenSSH).
268
269              Providing -a, --append multiple times has no extra effect.  Dis‐
270              able it again with --no-append.
271
272              Example:
273               curl --upload-file local --append ftp://example.com/
274
275              See also -r, --range and -C, --continue-at.
276
277       --aws-sigv4 <provider1[:provider2[:region[:service]]]>
278              Use AWS V4 signature authentication in the transfer.
279
280              The  provider argument is a string that is used by the algorithm
281              when creating outgoing authentication headers.
282
283              The region argument is a string that points to a geographic area
284              of  a resources collection (region-code) when the region name is
285              omitted from the endpoint.
286
287              The service argument is a string that points to a function  pro‐
288              vided by a cloud (service-code) when the service name is omitted
289              from the endpoint.
290
291              If --aws-sigv4 is provided several times,  the  last  set  value
292              will be used.
293
294              Example:
295               curl --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" https://example.com
296
297              See also --basic and -u, --user. Added in 7.75.0.
298
299       --basic
300              (HTTP)  Tells curl to use HTTP Basic authentication with the re‐
301              mote host. This is the default and this option is usually point‐
302              less, unless you use it to override a previously set option that
303              sets a different authentication method (such  as  --ntlm,  --di‐
304              gest, or --negotiate).
305
306              Used together with -u, --user.
307
308              Providing --basic multiple times has no extra effect.
309
310              Example:
311               curl -u name:password --basic https://example.com
312
313              See also --proxy-basic.
314
315       --cacert <file>
316              (TLS) Tells curl to use the specified certificate file to verify
317              the peer. The file may contain  multiple  CA  certificates.  The
318              certificate(s)  must be in PEM format. Normally curl is built to
319              use a default file for this, so this option is typically used to
320              alter that default file.
321
322              curl  recognizes the environment variable named 'CURL_CA_BUNDLE'
323              if it is set, and uses the given path as a path  to  a  CA  cert
324              bundle. This option overrides that variable.
325
326              The  windows  version  of  curl will automatically look for a CA
327              certs file named 'curl-ca-bundle.crt', either in the same direc‐
328              tory as curl.exe, or in the Current Working Directory, or in any
329              folder along your PATH.
330
331              If curl is built against  the  NSS  SSL  library,  the  NSS  PEM
332              PKCS#11 module (libnsspem.so) needs to be available for this op‐
333              tion to work properly.
334
335              (iOS and macOS only) If curl is built against Secure  Transport,
336              then  this  option  is supported for backward compatibility with
337              other SSL engines, but it should not be set. If  the  option  is
338              not  set,  then curl will use the certificates in the system and
339              user Keychain to verify the peer, which is the preferred  method
340              of verifying the peer's certificate chain.
341
342              (Schannel only) This option is supported for Schannel in Windows
343              7 or later with libcurl 7.60 or later. This option is  supported
344              for backward compatibility with other SSL engines; instead it is
345              recommended to use Windows' store of root certificates (the  de‐
346              fault for Schannel).
347
348              If  --cacert  is provided several times, the last set value will
349              be used.
350
351              Example:
352               curl --cacert CA-file.txt https://example.com
353
354              See also --capath and -k, --insecure.
355
356       --capath <dir>
357              (TLS) Tells curl to use the specified certificate  directory  to
358              verify  the  peer.  Multiple paths can be provided by separating
359              them with ":" (e.g.  "path1:path2:path3"). The certificates must
360              be  in PEM format, and if curl is built against OpenSSL, the di‐
361              rectory must have been processed using the c_rehash utility sup‐
362              plied  with  OpenSSL.  Using  --capath can allow OpenSSL-powered
363              curl to make SSL-connections much more  efficiently  than  using
364              --cacert if the --cacert file contains many CA certificates.
365
366              If this option is set, the default capath value will be ignored.
367
368              If  --capath  is provided several times, the last set value will
369              be used.
370
371              Example:
372               curl --capath /local/directory https://example.com
373
374              See also --cacert and -k, --insecure.
375
376       --cert-status
377              (TLS) Tells curl to verify the status of the server  certificate
378              by using the Certificate Status Request (aka. OCSP stapling) TLS
379              extension.
380
381              If this option is enabled and the server sends an invalid  (e.g.
382              expired) response, if the response suggests that the server cer‐
383              tificate has been revoked, or no response at  all  is  received,
384              the verification fails.
385
386              This  is  currently  only implemented in the OpenSSL, GnuTLS and
387              NSS backends.
388
389              Providing --cert-status multiple  times  has  no  extra  effect.
390              Disable it again with --no-cert-status.
391
392              Example:
393               curl --cert-status https://example.com
394
395              See also --pinnedpubkey. Added in 7.41.0.
396
397       --cert-type <type>
398              (TLS)  Tells  curl  what type the provided client certificate is
399              using. PEM, DER, ENG and P12 are recognized types.
400
401              The default type depends on the TLS backend and is usually  PEM,
402              however  for  Secure  Transport  and  Schannel it is P12. If -E,
403              --cert is a pkcs11: URI then ENG is the default type.
404
405              If --cert-type is provided several times,  the  last  set  value
406              will be used.
407
408              Example:
409               curl --cert-type PEM --cert file https://example.com
410
411              See also -E, --cert, --key and --key-type.
412
413       -E, --cert <certificate[:password]>
414              (TLS)  Tells  curl  to use the specified client certificate file
415              when getting a file with HTTPS, FTPS or another SSL-based proto‐
416              col.  The  certificate must be in PKCS#12 format if using Secure
417              Transport, or PEM format if using any other engine. If  the  op‐
418              tional  password is not specified, it will be queried for on the
419              terminal. Note that this option assumes a certificate file  that
420              is  the private key and the client certificate concatenated. See
421              -E, --cert and --key to specify them independently.
422
423              In the <certificate> portion of the argument,  you  must  escape
424              the  character  ":"  as "\:" so that it is not recognized as the
425              password delimiter. Similarly, you must escape the character "\"
426              as "\\" so that it is not recognized as an escape character.
427
428              If  curl  is  built against the NSS SSL library then this option
429              can tell curl the nickname of the certificate to use within  the
430              NSS  database defined by the environment variable SSL_DIR (or by
431              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib‐
432              nsspem.so) is available then PEM files may be loaded.
433
434              If  you  provide  a  path relative to the current directory, you
435              must prefix the path with "./" in order to avoid confusion  with
436              an NSS database nickname.
437
438              If  curl is built against OpenSSL library, and the engine pkcs11
439              is available, then a PKCS#11 URI (RFC 7512) can be used to spec‐
440              ify  a  certificate located in a PKCS#11 device. A string begin‐
441              ning with "pkcs11:" will be interpreted as a PKCS#11 URI.  If  a
442              PKCS#11 URI is provided, then the --engine option will be set as
443              "pkcs11" if none was provided and the --cert-type option will be
444              set as "ENG" if none was provided.
445
446              (iOS  and macOS only) If curl is built against Secure Transport,
447              then the certificate string can either be the name of a certifi‐
448              cate/private  key in the system or user keychain, or the path to
449              a PKCS#12-encoded certificate and private key. If  you  want  to
450              use  a  file  from the current directory, please precede it with
451              "./" prefix, in order to avoid confusion with a nickname.
452
453              (Schannel only) Client certificates must be specified by a  path
454              expression  to  a  certificate  store.  (Loading PFX is not sup‐
455              ported; you can import it to a store first). You can use "<store
456              location>\<store  name>\<thumbprint>"  to refer to a certificate
457              in  the  system  certificates  store,  for   example,   "Curren‐
458              tUser\MY\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a".   Thumbprint
459              is usually a SHA-1 hex string which you can see  in  certificate
460              details.  Following  store locations are supported: CurrentUser,
461              LocalMachine, CurrentService, Services,  CurrentUserGroupPolicy,
462              LocalMachineGroupPolicy, LocalMachineEnterprise.
463
464              If -E, --cert is provided several times, the last set value will
465              be used.
466
467              Example:
468               curl --cert certfile --key keyfile https://example.com
469
470              See also --cert-type, --key and --key-type.
471
472       --ciphers <list of ciphers>
473              (TLS) Specifies which ciphers to use in the connection. The list
474              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher
475              list details on this URL:
476
477               https://curl.se/docs/ssl-ciphers.html
478
479              If --ciphers is provided several times, the last set value  will
480              be used.
481
482              Example:
483               curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com
484
485              See also --tlsv1.3.
486
487       --compressed-ssh
488              (SCP SFTP) Enables built-in SSH compression.  This is a request,
489              not an order; the server may or may not do it.
490
491              Providing --compressed-ssh multiple times has no  extra  effect.
492              Disable it again with --no-compressed-ssh.
493
494              Example:
495               curl --compressed-ssh sftp://example.com/
496
497              See also --compressed. Added in 7.56.0.
498
499       --compressed
500              (HTTP) Request a compressed response using one of the algorithms
501              curl supports, and automatically decompress the content. Headers
502              are not modified.
503
504              If  this  option is used and the server sends an unsupported en‐
505              coding, curl will report an error. This is a request, not an or‐
506              der; the server may or may not deliver data compressed.
507
508              Providing --compressed multiple times has no extra effect.  Dis‐
509              able it again with --no-compressed.
510
511              Example:
512               curl --compressed https://example.com
513
514              See also --compressed-ssh.
515
516       -K, --config <file>
517              Specify a text file to read curl  arguments  from.  The  command
518              line  arguments  found  in the text file will be used as if they
519              were provided on the command line.
520
521              Options and their parameters must be specified on the same  line
522              in the file, separated by whitespace, colon, or the equals sign.
523              Long option names can optionally be given  in  the  config  file
524              without the initial double dashes and if so, the colon or equals
525              characters can be used as separators. If the option is specified
526              with  one or two dashes, there can be no colon or equals charac‐
527              ter between the option and its parameter.
528
529              If the parameter contains whitespace (or starts with  :  or  =),
530              the  parameter  must  be  enclosed  within quotes. Within double
531              quotes, the following escape sequences are  available:  \\,  \",
532              \t, \n, \r and \v. A backslash preceding any other letter is ig‐
533              nored.
534
535              If the first column of a config line is  a  '#'  character,  the
536              rest of the line will be treated as a comment.
537
538              Only write one option per physical line in the config file.
539
540              Specify  the  filename  to -K, --config as '-' to make curl read
541              the file from stdin.
542
543              Note that to be able to specify a URL in the  config  file,  you
544              need  to  specify  it  using the --url option, and not by simply
545              writing the URL on its own line. So, it could  look  similar  to
546              this:
547
548              url = "https://curl.se/docs/"
549
550               # --- Example file ---
551               # this is a comment
552               url = "example.com"
553               output = "curlhere.html"
554               user-agent = "superagent/1.0"
555
556               # and fetch another URL too
557               url = "example.com/docs/manpage.html"
558               -O
559               referer = "http://nowhereatall.example.com/"
560               # --- End of example file ---
561
562              When  curl  is invoked, it (unless -q, --disable is used) checks
563              for a default config file and uses it if found,  even  when  -K,
564              --config  is used. The default config file is checked for in the
565              following places in this order:
566
567              1) "$CURL_HOME/.curlrc"
568
569              2) "$XDG_CONFIG_HOME/.curlrc" (Added in 7.73.0)
570
571              3) "$HOME/.curlrc"
572
573              4) Windows: "%USERPROFILE%\.curlrc"
574
575              5) Windows: "%APPDATA%\.curlrc"
576
577              6) Windows: "%USERPROFILE%\Application Data\.curlrc"
578
579              7) Non-Windows: use getpwuid to find the home directory
580
581              8) On Windows, if it finds no .curlrc file in the  sequence  de‐
582              scribed  above,  it checks for one in the same dir the curl exe‐
583              cutable is placed.
584
585              On Windows two filenames are checked per location:  .curlrc  and
586              _curlrc,  preferring  the  former.  Older  versions  on  Windows
587              checked for _curlrc only.
588
589              -K, --config can be used several times in a command line
590
591              Example:
592               curl --config file.txt https://example.com
593
594              See also -q, --disable.
595
596       --connect-timeout <fractional seconds>
597              Maximum time in seconds that  you  allow  curl's  connection  to
598              take.   This  only  limits the connection phase, so if curl con‐
599              nects within the given period it will continue - if not it  will
600              exit.  Since version 7.32.0, this option accepts decimal values.
601
602              The "connection phase" is considered complete when the requested
603              TCP, TLS or QUIC handshakes are done.
604
605              The decimal value needs to provided using a dot (.)  as  decimal
606              separator  - not the local version even if it might be using an‐
607              other separator.
608
609              If --connect-timeout is provided several  times,  the  last  set
610              value will be used.
611
612              Examples:
613               curl --connect-timeout 20 https://example.com
614               curl --connect-timeout 3.14 https://example.com
615
616              See also -m, --max-time.
617
618       --connect-to <HOST1:PORT1:HOST2:PORT2>
619
620              For  a  request  to  the  given  HOST1:PORT1  pair,  connect  to
621              HOST2:PORT2 instead.  This option is suitable to direct requests
622              at a specific server, e.g. at a specific cluster node in a clus‐
623              ter of servers. This option is only used to establish  the  net‐
624              work  connection.  It  does NOT affect the hostname/port that is
625              used for TLS/SSL (e.g. SNI, certificate verification) or for the
626              application  protocols.  "HOST1"  and  "PORT1"  may be the empty
627              string, meaning "any host/port". "HOST2" and "PORT2" may also be
628              the   empty   string,   meaning   "use  the  request's  original
629              host/port".
630
631              A "host" specified to this option is compared as a string, so it
632              needs  to  match  the name used in request URL. It can be either
633              numerical such as "127.0.0.1" or the full host name such as "ex‐
634              ample.org".
635
636              --connect-to can be used several times in a command line
637
638              Example:
639               curl --connect-to example.com:443:example.net:8443 https://example.com
640
641              See also --resolve and -H, --header. Added in 7.49.0.
642
643       -C, --continue-at <offset>
644              Continue/Resume  a  previous  file transfer at the given offset.
645              The given offset is the exact  number  of  bytes  that  will  be
646              skipped,  counting  from the beginning of the source file before
647              it is transferred to the destination. If used with uploads,  the
648              FTP server command SIZE will not be used by curl.
649
650              Use  "-C  -" to tell curl to automatically find out where/how to
651              resume the transfer. It then uses the given  output/input  files
652              to figure that out.
653
654              If  -C,  --continue-at  is  provided several times, the last set
655              value will be used.
656
657              Examples:
658               curl -C - https://example.com
659               curl -C 400 https://example.com
660
661              See also -r, --range.
662
663       -c, --cookie-jar <filename>
664              (HTTP) Specify to which file you want curl to write all  cookies
665              after  a  completed  operation. Curl writes all cookies from its
666              in-memory cookie storage to the given file at the end of  opera‐
667              tions.  If  no  cookies  are known, no data will be written. The
668              file will be written using the Netscape cookie file  format.  If
669              you set the file name to a single dash, "-", the cookies will be
670              written to stdout.
671
672              This command line option will activate the  cookie  engine  that
673              makes curl record and use cookies. Another way to activate it is
674              to use the -b, --cookie option.
675
676              If the cookie jar cannot be created or  written  to,  the  whole
677              curl  operation  will  not fail or even report an error clearly.
678              Using -v, --verbose will get a warning displayed,  but  that  is
679              the  only  visible  feedback  you get about this possibly lethal
680              situation.
681
682              If -c, --cookie-jar is provided  several  times,  the  last  set
683              value will be used.
684
685              Examples:
686               curl -c store-here.txt https://example.com
687               curl -c store-here.txt -b read-these https://example.com
688
689              See also -b, --cookie.
690
691       -b, --cookie <data|filename>
692              (HTTP) Pass the data to the HTTP server in the Cookie header. It
693              is supposedly the data previously received from the server in  a
694              "Set-Cookie:"   line.   The   data   should  be  in  the  format
695              "NAME1=VALUE1; NAME2=VALUE2". This makes  curl  use  the  cookie
696              header  with this content explicitly in all outgoing request(s).
697              If multiple requests are done due  to  authentication,  followed
698              redirects or similar, they will all get this cookie passed on.
699
700              If  no '=' symbol is used in the argument, it is instead treated
701              as a filename to read previously stored cookie from. This option
702              also activates the cookie engine which will make curl record in‐
703              coming cookies, which may be handy if you are using this in com‐
704              bination  with  the  -L,  --location  option  or do multiple URL
705              transfers on the same invoke. If the file name is exactly a  mi‐
706              nus ("-"), curl will instead read the contents from stdin.
707
708              The file format of the file to read cookies from should be plain
709              HTTP headers (Set-Cookie style) or the  Netscape/Mozilla  cookie
710              file format.
711
712              The  file  specified with -b, --cookie is only used as input. No
713              cookies will be written to the file. To store cookies,  use  the
714              -c, --cookie-jar option.
715
716              If  you  use the Set-Cookie file format and do not specify a do‐
717              main then the cookie is not sent since  the  domain  will  never
718              match.  To  address this, set a domain in Set-Cookie line (doing
719              that will include sub-domains) or preferably: use  the  Netscape
720              format.
721
722              Users  often want to both read cookies from a file and write up‐
723              dated cookies back to a file, so using both -b, --cookie and -c,
724              --cookie-jar in the same command line is common.
725
726              -b, --cookie can be used several times in a command line
727
728              Examples:
729               curl -b cookiefile https://example.com
730               curl -b cookiefile -c cookiefile https://example.com
731
732              See also -c, --cookie-jar and -j, --junk-session-cookies.
733
734       --create-dirs
735              When used in conjunction with the -o, --output option, curl will
736              create the necessary local directory hierarchy as  needed.  This
737              option  creates  the directories mentioned with the -o, --output
738              option, nothing else. If the -o, --output file name uses no  di‐
739              rectory, or if the directories it mentions already exist, no di‐
740              rectories will be created.
741
742              Created dirs are made with mode 0750 on unix style file systems.
743
744              To create remote directories when using FTP or SFTP, try  --ftp-
745              create-dirs.
746
747              Providing  --create-dirs  multiple  times  has  no extra effect.
748              Disable it again with --no-create-dirs.
749
750              Example:
751               curl --create-dirs --output local/dir/file https://example.com
752
753              See also --ftp-create-dirs and --output-dir.
754
755       --create-file-mode <mode>
756              (SFTP SCP FILE) When curl is used to create files remotely using
757              one  of  the supported protocols, this option allows the user to
758              set which 'mode' to set on the file at creation time, instead of
759              the default 0644.
760
761              This option takes an octal number as argument.
762
763              If  --create-file-mode  is  provided several times, the last set
764              value will be used.
765
766              Example:
767               curl --create-file-mode 0777 -T localfile sftp://example.com/new
768
769              See also --ftp-create-dirs. Added in 7.75.0.
770
771       --crlf (FTP SMTP)  Convert  LF  to  CRLF  in  upload.  Useful  for  MVS
772              (OS/390).
773
774              (SMTP added in 7.40.0)
775
776              Providing --crlf multiple times has no extra effect.  Disable it
777              again with --no-crlf.
778
779              Example:
780               curl --crlf -T file ftp://example.com/
781
782              See also -B, --use-ascii.
783
784       --crlfile <file>
785              (TLS) Provide a file using PEM format with a Certificate Revoca‐
786              tion List that may specify peer certificates that are to be con‐
787              sidered revoked.
788
789              If --crlfile is provided several times, the last set value  will
790              be used.
791
792              Example:
793               curl --crlfile rejects.txt https://example.com
794
795              See also --cacert and --capath.
796
797       --curves <algorithm list>
798              (TLS)  Tells  curl  to request specific curves to use during SSL
799              session establishment according to RFC 8422, 5.1.  Multiple  al‐
800              gorithms  can  be  provided  by  separating  them with ":" (e.g.
801              "X25519:P-521").  The parameter is available identically in  the
802              "openssl s_client/s_server" utilities.
803
804              --curves  allows  a OpenSSL powered curl to make SSL-connections
805              with exactly the (EC) curve requested by  the  client,  avoiding
806              nontransparent client/server negotiations.
807
808              If  this  option  is  set,  the  default  curves list built into
809              openssl will be ignored.
810
811              If --curves is provided several times, the last set  value  will
812              be used.
813
814              Example:
815               curl --curves X25519 https://example.com
816
817              See also --ciphers. Added in 7.73.0.
818
819       --data-ascii <data>
820              (HTTP) This is just an alias for -d, --data.
821
822              --data-ascii can be used several times in a command line
823
824              Example:
825               curl --data-ascii @file https://example.com
826
827              See also --data-binary, --data-raw and --data-urlencode.
828
829       --data-binary <data>
830              (HTTP)  This  posts data exactly as specified with no extra pro‐
831              cessing whatsoever.
832
833              If you start the data with the letter @, the rest  should  be  a
834              filename. Data is posted in a similar manner as -d, --data does,
835              except that newlines and carriage returns are preserved and con‐
836              versions are never done.
837
838              Like  -d,  --data the default content-type sent to the server is
839              application/x-www-form-urlencoded. If you want the  data  to  be
840              treated as arbitrary binary data by the server then set the con‐
841              tent-type to octet-stream: -H "Content-Type:  application/octet-
842              stream".
843
844              If  this  option  is  used several times, the ones following the
845              first will append data as described in -d, --data.
846
847              --data-binary can be used several times in a command line
848
849              Example:
850               curl --data-binary @filename https://example.com
851
852              See also --data-ascii.
853
854       --data-raw <data>
855              (HTTP) This posts data similarly to -d, --data but  without  the
856              special interpretation of the @ character.
857
858              --data-raw can be used several times in a command line
859
860              Examples:
861               curl --data-raw "hello" https://example.com
862               curl --data-raw "@at@at@" https://example.com
863
864              See also -d, --data. Added in 7.43.0.
865
866       --data-urlencode <data>
867              (HTTP)  This posts data, similar to the other -d, --data options
868              with the exception that this performs URL-encoding.
869
870              To be CGI-compliant, the <data> part should begin  with  a  name
871              followed  by a separator and a content specification. The <data>
872              part can be passed to curl using one of the following syntaxes:
873
874              content
875                     This will make curl URL-encode the content and pass  that
876                     on.  Just be careful so that the content does not contain
877                     any = or @ symbols, as that will  then  make  the  syntax
878                     match one of the other cases below!
879
880              =content
881                     This  will make curl URL-encode the content and pass that
882                     on. The preceding = symbol is not included in the data.
883
884              name=content
885                     This will make curl URL-encode the content part and  pass
886                     that  on.  Note that the name part is expected to be URL-
887                     encoded already.
888
889              @filename
890                     This will make curl load data from the  given  file  (in‐
891                     cluding  any  newlines), URL-encode that data and pass it
892                     on in the POST.
893
894              name@filename
895                     This will make curl load data from the  given  file  (in‐
896                     cluding  any  newlines), URL-encode that data and pass it
897                     on in the POST. The name part  gets  an  equal  sign  ap‐
898                     pended,  resulting  in name=urlencoded-file-content. Note
899                     that the name is expected to be URL-encoded already.
900
901       --data-urlencode can be used several times in a command line
902
903       Examples:
904        curl --data-urlencode name=val https://example.com
905        curl --data-urlencode =encodethis https://example.com
906        curl --data-urlencode name@file https://example.com
907        curl --data-urlencode @fileonly https://example.com
908
909       See also -d, --data and --data-raw.
910
911       -d, --data <data>
912              (HTTP MQTT) Sends the specified data in a POST  request  to  the
913              HTTP server, in the same way that a browser does when a user has
914              filled in an HTML form and presses the submit button. This  will
915              cause curl to pass the data to the server using the content-type
916              application/x-www-form-urlencoded. Compare to -F, --form.
917
918              --data-raw is almost the same but does not have a special inter‐
919              pretation  of  the  @ character. To post data purely binary, you
920              should instead use the --data-binary option. To  URL-encode  the
921              value of a form field you may use --data-urlencode.
922
923              If  any of these options is used more than once on the same com‐
924              mand line, the data pieces specified will be merged with a sepa‐
925              rating  &-symbol.  Thus,  using  '-d name=daniel -d skill=lousy'
926              would    generate    a    post    chunk    that    looks    like
927              'name=daniel&skill=lousy'.
928
929              If  you  start  the data with the letter @, the rest should be a
930              file name to read the data from, or - if you want curl  to  read
931              the  data  from  stdin.  Posting data from a file named 'foobar'
932              would thus be done with -d, --data @foobar. When -d,  --data  is
933              told  to  read  from a file like that, carriage returns and new‐
934              lines will be stripped out. If you do not want the  @  character
935              to have a special interpretation use --data-raw instead.
936
937              -d, --data can be used several times in a command line
938
939              Examples:
940               curl -d "name=curl" https://example.com
941               curl -d "name=curl" -d "tool=cmdline" https://example.com
942               curl -d @filename https://example.com
943
944              See  also  --data-binary,  --data-urlencode and --data-raw. This
945              option is mutually exclusive to -F, --form and  -I,  --head  and
946              -T, --upload-file.
947
948       --delegation <LEVEL>
949              (GSS/kerberos)  Set  LEVEL to tell the server what it is allowed
950              to delegate when it comes to user credentials.
951
952              none   Do not allow any delegation.
953
954              policy Delegates if and only if the OK-AS-DELEGATE flag  is  set
955                     in  the  Kerberos  service  ticket,  which is a matter of
956                     realm policy.
957
958              always Unconditionally allow the server to delegate.
959
960       If --delegation is provided several times, the last set value  will  be
961       used.
962
963       Example:
964        curl --delegation "none" https://example.com
965
966       See also -k, --insecure and --ssl.
967
968       --digest
969              (HTTP)  Enables HTTP Digest authentication. This is an authenti‐
970              cation scheme that prevents the password from  being  sent  over
971              the  wire in clear text. Use this in combination with the normal
972              -u, --user option to set user name and password.
973
974              Providing --digest multiple times has no extra effect.   Disable
975              it again with --no-digest.
976
977              Example:
978               curl -u name:password --digest https://example.com
979
980              See  also  -u, --user, --proxy-digest and --anyauth. This option
981              is mutually exclusive to --basic and --ntlm and --negotiate.
982
983       --disable-eprt
984              (FTP) Tell curl to disable the use of the EPRT and LPRT commands
985              when doing active FTP transfers. Curl will normally always first
986              attempt to use EPRT, then LPRT before using PORT, but with  this
987              option,  it  will  use PORT right away. EPRT and LPRT are exten‐
988              sions to the original FTP protocol, and  may  not  work  on  all
989              servers, but they enable more functionality in a better way than
990              the traditional PORT command.
991
992              --eprt can be used to explicitly enable EPRT again and --no-eprt
993              is an alias for --disable-eprt.
994
995              If  the  server is accessed using IPv6, this option will have no
996              effect as EPRT is necessary then.
997
998              Disabling EPRT only changes the active behavior. If you want  to
999              switch  to  passive  mode  you need to not use -P, --ftp-port or
1000              force it with --ftp-pasv.
1001
1002              Providing --disable-eprt multiple times  has  no  extra  effect.
1003              Disable it again with --no-disable-eprt.
1004
1005              Example:
1006               curl --disable-eprt ftp://example.com/
1007
1008              See also --disable-epsv and -P, --ftp-port.
1009
1010       --disable-epsv
1011              (FTP)  Tell curl to disable the use of the EPSV command when do‐
1012              ing passive FTP transfers. Curl will normally always  first  at‐
1013              tempt to use EPSV before PASV, but with this option, it will not
1014              try using EPSV.
1015
1016              --epsv can be used to explicitly enable EPSV again and --no-epsv
1017              is an alias for --disable-epsv.
1018
1019              If  the  server is an IPv6 host, this option will have no effect
1020              as EPSV is necessary then.
1021
1022              Disabling EPSV only changes the passive behavior. If you want to
1023              switch to active mode you need to use -P, --ftp-port.
1024
1025              Providing  --disable-epsv  multiple  times  has no extra effect.
1026              Disable it again with --no-disable-epsv.
1027
1028              Example:
1029               curl --disable-epsv ftp://example.com/
1030
1031              See also --disable-eprt and -P, --ftp-port.
1032
1033       -q, --disable
1034              If used as the first parameter on the command line,  the  curlrc
1035              config  file will not be read and used. See the -K, --config for
1036              details on the default config file search path.
1037
1038              Providing -q, --disable multiple  times  has  no  extra  effect.
1039              Disable it again with --no-disable.
1040
1041              Example:
1042               curl -q https://example.com
1043
1044              See also -K, --config.
1045
1046       --disallow-username-in-url
1047              (HTTP)  This  tells  curl  to  exit if passed a URL containing a
1048              username. This is probably most useful when  the  URL  is  being
1049              provided at runtime or similar.
1050
1051              Providing --disallow-username-in-url multiple times has no extra
1052              effect.  Disable it again with --no-disallow-username-in-url.
1053
1054              Example:
1055               curl --disallow-username-in-url https://example.com
1056
1057              See also --proto. Added in 7.61.0.
1058
1059       --dns-interface <interface>
1060              (DNS) Tell curl to send outgoing DNS  requests  through  <inter‐
1061              face>.  This  option is a counterpart to --interface (which does
1062              not affect DNS). The supplied string must be an  interface  name
1063              (not an address).
1064
1065              If --dns-interface is provided several times, the last set value
1066              will be used.
1067
1068              Example:
1069               curl --dns-interface eth0 https://example.com
1070
1071              See also --dns-ipv4-addr  and  --dns-ipv6-addr.  --dns-interface
1072              requires  that  the  underlying  libcurl was built to support c-
1073              ares. Added in 7.33.0.
1074
1075       --dns-ipv4-addr <address>
1076              (DNS) Tell curl to bind to <ip-address> when making IPv4 DNS re‐
1077              quests,  so  that  the DNS requests originate from this address.
1078              The argument should be a single IPv4 address.
1079
1080              If --dns-ipv4-addr is provided several times, the last set value
1081              will be used.
1082
1083              Example:
1084               curl --dns-ipv4-addr 10.1.2.3 https://example.com
1085
1086              See  also  --dns-interface  and --dns-ipv6-addr. --dns-ipv4-addr
1087              requires that the underlying libcurl was  built  to  support  c-
1088              ares. Added in 7.33.0.
1089
1090       --dns-ipv6-addr <address>
1091              (DNS) Tell curl to bind to <ip-address> when making IPv6 DNS re‐
1092              quests, so that the DNS requests originate  from  this  address.
1093              The argument should be a single IPv6 address.
1094
1095              If --dns-ipv6-addr is provided several times, the last set value
1096              will be used.
1097
1098              Example:
1099               curl --dns-ipv6-addr 2a04:4e42::561 https://example.com
1100
1101              See also --dns-interface  and  --dns-ipv4-addr.  --dns-ipv6-addr
1102              requires  that  the  underlying  libcurl was built to support c-
1103              ares. Added in 7.33.0.
1104
1105       --dns-servers <addresses>
1106              Set the list of DNS servers to be used instead of the system de‐
1107              fault.   The  list of IP addresses should be separated with com‐
1108              mas. Port numbers may also optionally be given as :<port-number>
1109              after each IP address.
1110
1111              If  --dns-servers  is provided several times, the last set value
1112              will be used.
1113
1114              Example:
1115               curl --dns-servers 192.168.0.1,192.168.0.2 https://example.com
1116
1117              See also --dns-interface and --dns-ipv4-addr. --dns-servers  re‐
1118              quires  that the underlying libcurl was built to support c-ares.
1119              Added in 7.33.0.
1120
1121       --doh-cert-status
1122              Same as --cert-status but used for DoH (DNS-over-HTTPS).
1123
1124              Providing --doh-cert-status multiple times has no extra  effect.
1125              Disable it again with --no-doh-cert-status.
1126
1127              Example:
1128               curl --doh-cert-status --doh-url https://doh.example https://example.com
1129
1130              See also --doh-insecure. Added in 7.76.0.
1131
1132       --doh-insecure
1133              Same as -k, --insecure but used for DoH (DNS-over-HTTPS).
1134
1135              Providing  --doh-insecure  multiple  times  has no extra effect.
1136              Disable it again with --no-doh-insecure.
1137
1138              Example:
1139               curl --doh-insecure --doh-url https://doh.example https://example.com
1140
1141              See also --doh-url. Added in 7.76.0.
1142
1143       --doh-url <URL>
1144              Specifies which DNS-over-HTTPS (DoH) server to  use  to  resolve
1145              hostnames, instead of using the default name resolver mechanism.
1146              The URL must be HTTPS.
1147
1148              Some SSL options that you set for your transfer  will  apply  to
1149              DoH  since  the  name  lookups take place over SSL. However, the
1150              certificate verification settings are not inherited and  can  be
1151              controlled separately via --doh-insecure and --doh-cert-status.
1152
1153              This  option  is unset if an empty string "" is used as the URL.
1154              (Added in 7.85.0)
1155
1156              If --doh-url is provided several times, the last set value  will
1157              be used.
1158
1159              Example:
1160               curl --doh-url https://doh.example https://example.com
1161
1162              See also --doh-insecure. Added in 7.62.0.
1163
1164       -D, --dump-header <filename>
1165              (HTTP  FTP) Write the received protocol headers to the specified
1166              file. If no headers are received, the use of  this  option  will
1167              create an empty file.
1168
1169              When  used  in FTP, the FTP server response lines are considered
1170              being "headers" and thus are saved there.
1171
1172              Having multiple transfers in one set  of  operations  (i.e.  the
1173              URLs  in  one  -:,  --next clause), will append them to the same
1174              file, separated by a blank line.
1175
1176              If -D, --dump-header is provided several  times,  the  last  set
1177              value will be used.
1178
1179              Example:
1180               curl --dump-header store.txt https://example.com
1181
1182              See also -o, --output.
1183
1184       --egd-file <file>
1185              (TLS)  Deprecated  option.  This option is ignored by curl since
1186              7.84.0. Prior to that it only had an effect on curl if built  to
1187              use old versions of OpenSSL.
1188
1189              Specify  the  path  name to the Entropy Gathering Daemon socket.
1190              The socket is used to seed the random  engine  for  SSL  connec‐
1191              tions.
1192
1193              If --egd-file is provided several times, the last set value will
1194              be used.
1195
1196              Example:
1197               curl --egd-file /random/here https://example.com
1198
1199              See also --random-file.
1200
1201       --engine <name>
1202              (TLS) Select the OpenSSL crypto engine to use for cipher  opera‐
1203              tions. Use --engine list to print a list of build-time supported
1204              engines. Note that not all (and possibly none)  of  the  engines
1205              may be available at runtime.
1206
1207              If  --engine  is provided several times, the last set value will
1208              be used.
1209
1210              Example:
1211               curl --engine flavor https://example.com
1212
1213              See also --ciphers and --curves.
1214
1215       --etag-compare <file>
1216              (HTTP) This option makes a conditional HTTP request for the spe‐
1217              cific ETag read from the given file by sending a custom If-None-
1218              Match header using the stored ETag.
1219
1220              For correct results, make sure that the specified file  contains
1221              only  a  single  line  with  the  desired ETag. An empty file is
1222              parsed as an empty ETag.
1223
1224              Use the option --etag-save to first save the  ETag  from  a  re‐
1225              sponse,  and  then  use this option to compare against the saved
1226              ETag in a subsequent request.
1227
1228              If --etag-compare is provided several times, the last set  value
1229              will be used.
1230
1231              Example:
1232               curl --etag-compare etag.txt https://example.com
1233
1234              See also --etag-save and -z, --time-cond. Added in 7.68.0.
1235
1236       --etag-save <file>
1237              (HTTP)  This option saves an HTTP ETag to the specified file. An
1238              ETag is a caching related header,  usually  returned  in  a  re‐
1239              sponse.
1240
1241              If no ETag is sent by the server, an empty file is created.
1242
1243              If  --etag-save  is  provided  several times, the last set value
1244              will be used.
1245
1246              Example:
1247               curl --etag-save storetag.txt https://example.com
1248
1249              See also --etag-compare. Added in 7.68.0.
1250
1251       --expect100-timeout <seconds>
1252              (HTTP) Maximum time in seconds that you allow curl to wait for a
1253              100-continue  response  when curl emits an Expects: 100-continue
1254              header in its request. By default curl  will  wait  one  second.
1255              This  option accepts decimal values! When curl stops waiting, it
1256              will continue as if the response has been received.
1257
1258              The decimal value needs to provided using a dot (.)  as  decimal
1259              separator  - not the local version even if it might be using an‐
1260              other separator.
1261
1262              If --expect100-timeout is provided several times, the  last  set
1263              value will be used.
1264
1265              Example:
1266               curl --expect100-timeout 2.5 -T file https://example.com
1267
1268              See also --connect-timeout. Added in 7.47.0.
1269
1270       --fail-early
1271              Fail and exit on the first detected transfer error.
1272
1273              When  curl is used to do multiple transfers on the command line,
1274              it will attempt to operate on each given URL, one by one. By de‐
1275              fault,  it  will  ignore errors if there are more URLs given and
1276              the last URL's success will determine the error  code  curl  re‐
1277              turns. So early failures will be "hidden" by subsequent success‐
1278              ful transfers.
1279
1280              Using this option, curl will instead  return  an  error  on  the
1281              first  transfer  that  fails,  independent of the amount of URLs
1282              that are given on the command line. This way, no transfer  fail‐
1283              ures go undetected by scripts and similar.
1284
1285              This option does not imply -f, --fail, which causes transfers to
1286              fail due to the server's HTTP status code. You can  combine  the
1287              two options, however note -f, --fail is not global and is there‐
1288              fore contained by -:, --next.
1289
1290              This option is global and does not need to be specified for each
1291              use of --next.
1292
1293              Providing --fail-early multiple times has no extra effect.  Dis‐
1294              able it again with --no-fail-early.
1295
1296              Example:
1297               curl --fail-early https://example.com https://two.example
1298
1299              See also -f, --fail and --fail-with-body. Added in 7.52.0.
1300
1301       --fail-with-body
1302              (HTTP) Return an error on server errors where the HTTP  response
1303              code  is  400  or  greater). In normal cases when an HTTP server
1304              fails to deliver a document, it returns an HTML document stating
1305              so  (which  often  also  describes why and more). This flag will
1306              still allow curl to output and save that content but also to re‐
1307              turn error 22.
1308
1309              This  is  an  alternative  option to -f, --fail which makes curl
1310              fail for the same circumstances but without saving the content.
1311
1312              Providing --fail-with-body multiple times has no  extra  effect.
1313              Disable it again with --no-fail-with-body.
1314
1315              Example:
1316               curl --fail-with-body https://example.com
1317
1318              See  also  -f,  --fail. This option is mutually exclusive to -f,
1319              --fail. Added in 7.76.0.
1320
1321       -f, --fail
1322              (HTTP) Fail fast with no output at all on server errors. This is
1323              useful  to  enable  scripts and users to better deal with failed
1324              attempts. In normal cases when an HTTP server fails to deliver a
1325              document,  it  returns  an HTML document stating so (which often
1326              also describes why and more). This flag will prevent  curl  from
1327              outputting that and return error 22.
1328
1329              This  method is not fail-safe and there are occasions where non-
1330              successful response codes will slip through, especially when au‐
1331              thentication is involved (response codes 401 and 407).
1332
1333              Providing  -f,  --fail multiple times has no extra effect.  Dis‐
1334              able it again with --no-fail.
1335
1336              Example:
1337               curl --fail https://example.com
1338
1339              See also --fail-with-body. This option is mutually exclusive  to
1340              --fail-with-body.
1341
1342       --false-start
1343              (TLS)  Tells  curl  to use false start during the TLS handshake.
1344              False start is a mode where a TLS client will start sending  ap‐
1345              plication  data  before verifying the server's Finished message,
1346              thus saving a round trip when performing a full handshake.
1347
1348              This is currently only implemented in the NSS and Secure  Trans‐
1349              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.
1350
1351              Providing  --false-start  multiple  times  has  no extra effect.
1352              Disable it again with --no-false-start.
1353
1354              Example:
1355               curl --false-start https://example.com
1356
1357              See also --tcp-fastopen. Added in 7.42.0.
1358
1359       --form-escape
1360              (HTTP) Tells curl to pass on names of multipart form fields  and
1361              files using backslash-escaping instead of percent-encoding.
1362
1363              If  --form-escape  is provided several times, the last set value
1364              will be used.
1365
1366              Example:
1367               curl --form-escape -F 'field\name=curl' -F 'file=@load"this' https://example.com
1368
1369              See also -F, --form. Added in 7.81.0.
1370
1371       --form-string <name=string>
1372              (HTTP SMTP IMAP) Similar to -F, --form  except  that  the  value
1373              string  for  the  named parameter is used literally. Leading '@'
1374              and '<' characters, and the ';type=' string in the value have no
1375              special meaning. Use this in preference to -F, --form if there's
1376              any possibility that the string value may  accidentally  trigger
1377              the '@' or '<' features of -F, --form.
1378
1379              --form-string can be used several times in a command line
1380
1381              Example:
1382               curl --form-string "data" https://example.com
1383
1384              See also -F, --form.
1385
1386       -F, --form <name=content>
1387              (HTTP  SMTP  IMAP) For HTTP protocol family, this lets curl emu‐
1388              late a filled-in form in which a user  has  pressed  the  submit
1389              button.  This  causes  curl  to POST data using the Content-Type
1390              multipart/form-data according to RFC 2388.
1391
1392              For SMTP and IMAP protocols, this is the means to compose a mul‐
1393              tipart mail message to transmit.
1394
1395              This  enables  uploading of binary files etc. To force the 'con‐
1396              tent' part to be a file, prefix the file name with an @ sign. To
1397              just get the content part from a file, prefix the file name with
1398              the symbol <. The difference between @ and  <  is  then  that  @
1399              makes  a  file  get attached in the post as a file upload, while
1400              the < makes a text field and just get the contents for that text
1401              field from a file.
1402
1403              Tell  curl to read content from stdin instead of a file by using
1404              - as filename. This goes for both @ and < constructs. When stdin
1405              is used, the contents is buffered in memory first by curl to de‐
1406              termine its size and allow a possible resend. Defining a  part's
1407              data from a named non-regular file (such as a named pipe or sim‐
1408              ilar) is unfortunately not subject to buffering and will be  ef‐
1409              fectively  read at transmission time; since the full size is un‐
1410              known before the transfer starts, such data is sent as chunks by
1411              HTTP and rejected by IMAP.
1412
1413              Example: send an image to an HTTP server, where 'profile' is the
1414              name of the form-field to which the file  portrait.jpg  will  be
1415              the input:
1416
1417               curl -F profile=@portrait.jpg https://example.com/upload.cgi
1418
1419              Example:  send your name and shoe size in two text fields to the
1420              server:
1421
1422               curl -F name=John -F shoesize=11 https://example.com/
1423
1424              Example: send your essay in a text field to the server. Send  it
1425              as  a plain text field, but get the contents for it from a local
1426              file:
1427
1428               curl -F "story=<hugefile.txt" https://example.com/
1429
1430              You can also  tell  curl  what  Content-Type  to  use  by  using
1431              'type=', in a manner similar to:
1432
1433               curl -F "web=@index.html;type=text/html" example.com
1434
1435              or
1436
1437               curl -F "name=daniel;type=text/foo" example.com
1438
1439              You  can  also explicitly change the name field of a file upload
1440              part by setting filename=, like this:
1441
1442               curl -F "file=@localfile;filename=nameinpost" example.com
1443
1444              If filename/path contains ',' or ';', it must be quoted by  dou‐
1445              ble-quotes like:
1446
1447               curl -F "file=@\"local,file\";filename=\"name;in;post\"" example.com
1448
1449              or
1450
1451               curl -F 'file=@"local,file";filename="name;in;post"' example.com
1452
1453              Note  that  if  a  filename/path is quoted by double-quotes, any
1454              double-quote or backslash within the filename must be escaped by
1455              backslash.
1456
1457              Quoting  must  also  be  applied to non-file data if it contains
1458              semicolons, leading/trailing spaces or leading double quotes:
1459
1460               curl -F 'colors="red; green; blue";type=text/x-myapp' example.com
1461
1462              You can add custom headers to the  field  by  setting  headers=,
1463              like
1464
1465                curl -F "submit=OK;headers=\"X-submit-type: OK\"" example.com
1466
1467              or
1468
1469                curl -F "submit=OK;headers=@headerfile" example.com
1470
1471              The  headers=  keyword may appear more that once and above notes
1472              about quoting apply. When headers are read from  a  file,  Empty
1473              lines and lines starting with '#' are comments and ignored; each
1474              header can be folded by splitting between two words and starting
1475              the  continuation  line  with a space; embedded carriage-returns
1476              and trailing spaces are stripped.   Here  is  an  example  of  a
1477              header file contents:
1478
1479                # This file contain two headers.
1480                X-header-1: this is a header
1481
1482                # The following header is folded.
1483                X-header-2: this is
1484                 another header
1485
1486              To  support  sending  multipart mail messages, the syntax is ex‐
1487              tended as follows:
1488              - name can be omitted: the equal sign is the first character  of
1489              the argument,
1490              -  if  data  starts with '(', this signals to start a new multi‐
1491              part: it can be followed by a content type specification.
1492              - a multipart can be terminated with a '=)' argument.
1493
1494              Example: the following command sends an SMTP mime email consist‐
1495              ing in an inline part in two alternative formats: plain text and
1496              HTML. It attaches a text file:
1497
1498               curl -F '=(;type=multipart/alternative' \
1499                    -F '=plain text message' \
1500                    -F '= <body>HTML message</body>;type=text/html' \
1501                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com
1502
1503              Data can be encoded for transfer using encoder=.  Available  en‐
1504              codings are binary and 8bit that do nothing else than adding the
1505              corresponding Content-Transfer-Encoding header, 7bit  that  only
1506              rejects 8-bit characters with a transfer error, quoted-printable
1507              and base64 that encodes  data  according  to  the  corresponding
1508              schemes, limiting lines length to 76 characters.
1509
1510              Example:  send  multipart mail with a quoted-printable text mes‐
1511              sage and a base64 attached file:
1512
1513               curl -F '=text message;encoder=quoted-printable' \
1514                    -F '=@localfile;encoder=base64' ... smtp://example.com
1515
1516              See further examples and details in the MANUAL.
1517
1518              -F, --form can be used several times in a command line
1519
1520              Example:
1521               curl --form "name=curl" --form "file=@loadthis" https://example.com
1522
1523              See also -d, --data, --form-string and --form-escape.  This  op‐
1524              tion  is mutually exclusive to -d, --data and -I, --head and -T,
1525              --upload-file.
1526
1527       --ftp-account <data>
1528              (FTP) When an FTP server asks for "account data" after user name
1529              and  password has been provided, this data is sent off using the
1530              ACCT command.
1531
1532              If --ftp-account is provided several times, the last  set  value
1533              will be used.
1534
1535              Example:
1536               curl --ftp-account "mr.robot" ftp://example.com/
1537
1538              See also -u, --user.
1539
1540       --ftp-alternative-to-user <command>
1541              (FTP)  If  authenticating with the USER and PASS commands fails,
1542              send this  command.   When  connecting  to  Tumbleweed's  Secure
1543              Transport  server  over  FTPS  using a client certificate, using
1544              "SITE AUTH" will tell the server to retrieve the  username  from
1545              the certificate.
1546
1547              If --ftp-alternative-to-user is provided several times, the last
1548              set value will be used.
1549
1550              Example:
1551               curl --ftp-alternative-to-user "U53r" ftp://example.com
1552
1553              See also --ftp-account and -u, --user.
1554
1555       --ftp-create-dirs
1556              (FTP SFTP) When an FTP or SFTP URL/operation uses  a  path  that
1557              does not currently exist on the server, the standard behavior of
1558              curl is to fail. Using this option, curl will instead attempt to
1559              create missing directories.
1560
1561              Providing  --ftp-create-dirs multiple times has no extra effect.
1562              Disable it again with --no-ftp-create-dirs.
1563
1564              Example:
1565               curl --ftp-create-dirs -T file ftp://example.com/remote/path/file
1566
1567              See also --create-dirs.
1568
1569       --ftp-method <method>
1570              (FTP) Control what method curl should use to reach a file on  an
1571              FTP(S)  server. The method argument should be one of the follow‐
1572              ing alternatives:
1573
1574              multicwd
1575                     curl does a single CWD operation for each  path  part  in
1576                     the  given URL. For deep hierarchies this means many com‐
1577                     mands. This is how RFC 1738 says it should be done.  This
1578                     is the default but the slowest behavior.
1579
1580              nocwd  curl  does  no  CWD at all. curl will do SIZE, RETR, STOR
1581                     etc and give a full path to the server for all these com‐
1582                     mands. This is the fastest behavior.
1583
1584              singlecwd
1585                     curl does one CWD with the full target directory and then
1586                     operates on the file "normally"  (like  in  the  multicwd
1587                     case).  This  is  somewhat  more standards compliant than
1588                     'nocwd' but without the full penalty of 'multicwd'.
1589
1590       If --ftp-method is provided several times, the last set value  will  be
1591       used.
1592
1593       Examples:
1594        curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
1595        curl --ftp-method nocwd ftp://example.com/dir1/dir2/file
1596        curl --ftp-method singlecwd ftp://example.com/dir1/dir2/file
1597
1598       See also -l, --list-only.
1599
1600       --ftp-pasv
1601              (FTP)  Use  passive mode for the data connection. Passive is the
1602              internal default behavior, but using this option can be used  to
1603              override a previous -P, --ftp-port option.
1604
1605              Reversing  an enforced passive really is not doable but you must
1606              then instead enforce the correct -P, --ftp-port again.
1607
1608              Passive mode means that curl will try the EPSV command first and
1609              then PASV, unless --disable-epsv is used.
1610
1611              Providing  --ftp-pasv  multiple times has no extra effect.  Dis‐
1612              able it again with --no-ftp-pasv.
1613
1614              Example:
1615               curl --ftp-pasv ftp://example.com/
1616
1617              See also --disable-epsv.
1618
1619       -P, --ftp-port <address>
1620              (FTP) Reverses the default initiator/listener  roles  when  con‐
1621              necting  with  FTP. This option makes curl use active mode. curl
1622              then tells the server to connect back to the client's  specified
1623              address and port, while passive mode asks the server to setup an
1624              IP address and port for it to connect to.  <address>  should  be
1625              one of:
1626
1627              interface
1628                     e.g.  "eth0"  to specify which interface's IP address you
1629                     want to use (Unix only)
1630
1631              IP address
1632                     e.g. "192.168.10.1" to specify the exact IP address
1633
1634              host name
1635                     e.g. "my.host.domain" to specify the machine
1636
1637              -      make curl pick the same IP address that is  already  used
1638                     for the control connection
1639
1640       Disable the use of PORT with --ftp-pasv. Disable the attempt to use the
1641       EPRT command instead of PORT by using --disable-eprt.  EPRT  is  really
1642       PORT++.
1643
1644       You  can  also  append ":[start]-[end]" to the right of the address, to
1645       tell curl what TCP port range to use. That means  you  specify  a  port
1646       range,  from a lower to a higher number. A single number works as well,
1647       but do note that it increases the risk of failure since  the  port  may
1648       not be available.
1649
1650
1651       If -P, --ftp-port is provided several times, the last set value will be
1652       used.
1653
1654       Examples:
1655        curl -P - ftp:/example.com
1656        curl -P eth0 ftp:/example.com
1657        curl -P 192.168.0.2 ftp:/example.com
1658
1659       See also --ftp-pasv and --disable-eprt.
1660
1661       --ftp-pret
1662              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).
1663              Certain  FTP  servers,  mainly drftpd, require this non-standard
1664              command for directory listings as well as up  and  downloads  in
1665              PASV mode.
1666
1667              Providing  --ftp-pret  multiple times has no extra effect.  Dis‐
1668              able it again with --no-ftp-pret.
1669
1670              Example:
1671               curl --ftp-pret ftp://example.com/
1672
1673              See also -P, --ftp-port and --ftp-pasv.
1674
1675       --ftp-skip-pasv-ip
1676              (FTP) Tell curl to not use the IP address the server suggests in
1677              its  response to curl's PASV command when curl connects the data
1678              connection. Instead curl will re-use the same IP address it  al‐
1679              ready uses for the control connection.
1680
1681              Since curl 7.74.0 this option is enabled by default.
1682
1683              This  option has no effect if PORT, EPRT or EPSV is used instead
1684              of PASV.
1685
1686              Providing --ftp-skip-pasv-ip multiple times has no extra effect.
1687              Disable it again with --no-ftp-skip-pasv-ip.
1688
1689              Example:
1690               curl --ftp-skip-pasv-ip ftp://example.com/
1691
1692              See also --ftp-pasv.
1693
1694       --ftp-ssl-ccc-mode <active/passive>
1695              (FTP)  Sets the CCC mode. The passive mode will not initiate the
1696              shutdown, but instead wait for the server to do it, and will not
1697              reply to the shutdown from the server. The active mode initiates
1698              the shutdown and waits for a reply from the server.
1699
1700              Providing --ftp-ssl-ccc-mode multiple times has no extra effect.
1701              Disable it again with --no-ftp-ssl-ccc-mode.
1702
1703              Example:
1704               curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
1705
1706              See also --ftp-ssl-ccc.
1707
1708       --ftp-ssl-ccc
1709              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS
1710              layer after authenticating. The rest of the control channel com‐
1711              munication  will be unencrypted. This allows NAT routers to fol‐
1712              low the FTP transaction. The default mode is passive.
1713
1714              Providing --ftp-ssl-ccc multiple  times  has  no  extra  effect.
1715              Disable it again with --no-ftp-ssl-ccc.
1716
1717              Example:
1718               curl --ftp-ssl-ccc ftps://example.com/
1719
1720              See also --ssl and --ftp-ssl-ccc-mode.
1721
1722       --ftp-ssl-control
1723              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.
1724              Allows secure authentication, but non-encrypted  data  transfers
1725              for  efficiency.  Fails the transfer if the server does not sup‐
1726              port SSL/TLS.
1727
1728              Providing --ftp-ssl-control multiple times has no extra  effect.
1729              Disable it again with --no-ftp-ssl-control.
1730
1731              Example:
1732               curl --ftp-ssl-control ftp://example.com
1733
1734              See also --ssl.
1735
1736       -G, --get
1737              When  used,  this  option  will make all data specified with -d,
1738              --data, --data-binary or --data-urlencode to be used in an  HTTP
1739              GET  request instead of the POST request that otherwise would be
1740              used. The data will be appended to the URL with a '?' separator.
1741
1742              If used in combination with -I, --head, the POST data  will  in‐
1743              stead be appended to the URL with a HEAD request.
1744
1745              Providing -G, --get multiple times has no extra effect.  Disable
1746              it again with --no-get.
1747
1748              Examples:
1749               curl --get https://example.com
1750               curl --get -d "tool=curl" -d "age=old" https://example.com
1751               curl --get -I -d "tool=curl" https://example.com
1752
1753              See also -d, --data and -X, --request.
1754
1755       -g, --globoff
1756              This option switches off the "URL globbing parser". When you set
1757              this  option, you can specify URLs that contain the letters {}[]
1758              without having curl itself interpret them. Note that these  let‐
1759              ters  are  not  normal legal URL contents but they should be en‐
1760              coded according to the URI standard.
1761
1762              Providing -g, --globoff multiple  times  has  no  extra  effect.
1763              Disable it again with --no-globoff.
1764
1765              Example:
1766               curl -g "https://example.com/{[]}}}}"
1767
1768              See also -K, --config and -q, --disable.
1769
1770       --happy-eyeballs-timeout-ms <milliseconds>
1771              Happy  Eyeballs is an algorithm that attempts to connect to both
1772              IPv4 and IPv6 addresses for  dual-stack  hosts,  giving  IPv6  a
1773              head-start  of the specified number of milliseconds. If the IPv6
1774              address cannot be connected to within that time, then a  connec‐
1775              tion  attempt is made to the IPv4 address in parallel. The first
1776              connection to be established is the one that is used.
1777
1778              The range of suggested useful values is limited. Happy  Eyeballs
1779              RFC  6555  says  "It  is RECOMMENDED that connection attempts be
1780              paced 150-250 ms apart to balance human factors against  network
1781              load."  libcurl currently defaults to 200 ms. Firefox and Chrome
1782              currently default to 300 ms.
1783
1784              If --happy-eyeballs-timeout-ms is provided  several  times,  the
1785              last set value will be used.
1786
1787              Example:
1788               curl --happy-eyeballs-timeout-ms 500 https://example.com
1789
1790              See also -m, --max-time and --connect-timeout. Added in 7.59.0.
1791
1792       --haproxy-protocol
1793              (HTTP)  Send a HAProxy PROXY protocol v1 header at the beginning
1794              of the connection. This is used by some load balancers  and  re‐
1795              verse proxies to indicate the client's true IP address and port.
1796
1797              This  option is primarily useful when sending test requests to a
1798              service that expects this header.
1799
1800              Providing --haproxy-protocol multiple times has no extra effect.
1801              Disable it again with --no-haproxy-protocol.
1802
1803              Example:
1804               curl --haproxy-protocol https://example.com
1805
1806              See also -x, --proxy. Added in 7.60.0.
1807
1808       -I, --head
1809              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the
1810              command HEAD which this uses to get nothing but the header of  a
1811              document.  When  used  on an FTP or FILE file, curl displays the
1812              file size and last modification time only.
1813
1814              Providing -I, --head multiple times has no extra  effect.   Dis‐
1815              able it again with --no-head.
1816
1817              Example:
1818               curl -I https://example.com
1819
1820              See also -G, --get, -v, --verbose and --trace-ascii.
1821
1822       -H, --header <header/@file>
1823              (HTTP  IMAP  SMTP)  Extra header to include in information sent.
1824              When used within an HTTP request, it is added to the regular re‐
1825              quest headers.
1826
1827              For an IMAP or SMTP MIME uploaded mail built with -F, --form op‐
1828              tions, it is prepended to the resulting  MIME  document,  effec‐
1829              tively including it at the mail global level. It does not affect
1830              raw uploaded mails (Added in 7.56.0).
1831
1832              You may specify any number of extra headers. Note  that  if  you
1833              should  add a custom header that has the same name as one of the
1834              internal ones curl would use, your externally set header will be
1835              used  instead of the internal one.  This allows you to make even
1836              trickier stuff than curl would normally do. You should  not  re‐
1837              place internally set headers without knowing perfectly well what
1838              you are doing. Remove an internal header by giving a replacement
1839              without  content  on  the  right  side  of  the colon, as in: -H
1840              "Host:". If you send the custom header with  no-value  then  its
1841              header  must  be terminated with a semicolon, such as -H "X-Cus‐
1842              tom-Header;" to send "X-Custom-Header:".
1843
1844              curl will make sure that each header  you  add/replace  is  sent
1845              with the proper end-of-line marker, you should thus not add that
1846              as a part of the header content: do not add newlines or carriage
1847              returns, they will only mess things up for you.
1848
1849              This  option can take an argument in @filename style, which then
1850              adds a header for each line in the input  file.  Using  @-  will
1851              make curl read the header file from stdin. Added in 7.55.0.
1852
1853              Please note that most anti-spam utilities check the presence and
1854              value of several MIME mail headers: these  are  "From:",  "To:",
1855              "Date:"  and  "Subject:"  among  others and should be added with
1856              this option.
1857
1858              You need --proxy-header to send custom headers intended  for  an
1859              HTTP proxy. Added in 7.37.0.
1860
1861              Passing  on  a "Transfer-Encoding: chunked" header when doing an
1862              HTTP request with a request body, will make curl send  the  data
1863              using chunked encoding.
1864
1865              WARNING:  headers  set  with this option will be set in all HTTP
1866              requests - even after redirects are  followed,  like  when  told
1867              with  -L,  --location. This can lead to the header being sent to
1868              other hosts than the original host, so sensitive headers  should
1869              be used with caution combined with following redirects.
1870
1871              -H, --header can be used several times in a command line
1872
1873              Examples:
1874               curl -H "X-First-Name: Joe" https://example.com
1875               curl -H "User-Agent: yes-please/2000" https://example.com
1876               curl -H "Host:" https://example.com
1877               curl -H @headers.txt https://example.com
1878
1879              See also -A, --user-agent and -e, --referer.
1880
1881       -h, --help <category>
1882              Usage  help.  This  lists all commands of the <category>.  If no
1883              arg was provided, curl will display the most  important  command
1884              line  arguments.   If the argument "all" was provided, curl will
1885              display all options available.  If the argument  "category"  was
1886              provided, curl will display all categories and their meanings.
1887
1888              Example:
1889               curl --help all
1890
1891              See also -v, --verbose.
1892
1893       --hostpubmd5 <md5>
1894              (SFTP  SCP)  Pass a string containing 32 hexadecimal digits. The
1895              string should be the 128 bit MD5 checksum of the  remote  host's
1896              public key, curl will refuse the connection with the host unless
1897              the md5sums match.
1898
1899              If --hostpubmd5 is provided several times, the  last  set  value
1900              will be used.
1901
1902              Example:
1903               curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
1904
1905              See also --hostpubsha256.
1906
1907       --hostpubsha256 <sha256>
1908              (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash
1909              of the remote host's public key. Curl will refuse the connection
1910              with the host unless the hashes match.
1911
1912              This  feature requires libcurl to be built with libssh2 and does
1913              not work with other SSH backends.
1914
1915              If --hostpubsha256 is provided several times, the last set value
1916              will be used.
1917
1918              Example:
1919               curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
1920
1921              See also --hostpubmd5. Added in 7.80.0.
1922
1923       --hsts <file name>
1924              (HTTPS)  This  option enables HSTS for the transfer. If the file
1925              name points to an existing HSTS cache file, that will  be  used.
1926              After  a completed transfer, the cache will be saved to the file
1927              name again if it has been modified.
1928
1929              If curl is told to use HTTP:// for a transfer involving  a  host
1930              name  that exists in the HSTS cache, it upgrades the transfer to
1931              use HTTPS. Each HSTS cache entry has an individual life time af‐
1932              ter which the upgrade is no longer performed.
1933
1934              Specify a "" file name (zero length) to avoid loading/saving and
1935              make curl just handle HSTS in memory.
1936
1937              If this option is used several times, curl  will  load  contents
1938              from all the files but the last one will be used for saving.
1939
1940              --hsts can be used several times in a command line
1941
1942              Example:
1943               curl --hsts cache.txt https://example.com
1944
1945              See also --proto. Added in 7.74.0.
1946
1947       --http0.9
1948              (HTTP) Tells curl to be fine with HTTP version 0.9 response.
1949
1950              HTTP/0.9  is  a completely headerless response and therefore you
1951              can also connect with this to non-HTTP servers and still  get  a
1952              response since curl will simply transparently downgrade - if al‐
1953              lowed.
1954
1955              Since curl 7.66.0, HTTP/0.9 is disabled by default.
1956
1957              Providing --http0.9 multiple times has no extra effect.  Disable
1958              it again with --no-http0.9.
1959
1960              Example:
1961               curl --http0.9 https://example.com
1962
1963              See also --http1.1, --http2 and --http3. Added in 7.64.0.
1964
1965       -0, --http1.0
1966              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its
1967              internally preferred HTTP version.
1968
1969              Providing -0, --http1.0 multiple times has no extra effect.
1970
1971              Example:
1972               curl --http1.0 https://example.com
1973
1974              See also --http0.9 and --http1.1. This option is mutually exclu‐
1975              sive  to  --http1.1  and --http2 and --http2-prior-knowledge and
1976              --http3.
1977
1978       --http1.1
1979              (HTTP) Tells curl to use HTTP version 1.1.
1980
1981              Providing --http1.1 multiple times has no extra effect.
1982
1983              Example:
1984               curl --http1.1 https://example.com
1985
1986              See also -0, --http1.0 and --http0.9. This  option  is  mutually
1987              exclusive  to -0, --http1.0 and --http2 and --http2-prior-knowl‐
1988              edge and --http3. Added in 7.33.0.
1989
1990       --http2-prior-knowledge
1991              (HTTP) Tells curl to  issue  its  non-TLS  HTTP  requests  using
1992              HTTP/2  without  HTTP/1.1  Upgrade.  It requires prior knowledge
1993              that the server supports HTTP/2 straight  away.  HTTPS  requests
1994              will  still  do HTTP/2 the standard way with negotiated protocol
1995              version in the TLS handshake.
1996
1997              Providing --http2-prior-knowledge multiple times  has  no  extra
1998              effect.  Disable it again with --no-http2-prior-knowledge.
1999
2000              Example:
2001               curl --http2-prior-knowledge https://example.com
2002
2003              See  also  --http2 and --http3. --http2-prior-knowledge requires
2004              that the underlying libcurl was built to  support  HTTP/2.  This
2005              option  is mutually exclusive to --http1.1 and -0, --http1.0 and
2006              --http2 and --http3. Added in 7.49.0.
2007
2008       --http2
2009              (HTTP) Tells curl to use HTTP version 2.
2010
2011              For HTTPS, this means curl will attempt to negotiate  HTTP/2  in
2012              the TLS handshake. curl does this by default.
2013
2014              For HTTP, this means curl will attempt to upgrade the request to
2015              HTTP/2 using the Upgrade: request header.
2016
2017              When curl uses HTTP/2 over HTTPS, it does not itself  insist  on
2018              TLS 1.2 or higher even though that is required by the specifica‐
2019              tion. A user can add this version requirement with --tlsv1.2.
2020
2021              Providing --http2 multiple times has no extra effect.
2022
2023              Example:
2024               curl --http2 https://example.com
2025
2026              See also --http1.1 and --http3. --http2 requires that the under‐
2027              lying  libcurl was built to support HTTP/2. This option is mutu‐
2028              ally exclusive to --http1.1 and -0, --http1.0 and --http2-prior-
2029              knowledge and --http3. Added in 7.33.0.
2030
2031       --http3-only
2032              (HTTP)  **WARNING**:  this option is experimental. Do not use in
2033              production.
2034
2035              Instructs curl to use HTTP/3 to the host in  the  URL,  with  no
2036              fallback  to  earlier HTTP versions. HTTP/3 can only be used for
2037              HTTPS and not for HTTP URLs. For HTTP, this option will  trigger
2038              an error.
2039
2040              This  option  allows a user to avoid using the Alt-Svc method of
2041              upgrading to HTTP/3 when you know that the target speaks  HTTP/3
2042              on the given host and port.
2043
2044              This  option  will make curl fail if a QUIC connection cannot be
2045              established, it will not attempt any other HTTP version  on  its
2046              own. Use --http3 for similar functionality with a fallback.
2047
2048              Providing --http3-only multiple times has no extra effect.
2049
2050              Example:
2051               curl --http3-only https://example.com
2052
2053              See  also  --http1.1, --http2 and --http3. --http3-only requires
2054              that the underlying libcurl was built to  support  HTTP/3.  This
2055              option  is mutually exclusive to --http1.1 and -0, --http1.0 and
2056              --http2  and  --http2-prior-knowledge  and  --http3.  Added   in
2057              7.88.0.
2058
2059       --http3
2060              (HTTP)  **WARNING**:  this option is experimental. Do not use in
2061              production.
2062
2063              Tells curl to try HTTP/3 to the host in the URL, but fallback to
2064              earlier  HTTP  versions  if  the HTTP/3 connection establishment
2065              fails. HTTP/3 is only available for HTTPS and not for HTTP URLs.
2066
2067              This option allows a user to avoid using the Alt-Svc  method  of
2068              upgrading  to HTTP/3 when you know that the target speaks HTTP/3
2069              on the given host and port.
2070
2071              When asked to use HTTP/3, curl will issue a separate attempt  to
2072              use  older  HTTP  versions with a slight delay, so if the HTTP/3
2073              transfer fails or is very slow, curl will still try  to  proceed
2074              with an older HTTP version.
2075
2076              Use --http3-only for similar functionality without a fallback.
2077
2078              Providing --http3 multiple times has no extra effect.
2079
2080              Example:
2081               curl --http3 https://example.com
2082
2083              See also --http1.1 and --http2. --http3 requires that the under‐
2084              lying libcurl was built to support HTTP/3. This option is  mutu‐
2085              ally  exclusive  to  --http1.1 and -0, --http1.0 and --http2 and
2086              --http2-prior-knowledge and --http3-only. Added in 7.66.0.
2087
2088       --ignore-content-length
2089              (FTP HTTP) For HTTP, Ignore the Content-Length header.  This  is
2090              particularly  useful  for servers running Apache 1.x, which will
2091              report incorrect Content-Length for files larger  than  2  giga‐
2092              bytes.
2093
2094              For  FTP (since 7.46.0), skip the RETR command to figure out the
2095              size before downloading a file.
2096
2097              This option does not work for HTTP if libcurl was built  to  use
2098              hyper.
2099
2100              Providing  --ignore-content-length  multiple  times has no extra
2101              effect.  Disable it again with --no-ignore-content-length.
2102
2103              Example:
2104               curl --ignore-content-length https://example.com
2105
2106              See also --ftp-skip-pasv-ip.
2107
2108       -i, --include
2109              Include the HTTP response headers in the output.  The  HTTP  re‐
2110              sponse  headers  can  include  things like server name, cookies,
2111              date of the document, HTTP version and more...
2112
2113              To view the request headers, consider the -v, --verbose option.
2114
2115              Providing -i, --include multiple  times  has  no  extra  effect.
2116              Disable it again with --no-include.
2117
2118              Example:
2119               curl -i https://example.com
2120
2121              See also -v, --verbose.
2122
2123       -k, --insecure
2124              (TLS SFTP SCP) By default, every secure connection curl makes is
2125              verified to be secure before the transfer takes place. This  op‐
2126              tion  makes  curl skip the verification step and proceed without
2127              checking.
2128
2129              When this option is not used for protocols using TLS, curl veri‐
2130              fies  the server's TLS certificate before it continues: that the
2131              certificate contains the right name which matches the host  name
2132              used in the URL and that the certificate has been signed by a CA
2133              certificate present in the cert store.  See this online resource
2134              for further details:
2135               https://curl.se/docs/sslcerts.html
2136
2137              For  SFTP  and  SCP, this option makes curl skip the known_hosts
2138              verification.  known_hosts is a  file  normally  stored  in  the
2139              user's home directory in the ".ssh" subdirectory, which contains
2140              host names and their public keys.
2141
2142              WARNING: using this option makes the transfer insecure.
2143
2144              When curl uses secure protocols it trusts responses  and  allows
2145              for  example  HSTS and Alt-Svc information to be stored and used
2146              subsequently. Using -k, --insecure can make curl trust  and  use
2147              such information from malicious servers.
2148
2149              Providing  -k,  --insecure  multiple  times has no extra effect.
2150              Disable it again with --no-insecure.
2151
2152              Example:
2153               curl --insecure https://example.com
2154
2155              See also --proxy-insecure, --cacert and --capath.
2156
2157       --interface <name>
2158              Perform an operation using a specified interface. You can  enter
2159              interface  name,  IP address or host name. An example could look
2160              like:
2161
2162               curl --interface eth0:1 https://www.example.com/
2163
2164              On Linux it can be used to specify a VRF, but the  binary  needs
2165              to  either  have CAP_NET_RAW or to be run as root. More informa‐
2166              tion  about  Linux  VRF:   https://www.kernel.org/doc/Documenta
2167              tion/networking/vrf.txt
2168
2169              If  --interface  is  provided  several times, the last set value
2170              will be used.
2171
2172              Example:
2173               curl --interface eth0 https://example.com
2174
2175              See also --dns-interface.
2176
2177       -4, --ipv4
2178              This option tells curl to use IPv4 addresses only, and  not  for
2179              example try IPv6.
2180
2181              Providing  -4,  --ipv4 multiple times has no extra effect.  Dis‐
2182              able it again with --no-ipv4.
2183
2184              Example:
2185               curl --ipv4 https://example.com
2186
2187              See also --http1.1 and --http2. This option is  mutually  exclu‐
2188              sive to -6, --ipv6.
2189
2190       -6, --ipv6
2191              This  option  tells curl to use IPv6 addresses only, and not for
2192              example try IPv4.
2193
2194              Providing -6, --ipv6 multiple times has no extra  effect.   Dis‐
2195              able it again with --no-ipv6.
2196
2197              Example:
2198               curl --ipv6 https://example.com
2199
2200              See  also  --http1.1 and --http2. This option is mutually exclu‐
2201              sive to -4, --ipv4.
2202
2203       --json <data>
2204              (HTTP) Sends the specified JSON data in a POST  request  to  the
2205              HTTP  server.  --json  works  as a shortcut for passing on these
2206              three options:
2207
2208               --data [arg]
2209               --header "Content-Type: application/json"
2210               --header "Accept: application/json"
2211
2212              There is no verification that the passed in data is actual  JSON
2213              or that the syntax is correct.
2214
2215              If  you  start  the data with the letter @, the rest should be a
2216              file name to read the data from, or a single  dash  (-)  if  you
2217              want  curl to read the data from stdin. Posting data from a file
2218              named 'foobar' would thus be done with --json @foobar and to in‐
2219              stead read the data from stdin, use --json @-.
2220
2221              If  this option is used more than once on the same command line,
2222              the additional data pieces will be concatenated to the  previous
2223              before sending.
2224
2225              The headers this option sets can be overridden with -H, --header
2226              as usual.
2227
2228              --json can be used several times in a command line
2229
2230              Examples:
2231               curl --json '{ "drink": "coffe" }' https://example.com
2232               curl --json '{ "drink":' --json ' "coffe" }' https://example.com
2233               curl --json @prepared https://example.com
2234               curl --json @- https://example.com < json.txt
2235
2236              See also --data-binary and --data-raw. This option  is  mutually
2237              exclusive  to  -F,  --form and -I, --head and -T, --upload-file.
2238              Added in 7.82.0.
2239
2240       -j, --junk-session-cookies
2241              (HTTP) When curl is told to read cookies from a given file, this
2242              option will make it discard all "session cookies". This will ba‐
2243              sically have the same effect as if a  new  session  is  started.
2244              Typical  browsers  always  discard session cookies when they are
2245              closed down.
2246
2247              Providing -j, --junk-session-cookies multiple times has no extra
2248              effect.  Disable it again with --no-junk-session-cookies.
2249
2250              Example:
2251               curl --junk-session-cookies -b cookies.txt https://example.com
2252
2253              See also -b, --cookie and -c, --cookie-jar.
2254
2255       --keepalive-time <seconds>
2256              This  option sets the time a connection needs to remain idle be‐
2257              fore sending keepalive probes and the  time  between  individual
2258              keepalive probes. It is currently effective on operating systems
2259              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options
2260              (meaning  Linux,  recent  AIX,  HP-UX and more).  Keepalives are
2261              used by the TCP stack to detect broken networks on idle  connec‐
2262              tions.  The  number  of missed keepalive probes before declaring
2263              the connection down is OS dependent and is  commonly  9  or  10.
2264              This option has no effect if --no-keepalive is used.
2265
2266              If unspecified, the option defaults to 60 seconds.
2267
2268              If  --keepalive-time  is  provided  several  times, the last set
2269              value will be used.
2270
2271              Example:
2272               curl --keepalive-time 20 https://example.com
2273
2274              See also --no-keepalive and -m, --max-time.
2275
2276       --key-type <type>
2277              (TLS) Private key file type. Specify which type your --key  pro‐
2278              vided  private  key  is. DER, PEM, and ENG are supported. If not
2279              specified, PEM is assumed.
2280
2281              If --key-type is provided several times, the last set value will
2282              be used.
2283
2284              Example:
2285               curl --key-type DER --key here https://example.com
2286
2287              See also --key.
2288
2289       --key <key>
2290              (TLS SSH) Private key file name. Allows you to provide your pri‐
2291              vate key in this separate file. For SSH, if not specified,  curl
2292              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',
2293              '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
2294
2295              If curl is built against OpenSSL library, and the engine  pkcs11
2296              is available, then a PKCS#11 URI (RFC 7512) can be used to spec‐
2297              ify a private key located in a PKCS#11 device. A  string  begin‐
2298              ning  with  "pkcs11:" will be interpreted as a PKCS#11 URI. If a
2299              PKCS#11 URI is provided, then the --engine option will be set as
2300              "pkcs11"  if none was provided and the --key-type option will be
2301              set as "ENG" if none was provided.
2302
2303              If curl is built against Secure Transport or Schannel then  this
2304              option is ignored for TLS protocols (HTTPS, etc). Those backends
2305              expect the private key to be already present in the keychain  or
2306              PKCS#12 file containing the certificate.
2307
2308              If  --key  is provided several times, the last set value will be
2309              used.
2310
2311              Example:
2312               curl --cert certificate --key here https://example.com
2313
2314              See also --key-type and -E, --cert.
2315
2316       --krb <level>
2317              (FTP) Enable Kerberos authentication and use. The level must  be
2318              entered and should be one of 'clear', 'safe', 'confidential', or
2319              'private'. Should you use a level that  is  not  one  of  these,
2320              'private' will instead be used.
2321
2322              If  --krb  is provided several times, the last set value will be
2323              used.
2324
2325              Example:
2326               curl --krb clear ftp://example.com/
2327
2328              See also --delegation and --ssl. --krb requires that the  under‐
2329              lying libcurl was built to support Kerberos.
2330
2331       --libcurl <file>
2332              Append  this  option  to any ordinary curl command line, and you
2333              will get libcurl-using C source code written to  the  file  that
2334              does the equivalent of what your command-line operation does!
2335
2336              This option is global and does not need to be specified for each
2337              use of --next.
2338
2339              If --libcurl is provided several times, the last set value  will
2340              be used.
2341
2342              Example:
2343               curl --libcurl client.c https://example.com
2344
2345              See also -v, --verbose.
2346
2347       --limit-rate <speed>
2348              Specify  the  maximum  transfer  rate you want curl to use - for
2349              both downloads and uploads. This feature is useful if you have a
2350              limited  pipe  and  you would like your transfer not to use your
2351              entire bandwidth. To make it slower than it otherwise would be.
2352
2353              The given speed is measured in bytes/second, unless a suffix  is
2354              appended.   Appending  'k' or 'K' will count the number as kilo‐
2355              bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes  it
2356              gigabytes.  The suffixes (k, M, G, T, P) are 1024 based. For ex‐
2357              ample 1k is 1024. Examples: 200K, 3m and 1G.
2358
2359              The rate limiting logic works on averaging the transfer speed to
2360              no  more  than  the set threshold over a period of multiple sec‐
2361              onds.
2362
2363              If you also use the -Y, --speed-limit option, that  option  will
2364              take precedence and might cripple the rate-limiting slightly, to
2365              help keeping the speed-limit logic working.
2366
2367              If --limit-rate is provided several times, the  last  set  value
2368              will be used.
2369
2370              Examples:
2371               curl --limit-rate 100K https://example.com
2372               curl --limit-rate 1000 https://example.com
2373               curl --limit-rate 10M https://example.com
2374
2375              See also --rate, -Y, --speed-limit and -y, --speed-time.
2376
2377       -l, --list-only
2378              (FTP  POP3)  (FTP)  When  listing  an FTP directory, this switch
2379              forces a name-only view. This is especially useful if  the  user
2380              wants  to  machine-parse  the contents of an FTP directory since
2381              the normal directory view does not use a standard look  or  for‐
2382              mat.  When  used like this, the option causes an NLST command to
2383              be sent to the server instead of LIST.
2384
2385              Note: Some FTP servers list only  files  in  their  response  to
2386              NLST; they do not include sub-directories and symbolic links.
2387
2388              (POP3)  When  retrieving a specific email from POP3, this switch
2389              forces a LIST command to be performed instead of RETR.  This  is
2390              particularly  useful if the user wants to see if a specific mes‐
2391              sage-id exists on the server and what size it is.
2392
2393              Note: When combined with -X, --request, this option can be  used
2394              to  send a UIDL command instead, so the user may use the email's
2395              unique identifier rather than its message-id  to  make  the  re‐
2396              quest.
2397
2398              Providing  -l,  --list-only  multiple times has no extra effect.
2399              Disable it again with --no-list-only.
2400
2401              Example:
2402               curl --list-only ftp://example.com/dir/
2403
2404              See also -Q, --quote and -X, --request.
2405
2406       --local-port <num/range>
2407              Set a preferred single number or range (FROM-TO) of  local  port
2408              numbers to use for the connection(s).  Note that port numbers by
2409              nature are a scarce resource that will be busy at times so  set‐
2410              ting  this range to something too narrow might cause unnecessary
2411              connection setup failures.
2412
2413              If --local-port is provided several times, the  last  set  value
2414              will be used.
2415
2416              Example:
2417               curl --local-port 1000-3000 https://example.com
2418
2419              See also -g, --globoff.
2420
2421       --location-trusted
2422              (HTTP)  Like  -L,  --location, but will allow sending the name +
2423              password to all hosts that the site may redirect to. This may or
2424              may not introduce a security breach if the site redirects you to
2425              a site to which you will send your authentication info (which is
2426              plaintext in the case of HTTP Basic authentication).
2427
2428              Providing --location-trusted multiple times has no extra effect.
2429              Disable it again with --no-location-trusted.
2430
2431              Example:
2432               curl --location-trusted -u user:password https://example.com
2433
2434              See also -u, --user.
2435
2436       -L, --location
2437              (HTTP) If the server reports that the requested page  has  moved
2438              to a different location (indicated with a Location: header and a
2439              3XX response code), this option will make curl redo the  request
2440              on  the  new  place.  If used together with -i, --include or -I,
2441              --head, headers from all requested pages will be shown. When au‐
2442              thentication  is  used,  curl  only sends its credentials to the
2443              initial host. If a redirect takes curl to a different  host,  it
2444              will  not be able to intercept the user+password. See also --lo‐
2445              cation-trusted on how to change this. You can limit  the  amount
2446              of redirects to follow by using the --max-redirs option.
2447
2448              When  curl  follows  a redirect and if the request is a POST, it
2449              will send the following request with a GET if the HTTP  response
2450              was  301,  302,  or  303. If the response code was any other 3xx
2451              code, curl will re-send the following request using the same un‐
2452              modified method.
2453
2454              You can tell curl to not change POST requests to GET after a 30x
2455              response by using the dedicated  options  for  that:  --post301,
2456              --post302 and --post303.
2457
2458              The  method  set  with  -X,  --request overrides the method curl
2459              would otherwise select to use.
2460
2461              Providing -L, --location multiple times  has  no  extra  effect.
2462              Disable it again with --no-location.
2463
2464              Example:
2465               curl -L https://example.com
2466
2467              See also --resolve and --alt-svc.
2468
2469       --login-options <options>
2470              (IMAP  LDAP  POP3  SMTP) Specify the login options to use during
2471              server authentication.
2472
2473              You can use login options to specify protocol  specific  options
2474              that  may  be  used during authentication. At present only IMAP,
2475              POP3 and SMTP support login options. For more information  about
2476              login  options  please  see  RFC  2384,  RFC 5092 and IETF draft
2477              draft-earhart-url-smtp-00.txt
2478
2479              If --login-options is provided several times, the last set value
2480              will be used.
2481
2482              Example:
2483               curl --login-options 'AUTH=*' imap://example.com
2484
2485              See also -u, --user. Added in 7.34.0.
2486
2487       --mail-auth <address>
2488              (SMTP)  Specify  a  single address. This will be used to specify
2489              the authentication address (identity)  of  a  submitted  message
2490              that is being relayed to another server.
2491
2492              If  --mail-auth  is  provided  several times, the last set value
2493              will be used.
2494
2495              Example:
2496               curl --mail-auth user@example.come -T mail smtp://example.com/
2497
2498              See also --mail-rcpt and --mail-from.
2499
2500       --mail-from <address>
2501              (SMTP) Specify a single address that the given mail  should  get
2502              sent from.
2503
2504              If  --mail-from  is  provided  several times, the last set value
2505              will be used.
2506
2507              Example:
2508               curl --mail-from user@example.com -T mail smtp://example.com/
2509
2510              See also --mail-rcpt and --mail-auth.
2511
2512       --mail-rcpt-allowfails
2513              (SMTP) When sending data to multiple recipients, by default curl
2514              will  abort  SMTP conversation if at least one of the recipients
2515              causes RCPT TO command to return an error.
2516
2517              The default behavior can be changed by  passing  --mail-rcpt-al‐
2518              lowfails  command-line option which will make curl ignore errors
2519              and proceed with the remaining valid recipients.
2520
2521              If all recipients trigger RCPT TO  failures  and  this  flag  is
2522              specified,  curl  will still abort the SMTP conversation and re‐
2523              turn the error received from to the last RCPT TO command.
2524
2525              Providing --mail-rcpt-allowfails multiple times has no extra ef‐
2526              fect.  Disable it again with --no-mail-rcpt-allowfails.
2527
2528              Example:
2529               curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
2530
2531              See also --mail-rcpt. Added in 7.69.0.
2532
2533       --mail-rcpt <address>
2534              (SMTP) Specify a single email address, user name or mailing list
2535              name. Repeat this option several times to send to  multiple  re‐
2536              cipients.
2537
2538              When  performing an address verification (VRFY command), the re‐
2539              cipient should be specified as the user name or  user  name  and
2540              domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)
2541
2542              When performing a mailing list expand (EXPN command), the recip‐
2543              ient should be specified using the mailing list  name,  such  as
2544              "Friends" or "London-Office".  (Added in 7.34.0)
2545
2546              --mail-rcpt can be used several times in a command line
2547
2548              Example:
2549               curl --mail-rcpt user@example.net smtp://example.com
2550
2551              See also --mail-rcpt-allowfails.
2552
2553       -M, --manual
2554              Manual. Display the huge help text.
2555
2556              Example:
2557               curl --manual
2558
2559              See also -v, --verbose, --libcurl and --trace.
2560
2561       --max-filesize <bytes>
2562              (FTP HTTP MQTT) Specify the maximum size (in bytes) of a file to
2563              download. If the file requested is larger than this  value,  the
2564              transfer will not start and curl will return with exit code 63.
2565
2566              A  size  modifier may be used. For example, Appending 'k' or 'K'
2567              will count  the  number  as  kilobytes,  'm'  or  'M'  makes  it
2568              megabytes,  while 'g' or 'G' makes it gigabytes. Examples: 200K,
2569              3m and 1G. (Added in 7.58.0)
2570
2571              NOTE: The file size is not always known prior to  download,  and
2572              for such files this option has no effect even if the file trans‐
2573              fer ends up being larger than this given limit.  If  --max-file‐
2574              size is provided several times, the last set value will be used.
2575
2576              Example:
2577               curl --max-filesize 100K https://example.com
2578
2579              See also --limit-rate.
2580
2581       --max-redirs <num>
2582              (HTTP)  Set  maximum  number of redirections to follow. When -L,
2583              --location is used, to prevent  curl  from  following  too  many
2584              redirects,  by  default,  the  limit is set to 50 redirects. Set
2585              this option to -1 to make it unlimited.
2586
2587              If --max-redirs is provided several times, the  last  set  value
2588              will be used.
2589
2590              Example:
2591               curl --max-redirs 3 --location https://example.com
2592
2593              See also -L, --location.
2594
2595       -m, --max-time <fractional seconds>
2596              Maximum  time  in  seconds that you allow each transfer to take.
2597              This is useful for preventing your batch jobs from  hanging  for
2598              hours  due  to slow networks or links going down.  Since 7.32.0,
2599              this option accepts decimal values, but the actual timeout  will
2600              decrease in accuracy as the specified timeout increases in deci‐
2601              mal precision.
2602
2603              If you enable retrying the transfer (--retry) then  the  maximum
2604              time counter is reset each time the transfer is retried. You can
2605              use --retry-max-time to limit the retry time.
2606
2607              The decimal value needs to provided using a dot (.)  as  decimal
2608              separator  - not the local version even if it might be using an‐
2609              other separator.
2610
2611              If -m, --max-time is provided several times, the last set  value
2612              will be used.
2613
2614              Examples:
2615               curl --max-time 10 https://example.com
2616               curl --max-time 2.92 https://example.com
2617
2618              See also --connect-timeout and --retry-max-time.
2619
2620       --metalink
2621              This  option was previously used to specify a metalink resource.
2622              Metalink support has been disabled in curl since 7.78.0 for  se‐
2623              curity reasons.
2624
2625              If --metalink is provided several times, the last set value will
2626              be used.
2627
2628              Example:
2629               curl --metalink file https://example.com
2630
2631              See also -Z, --parallel.
2632
2633       --negotiate
2634              (HTTP) Enables Negotiate (SPNEGO) authentication.
2635
2636              This option requires a library built with GSS-API or  SSPI  sup‐
2637              port.  Use  -V,  --version  to  see  if  your curl supports GSS-
2638              API/SSPI or SPNEGO.
2639
2640              When using this option, you must also provide a fake -u,  --user
2641              option  to  activate the authentication code properly. Sending a
2642              '-u :' is enough as the user name  and  password  from  the  -u,
2643              --user option are not actually used.
2644
2645              If  this  option  is  used  several times, only the first one is
2646              used.
2647
2648              Providing --negotiate multiple times has no extra effect.
2649
2650              Example:
2651               curl --negotiate -u : https://example.com
2652
2653              See also --basic, --ntlm, --anyauth and --proxy-negotiate.
2654
2655       --netrc-file <filename>
2656              This option is similar to -n, --netrc, except that  you  provide
2657              the  path  (absolute  or  relative)  to the netrc file that curl
2658              should use. You can only specify one netrc file per invocation.
2659
2660              It will abide by --netrc-optional if specified.
2661
2662              If --netrc-file is provided several times, the  last  set  value
2663              will be used.
2664
2665              Example:
2666               curl --netrc-file netrc https://example.com
2667
2668              See  also  -n, --netrc, -u, --user and -K, --config. This option
2669              is mutually exclusive to -n, --netrc.
2670
2671       --netrc-optional
2672              Similar to -n, --netrc, but this option makes the  .netrc  usage
2673              optional and not mandatory as the -n, --netrc option does.
2674
2675              Providing  --netrc-optional  multiple times has no extra effect.
2676              Disable it again with --no-netrc-optional.
2677
2678              Example:
2679               curl --netrc-optional https://example.com
2680
2681              See also --netrc-file. This option is mutually exclusive to  -n,
2682              --netrc.
2683
2684       -n, --netrc
2685              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the
2686              user's home directory for login name and password. This is typi‐
2687              cally  used for FTP on Unix. If used with HTTP, curl will enable
2688              user authentication. See netrc(5) and ftp(1) for details on  the
2689              file  format.  Curl will not complain if that file does not have
2690              the right permissions (it should be neither  world-  nor  group-
2691              readable).  The  environment variable "HOME" is used to find the
2692              home directory.
2693
2694              A quick and simple example of how to setup  a  .netrc  to  allow
2695              curl  to  FTP to the machine host.domain.com with user name 'my‐
2696              self' and password 'secret' could look similar to:
2697
2698               machine host.domain.com
2699               login myself
2700               password secret
2701
2702              Providing -n, --netrc multiple times has no extra effect.   Dis‐
2703              able it again with --no-netrc.
2704
2705              Example:
2706               curl --netrc https://example.com
2707
2708              See  also --netrc-file, -K, --config and -u, --user. This option
2709              is mutually exclusive to --netrc-file and --netrc-optional.
2710
2711       -:, --next
2712              Tells curl to use a separate operation for the following URL and
2713              associated  options.  This  allows  you  to send several URL re‐
2714              quests, each with their own specific options, for example,  such
2715              as different user names or custom requests for each.
2716
2717              -:,  --next  will  reset  all local options and only global ones
2718              will have their values survive over to the  operation  following
2719              the  -:,  --next  instruction. Global options include -v, --ver‐
2720              bose, --trace, --trace-ascii and --fail-early.
2721
2722              For example, you can do both a GET and a POST in a  single  com‐
2723              mand line:
2724
2725               curl www1.example.com --next -d postthis www2.example.com
2726
2727              -:, --next can be used several times in a command line
2728
2729              Examples:
2730               curl https://example.com --next -d postthis www2.example.com
2731               curl -I https://example.com --next https://example.net/
2732
2733              See also -Z, --parallel and -K, --config. Added in 7.36.0.
2734
2735       --no-alpn
2736              (HTTPS)  Disable  the ALPN TLS extension. ALPN is enabled by de‐
2737              fault if libcurl was built with an  SSL  library  that  supports
2738              ALPN.  ALPN is used by a libcurl that supports HTTP/2 to negoti‐
2739              ate HTTP/2 support with the server during https sessions.
2740
2741              Providing --no-alpn multiple times has no extra effect.  Disable
2742              it again with --alpn.
2743
2744              Example:
2745               curl --no-alpn https://example.com
2746
2747              See  also  --no-npn and --http2. --no-alpn requires that the un‐
2748              derlying libcurl was built to support TLS. Added in 7.36.0.
2749
2750       -N, --no-buffer
2751              Disables the buffering of the output stream. In normal work sit‐
2752              uations,  curl  will  use a standard buffered output stream that
2753              will have the effect that it will output the data in chunks, not
2754              necessarily  exactly  when  the data arrives.  Using this option
2755              will disable that buffering.
2756
2757              Providing -N, --no-buffer multiple times has  no  extra  effect.
2758              Disable it again with --buffer.
2759
2760              Example:
2761               curl --no-buffer https://example.com
2762
2763              See also -#, --progress-bar.
2764
2765       --no-clobber
2766              When  used  in  conjunction with the -o, --output, -J, --remote-
2767              header-name, -O, --remote-name,  or  --remote-name-all  options,
2768              curl avoids overwriting files that already exist. Instead, a dot
2769              and a number gets appended to the name of the file that would be
2770              created,  up  to filename.100 after which it will not create any
2771              file.
2772
2773              Note that this is the negated option name documented.   You  can
2774              thus  use --clobber to enforce the clobbering, even if -J, --re‐
2775              mote-header-name is specified.
2776
2777              Providing --no-clobber multiple times has no extra effect.  Dis‐
2778              able it again with --clobber.
2779
2780              Example:
2781               curl --no-clobber --output local/dir/file https://example.com
2782
2783              See also -o, --output and -O, --remote-name. Added in 7.83.0.
2784
2785       --no-keepalive
2786              Disables  the  use  of keepalive messages on the TCP connection.
2787              curl otherwise enables them by default.
2788
2789              Note that this is the negated option name  documented.  You  can
2790              thus use --keepalive to enforce keepalive.
2791
2792              Providing  --no-keepalive  multiple  times  has no extra effect.
2793              Disable it again with --keepalive.
2794
2795              Example:
2796               curl --no-keepalive https://example.com
2797
2798              See also --keepalive-time.
2799
2800       --no-npn
2801              (HTTPS) In curl 7.86.0 and later, curl never uses NPN.
2802
2803              Disable the NPN TLS extension. NPN  is  enabled  by  default  if
2804              libcurl  was built with an SSL library that supports NPN. NPN is
2805              used by a libcurl that supports HTTP/2 to negotiate HTTP/2  sup‐
2806              port with the server during https sessions.
2807
2808              Providing  --no-npn multiple times has no extra effect.  Disable
2809              it again with --npn.
2810
2811              Example:
2812               curl --no-npn https://example.com
2813
2814              See also --no-alpn and --http2. --no-npn requires that  the  un‐
2815              derlying libcurl was built to support TLS. Added in 7.36.0.
2816
2817       --no-progress-meter
2818              Option to switch off the progress meter output without muting or
2819              otherwise affecting warning and informational messages like  -s,
2820              --silent does.
2821
2822              Note  that  this  is the negated option name documented. You can
2823              thus use --progress-meter to enable the progress meter again.
2824
2825              Providing --no-progress-meter multiple times has  no  extra  ef‐
2826              fect.  Disable it again with --progress-meter.
2827
2828              Example:
2829               curl --no-progress-meter -o store https://example.com
2830
2831              See also -v, --verbose and -s, --silent. Added in 7.67.0.
2832
2833       --no-sessionid
2834              (TLS)  Disable  curl's use of SSL session-ID caching. By default
2835              all transfers are done using the cache. Note that while  nothing
2836              should  ever  get  hurt  by attempting to reuse SSL session-IDs,
2837              there seem to be broken SSL implementations in the wild that may
2838              require you to disable this in order for you to succeed.
2839
2840              Note  that  this  is the negated option name documented. You can
2841              thus use --sessionid to enforce session-ID caching.
2842
2843              Providing --no-sessionid multiple times  has  no  extra  effect.
2844              Disable it again with --sessionid.
2845
2846              Example:
2847               curl --no-sessionid https://example.com
2848
2849              See also -k, --insecure.
2850
2851       --noproxy <no-proxy-list>
2852              Comma-separated  list  of hosts for which not to use a proxy, if
2853              one is specified. The only wildcard is  a  single  *  character,
2854              which  matches  all  hosts,  and effectively disables the proxy.
2855              Each name in this list is matched as either a domain which  con‐
2856              tains  the  hostname,  or  the hostname itself. For example, lo‐
2857              cal.com would match local.com, local.com:80, and  www.local.com,
2858              but not www.notlocal.com.
2859
2860              Since  7.53.0,  This  option overrides the environment variables
2861              that disable the proxy ('no_proxy' and 'NO_PROXY').  If  there's
2862              an  environment  variable disabling a proxy, you can set the no‐
2863              proxy list to "" to override it.
2864
2865              Since 7.86.0, IP addresses specified to this option can be  pro‐
2866              vided  using  CIDR notation: an appended slash and number speci‐
2867              fies the number of "network bits" out of the address to  use  in
2868              the comparison. For example "192.168.0.0/16" would match all ad‐
2869              dresses starting with "192.168".
2870
2871              If --noproxy is provided several times, the last set value  will
2872              be used.
2873
2874              Example:
2875               curl --noproxy "www.example" https://example.com
2876
2877              See also -x, --proxy.
2878
2879       --ntlm-wb
2880              (HTTP) Enables NTLM much in the style --ntlm does, but hand over
2881              the authentication to the separate binary  ntlmauth  application
2882              that is executed when needed.
2883
2884              Providing --ntlm-wb multiple times has no extra effect.
2885
2886              Example:
2887               curl --ntlm-wb -u user:password https://example.com
2888
2889              See also --ntlm and --proxy-ntlm.
2890
2891       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication
2892              method was designed by Microsoft and is used by IIS web servers.
2893              It  is a proprietary protocol, reverse-engineered by clever peo‐
2894              ple and implemented in curl based on their efforts. This kind of
2895              behavior  should  not be endorsed, you should encourage everyone
2896              who uses NTLM to switch to a public and  documented  authentica‐
2897              tion method instead, such as Digest.
2898
2899              If  you  want to enable NTLM for your proxy authentication, then
2900              use --proxy-ntlm.
2901
2902              If this option is used several times,  only  the  first  one  is
2903              used.
2904
2905              Providing --ntlm multiple times has no extra effect.
2906
2907              Example:
2908               curl --ntlm -u user:password https://example.com
2909
2910              See  also  --proxy-ntlm.  --ntlm  requires  that  the underlying
2911              libcurl was built to support TLS. This option is mutually exclu‐
2912              sive to --basic and --negotiate and --digest and --anyauth.
2913
2914       --oauth2-bearer <token>
2915              (IMAP  LDAP  POP3  SMTP HTTP) Specify the Bearer Token for OAUTH
2916              2.0 server authentication. The Bearer Token is used in  conjunc‐
2917              tion  with  the  user name which can be specified as part of the
2918              --url or -u, --user options.
2919
2920              The Bearer Token and user name are formatted  according  to  RFC
2921              6750.
2922
2923              If --oauth2-bearer is provided several times, the last set value
2924              will be used.
2925
2926              Example:
2927               curl --oauth2-bearer "mF_9.B5f-4.1JqM" https://example.com
2928
2929              See also --basic, --ntlm and --digest. Added in 7.33.0.
2930
2931       --output-dir <dir>
2932              This option specifies the directory in  which  files  should  be
2933              stored, when -O, --remote-name or -o, --output are used.
2934
2935              The  given  output directory is used for all URLs and output op‐
2936              tions on the command line, up until the first -:, --next.
2937
2938              If the specified target directory does not exist, the  operation
2939              will fail unless --create-dirs is also used.
2940
2941              If  --output-dir  is  provided several times, the last set value
2942              will be used.
2943
2944              Example:
2945               curl --output-dir "tmp" -O https://example.com
2946
2947              See also -O, --remote-name and -J,  --remote-header-name.  Added
2948              in 7.73.0.
2949
2950       -o, --output <file>
2951              Write output to <file> instead of stdout. If you are using {} or
2952              [] to fetch multiple documents, you should quote the URL and you
2953              can  use  '#' followed by a number in the <file> specifier. That
2954              variable will be replaced with the current string  for  the  URL
2955              being fetched. Like in:
2956
2957               curl "http://{one,two}.example.com" -o "file_#1.txt"
2958
2959              or use several variables like:
2960
2961               curl "http://{site,host}.host[1-5].com" -o "#1_#2"
2962
2963              You  may use this option as many times as the number of URLs you
2964              have. For example, if you specify two URLs on the  same  command
2965              line, you can use it like this:
2966
2967                curl -o aa example.com -o bb example.net
2968
2969              and  the  order  of the -o options and the URLs does not matter,
2970              just that the first -o is for the first URL and so  on,  so  the
2971              above command line can also be written as
2972
2973                curl example.com example.net -o aa -o bb
2974
2975              See  also  the --create-dirs option to create the local directo‐
2976              ries dynamically. Specifying the output as '-' (a  single  dash)
2977              will force the output to be done to stdout.
2978
2979              To   suppress  response  bodies,  you  can  redirect  output  to
2980              /dev/null:
2981
2982                curl example.com -o /dev/null
2983
2984              Or for Windows use nul:
2985
2986                curl example.com -o nul
2987
2988              -o, --output can be used several times in a command line
2989
2990              Examples:
2991               curl -o file https://example.com
2992               curl "http://{one,two}.example.com" -o "file_#1.txt"
2993               curl "http://{site,host}.host[1-5].com" -o "#1_#2"
2994               curl -o file https://example.com -o file2 https://example.net
2995
2996              See also -O, --remote-name, --remote-name-all and -J,  --remote-
2997              header-name.
2998
2999       --parallel-immediate
3000              When  doing  parallel  transfers, this option will instruct curl
3001              that it should rather prefer opening up more connections in par‐
3002              allel at once rather than waiting to see if new transfers can be
3003              added as multiplexed streams on another connection.
3004
3005              This option is global and does not need to be specified for each
3006              use of --next.
3007
3008              Providing  --parallel-immediate  multiple times has no extra ef‐
3009              fect.  Disable it again with --no-parallel-immediate.
3010
3011              Example:
3012               curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2
3013
3014              See also -Z, --parallel and --parallel-max. Added in 7.68.0.
3015
3016       --parallel-max <num>
3017              When asked to do parallel transfers, using -Z, --parallel,  this
3018              option controls the maximum amount of transfers to do simultane‐
3019              ously.
3020
3021              This option is global and does not need to be specified for each
3022              use of -:, --next.
3023
3024              The default is 50.
3025
3026              If  --parallel-max is provided several times, the last set value
3027              will be used.
3028
3029              Example:
3030               curl --parallel-max 100 -Z https://example.com ftp://example.com/
3031
3032              See also -Z, --parallel. Added in 7.66.0.
3033
3034       -Z, --parallel
3035              Makes curl perform its transfers in parallel as compared to  the
3036              regular serial manner.
3037
3038              This option is global and does not need to be specified for each
3039              use of --next.
3040
3041              Providing -Z, --parallel multiple times  has  no  extra  effect.
3042              Disable it again with --no-parallel.
3043
3044              Example:
3045               curl --parallel https://example.com -o file1 https://example.com -o file2
3046
3047              See also -:, --next and -v, --verbose. Added in 7.66.0.
3048
3049       --pass <phrase>
3050              (SSH TLS) Passphrase for the private key.
3051
3052              If  --pass is provided several times, the last set value will be
3053              used.
3054
3055              Example:
3056               curl --pass secret --key file https://example.com
3057
3058              See also --key and -u, --user.
3059
3060       --path-as-is
3061              Tell curl to not handle sequences of /../ or /./  in  the  given
3062              URL  path.  Normally curl will squash or merge them according to
3063              standards but with this option set you tell it not to do that.
3064
3065              Providing --path-as-is multiple times has no extra effect.  Dis‐
3066              able it again with --no-path-as-is.
3067
3068              Example:
3069               curl --path-as-is https://example.com/../../etc/passwd
3070
3071              See also --request-target. Added in 7.42.0.
3072
3073       --pinnedpubkey <hashes>
3074              (TLS)  Tells  curl  to  use  the  specified  public key file (or
3075              hashes) to verify the peer. This can be a path to a  file  which
3076              contains a single public key in PEM or DER format, or any number
3077              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa‐
3078              rated by ';'.
3079
3080              When  negotiating  a  TLS  or SSL connection, the server sends a
3081              certificate indicating its identity. A public key  is  extracted
3082              from  this certificate and if it does not exactly match the pub‐
3083              lic key provided to this option, curl will abort the  connection
3084              before sending or receiving any data.
3085
3086              PEM/DER support:
3087
3088              7.39.0: OpenSSL, GnuTLS and GSKit
3089
3090              7.43.0: NSS and wolfSSL
3091
3092              7.47.0: mbedtls
3093
3094              sha256 support:
3095
3096              7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL
3097
3098              7.47.0: mbedtls
3099
3100              Other SSL backends not supported.
3101
3102              If  --pinnedpubkey is provided several times, the last set value
3103              will be used.
3104
3105              Examples:
3106               curl --pinnedpubkey keyfile https://example.com
3107               curl --pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com
3108
3109              See also --hostpubsha256. Added in 7.39.0.
3110
3111       --post301
3112              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST
3113              requests into GET requests when following a 301 redirection. The
3114              non-RFC behavior is ubiquitous in web browsers, so curl does the
3115              conversion by default to maintain consistency. However, a server
3116              may require a POST to remain a POST after  such  a  redirection.
3117              This option is meaningful only when using -L, --location.
3118
3119              Providing --post301 multiple times has no extra effect.  Disable
3120              it again with --no-post301.
3121
3122              Example:
3123               curl --post301 --location -d "data" https://example.com
3124
3125              See also --post302, --post303 and -L, --location.
3126
3127       --post302
3128              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST
3129              requests into GET requests when following a 302 redirection. The
3130              non-RFC behavior is ubiquitous in web browsers, so curl does the
3131              conversion by default to maintain consistency. However, a server
3132              may require a POST to remain a POST after  such  a  redirection.
3133              This option is meaningful only when using -L, --location.
3134
3135              Providing --post302 multiple times has no extra effect.  Disable
3136              it again with --no-post302.
3137
3138              Example:
3139               curl --post302 --location -d "data" https://example.com
3140
3141              See also --post301, --post303 and -L, --location.
3142
3143       --post303
3144              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST
3145              requests  into  GET  requests when following 303 redirections. A
3146              server may require a POST to remain a POST after a 303 redirect‐
3147              ion. This option is meaningful only when using -L, --location.
3148
3149              Providing --post303 multiple times has no extra effect.  Disable
3150              it again with --no-post303.
3151
3152              Example:
3153               curl --post303 --location -d "data" https://example.com
3154
3155              See also --post302, --post301 and -L, --location.
3156
3157       --preproxy [protocol://]host[:port]
3158              Use the specified SOCKS proxy before connecting to  an  HTTP  or
3159              HTTPS  -x,  --proxy.  In  such a case curl first connects to the
3160              SOCKS proxy and then connects (through SOCKS)  to  the  HTTP  or
3161              HTTPS proxy. Hence pre proxy.
3162
3163              The pre proxy string should be specified with a protocol:// pre‐
3164              fix to  specify  alternative  proxy  protocols.  Use  socks4://,
3165              socks4a://,  socks5://  or  socks5h://  to  request the specific
3166              SOCKS version to be used. No protocol specified will  make  curl
3167              default to SOCKS4.
3168
3169              If  the  port number is not specified in the proxy string, it is
3170              assumed to be 1080.
3171
3172              User and password that might be provided in the proxy string are
3173              URL  decoded by curl. This allows you to pass in special charac‐
3174              ters such as @ by using %40 or pass in a colon with %3a.
3175
3176              If --preproxy is provided several times, the last set value will
3177              be used.
3178
3179              Example:
3180               curl --preproxy socks5://proxy.example -x http://http.example https://example.com
3181
3182              See also -x, --proxy and --socks5. Added in 7.52.0.
3183
3184       -#, --progress-bar
3185              Make curl display transfer progress as a simple progress bar in‐
3186              stead of the standard, more informational, meter.
3187
3188              This progress bar draws a single line of '#'  characters  across
3189              the screen and shows a percentage if the transfer size is known.
3190              For transfers without a known size, there  will  be  space  ship
3191              (-=o=-)  that  moves back and forth but only while data is being
3192              transferred, with a set of flying hash sign symbols on top.
3193
3194              This option is global and does not need to be specified for each
3195              use of --next.
3196
3197              Providing -#, --progress-bar multiple times has no extra effect.
3198              Disable it again with --no-progress-bar.
3199
3200              Example:
3201               curl -# -O https://example.com
3202
3203              See also --styled-output.
3204
3205       --proto-default <protocol>
3206              Tells curl to use protocol for any URL missing a scheme name.
3207
3208              An unknown or unsupported  protocol  causes  error  CURLE_UNSUP‐
3209              PORTED_PROTOCOL (1).
3210
3211              This option does not change the default proxy protocol (http).
3212
3213              Without this option set, curl guesses protocol based on the host
3214              name, see --url for details.
3215
3216              If --proto-default is provided several times, the last set value
3217              will be used.
3218
3219              Example:
3220               curl --proto-default https ftp.example.com
3221
3222              See also --proto and --proto-redir. Added in 7.45.0.
3223
3224       --proto-redir <protocols>
3225              Tells  curl to limit what protocols it may use on redirect. Pro‐
3226              tocols denied by --proto are not overridden by this option.  See
3227              --proto for how protocols are represented.
3228
3229              Example, allow only HTTP and HTTPS on redirect:
3230
3231               curl --proto-redir -all,http,https http://example.com
3232
3233              By default curl will only allow HTTP, HTTPS, FTP and FTPS on re‐
3234              direct (since 7.65.2). Specifying all or +all enables all proto‐
3235              cols on redirects, which is not good for security.
3236
3237              If  --proto-redir  is provided several times, the last set value
3238              will be used.
3239
3240              Example:
3241               curl --proto-redir =http,https https://example.com
3242
3243              See also --proto.
3244
3245       --proto <protocols>
3246              Tells curl to limit what protocols it  may  use  for  transfers.
3247              Protocols  are evaluated left to right, are comma separated, and
3248              are each a protocol name or 'all', optionally prefixed  by  zero
3249              or more modifiers. Available modifiers are:
3250
3251              +  Permit this protocol in addition to protocols already permit‐
3252                 ted (this is the default if no modifier is used).
3253
3254              -  Deny this protocol, removing it from the  list  of  protocols
3255                 already permitted.
3256
3257              =  Permit  only this protocol (ignoring the list already permit‐
3258                 ted), though subject to later modification by subsequent  en‐
3259                 tries in the comma separated list.
3260
3261              For example:
3262
3263              --proto -ftps  uses the default protocols, but disables ftps
3264
3265              --proto -all,https,+http
3266                             only enables http and https
3267
3268              --proto =http,https
3269                             also only enables http and https
3270
3271              Unknown  and  disabled  protocols produce a warning. This allows
3272              scripts to safely rely on being able to disable potentially dan‐
3273              gerous protocols, without relying upon support for that protocol
3274              being built into curl to avoid an error.
3275
3276              This option can be used multiple times, in which case the effect
3277              is  the same as concatenating the protocols into one instance of
3278              the option.
3279
3280              If --proto is provided several times, the last set value will be
3281              used.
3282
3283              Example:
3284               curl --proto =http,https,sftp https://example.com
3285
3286              See also --proto-redir and --proto-default.
3287
3288       --proxy-anyauth
3289              Tells  curl to pick a suitable authentication method when commu‐
3290              nicating with the given HTTP proxy. This might  cause  an  extra
3291              request/response round-trip.
3292
3293              Providing --proxy-anyauth multiple times has no extra effect.
3294
3295              Example:
3296               curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com
3297
3298              See also -x, --proxy, --proxy-basic and --proxy-digest.
3299
3300       --proxy-basic
3301              Tells  curl  to use HTTP Basic authentication when communicating
3302              with the given proxy. Use --basic for enabling HTTP Basic with a
3303              remote  host.  Basic  is  the default authentication method curl
3304              uses with proxies.
3305
3306              Providing --proxy-basic multiple times has no extra effect.
3307
3308              Example:
3309               curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com
3310
3311              See also -x, --proxy, --proxy-anyauth and --proxy-digest.
3312
3313       --proxy-cacert <file>
3314              Same as --cacert but used in HTTPS proxy context.
3315
3316              If --proxy-cacert is provided several times, the last set  value
3317              will be used.
3318
3319              Example:
3320               curl --proxy-cacert CA-file.txt -x https://proxy https://example.com
3321
3322              See  also  --proxy-capath,  --cacert,  --capath and -x, --proxy.
3323              Added in 7.52.0.
3324
3325       --proxy-capath <dir>
3326              Same as --capath but used in HTTPS proxy context.
3327
3328              If --proxy-capath is provided several times, the last set  value
3329              will be used.
3330
3331              Example:
3332               curl --proxy-capath /local/directory -x https://proxy https://example.com
3333
3334              See  also  --proxy-cacert,  -x,  --proxy  and --capath. Added in
3335              7.52.0.
3336
3337       --proxy-cert-type <type>
3338              Same as --cert-type but used in HTTPS proxy context.
3339
3340              If --proxy-cert-type is provided several  times,  the  last  set
3341              value will be used.
3342
3343              Example:
3344               curl --proxy-cert-type PEM --proxy-cert file -x https://proxy https://example.com
3345
3346              See also --proxy-cert. Added in 7.52.0.
3347
3348       --proxy-cert <cert[:passwd]>
3349              Same as -E, --cert but used in HTTPS proxy context.
3350
3351              If  --proxy-cert  is  provided several times, the last set value
3352              will be used.
3353
3354              Example:
3355               curl --proxy-cert file -x https://proxy https://example.com
3356
3357              See also --proxy-cert-type. Added in 7.52.0.
3358
3359       --proxy-ciphers <list>
3360              Same as --ciphers but used in HTTPS proxy context.
3361
3362              If --proxy-ciphers is provided several times, the last set value
3363              will be used.
3364
3365              Example:
3366               curl --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy https://example.com
3367
3368              See also --ciphers, --curves and -x, --proxy. Added in 7.52.0.
3369
3370       --proxy-crlfile <file>
3371              Same as --crlfile but used in HTTPS proxy context.
3372
3373              If --proxy-crlfile is provided several times, the last set value
3374              will be used.
3375
3376              Example:
3377               curl --proxy-crlfile rejects.txt -x https://proxy https://example.com
3378
3379              See also --crlfile and -x, --proxy. Added in 7.52.0.
3380
3381       --proxy-digest
3382              Tells curl to use HTTP Digest authentication when  communicating
3383              with the given proxy. Use --digest for enabling HTTP Digest with
3384              a remote host.
3385
3386              Providing --proxy-digest multiple times has no extra effect.
3387
3388              Example:
3389               curl --proxy-digest --proxy-user user:passwd -x proxy https://example.com
3390
3391              See also -x, --proxy, --proxy-anyauth and --proxy-basic.
3392
3393       --proxy-header <header/@file>
3394              (HTTP) Extra header to include in the request when sending  HTTP
3395              to a proxy. You may specify any number of extra headers. This is
3396              the equivalent option to -H, --header but is for proxy  communi‐
3397              cation  only  like  in CONNECT requests when you want a separate
3398              header sent to the proxy to what is sent to  the  actual  remote
3399              host.
3400
3401              curl  will  make  sure  that each header you add/replace is sent
3402              with the proper end-of-line marker, you should thus not add that
3403              as a part of the header content: do not add newlines or carriage
3404              returns, they will only mess things up for you.
3405
3406              Headers specified with this option will not be included  in  re‐
3407              quests that curl knows will not be sent to a proxy.
3408
3409              Starting  in  7.55.0, this option can take an argument in @file‐
3410              name style, which then adds a header for each line in the  input
3411              file. Using @- will make curl read the header file from stdin.
3412
3413              This  option  can  be  used multiple times to add/replace/remove
3414              multiple headers.
3415
3416              --proxy-header can be used several times in a command line
3417
3418              Examples:
3419               curl --proxy-header "X-First-Name: Joe" -x http://proxy https://example.com
3420               curl --proxy-header "User-Agent: surprise" -x http://proxy https://example.com
3421               curl --proxy-header "Host:" -x http://proxy https://example.com
3422
3423              See also -x, --proxy. Added in 7.37.0.
3424
3425       --proxy-insecure
3426              Same as -k, --insecure but used in HTTPS proxy context.
3427
3428              Providing --proxy-insecure multiple times has no  extra  effect.
3429              Disable it again with --no-proxy-insecure.
3430
3431              Example:
3432               curl --proxy-insecure -x https://proxy https://example.com
3433
3434              See also -x, --proxy and -k, --insecure. Added in 7.52.0.
3435
3436       --proxy-key-type <type>
3437              Same as --key-type but used in HTTPS proxy context.
3438
3439              If  --proxy-key-type  is  provided  several  times, the last set
3440              value will be used.
3441
3442              Example:
3443               curl --proxy-key-type DER --proxy-key here -x https://proxy https://example.com
3444
3445              See also --proxy-key and -x, --proxy. Added in 7.52.0.
3446
3447       --proxy-key <key>
3448              Same as --key but used in HTTPS proxy context.
3449
3450              If --proxy-key is provided several times,  the  last  set  value
3451              will be used.
3452
3453              Example:
3454               curl --proxy-key here -x https://proxy https://example.com
3455
3456              See also --proxy-key-type and -x, --proxy. Added in 7.52.0.
3457
3458       --proxy-negotiate
3459              Tells  curl  to  use HTTP Negotiate (SPNEGO) authentication when
3460              communicating with the given proxy. Use --negotiate for enabling
3461              HTTP Negotiate (SPNEGO) with a remote host.
3462
3463              Providing --proxy-negotiate multiple times has no extra effect.
3464
3465              Example:
3466               curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com
3467
3468              See also --proxy-anyauth and --proxy-basic.
3469
3470       --proxy-ntlm
3471              Tells  curl  to  use HTTP NTLM authentication when communicating
3472              with the given proxy. Use --ntlm for enabling NTLM with a remote
3473              host.
3474
3475              Providing --proxy-ntlm multiple times has no extra effect.
3476
3477              Example:
3478               curl --proxy-ntlm --proxy-user user:passwd -x http://proxy https://example.com
3479
3480              See also --proxy-negotiate and --proxy-anyauth.
3481
3482       --proxy-pass <phrase>
3483              Same as --pass but used in HTTPS proxy context.
3484
3485              If  --proxy-pass  is  provided several times, the last set value
3486              will be used.
3487
3488              Example:
3489               curl --proxy-pass secret --proxy-key here -x https://proxy https://example.com
3490
3491              See also -x, --proxy and --proxy-key. Added in 7.52.0.
3492
3493       --proxy-pinnedpubkey <hashes>
3494              (TLS) Tells curl to  use  the  specified  public  key  file  (or
3495              hashes)  to verify the proxy. This can be a path to a file which
3496              contains a single public key in PEM or DER format, or any number
3497              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa‐
3498              rated by ';'.
3499
3500              When negotiating a TLS or SSL connection,  the  server  sends  a
3501              certificate  indicating  its identity. A public key is extracted
3502              from this certificate and if it does not exactly match the  pub‐
3503              lic  key provided to this option, curl will abort the connection
3504              before sending or receiving any data.
3505
3506              If --proxy-pinnedpubkey is provided several times, the last  set
3507              value will be used.
3508
3509              Examples:
3510               curl --proxy-pinnedpubkey keyfile https://example.com
3511               curl --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com
3512
3513              See also --pinnedpubkey and -x, --proxy. Added in 7.59.0.
3514
3515       --proxy-service-name <name>
3516              This  option allows you to change the service name for proxy ne‐
3517              gotiation.
3518
3519              If --proxy-service-name is provided several times, the last  set
3520              value will be used.
3521
3522              Example:
3523               curl --proxy-service-name "shrubbery" -x proxy https://example.com
3524
3525              See also --service-name and -x, --proxy. Added in 7.43.0.
3526
3527       --proxy-ssl-allow-beast
3528              Same as --ssl-allow-beast but used in HTTPS proxy context.
3529
3530              Providing  --proxy-ssl-allow-beast  multiple  times has no extra
3531              effect.  Disable it again with --no-proxy-ssl-allow-beast.
3532
3533              Example:
3534               curl --proxy-ssl-allow-beast -x https://proxy https://example.com
3535
3536              See also --ssl-allow-beast and -x, --proxy. Added in 7.52.0.
3537
3538       --proxy-ssl-auto-client-cert
3539              Same as --ssl-auto-client-cert but used in HTTPS proxy context.
3540
3541              Providing --proxy-ssl-auto-client-cert multiple times has no ex‐
3542              tra  effect.   Disable it again with --no-proxy-ssl-auto-client-
3543              cert.
3544
3545              Example:
3546               curl --proxy-ssl-auto-client-cert -x https://proxy https://example.com
3547
3548              See  also  --ssl-auto-client-cert  and  -x,  --proxy.  Added  in
3549              7.77.0.
3550
3551       --proxy-tls13-ciphers <ciphersuite list>
3552              (TLS)  Specifies which cipher suites to use in the connection to
3553              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers
3554              suites  must  specify  valid  ciphers. Read up on TLS 1.3 cipher
3555              suite details on this URL:
3556
3557               https://curl.se/docs/ssl-ciphers.html
3558
3559              This option is currently used only when curl  is  built  to  use
3560              OpenSSL 1.1.1 or later. If you are using a different SSL backend
3561              you can try setting TLS 1.3 cipher suites by using the  --proxy-
3562              ciphers option.
3563
3564              If --proxy-tls13-ciphers is provided several times, the last set
3565              value will be used.
3566
3567              Example:
3568               curl --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy https://example.com
3569
3570              See also --tls13-ciphers and --curves. Added in 7.61.0.
3571
3572       --proxy-tlsauthtype <type>
3573              Same as --tlsauthtype but used in HTTPS proxy context.
3574
3575              If --proxy-tlsauthtype is provided several times, the  last  set
3576              value will be used.
3577
3578              Example:
3579               curl --proxy-tlsauthtype SRP -x https://proxy https://example.com
3580
3581              See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.
3582
3583       --proxy-tlspassword <string>
3584              Same as --tlspassword but used in HTTPS proxy context.
3585
3586              If  --proxy-tlspassword  is provided several times, the last set
3587              value will be used.
3588
3589              Example:
3590               curl --proxy-tlspassword passwd -x https://proxy https://example.com
3591
3592              See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.
3593
3594       --proxy-tlsuser <name>
3595              Same as --tlsuser but used in HTTPS proxy context.
3596
3597              If --proxy-tlsuser is provided several times, the last set value
3598              will be used.
3599
3600              Example:
3601               curl --proxy-tlsuser smith -x https://proxy https://example.com
3602
3603              See also -x, --proxy and --proxy-tlspassword. Added in 7.52.0.
3604
3605       --proxy-tlsv1
3606              Same as -1, --tlsv1 but used in HTTPS proxy context.
3607
3608              Providing --proxy-tlsv1 multiple times has no extra effect.
3609
3610              Example:
3611               curl --proxy-tlsv1 -x https://proxy https://example.com
3612
3613              See also -x, --proxy. Added in 7.52.0.
3614
3615       -U, --proxy-user <user:password>
3616              Specify  the user name and password to use for proxy authentica‐
3617              tion.
3618
3619              If you use a Windows SSPI-enabled curl binary and do either  Ne‐
3620              gotiate  or NTLM authentication then you can tell curl to select
3621              the user name and password from your environment by specifying a
3622              single colon with this option: "-U :".
3623
3624              On systems where it works, curl will hide the given option argu‐
3625              ment from process listings. This is not enough to  protect  cre‐
3626              dentials  from  possibly getting seen by other users on the same
3627              system as they  will  still  be  visible  for  a  moment  before
3628              cleared. Such sensitive data should be retrieved from a file in‐
3629              stead or similar and never used in clear text in a command line.
3630
3631              If -U, --proxy-user is provided  several  times,  the  last  set
3632              value will be used.
3633
3634              Example:
3635               curl --proxy-user name:pwd -x proxy https://example.com
3636
3637              See also --proxy-pass.
3638
3639       -x, --proxy [protocol://]host[:port]
3640              Use the specified proxy.
3641
3642              The  proxy string can be specified with a protocol:// prefix. No
3643              protocol specified or http:// will be treated as HTTP proxy. Use
3644              socks4://, socks4a://, socks5:// or socks5h:// to request a spe‐
3645              cific SOCKS version to be used.
3646
3647
3648              Unix domain sockets are supported for socks proxy. Set localhost
3649              for the host part. e.g. socks5h://localhost/path/to/socket.sock
3650
3651              HTTPS  proxy  support  via https:// protocol prefix was added in
3652              7.52.0 for OpenSSL, GnuTLS and NSS.
3653
3654              Unrecognized and unsupported  proxy  protocols  cause  an  error
3655              since  7.52.0.   Prior  versions may ignore the protocol and use
3656              http:// instead.
3657
3658              If the port number is not specified in the proxy string,  it  is
3659              assumed to be 1080.
3660
3661              This  option  overrides  existing environment variables that set
3662              the proxy to use. If there's an environment variable  setting  a
3663              proxy, you can set proxy to "" to override it.
3664
3665              All operations that are performed over an HTTP proxy will trans‐
3666              parently be converted to HTTP. It means  that  certain  protocol
3667              specific operations might not be available. This is not the case
3668              if you can tunnel through the proxy, as one with the -p, --prox‐
3669              ytunnel option.
3670
3671              User and password that might be provided in the proxy string are
3672              URL decoded by curl. This allows you to pass in special  charac‐
3673              ters such as @ by using %40 or pass in a colon with %3a.
3674
3675              The  proxy host can be specified the same way as the proxy envi‐
3676              ronment variables, including the protocol prefix  (http://)  and
3677              the embedded user + password.
3678
3679              When a proxy is used, the active FTP mode as set with -P, --ftp-
3680              port, cannot be used.
3681
3682              If -x, --proxy is provided several times,  the  last  set  value
3683              will be used.
3684
3685              Example:
3686               curl --proxy http://proxy.example https://example.com
3687
3688              See also --socks5 and --proxy-basic.
3689
3690       --proxy1.0 <host[:port]>
3691              Use  the  specified  HTTP  1.0  proxy. If the port number is not
3692              specified, it is assumed at port 1080.
3693
3694              The only difference between this and the HTTP proxy  option  -x,
3695              --proxy,  is that attempts to use CONNECT through the proxy will
3696              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.
3697
3698              Providing --proxy1.0 multiple times has no extra effect.
3699
3700              Example:
3701               curl --proxy1.0 -x http://proxy https://example.com
3702
3703              See also -x, --proxy, --socks5 and --preproxy.
3704
3705       -p, --proxytunnel
3706              When an HTTP proxy is used -x, --proxy, this  option  will  make
3707              curl  tunnel through the proxy. The tunnel approach is made with
3708              the HTTP proxy CONNECT request and requires that the  proxy  al‐
3709              lows direct connect to the remote port number curl wants to tun‐
3710              nel through to.
3711
3712              To suppress proxy CONNECT response headers when curl is  set  to
3713              output headers use --suppress-connect-headers.
3714
3715              Providing  -p, --proxytunnel multiple times has no extra effect.
3716              Disable it again with --no-proxytunnel.
3717
3718              Example:
3719               curl --proxytunnel -x http://proxy https://example.com
3720
3721              See also -x, --proxy.
3722
3723       --pubkey <key>
3724              (SFTP SCP) Public key file name. Allows you to provide your pub‐
3725              lic key in this separate file.
3726
3727              (As of 7.39.0, curl attempts to automatically extract the public
3728              key from the private key file, so passing this option is  gener‐
3729              ally not required. Note that this public key extraction requires
3730              libcurl to be linked against a copy of libssh2 1.2.8  or  higher
3731              that is itself linked against OpenSSL.)
3732
3733              If  --pubkey  is provided several times, the last set value will
3734              be used.
3735
3736              Example:
3737               curl --pubkey file.pub sftp://example.com/
3738
3739              See also --pass.
3740
3741       -Q, --quote <command>
3742              (FTP SFTP) Send an arbitrary command to the remote FTP  or  SFTP
3743              server.  Quote commands are sent BEFORE the transfer takes place
3744              (just after the initial PWD command in an FTP  transfer,  to  be
3745              exact). To make commands take place after a successful transfer,
3746              prefix them with a dash '-'.
3747
3748              (FTP only) To make commands be sent after curl has  changed  the
3749              working  directory,  just  before  the file transfer command(s),
3750              prefix the command with a '+'. This is not performed when a  di‐
3751              rectory listing is performed.
3752
3753              You may specify any number of commands.
3754
3755              By  default  curl  will stop at first failure. To make curl con‐
3756              tinue even if the command fails, prefix the command with an  as‐
3757              terisk  (*). Otherwise, if the server returns failure for one of
3758              the commands, the entire operation will be aborted.
3759
3760              You must send syntactically correct FTP commands as RFC 959  de‐
3761              fines  to  FTP  servers,  or one of the commands listed below to
3762              SFTP servers.
3763
3764              This option can be used multiple times.
3765
3766              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP
3767              quote  commands  itself  before sending them to the server. File
3768              names may be quoted shell-style to embed spaces or special char‐
3769              acters.  Following  is the list of all supported SFTP quote com‐
3770              mands:
3771
3772              atime date file
3773                     The atime command sets the last access time of  the  file
3774                     named  by  the file operand. The <date expression> can be
3775                     all sorts of date strings, see  the  curl_getdate(3)  man
3776                     page for date expression details. (Added in 7.73.0)
3777
3778              chgrp group file
3779                     The  chgrp command sets the group ID of the file named by
3780                     the file operand to the group ID specified by  the  group
3781                     operand. The group operand is a decimal integer group ID.
3782
3783              chmod mode file
3784                     The  chmod  command  modifies  the  file mode bits of the
3785                     specified file. The mode operand is an octal integer mode
3786                     number.
3787
3788              chown user file
3789                     The chown command sets the owner of the file named by the
3790                     file operand to the user ID specified by the  user  oper‐
3791                     and. The user operand is a decimal integer user ID.
3792
3793              ln source_file target_file
3794                     The ln and symlink commands create a symbolic link at the
3795                     target_file location pointing to  the  source_file  loca‐
3796                     tion.
3797
3798              mkdir directory_name
3799                     The  mkdir command creates the directory named by the di‐
3800                     rectory_name operand.
3801
3802              mtime date file
3803                     The mtime command sets the last modification time of  the
3804                     file named by the file operand. The <date expression> can
3805                     be all sorts of date strings, see the curl_getdate(3) man
3806                     page for date expression details. (Added in 7.73.0)
3807
3808              pwd    The pwd command returns the absolute pathname of the cur‐
3809                     rent working directory.
3810
3811              rename source target
3812                     The rename command renames the file or directory named by
3813                     the  source  operand to the destination path named by the
3814                     target operand.
3815
3816              rm file
3817                     The rm command removes the file specified by the file op‐
3818                     erand.
3819
3820              rmdir directory
3821                     The  rmdir  command removes the directory entry specified
3822                     by the directory operand, provided it is empty.
3823
3824              symlink source_file target_file
3825                     See ln.
3826
3827       -Q, --quote can be used several times in a command line
3828
3829       Example:
3830        curl --quote "DELE file" ftp://example.com/foo
3831
3832       See also -X, --request.
3833
3834       --random-file <file>
3835              Deprecated option. This option is ignored by curl since  7.84.0.
3836              Prior  to that it only had an effect on curl if built to use old
3837              versions of OpenSSL.
3838
3839              Specify the path name to file containing what will be considered
3840              as  random  data. The data may be used to seed the random engine
3841              for SSL connections.
3842
3843              If --random-file is provided several times, the last  set  value
3844              will be used.
3845
3846              Example:
3847               curl --random-file rubbish https://example.com
3848
3849              See also --egd-file.
3850
3851       -r, --range <range>
3852              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu‐
3853              ment) from an HTTP/1.1, FTP or SFTP  server  or  a  local  FILE.
3854              Ranges can be specified in a number of ways.
3855
3856              0-499     specifies the first 500 bytes
3857
3858              500-999   specifies the second 500 bytes
3859
3860              -500      specifies the last 500 bytes
3861
3862              9500-     specifies the bytes from offset 9500 and forward
3863
3864              0-0,-1    specifies the first and last byte only(*)(HTTP)
3865
3866              100-199,500-599
3867                        specifies two separate 100-byte ranges(*) (HTTP)
3868
3869              (*)  = NOTE that this will cause the server to reply with a mul‐
3870              tipart response, which will be returned as-is by  curl!  Parsing
3871              or otherwise transforming this response is the responsibility of
3872              the caller.
3873
3874              Only digit characters (0-9) are valid in the 'start' and  'stop'
3875              fields  of the 'start-stop' range syntax. If a non-digit charac‐
3876              ter is given in the range, the server's response will be unspec‐
3877              ified, depending on the server's configuration.
3878
3879              You  should also be aware that many HTTP/1.1 servers do not have
3880              this feature enabled, so that when you attempt to get  a  range,
3881              you will instead get the whole document.
3882
3883              FTP  and  SFTP  range  downloads only support the simple 'start-
3884              stop' syntax (optionally with one of the numbers  omitted).  FTP
3885              use depends on the extended FTP command SIZE.
3886
3887              If  -r,  --range  is  provided several times, the last set value
3888              will be used.
3889
3890              Example:
3891               curl --range 22-44 https://example.com
3892
3893              See also -C, --continue-at and -a, --append.
3894
3895       --rate <max request rate>
3896              Specify the maximum transfer frequency you allow curl to  use  -
3897              in number of transfer starts per time unit (sometimes called re‐
3898              quest rate). Without this  option,  curl  will  start  the  next
3899              transfer as fast as possible.
3900
3901              If  given  several URLs and a transfer completes faster than the
3902              allowed rate, curl will wait until the next transfer is  started
3903              to  maintain  the requested rate. This option has no effect when
3904              -Z, --parallel is used.
3905
3906              The request rate is provided as "N/U" where N is an integer num‐
3907              ber  and U is a time unit. Supported units are 's' (second), 'm'
3908              (minute), 'h' (hour) and 'd' /(day, as in a 24 hour  unit).  The
3909              default  time  unit, if no "/U" is provided, is number of trans‐
3910              fers per hour.
3911
3912              If curl is told to allow 10 requests per  minute,  it  will  not
3913              start  the  next  request until 6 seconds have elapsed since the
3914              previous transfer was started.
3915
3916              This function uses millisecond resolution. If the  allowed  fre‐
3917              quency is set more than 1000 per second, it will instead run un‐
3918              restricted.
3919
3920              When retrying transfers,  enabled  with  --retry,  the  separate
3921              retry delay logic is used and not this setting.
3922
3923              This option is global and does not need to be specified for each
3924              use of --next.
3925
3926              If --rate is provided several times, the last set value will  be
3927              used.
3928
3929              Examples:
3930               curl --rate 2/s https://example.com ...
3931               curl --rate 3/h https://example.com ...
3932               curl --rate 14/m https://example.com ...
3933
3934              See also --limit-rate and --retry-delay. Added in 7.84.0.
3935
3936       --raw  (HTTP) When used, it disables all internal HTTP decoding of con‐
3937              tent or transfer encodings and instead makes them passed on  un‐
3938              altered, raw.
3939
3940              Providing  --raw multiple times has no extra effect.  Disable it
3941              again with --no-raw.
3942
3943              Example:
3944               curl --raw https://example.com
3945
3946              See also --tr-encoding.
3947
3948       -e, --referer <URL>
3949              (HTTP) Sends the "Referrer Page" information to the HTTP server.
3950              This  can also be set with the -H, --header flag of course. When
3951              used with -L, --location you  can  append  ";auto"  to  the  -e,
3952              --referer  URL  to  make curl automatically set the previous URL
3953              when it follows a Location: header. The ";auto"  string  can  be
3954              used alone, even if you do not set an initial -e, --referer.
3955
3956              If  -e,  --referer is provided several times, the last set value
3957              will be used.
3958
3959              Examples:
3960               curl --referer "https://fake.example" https://example.com
3961               curl --referer "https://fake.example;auto" -L https://example.com
3962               curl --referer ";auto" -L https://example.com
3963
3964              See also -A, --user-agent and -H, --header.
3965
3966       -J, --remote-header-name
3967              (HTTP) This option tells the -O, --remote-name option to use the
3968              server-specified  Content-Disposition  filename  instead  of ex‐
3969              tracting a filename from the URL. If  the  server-provided  file
3970              name  contains a path, that will be stripped off before the file
3971              name is used.
3972
3973              The file is saved in the current directory, or in the  directory
3974              specified with --output-dir.
3975
3976              If  the  server  specifies a file name and a file with that name
3977              already exists in the destination  directory,  it  will  not  be
3978              overwritten and an error will occur - unless you allow it by us‐
3979              ing the --clobber option. If the server does not specify a  file
3980              name then this option has no effect.
3981
3982              There's  no  attempt to decode %-sequences (yet) in the provided
3983              file name, so this option may provide you with rather unexpected
3984              file names.
3985
3986              This  feature  uses  the name from the "filename" field, it does
3987              not yet support the "filename*" field (filenames  with  explicit
3988              character sets).
3989
3990              WARNING:  Exercise  judicious  use of this option, especially on
3991              Windows. A rogue server could send you the  name  of  a  DLL  or
3992              other file that could be loaded automatically by Windows or some
3993              third party software.
3994
3995              Providing -J, --remote-header-name multiple times has  no  extra
3996              effect.  Disable it again with --no-remote-header-name.
3997
3998              Example:
3999               curl -OJ https://example.com/file
4000
4001              See also -O, --remote-name.
4002
4003       --remote-name-all
4004              This  option changes the default action for all given URLs to be
4005              dealt with as if -O, --remote-name were used for each one. So if
4006              you want to disable that for a specific URL after --remote-name-
4007              all has been used, you must use "-o -" or --no-remote-name.
4008
4009              Providing --remote-name-all multiple times has no extra  effect.
4010              Disable it again with --no-remote-name-all.
4011
4012              Example:
4013               curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2
4014
4015              See also -O, --remote-name.
4016
4017       -O, --remote-name
4018              Write  output to a local file named like the remote file we get.
4019              (Only the file part of the remote file is used, the path is  cut
4020              off.)
4021
4022              The  file will be saved in the current working directory. If you
4023              want the file saved in a  different  directory,  make  sure  you
4024              change  the  current working directory before invoking curl with
4025              this option or use --output-dir.
4026
4027              The remote file name to use for saving  is  extracted  from  the
4028              given  URL,  nothing  else,  and if it already exists it will be
4029              overwritten. If you want the server to be  able  to  choose  the
4030              file name refer to -J, --remote-header-name which can be used in
4031              addition to this option. If the server chooses a file  name  and
4032              that name already exists it will not be overwritten.
4033
4034              There is no URL decoding done on the file name. If it has %20 or
4035              other URL encoded parts of the name, they will end up  as-is  as
4036              file name.
4037
4038              You  may use this option as many times as the number of URLs you
4039              have.
4040
4041              -O, --remote-name can be used several times in a command line
4042
4043              Example:
4044               curl -O https://example.com/filename
4045
4046              See  also  --remote-name-all,  --output-dir  and  -J,  --remote-
4047              header-name.
4048
4049       -R, --remote-time
4050              When  used,  this will make curl attempt to figure out the time‐
4051              stamp of the remote file, and if that is available make the  lo‐
4052              cal file get that same timestamp.
4053
4054              Providing  -R, --remote-time multiple times has no extra effect.
4055              Disable it again with --no-remote-time.
4056
4057              Example:
4058               curl --remote-time -o foo https://example.com
4059
4060              See also -O, --remote-name and -z, --time-cond.
4061
4062       --remove-on-error
4063              When curl returns an error when told to save output in  a  local
4064              file,  this  option removes that saved file before exiting. This
4065              prevents curl from leaving a partial file in the case of an  er‐
4066              ror during transfer.
4067
4068              If the output is not a file, this option has no effect.
4069
4070              Providing  --remove-on-error multiple times has no extra effect.
4071              Disable it again with --no-remove-on-error.
4072
4073              Example:
4074               curl --remove-on-error -o output https://example.com
4075
4076              See also -f, --fail. Added in 7.83.0.
4077
4078       --request-target <path>
4079              (HTTP) Tells curl to use an alternative "target" (path)  instead
4080              of  using  the  path as provided in the URL. Particularly useful
4081              when wanting to issue HTTP requests  without  leading  slash  or
4082              other  data  that  does not follow the regular URL pattern, like
4083              "OPTIONS *".
4084
4085              If --request-target is provided  several  times,  the  last  set
4086              value will be used.
4087
4088              Example:
4089               curl --request-target "*" -X OPTIONS https://example.com
4090
4091              See also -X, --request. Added in 7.55.0.
4092
4093       -X, --request <method>
4094              (HTTP) Specifies a custom request method to use when communicat‐
4095              ing with the HTTP server. The specified request method  will  be
4096              used  instead  of  the  method otherwise used (which defaults to
4097              GET). Read the HTTP 1.1 specification for details  and  explana‐
4098              tions.  Common  additional HTTP requests include PUT and DELETE,
4099              but related technologies like WebDAV offers PROPFIND, COPY, MOVE
4100              and more.
4101
4102              Normally  you  do  not need this option. All sorts of GET, HEAD,
4103              POST and PUT requests are rather invoked by using dedicated com‐
4104              mand line options.
4105
4106              This  option  only  changes the actual word used in the HTTP re‐
4107              quest, it does not alter the way curl behaves. So for example if
4108              you  want  to make a proper HEAD request, using -X HEAD will not
4109              suffice. You need to use the -I, --head option.
4110
4111              The method string you set with -X, --request will  be  used  for
4112              all  requests,  which  if you for example use -L, --location may
4113              cause unintended side-effects when curl does not change  request
4114              method according to the HTTP 30x response codes - and similar.
4115
4116              (FTP) Specifies a custom FTP command to use instead of LIST when
4117              doing file lists with FTP.
4118
4119              (POP3) Specifies a custom POP3 command to use instead of LIST or
4120              RETR.
4121
4122
4123              (IMAP)  Specifies  a custom IMAP command to use instead of LIST.
4124              (Added in 7.30.0)
4125
4126              (SMTP) Specifies a custom SMTP command to use instead of HELP or
4127              VRFY. (Added in 7.34.0)
4128
4129              If  -X,  --request is provided several times, the last set value
4130              will be used.
4131
4132              Examples:
4133               curl -X "DELETE" https://example.com
4134               curl -X NLST ftp://example.com/
4135
4136              See also --request-target.
4137
4138       --resolve <[+]host:port:addr[,addr]...>
4139              Provide a custom address for a specific host and port pair.  Us‐
4140              ing  this, you can make the curl requests(s) use a specified ad‐
4141              dress and prevent the otherwise normally resolved address to  be
4142              used.  Consider  it a sort of /etc/hosts alternative provided on
4143              the command line. The port number should be the number used  for
4144              the  specific  protocol  the host will be used for. It means you
4145              need several entries if you want to provide address for the same
4146              host but different ports.
4147
4148              By  specifying '*' as host you can tell curl to resolve any host
4149              and specific port pair to the specified address. Wildcard is re‐
4150              solved  last so any --resolve with a specific host and port will
4151              be used first.
4152
4153              The provided address set by this option will be used even if -4,
4154              --ipv4 or -6, --ipv6 is set to make curl use another IP version.
4155
4156              By prefixing the host with a '+' you can make the entry time out
4157              after curl's default timeout (1 minute).  Note  that  this  will
4158              only  make  sense for long running parallel transfers with a lot
4159              of files. In such cases, if this option is used curl will try to
4160              resolve  the  host as it normally would once the timeout has ex‐
4161              pired.
4162
4163              Support for providing the IP address within [brackets] was added
4164              in 7.57.0.
4165
4166              Support  for providing multiple IP addresses per entry was added
4167              in 7.59.0.
4168
4169              Support for resolving with wildcard was added in 7.64.0.
4170
4171              Support for the '+' prefix was was added in 7.75.0.
4172
4173              This option can be used many times to add many host names to re‐
4174              solve.
4175
4176              --resolve can be used several times in a command line
4177
4178              Example:
4179               curl --resolve example.com:443:127.0.0.1 https://example.com
4180
4181              See also --connect-to and --alt-svc.
4182
4183       --retry-all-errors
4184              Retry on any error. This option is used together with --retry.
4185
4186              This  option  is the "sledgehammer" of retrying. Do not use this
4187              option by default (eg in curlrc), there may be unintended conse‐
4188              quences  such as sending or receiving duplicate data. Do not use
4189              with redirected input or output. You'd be much better  off  han‐
4190              dling  your unique problems in shell script. Please read the ex‐
4191              ample below.
4192
4193              WARNING: For server compatibility curl attempts to retry  failed
4194              flaky  transfers  as close as possible to how they were started,
4195              but this is not possible with redirected input  or  output.  For
4196              example,  before  retrying  it removes output data from a failed
4197              partial transfer that was written to  an  output  file.  However
4198              this is not true of data redirected to a | pipe or > file, which
4199              are not reset. We strongly suggest you do not  parse  or  record
4200              output  via  redirect in combination with this option, since you
4201              may receive duplicate data.
4202
4203              By default curl will not error on an HTTP response code that in‐
4204              dicates an HTTP error, if the transfer was successful. For exam‐
4205              ple, if a server replies 404 Not Found and the  reply  is  fully
4206              received  then  that  is not an error. When --retry is used then
4207              curl will retry on some HTTP response codes that indicate  tran‐
4208              sient  HTTP  errors, but that does not include most 4xx response
4209              codes such as 404. If you want to retry on  all  response  codes
4210              that  indicate  HTTP  errors (4xx and 5xx) then combine with -f,
4211              --fail.
4212
4213              Providing --retry-all-errors multiple times has no extra effect.
4214              Disable it again with --no-retry-all-errors.
4215
4216              Example:
4217               curl --retry 5 --retry-all-errors https://example.com
4218
4219              See also --retry. Added in 7.71.0.
4220
4221       --retry-connrefused
4222              In  addition to the other conditions, consider ECONNREFUSED as a
4223              transient error too for --retry. This option  is  used  together
4224              with --retry.
4225
4226              Providing  --retry-connrefused  multiple  times has no extra ef‐
4227              fect.  Disable it again with --no-retry-connrefused.
4228
4229              Example:
4230               curl --retry-connrefused --retry 7 https://example.com
4231
4232              See also --retry and --retry-all-errors. Added in 7.52.0.
4233
4234       --retry-delay <seconds>
4235              Make curl sleep this amount of time before  each  retry  when  a
4236              transfer  has  failed with a transient error (it changes the de‐
4237              fault backoff time algorithm between retries).  This  option  is
4238              only  interesting if --retry is also used. Setting this delay to
4239              zero will make curl use the default backoff time.
4240
4241              If --retry-delay is provided several times, the last  set  value
4242              will be used.
4243
4244              Example:
4245               curl --retry-delay 5 --retry 7 https://example.com
4246
4247              See also --retry.
4248
4249       --retry-max-time <seconds>
4250              The  retry timer is reset before the first transfer attempt. Re‐
4251              tries will be done as usual (see --retry) as long as  the  timer
4252              has  not  reached this given limit. Notice that if the timer has
4253              not reached the limit, the request will be made and  while  per‐
4254              forming,  it  may  take  longer  than this given time period. To
4255              limit a single request's maximum time, use -m,  --max-time.  Set
4256              this option to zero to not timeout retries.
4257
4258              If  --retry-max-time  is  provided  several  times, the last set
4259              value will be used.
4260
4261              Example:
4262               curl --retry-max-time 30 --retry 10 https://example.com
4263
4264              See also --retry.
4265
4266       --retry <num>
4267              If a transient error is returned when curl tries  to  perform  a
4268              transfer,  it  will retry this number of times before giving up.
4269              Setting the number to 0 makes curl do no retries (which  is  the
4270              default).  Transient  error  means either: a timeout, an FTP 4xx
4271              response code or an HTTP 408, 429, 500, 502, 503 or 504 response
4272              code.
4273
4274              When  curl  is about to retry a transfer, it will first wait one
4275              second and then for all forthcoming retries it will  double  the
4276              waiting  time until it reaches 10 minutes which then will be the
4277              delay between the rest of the retries.  By  using  --retry-delay
4278              you   disable  this  exponential  backoff  algorithm.  See  also
4279              --retry-max-time to limit the total time allowed for retries.
4280
4281              Since curl 7.66.0, curl will comply with  the  Retry-After:  re‐
4282              sponse  header if one was present to know when to issue the next
4283              retry.
4284
4285              If --retry is provided several times, the last set value will be
4286              used.
4287
4288              Example:
4289               curl --retry 7 https://example.com
4290
4291              See also --retry-max-time.
4292
4293       --sasl-authzid <identity>
4294              Use this authorization identity (authzid), during SASL PLAIN au‐
4295              thentication, in addition to the authentication identity  (auth‐
4296              cid) as specified by -u, --user.
4297
4298              If  the  option is not specified, the server will derive the au‐
4299              thzid from the authcid, but if specified, and depending  on  the
4300              server  implementation,  it may be used to access another user's
4301              inbox, that the user has been granted access  to,  or  a  shared
4302              mailbox for example.
4303
4304              If  --sasl-authzid is provided several times, the last set value
4305              will be used.
4306
4307              Example:
4308               curl --sasl-authzid zid imap://example.com/
4309
4310              See also --login-options. Added in 7.66.0.
4311
4312       --sasl-ir
4313              Enable initial response in SASL authentication.
4314
4315              Providing --sasl-ir multiple times has no extra effect.  Disable
4316              it again with --no-sasl-ir.
4317
4318              Example:
4319               curl --sasl-ir imap://example.com/
4320
4321              See also --sasl-authzid. Added in 7.31.0.
4322
4323       --service-name <name>
4324              This option allows you to change the service name for SPNEGO.
4325
4326              Examples:    --negotiate    --service-name   sockd   would   use
4327              sockd/server-name.
4328
4329              If --service-name is provided several times, the last set  value
4330              will be used.
4331
4332              Example:
4333               curl --service-name sockd/server https://example.com
4334
4335              See also --negotiate and --proxy-service-name. Added in 7.43.0.
4336
4337       -S, --show-error
4338              When used with -s, --silent, it makes curl show an error message
4339              if it fails.
4340
4341              This option is global and does not need to be specified for each
4342              use of --next.
4343
4344              Providing  -S,  --show-error multiple times has no extra effect.
4345              Disable it again with --no-show-error.
4346
4347              Example:
4348               curl --show-error --silent https://example.com
4349
4350              See also --no-progress-meter.
4351
4352       -s, --silent
4353              Silent or quiet mode. Do not show progress meter or  error  mes‐
4354              sages.  Makes  Curl  mute. It will still output the data you ask
4355              for, potentially even to the terminal/stdout unless you redirect
4356              it.
4357
4358              Use  -S,  --show-error  in  addition  to  this option to disable
4359              progress meter but still show error messages.
4360
4361              Providing -s, --silent multiple times has no extra effect.  Dis‐
4362              able it again with --no-silent.
4363
4364              Example:
4365               curl -s https://example.com
4366
4367              See also -v, --verbose, --stderr and --no-progress-meter.
4368
4369       --socks4 <host[:port]>
4370              Use the specified SOCKS4 proxy. If the port number is not speci‐
4371              fied, it is assumed at port 1080. Using this  socket  type  make
4372              curl  resolve  the  host  name and passing the address on to the
4373              proxy.
4374
4375              To specify proxy on a unix  domain  socket,  use  localhost  for
4376              host, e.g.  socks4://localhost/path/to/socket.sock
4377
4378              This  option  overrides any previous use of -x, --proxy, as they
4379              are mutually exclusive.
4380
4381              This option is superfluous since you can specify a socks4  proxy
4382              with -x, --proxy using a socks4:// protocol prefix.
4383
4384              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at
4385              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In
4386              such a case curl first connects to the SOCKS proxy and then con‐
4387              nects (through SOCKS) to the HTTP or HTTPS proxy.
4388
4389              If --socks4 is provided several times, the last set  value  will
4390              be used.
4391
4392              Example:
4393               curl --socks4 hostname:4096 https://example.com
4394
4395              See also --socks4a, --socks5 and --socks5-hostname.
4396
4397       --socks4a <host[:port]>
4398              Use the specified SOCKS4a proxy. If the port number is not spec‐
4399              ified, it is assumed at port 1080. This asks the  proxy  to  re‐
4400              solve the host name.
4401
4402              To  specify  proxy  on  a  unix domain socket, use localhost for
4403              host, e.g.  socks4a://localhost/path/to/socket.sock
4404
4405              This option overrides any previous use of -x, --proxy,  as  they
4406              are mutually exclusive.
4407
4408              This option is superfluous since you can specify a socks4a proxy
4409              with -x, --proxy using a socks4a:// protocol prefix.
4410
4411              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at
4412              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In
4413              such a case curl first connects to the SOCKS proxy and then con‐
4414              nects (through SOCKS) to the HTTP or HTTPS proxy.
4415
4416              If  --socks4a is provided several times, the last set value will
4417              be used.
4418
4419              Example:
4420               curl --socks4a hostname:4096 https://example.com
4421
4422              See also --socks4, --socks5 and --socks5-hostname.
4423
4424       --socks5-basic
4425              Tells curl to use username/password authentication when connect‐
4426              ing  to a SOCKS5 proxy.  The username/password authentication is
4427              enabled by default.  Use --socks5-gssapi to  force  GSS-API  au‐
4428              thentication to SOCKS5 proxies.
4429
4430              Providing --socks5-basic multiple times has no extra effect.
4431
4432              Example:
4433               curl --socks5-basic --socks5 hostname:4096 https://example.com
4434
4435              See also --socks5. Added in 7.55.0.
4436
4437       --socks5-gssapi-nec
4438              As  part of the GSS-API negotiation a protection mode is negoti‐
4439              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,
4440              but  the  NEC  reference  implementation  does  not.  The option
4441              --socks5-gssapi-nec allows the unprotected exchange of the  pro‐
4442              tection mode negotiation.
4443
4444              Providing  --socks5-gssapi-nec  multiple  times has no extra ef‐
4445              fect.  Disable it again with --no-socks5-gssapi-nec.
4446
4447              Example:
4448               curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com
4449
4450              See also --socks5.
4451
4452       --socks5-gssapi-service <name>
4453              The default service name for a socks server is rcmd/server-fqdn.
4454              This option allows you to change it.
4455
4456              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd
4457              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-
4458              service  sockd/real-name  would  use  sockd/real-name  for cases
4459              where the proxy-name does not match the principal name.
4460
4461              If --socks5-gssapi-service is provided several times,  the  last
4462              set value will be used.
4463
4464              Example:
4465               curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com
4466
4467              See also --socks5.
4468
4469       --socks5-gssapi
4470              Tells  curl  to  use GSS-API authentication when connecting to a
4471              SOCKS5 proxy.  The GSS-API authentication is enabled by  default
4472              (if  curl is compiled with GSS-API support).  Use --socks5-basic
4473              to force username/password authentication to SOCKS5 proxies.
4474
4475              Providing --socks5-gssapi multiple times has  no  extra  effect.
4476              Disable it again with --no-socks5-gssapi.
4477
4478              Example:
4479               curl --socks5-gssapi --socks5 hostname:4096 https://example.com
4480
4481              See also --socks5. Added in 7.55.0.
4482
4483       --socks5-hostname <host[:port]>
4484              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the
4485              host name). If the port number is not specified, it  is  assumed
4486              at port 1080.
4487
4488              To  specify  proxy  on  a  unix domain socket, use localhost for
4489              host, e.g.  socks5h://localhost/path/to/socket.sock
4490
4491              This option overrides any previous use of -x, --proxy,  as  they
4492              are mutually exclusive.
4493
4494              This  option is superfluous since you can specify a socks5 host‐
4495              name proxy with -x, --proxy using a socks5h:// protocol prefix.
4496
4497              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at
4498              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In
4499              such a case curl first connects to the SOCKS proxy and then con‐
4500              nects (through SOCKS) to the HTTP or HTTPS proxy.
4501
4502              If  --socks5-hostname  is  provided  several times, the last set
4503              value will be used.
4504
4505              Example:
4506               curl --socks5-hostname proxy.example:7000 https://example.com
4507
4508              See also --socks5 and --socks4a.
4509
4510       --socks5 <host[:port]>
4511              Use the specified SOCKS5 proxy - but resolve the host  name  lo‐
4512              cally.  If  the  port  number is not specified, it is assumed at
4513              port 1080.
4514
4515              To specify proxy on a unix  domain  socket,  use  localhost  for
4516              host, e.g.  socks5://localhost/path/to/socket.sock
4517
4518              This  option  overrides any previous use of -x, --proxy, as they
4519              are mutually exclusive.
4520
4521              This option is superfluous since you can specify a socks5  proxy
4522              with -x, --proxy using a socks5:// protocol prefix.
4523
4524              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at
4525              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In
4526              such a case curl first connects to the SOCKS proxy and then con‐
4527              nects (through SOCKS) to the HTTP or HTTPS proxy.
4528
4529              This option (as well as --socks4) does not work with IPV6,  FTPS
4530              or LDAP.
4531
4532              If  --socks5  is provided several times, the last set value will
4533              be used.
4534
4535              Example:
4536               curl --socks5 proxy.example:7000 https://example.com
4537
4538              See also --socks5-hostname and --socks4a.
4539
4540       -Y, --speed-limit <speed>
4541              If a transfer is slower than this given speed (in bytes per sec‐
4542              ond)  for  speed-time seconds it gets aborted. speed-time is set
4543              with -y, --speed-time and is 30 if not set.
4544
4545              If -Y, --speed-limit is provided several  times,  the  last  set
4546              value will be used.
4547
4548              Example:
4549               curl --speed-limit 300 --speed-time 10 https://example.com
4550
4551              See also -y, --speed-time, --limit-rate and -m, --max-time.
4552
4553       -y, --speed-time <seconds>
4554              If a transfer runs slower than speed-limit bytes per second dur‐
4555              ing a speed-time period, the transfer is aborted. If  speed-time
4556              is  used,  the default speed-limit will be 1 unless set with -Y,
4557              --speed-limit.
4558
4559              This option controls transfers (in both directions) but will not
4560              affect  slow connects etc. If this is a concern for you, try the
4561              --connect-timeout option.
4562
4563              If -y, --speed-time is provided  several  times,  the  last  set
4564              value will be used.
4565
4566              Example:
4567               curl --speed-limit 300 --speed-time 10 https://example.com
4568
4569              See also -Y, --speed-limit and --limit-rate.
4570
4571       --ssl-allow-beast
4572              This option tells curl to not work around a security flaw in the
4573              SSL3 and TLS1.0 protocols known as BEAST.  If this option is not
4574              used,  the SSL layer may use workarounds known to cause interop‐
4575              erability problems with some older SSL implementations.
4576
4577              WARNING: this option loosens the SSL security, and by using this
4578              flag you ask for exactly that.
4579
4580              Providing  --ssl-allow-beast multiple times has no extra effect.
4581              Disable it again with --no-ssl-allow-beast.
4582
4583              Example:
4584               curl --ssl-allow-beast https://example.com
4585
4586              See also --proxy-ssl-allow-beast and -k, --insecure.
4587
4588       --ssl-auto-client-cert
4589              Tell libcurl to automatically locate and use a  client  certifi‐
4590              cate  for authentication, when requested by the server. This op‐
4591              tion is only supported for Schannel (the native Windows SSL  li‐
4592              brary). Prior to 7.77.0 this was the default behavior in libcurl
4593              with Schannel. Since the server can request any certificate that
4594              supports  client  authentication  in the OS certificate store it
4595              could be a privacy violation and unexpected.
4596
4597              Providing --ssl-auto-client-cert multiple times has no extra ef‐
4598              fect.  Disable it again with --no-ssl-auto-client-cert.
4599
4600              Example:
4601               curl --ssl-auto-client-cert https://example.com
4602
4603              See also --proxy-ssl-auto-client-cert. Added in 7.77.0.
4604
4605       --ssl-no-revoke
4606              (Schannel) This option tells curl to disable certificate revoca‐
4607              tion checks.  WARNING: this option loosens the SSL security, and
4608              by using this flag you ask for exactly that.
4609
4610              Providing  --ssl-no-revoke  multiple  times has no extra effect.
4611              Disable it again with --no-ssl-no-revoke.
4612
4613              Example:
4614               curl --ssl-no-revoke https://example.com
4615
4616              See also --crlfile. Added in 7.44.0.
4617
4618       --ssl-reqd
4619              (FTP IMAP POP3 SMTP LDAP) Require SSL/TLS  for  the  connection.
4620              Terminates  the connection if the transfer cannot be upgraded to
4621              use SSL/TLS.
4622
4623              This option is handled in LDAP since version 7.81.0. It is fully
4624              supported  by  the  OpenLDAP backend and rejected by the generic
4625              ldap backend if explicit TLS is required.
4626
4627              This option is unnecessary if you use a URL scheme that  in  it‐
4628              self  implies  immediate and implicit use of TLS, like for FTPS,
4629              IMAPS, POP3S, SMTPS and LDAPS. Such transfers will  always  fail
4630              if the TLS handshake does not work.
4631
4632              This option was formerly known as --ftp-ssl-reqd.
4633
4634              Providing  --ssl-reqd  multiple times has no extra effect.  Dis‐
4635              able it again with --no-ssl-reqd.
4636
4637              Example:
4638               curl --ssl-reqd ftp://example.com
4639
4640              See also --ssl and -k, --insecure.
4641
4642       --ssl-revoke-best-effort
4643              (Schannel) This option tells curl to ignore certificate  revoca‐
4644              tion checks when they failed due to missing/offline distribution
4645              points for the revocation check lists.
4646
4647              Providing --ssl-revoke-best-effort multiple times has  no  extra
4648              effect.  Disable it again with --no-ssl-revoke-best-effort.
4649
4650              Example:
4651               curl --ssl-revoke-best-effort https://example.com
4652
4653              See also --crlfile and -k, --insecure. Added in 7.70.0.
4654
4655       --ssl  (FTP  IMAP  POP3 SMTP LDAP) Warning: this is considered an inse‐
4656              cure option. Consider using --ssl-reqd instead to be  sure  curl
4657              upgrades to a secure connection.
4658
4659              Try  to  use SSL/TLS for the connection. Reverts to a non-secure
4660              connection if the server does  not  support  SSL/TLS.  See  also
4661              --ftp-ssl-control and --ssl-reqd for different levels of encryp‐
4662              tion required.
4663
4664              This option is handled in LDAP since version 7.81.0. It is fully
4665              supported  by  the  OpenLDAP  backend and ignored by the generic
4666              ldap backend.
4667
4668              Please note that a server may close the connection if the  nego‐
4669              tiation does not succeed.
4670
4671              This  option  was  formerly known as --ftp-ssl. That option name
4672              can still be used but will be removed in a future version.
4673
4674              Providing --ssl multiple times has no extra effect.  Disable  it
4675              again with --no-ssl.
4676
4677              Example:
4678               curl --ssl pop3://example.com/
4679
4680              See also --ssl-reqd, -k, --insecure and --ciphers.
4681
4682       -2, --sslv2
4683              (SSL) This option previously asked curl to use SSLv2, but start‐
4684              ing in curl 7.77.0 this instruction is ignored. SSLv2 is  widely
4685              considered insecure (see RFC 6176).
4686
4687              Providing -2, --sslv2 multiple times has no extra effect.
4688
4689              Example:
4690               curl --sslv2 https://example.com
4691
4692              See  also  --http1.1  and --http2. -2, --sslv2 requires that the
4693              underlying libcurl was built to support TLS. This option is  mu‐
4694              tually  exclusive  to  -3, --sslv3 and -1, --tlsv1 and --tlsv1.1
4695              and --tlsv1.2.
4696
4697       -3, --sslv3
4698              (SSL) This option previously asked curl to use SSLv3, but start‐
4699              ing  in curl 7.77.0 this instruction is ignored. SSLv3 is widely
4700              considered insecure (see RFC 7568).
4701
4702              Providing -3, --sslv3 multiple times has no extra effect.
4703
4704              Example:
4705               curl --sslv3 https://example.com
4706
4707              See also --http1.1 and --http2. -3, --sslv3  requires  that  the
4708              underlying  libcurl was built to support TLS. This option is mu‐
4709              tually exclusive to -2, --sslv2 and -1,  --tlsv1  and  --tlsv1.1
4710              and --tlsv1.2.
4711
4712       --stderr <file>
4713              Redirect  all writes to stderr to the specified file instead. If
4714              the file name is a plain '-', it is instead written to stdout.
4715
4716              This option is global and does not need to be specified for each
4717              use of --next.
4718
4719              If  --stderr  is provided several times, the last set value will
4720              be used.
4721
4722              Example:
4723               curl --stderr output.txt https://example.com
4724
4725              See also -v, --verbose and -s, --silent.
4726
4727       --styled-output
4728              Enables the automatic use of bold font styles when writing  HTTP
4729              headers  to  the terminal. Use --no-styled-output to switch them
4730              off.
4731
4732              Styled output requires a terminal that supports bold fonts. This
4733              feature  is  not present on curl for Windows due to lack of this
4734              capability.
4735
4736              This option is global and does not need to be specified for each
4737              use of --next.
4738
4739              Providing  --styled-output  multiple  times has no extra effect.
4740              Disable it again with --no-styled-output.
4741
4742              Example:
4743               curl --styled-output -I https://example.com
4744
4745              See also -I, --head and -v, --verbose. Added in 7.61.0.
4746
4747       --suppress-connect-headers
4748              When -p, --proxytunnel is used and a CONNECT request is made  do
4749              not  output proxy CONNECT response headers. This option is meant
4750              to be used with -D, --dump-header or  -i,  --include  which  are
4751              used to show protocol headers in the output. It has no effect on
4752              debug options such as -v, --verbose or --trace, or  any  statis‐
4753              tics.
4754
4755              Providing --suppress-connect-headers multiple times has no extra
4756              effect.  Disable it again with --no-suppress-connect-headers.
4757
4758              Example:
4759               curl --suppress-connect-headers --include -x proxy https://example.com
4760
4761              See also -D, --dump-header, -i, --include and -p, --proxytunnel.
4762              Added in 7.54.0.
4763
4764       --tcp-fastopen
4765              Enable use of TCP Fast Open (RFC7413).
4766
4767              Providing  --tcp-fastopen  multiple  times  has no extra effect.
4768              Disable it again with --no-tcp-fastopen.
4769
4770              Example:
4771               curl --tcp-fastopen https://example.com
4772
4773              See also --false-start. Added in 7.49.0.
4774
4775       --tcp-nodelay
4776              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man
4777              page for details about this option.
4778
4779              Since  7.50.2,  curl sets this option by default and you need to
4780              explicitly switch it off if you do not want it on.
4781
4782              Providing --tcp-nodelay multiple  times  has  no  extra  effect.
4783              Disable it again with --no-tcp-nodelay.
4784
4785              Example:
4786               curl --tcp-nodelay https://example.com
4787
4788              See also -N, --no-buffer.
4789
4790       -t, --telnet-option <opt=val>
4791              Pass options to the telnet protocol. Supported options are:
4792
4793              TTYPE=<term> Sets the terminal type.
4794
4795              XDISPLOC=<X display> Sets the X display location.
4796
4797              NEW_ENV=<var,val> Sets an environment variable.
4798
4799              -t, --telnet-option can be used several times in a command line
4800
4801              Example:
4802               curl -t TTYPE=vt100 telnet://example.com/
4803
4804              See also -K, --config.
4805
4806       --tftp-blksize <value>
4807              (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block
4808              size that curl will try to use when transferring data to or from
4809              a TFTP server. By default 512 bytes will be used.
4810
4811              If  --tftp-blksize is provided several times, the last set value
4812              will be used.
4813
4814              Example:
4815               curl --tftp-blksize 1024 tftp://example.com/file
4816
4817              See also --tftp-no-options.
4818
4819       --tftp-no-options
4820              (TFTP) Tells curl not to send TFTP options requests.
4821
4822              This option improves interop with some legacy  servers  that  do
4823              not  acknowledge  or  properly implement TFTP options. When this
4824              option is used --tftp-blksize is ignored.
4825
4826              Providing --tftp-no-options multiple times has no extra  effect.
4827              Disable it again with --no-tftp-no-options.
4828
4829              Example:
4830               curl --tftp-no-options tftp://192.168.0.1/
4831
4832              See also --tftp-blksize. Added in 7.48.0.
4833
4834       -z, --time-cond <time>
4835              (HTTP  FTP) Request a file that has been modified later than the
4836              given time and date, or one that has been modified  before  that
4837              time.  The <date expression> can be all sorts of date strings or
4838              if it does not match any internal ones, it is taken as  a  file‐
4839              name  and tries to get the modification date (mtime) from <file>
4840              instead. See the curl_getdate(3) man pages for  date  expression
4841              details.
4842
4843              Start the date expression with a dash (-) to make it request for
4844              a document that is older than the given date/time, default is  a
4845              document that is newer than the specified date/time.
4846
4847              If -z, --time-cond is provided several times, the last set value
4848              will be used.
4849
4850              Examples:
4851               curl -z "Wed 01 Sep 2021 12:18:00" https://example.com
4852               curl -z "-Wed 01 Sep 2021 12:18:00" https://example.com
4853               curl -z file https://example.com
4854
4855              See also --etag-compare and -R, --remote-time.
4856
4857       --tls-max <VERSION>
4858              (SSL) VERSION defines maximum supported TLS version. The minimum
4859              acceptable  version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2 or
4860              tlsv1.3.
4861
4862              If the connection is done without TLS, this option  has  no  ef‐
4863              fect. This includes QUIC-using (HTTP/3) transfers.
4864
4865
4866              default
4867                     Use up to recommended TLS version.
4868
4869              1.0    Use up to TLSv1.0.
4870
4871              1.1    Use up to TLSv1.1.
4872
4873              1.2    Use up to TLSv1.2.
4874
4875              1.3    Use up to TLSv1.3.
4876
4877       If  --tls-max  is  provided  several  times, the last set value will be
4878       used.
4879
4880       Examples:
4881        curl --tls-max 1.2 https://example.com
4882        curl --tls-max 1.3 --tlsv1.2 https://example.com
4883
4884       See also --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3.  --tls-max  re‐
4885       quires  that  the underlying libcurl was built to support TLS. Added in
4886       7.54.0.
4887
4888       --tls13-ciphers <ciphersuite list>
4889              (TLS) Specifies which cipher suites to use in the connection  if
4890              it  negotiates  TLS 1.3. The list of ciphers suites must specify
4891              valid ciphers. Read up on TLS 1.3 cipher suite details  on  this
4892              URL:
4893
4894               https://curl.se/docs/ssl-ciphers.html
4895
4896              This  option  is  currently  used only when curl is built to use
4897              OpenSSL 1.1.1 or later. If you are using a different SSL backend
4898              you can try setting TLS 1.3 cipher suites by using the --ciphers
4899              option.
4900
4901              If --tls13-ciphers is provided several times, the last set value
4902              will be used.
4903
4904              Example:
4905               curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com
4906
4907              See also --ciphers and --curves. Added in 7.61.0.
4908
4909       --tlsauthtype <type>
4910              Set  TLS  authentication type. Currently, the only supported op‐
4911              tion  is  "SRP",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and
4912              --tlspassword  are specified but --tlsauthtype is not, then this
4913              option defaults to "SRP". This option works only if the underly‐
4914              ing  libcurl  is  built  with  TLS-SRP  support,  which requires
4915              OpenSSL or GnuTLS with TLS-SRP support.
4916
4917              If --tlsauthtype is provided several times, the last  set  value
4918              will be used.
4919
4920              Example:
4921               curl --tlsauthtype SRP https://example.com
4922
4923              See also --tlsuser.
4924
4925       --tlspassword <string>
4926              Set  password  for use with the TLS authentication method speci‐
4927              fied with --tlsauthtype. Requires that --tlsuser also be set.
4928
4929              This option does not work with TLS 1.3.
4930
4931              If --tlspassword is provided several times, the last  set  value
4932              will be used.
4933
4934              Example:
4935               curl --tlspassword pwd --tlsuser user https://example.com
4936
4937              See also --tlsuser.
4938
4939       --tlsuser <name>
4940              Set  username  for use with the TLS authentication method speci‐
4941              fied with --tlsauthtype. Requires  that  --tlspassword  also  is
4942              set.
4943
4944              This option does not work with TLS 1.3.
4945
4946              If  --tlsuser is provided several times, the last set value will
4947              be used.
4948
4949              Example:
4950               curl --tlspassword pwd --tlsuser user https://example.com
4951
4952              See also --tlspassword.
4953
4954       --tlsv1.0
4955              (TLS) Forces curl to use TLS version 1.0 or later when  connect‐
4956              ing to a remote TLS server.
4957
4958              In  old  versions  of  curl  this option was documented to allow
4959              _only_ TLS 1.0.  That behavior was inconsistent depending on the
4960              TLS library. Use --tls-max if you want to set a maximum TLS ver‐
4961              sion.
4962
4963              Providing --tlsv1.0 multiple times has no extra effect.
4964
4965              Example:
4966               curl --tlsv1.0 https://example.com
4967
4968              See also --tlsv1.3. Added in 7.34.0.
4969
4970       --tlsv1.1
4971              (TLS) Forces curl to use TLS version 1.1 or later when  connect‐
4972              ing to a remote TLS server.
4973
4974              In  old  versions  of  curl  this option was documented to allow
4975              _only_ TLS 1.1.  That behavior was inconsistent depending on the
4976              TLS library. Use --tls-max if you want to set a maximum TLS ver‐
4977              sion.
4978
4979              Providing --tlsv1.1 multiple times has no extra effect.
4980
4981              Example:
4982               curl --tlsv1.1 https://example.com
4983
4984              See also --tlsv1.3 and --tls-max. Added in 7.34.0.
4985
4986       --tlsv1.2
4987              (TLS) Forces curl to use TLS version 1.2 or later when  connect‐
4988              ing to a remote TLS server.
4989
4990              In  old  versions  of  curl  this option was documented to allow
4991              _only_ TLS 1.2.  That behavior was inconsistent depending on the
4992              TLS library. Use --tls-max if you want to set a maximum TLS ver‐
4993              sion.
4994
4995              Providing --tlsv1.2 multiple times has no extra effect.
4996
4997              Example:
4998               curl --tlsv1.2 https://example.com
4999
5000              See also --tlsv1.3 and --tls-max. Added in 7.34.0.
5001
5002       --tlsv1.3
5003              (TLS) Forces curl to use TLS version 1.3 or later when  connect‐
5004              ing to a remote TLS server.
5005
5006              If  the  connection  is done without TLS, this option has no ef‐
5007              fect. This includes QUIC-using (HTTP/3) transfers.
5008
5009              Note that TLS 1.3 is not supported by all TLS backends.
5010
5011              Providing --tlsv1.3 multiple times has no extra effect.
5012
5013              Example:
5014               curl --tlsv1.3 https://example.com
5015
5016              See also --tlsv1.2 and --tls-max. Added in 7.52.0.
5017
5018       -1, --tlsv1
5019              (SSL) Tells curl to use at least TLS version 1.x when  negotiat‐
5020              ing  with  a  remote  TLS  server. That means TLS version 1.0 or
5021              higher
5022
5023              Providing -1, --tlsv1 multiple times has no extra effect.
5024
5025              Example:
5026               curl --tlsv1 https://example.com
5027
5028              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the
5029              underlying  libcurl was built to support TLS. This option is mu‐
5030              tually exclusive to --tlsv1.1 and --tlsv1.2 and --tlsv1.3.
5031
5032       --tr-encoding
5033              (HTTP) Request a compressed Transfer-Encoding response using one
5034              of  the  algorithms curl supports, and uncompress the data while
5035              receiving it.
5036
5037              Providing --tr-encoding multiple  times  has  no  extra  effect.
5038              Disable it again with --no-tr-encoding.
5039
5040              Example:
5041               curl --tr-encoding https://example.com
5042
5043              See also --compressed.
5044
5045       --trace-ascii <file>
5046              Enables a full trace dump of all incoming and outgoing data, in‐
5047              cluding descriptive information, to the given output  file.  Use
5048              "-" as filename to have the output sent to stdout.
5049
5050              This is similar to --trace, but leaves out the hex part and only
5051              shows the ASCII part of the dump. It makes smaller  output  that
5052              might be easier to read for untrained humans.
5053
5054              This option is global and does not need to be specified for each
5055              use of --next.
5056
5057              If --trace-ascii is provided several times, the last  set  value
5058              will be used.
5059
5060              Example:
5061               curl --trace-ascii log.txt https://example.com
5062
5063              See  also -v, --verbose and --trace. This option is mutually ex‐
5064              clusive to --trace and -v, --verbose.
5065
5066       --trace-time
5067              Prepends a time stamp to each trace or verbose  line  that  curl
5068              displays.
5069
5070              This option is global and does not need to be specified for each
5071              use of --next.
5072
5073              Providing --trace-time multiple times has no extra effect.  Dis‐
5074              able it again with --no-trace-time.
5075
5076              Example:
5077               curl --trace-time --trace-ascii output https://example.com
5078
5079              See also --trace and -v, --verbose.
5080
5081       --trace <file>
5082              Enables a full trace dump of all incoming and outgoing data, in‐
5083              cluding descriptive information, to the given output  file.  Use
5084              "-"  as  filename  to have the output sent to stdout. Use "%" as
5085              filename to have the output sent to stderr.
5086
5087              This option is global and does not need to be specified for each
5088              use of --next.
5089
5090              If --trace is provided several times, the last set value will be
5091              used.
5092
5093              Example:
5094               curl --trace log.txt https://example.com
5095
5096              See also --trace-ascii and --trace-time. This option is mutually
5097              exclusive to -v, --verbose and --trace-ascii.
5098
5099       --unix-socket <path>
5100              (HTTP) Connect through this Unix domain socket, instead of using
5101              the network.
5102
5103              If --unix-socket is provided several times, the last  set  value
5104              will be used.
5105
5106              Example:
5107               curl --unix-socket socket-path https://example.com
5108
5109              See also --abstract-unix-socket. Added in 7.40.0.
5110
5111       -T, --upload-file <file>
5112              This  transfers  the  specified local file to the remote URL. If
5113              there is no file part in the specified URL, curl will append the
5114              local file name. NOTE that you must use a trailing / on the last
5115              directory to really prove to Curl that there is no file name  or
5116              curl will think that your last directory name is the remote file
5117              name to use. That will most likely cause the upload operation to
5118              fail. If this is used on an HTTP(S) server, the PUT command will
5119              be used.
5120
5121              Use the file name "-" (a single dash) to use stdin instead of  a
5122              given  file.   Alternately,  the file name "." (a single period)
5123              may be specified instead of "-" to  use  stdin  in  non-blocking
5124              mode  to  allow  reading  server output while stdin is being up‐
5125              loaded.
5126
5127              You can specify one -T, --upload-file for each URL on  the  com‐
5128              mand  line.  Each -T, --upload-file + URL pair specifies what to
5129              upload and to where. curl also supports "globbing"  of  the  -T,
5130              --upload-file  argument,  meaning  that  you can upload multiple
5131              files to a single URL by using the same URL globbing style  sup‐
5132              ported in the URL.
5133
5134              When  uploading  to an SMTP server: the uploaded data is assumed
5135              to be RFC 5322 formatted. It has to feature the necessary set of
5136              headers  and  mail  body formatted correctly by the user as curl
5137              will not transcode nor encode it further in any way.
5138
5139              -T, --upload-file can be used several times in a command line
5140
5141              Examples:
5142               curl -T file https://example.com
5143               curl -T "img[1-1000].png" ftp://ftp.example.com/
5144               curl --upload-file "{file1,file2}" https://example.com
5145
5146              See also -G, --get and -I, --head.
5147
5148       --url-query <data>
5149              (all) This option adds a piece of data, usually a name  +  value
5150              pair,  to the end of the URL query part. The syntax is identical
5151              to that used for --data-urlencode with one extension:
5152
5153              If the argument starts with a '+' (plus), the rest of the string
5154              is provided as-is unencoded.
5155
5156              The  query  part of a URL is the one following the question mark
5157              on the right end.
5158
5159              --url-query can be used several times in a command line
5160
5161              Examples:
5162               curl --url-query name=val https://example.com
5163               curl --url-query =encodethis http://example.net/foo
5164               curl --url-query name@file https://example.com
5165               curl --url-query @fileonly https://example.com
5166               curl --url-query "+name=%20foo" https://example.com
5167
5168              See also --data-urlencode and -G, --get. Added in 7.87.0.
5169
5170       --url <url>
5171              Specify a URL to fetch. This option is  mostly  handy  when  you
5172              want to specify URL(s) in a config file.
5173
5174              If  the given URL is missing a scheme name (such as "http://" or
5175              "ftp://" etc) then curl will make a guess based on the host.  If
5176              the  outermost  sub-domain  name  matches DICT, FTP, IMAP, LDAP,
5177              POP3 or SMTP then that protocol will  be  used,  otherwise  HTTP
5178              will be used. Since 7.45.0 guessing can be disabled by setting a
5179              default protocol, see --proto-default for details.
5180
5181              To control where this URL is written, use the  -o,  --output  or
5182              the -O, --remote-name options.
5183
5184              WARNING:  On  Windows,  particular  file:// accesses can be con‐
5185              verted to network accesses by the operating system. Beware!
5186
5187              --url can be used several times in a command line
5188
5189              Example:
5190               curl --url https://example.com
5191
5192              See also -:, --next and -K, --config.
5193
5194       -B, --use-ascii
5195              (FTP LDAP) Enable ASCII transfer. For FTP, this can also be  en‐
5196              forced  by  using  a  URL  that ends with ";type=A". This option
5197              causes data sent to stdout to be in text mode for win32 systems.
5198
5199              Providing -B, --use-ascii multiple times has  no  extra  effect.
5200              Disable it again with --no-use-ascii.
5201
5202              Example:
5203               curl -B ftp://example.com/README
5204
5205              See also --crlf and --data-ascii.
5206
5207       -A, --user-agent <name>
5208              (HTTP) Specify the User-Agent string to send to the HTTP server.
5209              To encode blanks in the string, surround the string with  single
5210              quote  marks.  This header can also be set with the -H, --header
5211              or the --proxy-header options.
5212
5213              If you give an empty argument to -A, --user-agent (""), it  will
5214              remove  the  header completely from the request. If you prefer a
5215              blank header, you can set it to a single space (" ").
5216
5217              If -A, --user-agent is provided  several  times,  the  last  set
5218              value will be used.
5219
5220              Example:
5221               curl -A "Agent 007" https://example.com
5222
5223              See also -H, --header and --proxy-header.
5224
5225       -u, --user <user:password>
5226              Specify the user name and password to use for server authentica‐
5227              tion. Overrides -n, --netrc and --netrc-optional.
5228
5229              If you simply specify the user name,  curl  will  prompt  for  a
5230              password.
5231
5232              The  user  name  and  passwords are split up on the first colon,
5233              which makes it impossible to use a colon in the user  name  with
5234              this option. The password can, still.
5235
5236              On systems where it works, curl will hide the given option argu‐
5237              ment from process listings. This is not enough to  protect  cre‐
5238              dentials  from  possibly getting seen by other users on the same
5239              system as they  will  still  be  visible  for  a  moment  before
5240              cleared. Such sensitive data should be retrieved from a file in‐
5241              stead or similar and never used in clear text in a command line.
5242
5243              When using Kerberos V5 with a Windows based  server  you  should
5244              include  the  Windows domain name in the user name, in order for
5245              the server to successfully obtain a Kerberos Ticket. If  you  do
5246              not, then the initial authentication handshake may fail.
5247
5248              When  using  NTLM,  the user name can be specified simply as the
5249              user name, without the domain, if there is a single  domain  and
5250              forest in your setup for example.
5251
5252              To  specify  the domain name use either Down-Level Logon Name or
5253              UPN (User Principal Name) formats. For example, EXAMPLE\user and
5254              user@example.com respectively.
5255
5256              If  you  use a Windows SSPI-enabled curl binary and perform Ker‐
5257              beros V5, Negotiate, NTLM or Digest authentication then you  can
5258              tell  curl  to select the user name and password from your envi‐
5259              ronment by specifying a single colon with this option: "-u :".
5260
5261              If -u, --user is provided several times, the last set value will
5262              be used.
5263
5264              Example:
5265               curl -u user:secret https://example.com
5266
5267              See also -n, --netrc and -K, --config.
5268
5269       -v, --verbose
5270              Makes  curl  verbose  during the operation. Useful for debugging
5271              and seeing what's going on "under the  hood".  A  line  starting
5272              with  '>'  means  "header  data" sent by curl, '<' means "header
5273              data" received by curl that is hidden in  normal  cases,  and  a
5274              line starting with '*' means additional info provided by curl.
5275
5276              If  you  only  want HTTP headers in the output, -i, --include or
5277              -D, --dump-header might be more suitable options.
5278
5279              If you think this option still does not give you enough details,
5280              consider using --trace or --trace-ascii instead.
5281
5282              This option is global and does not need to be specified for each
5283              use of --next.
5284
5285              Providing -v, --verbose multiple  times  has  no  extra  effect.
5286              Disable it again with --no-verbose.
5287
5288              Example:
5289               curl --verbose https://example.com
5290
5291              See also -i, --include, -s, --silent, --trace and --trace-ascii.
5292              This option is mutually exclusive to --trace and --trace-ascii.
5293
5294       -V, --version
5295              Displays information about curl and the libcurl version it uses.
5296
5297              The first line includes the full version of  curl,  libcurl  and
5298              other 3rd party libraries linked with the executable.
5299
5300              The  second  line (starts with "Protocols:") shows all protocols
5301              that libcurl reports to support.
5302
5303              The third line (starts with "Features:") shows specific features
5304              libcurl reports to offer. Available features include:
5305
5306              alt-svc
5307                     Support for the Alt-Svc: header is provided.
5308
5309              AsynchDNS
5310                     This  curl  uses asynchronous name resolves. Asynchronous
5311                     name resolves can be done using either the c-ares or  the
5312                     threaded resolver backends.
5313
5314              brotli Support for automatic brotli compression over HTTP(S).
5315
5316              CharConv
5317                     curl was built with support for character set conversions
5318                     (like EBCDIC)
5319
5320              Debug  This curl uses a libcurl built with Debug.  This  enables
5321                     more  error-tracking  and memory debugging etc. For curl-
5322                     developers only!
5323
5324              gsasl  The built-in SASL authentication includes  extensions  to
5325                     support SCRAM because libcurl was built with libgsasl.
5326
5327              GSS-API
5328                     GSS-API is supported.
5329
5330              HSTS   HSTS support is present.
5331
5332              HTTP2  HTTP/2 support has been built-in.
5333
5334              HTTP3  HTTP/3 support has been built-in.
5335
5336              HTTPS-proxy
5337                     This curl is built to support HTTPS proxy.
5338
5339              IDN    This curl supports IDN - international domain names.
5340
5341              IPv6   You can use IPv6 with this.
5342
5343              Kerberos
5344                     Kerberos V5 authentication is supported.
5345
5346              Largefile
5347                     This curl supports transfers of large files, files larger
5348                     than 2GB.
5349
5350              libz   Automatic decompression (via gzip, deflate) of compressed
5351                     files over HTTP is supported.
5352
5353              MultiSSL
5354                     This curl supports multiple TLS backends.
5355
5356              NTLM   NTLM authentication is supported.
5357
5358              NTLM_WB
5359                     NTLM delegation to winbind helper is supported.
5360
5361              PSL    PSL  is  short for Public Suffix List and means that this
5362                     curl has been built with  knowledge  about  "public  suf‐
5363                     fixes".
5364
5365              SPNEGO SPNEGO authentication is supported.
5366
5367              SSL    SSL  versions of various protocols are supported, such as
5368                     HTTPS, FTPS, POP3S and so on.
5369
5370              SSPI   SSPI is supported.
5371
5372              TLS-SRP
5373                     SRP (Secure Remote Password) authentication is  supported
5374                     for TLS.
5375
5376              TrackMemory
5377                     Debug memory tracking is supported.
5378
5379              Unicode
5380                     Unicode support on Windows.
5381
5382              UnixSockets
5383                     Unix sockets support is provided.
5384
5385              zstd   Automatic  decompression  (via  zstd) of compressed files
5386                     over HTTP is supported.
5387
5388       Example:
5389        curl --version
5390
5391       See also -h, --help and -M, --manual.
5392
5393       -w, --write-out <format>
5394              Make curl display information on stdout after a completed trans‐
5395              fer.  The  format  is a string that may contain plain text mixed
5396              with any number of variables. The format can be specified  as  a
5397              literal  "string",  or  you can have curl read the format from a
5398              file with "@filename" and to tell curl to read the  format  from
5399              stdin you write "@-".
5400
5401              The  variables  present in the output format will be substituted
5402              by the value or text that curl thinks fit, as  described  below.
5403              All  variables are specified as %{variable_name} and to output a
5404              normal % you just write them as %%. You can output a newline  by
5405              using \n, a carriage return with \r and a tab space with \t.
5406
5407              The  output  will be written to standard output, but this can be
5408              switched to standard error by using %{stderr}.
5409
5410              Output HTTP headers  from  the  most  recent  request  by  using
5411              %header{name}  where  name  is  the case insensitive name of the
5412              header (without the trailing colon). The header contents are ex‐
5413              actly as sent over the network, with leading and trailing white‐
5414              space trimmed. Added in curl 7.84.0.
5415
5416              NOTE: In Windows the %-symbol is a special symbol used to expand
5417              environment  variables. In batch files all occurrences of % must
5418              be doubled when using this option to properly  escape.  If  this
5419              option  is  used  at the command prompt then the % cannot be es‐
5420              caped and unintended expansion is possible.
5421
5422              The variables available are:
5423
5424              certs          Output the certificate chain with  details.  Sup‐
5425                             ported  only  by  the  OpenSSL, GnuTLS, Schannel,
5426                             NSS, GSKit and Secure Transport  backends  (Added
5427                             in 7.88.0)
5428
5429              content_type   The  Content-Type  of  the requested document, if
5430                             there was any.
5431
5432              errormsg       The error message. (Added in 7.75.0)
5433
5434              exitcode       The numerical exitcode of the transfer. (Added in
5435                             7.75.0)
5436
5437              filename_effective
5438                             The  ultimate  filename  that curl writes out to.
5439                             This is only meaningful if curl is told to  write
5440                             to  a  file  with  the  -O,  --remote-name or -o,
5441                             --output option. It's most useful in  combination
5442                             with the -J, --remote-header-name option.
5443
5444              ftp_entry_path The initial path curl ended up in when logging on
5445                             to the remote FTP server.
5446
5447              header_json    A JSON object with all HTTP response headers from
5448                             the  recent  transfer. Values are provided as ar‐
5449                             rays, since in the case of multiple headers there
5450                             can be multiple values. (Added in 7.83.0)
5451
5452                             The header names provided in lowercase, listed in
5453                             order of appearance over the wire. Except for du‐
5454                             plicated  headers.  They are grouped on the first
5455                             occurrence of that header,  each  value  is  pre‐
5456                             sented in the JSON array.
5457
5458              http_code      The numerical response code that was found in the
5459                             last retrieved HTTP(S) or FTP(s) transfer.
5460
5461              http_connect   The numerical code that was found in the last re‐
5462                             sponse (from a proxy) to a curl CONNECT request.
5463
5464              http_version   The  http  version  that  was  effectively  used.
5465                             (Added in 7.50.0)
5466
5467              json           A JSON object with all available keys.
5468
5469              local_ip       The IP address of the local end of the  most  re‐
5470                             cently  done  connection  - can be either IPv4 or
5471                             IPv6.
5472
5473              local_port     The local port number of the most  recently  done
5474                             connection.
5475
5476              method         The  http method used in the most recent HTTP re‐
5477                             quest. (Added in 7.72.0)
5478
5479              num_certs      Number of server certificates received in the TLS
5480                             handshake. Supported only by the OpenSSL, GnuTLS,
5481                             Schannel, NSS, GSKit and Secure  Transport  back‐
5482                             ends (Added in 7.88.0)
5483
5484              num_connects   Number  of new connects made in the recent trans‐
5485                             fer.
5486
5487              num_headers    The number of response headers in the most recent
5488                             request  (restarted  at each redirect). Note that
5489                             the status  line  IS  NOT  a  header.  (Added  in
5490                             7.73.0)
5491
5492              num_redirects  Number of redirects that were followed in the re‐
5493                             quest.
5494
5495              onerror        The rest of the  output  is  only  shown  if  the
5496                             transfer  returned  a  non-zero  error  (Added in
5497                             7.75.0)
5498
5499              proxy_ssl_verify_result
5500                             The result of the HTTPS proxy's SSL peer certifi‐
5501                             cate verification that was requested. 0 means the
5502                             verification was successful. (Added in 7.52.0)
5503
5504              redirect_url   When an HTTP request was made without -L, --loca‐
5505                             tion to follow redirects (or when --max-redirs is
5506                             met), this variable will show the  actual  URL  a
5507                             redirect would have gone to.
5508
5509              referer        The  Referer: header, if there was any. (Added in
5510                             7.76.0)
5511
5512              remote_ip      The remote IP address of the most  recently  done
5513                             connection - can be either IPv4 or IPv6.
5514
5515              remote_port    The  remote port number of the most recently done
5516                             connection.
5517
5518              response_code  The numerical response code that was found in the
5519                             last transfer (formerly known as "http_code").
5520
5521              scheme         The  URL  scheme (sometimes called protocol) that
5522                             was effectively used. (Added in 7.52.0)
5523
5524              size_download  The total amount of bytes that  were  downloaded.
5525                             This is the size of the body/data that was trans‐
5526                             ferred, excluding headers.
5527
5528              size_header    The total amount of bytes of the downloaded head‐
5529                             ers.
5530
5531              size_request   The  total  amount of bytes that were sent in the
5532                             HTTP request.
5533
5534              size_upload    The total amount of  bytes  that  were  uploaded.
5535                             This is the size of the body/data that was trans‐
5536                             ferred, excluding headers.
5537
5538              speed_download The average download speed that curl measured for
5539                             the complete download. Bytes per second.
5540
5541              speed_upload   The  average  upload speed that curl measured for
5542                             the complete upload. Bytes per second.
5543
5544              ssl_verify_result
5545                             The result of the SSL peer certificate  verifica‐
5546                             tion that was requested. 0 means the verification
5547                             was successful.
5548
5549              stderr         From this point on, the  -w,  --write-out  output
5550                             will  be  written  to  standard  error. (Added in
5551                             7.63.0)
5552
5553              stdout         From this point on, the  -w,  --write-out  output
5554                             will  be written to standard output.  This is the
5555                             default, but can be used  to  switch  back  after
5556                             switching to stderr.  (Added in 7.63.0)
5557
5558              time_appconnect
5559                             The  time, in seconds, it took from the start un‐
5560                             til the SSL/SSH/etc connect/handshake to the  re‐
5561                             mote host was completed.
5562
5563              time_connect   The  time, in seconds, it took from the start un‐
5564                             til the TCP connect to the remote host (or proxy)
5565                             was completed.
5566
5567              time_namelookup
5568                             The  time, in seconds, it took from the start un‐
5569                             til the name resolving was completed.
5570
5571              time_pretransfer
5572                             The time, in seconds, it took from the start  un‐
5573                             til  the  file  transfer was just about to begin.
5574                             This includes all pre-transfer commands and nego‐
5575                             tiations that are specific to the particular pro‐
5576                             tocol(s) involved.
5577
5578              time_redirect  The time, in seconds, it took for all redirection
5579                             steps including name lookup, connect, pretransfer
5580                             and transfer before  the  final  transaction  was
5581                             started.  time_redirect shows the complete execu‐
5582                             tion time for multiple redirections.
5583
5584              time_starttransfer
5585                             The time, in seconds, it took from the start  un‐
5586                             til  the  first  byte was just about to be trans‐
5587                             ferred. This includes time_pretransfer  and  also
5588                             the  time  the server needed to calculate the re‐
5589                             sult.
5590
5591              time_total     The total time, in seconds, that the full  opera‐
5592                             tion lasted.
5593
5594              url            The URL that was fetched. (Added in 7.75.0)
5595
5596              urlnum         The URL index number of this transfer, 0-indexed.
5597                             De-globbed URLs share the same  index  number  as
5598                             the origin globbed URL. (Added in 7.75.0)
5599
5600              url_effective  The URL that was fetched last. This is most mean‐
5601                             ingful if you have told curl to follow  location:
5602                             headers.
5603
5604              If -w, --write-out is provided several times, the last set value
5605              will be used.
5606
5607              Example:
5608               curl -w '%{http_code}\n' https://example.com
5609
5610              See also -v, --verbose and -I, --head.
5611
5612       --xattr
5613              When saving output to a file, this option tells  curl  to  store
5614              certain  file  metadata  in extended file attributes. Currently,
5615              the URL is stored in the xdg.origin.url attribute and, for HTTP,
5616              the  content  type  is stored in the mime_type attribute. If the
5617              file system does not support extended attributes, a  warning  is
5618              issued.
5619
5620              Providing  --xattr  multiple times has no extra effect.  Disable
5621              it again with --no-xattr.
5622
5623              Example:
5624               curl --xattr -o storage https://example.com
5625
5626              See also -R, --remote-time, -w, --write-out and -v, --verbose.
5627

FILES

5629       ~/.curlrc
5630              Default config file, see -K, --config for details.
5631

ENVIRONMENT

5633       The environment variables can be specified in lower case or upper case.
5634       The lower case version has precedence. http_proxy is an exception as it
5635       is only available in lower case.
5636
5637       Using an environment variable to set the proxy has the same  effect  as
5638       using the -x, --proxy option.
5639
5640
5641       http_proxy [protocol://]<host>[:port]
5642              Sets the proxy server to use for HTTP.
5643
5644       HTTPS_PROXY [protocol://]<host>[:port]
5645              Sets the proxy server to use for HTTPS.
5646
5647       [url-protocol]_PROXY [protocol://]<host>[:port]
5648              Sets  the proxy server to use for [url-protocol], where the pro‐
5649              tocol is a protocol that curl supports and  as  specified  in  a
5650              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc.
5651
5652       ALL_PROXY [protocol://]<host>[:port]
5653              Sets  the  proxy  server to use if no protocol-specific proxy is
5654              set.
5655
5656       NO_PROXY <comma-separated list of hosts/domains>
5657              list of host names that should not go through any proxy. If  set
5658              to an asterisk '*' only, it matches all hosts. Each name in this
5659              list is matched as either a domain name which contains the host‐
5660              name, or the hostname itself.
5661
5662              This  environment  variable  disables use of the proxy even when
5663              specified with the -x,  --proxy  option.  That  is  NO_PROXY=di‐
5664              rect.example.com  curl  -x  http://proxy.example.com  http://di
5665              rect.example.com  accesses  the   target   URL   directly,   and
5666              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com
5667              http://somewhere.example.com accesses the target URL through the
5668              proxy.
5669
5670              The  list  of  host  names  can also be include numerical IP ad‐
5671              dresses, and IPv6 versions should then be given without  enclos‐
5672              ing brackets.
5673
5674              Since 7.86.0, IP addresses can be specified using CIDR notation:
5675              an appended slash and number specifies the  number  of  "network
5676              bits"  out  of the address to use in the comparison. For example
5677              "192.168.0.0/16"  would  match  all  addresses   starting   with
5678              "192.168".
5679
5680       APPDATA <dir>
5681              On  Windows,  this variable is used when trying to find the home
5682              directory. If the primary home variable are all unset.
5683
5684       COLUMNS <terminal width>
5685              If set, the specified number of characters will be used  as  the
5686              terminal  width  when  the alternative progress-bar is shown. If
5687              not set, curl will try to figure it out using other ways.
5688
5689       CURL_CA_BUNDLE <file>
5690              If set, will be used as the --cacert value.
5691
5692       CURL_HOME <dir>
5693              If set, is the first variable curl checks when  trying  to  find
5694              its  home  directory. If not set, it continues to check XDG_CON‐
5695              FIG_HOME
5696
5697       CURL_SSL_BACKEND <TLS backend>
5698              If curl was built with support for "MultiSSL", meaning  that  it
5699              has  built-in  support for more than one TLS backend, this envi‐
5700              ronment variable can be set to the case insensitive name of  the
5701              particular  backend  to use when curl is invoked. Setting a name
5702              that is not a built-in alternative will make curl stay with  the
5703              default.
5704
5705              SSL  backend  names  (case-insensitive): bearssl, gnutls, gskit,
5706              mbedtls, nss, openssl, rustls, schannel, secure-transport, wolf‐
5707              ssl
5708
5709       HOME <dir>
5710              If  set,  this  is  used to find the home directory when that is
5711              needed. Like when looking for the default .curlrc. CURL_HOME and
5712              XDG_CONFIG_HOME have preference.
5713
5714       QLOGDIR <directory name>
5715              If  curl was built with HTTP/3 support, setting this environment
5716              variable to a local directory will make curl  produce  qlogs  in
5717              that  directory,  using  file  names named after the destination
5718              connection id (in hex). Do note  that  these  files  can  become
5719              rather large. Works with both QUIC backends.
5720
5721       SHELL  Used  on  VMS  when  trying to detect if using a DCL or a "unix"
5722              shell.
5723
5724       SSL_CERT_DIR <dir>
5725              If set, will be used as the --capath value.
5726
5727       SSL_CERT_FILE <path>
5728              If set, will be used as the --cacert value.
5729
5730       SSLKEYLOGFILE <file name>
5731              If you set this environment variable to a file name,  curl  will
5732              store TLS secrets from its connections in that file when invoked
5733              to enable you to analyze the TLS traffic in real time using net‐
5734              work analyzing tools such as Wireshark. This works with the fol‐
5735              lowing TLS backends: OpenSSL, libressl, BoringSSL,  GnuTLS,  NSS
5736              and wolfSSL.
5737
5738       USERPROFILE <dir>
5739              On  Windows,  this variable is used when trying to find the home
5740              directory. If the other, primary, variable  are  all  unset.  If
5741              set, curl will use the path "$USERPROFILE\Application Data".
5742
5743       XDG_CONFIG_HOME <dir>
5744              If  CURL_HOME  is not set, this variable is checked when looking
5745              for a default .curlrc file.
5746

PROXY PROTOCOL PREFIXES

5748       The proxy string may be specified with a protocol:// prefix to  specify
5749       alternative proxy protocols.
5750
5751       If  no  protocol is specified in the proxy string or if the string does
5752       not match a supported one, the proxy will be treated as an HTTP proxy.
5753
5754       The supported proxy protocol prefixes are as follows:
5755
5756       http://
5757              Makes it use it as an HTTP proxy. The default if no scheme  pre‐
5758              fix is used.
5759
5760       https://
5761              Makes it treated as an HTTPS proxy.
5762
5763       socks4://
5764              Makes it the equivalent of --socks4
5765
5766       socks4a://
5767              Makes it the equivalent of --socks4a
5768
5769       socks5://
5770              Makes it the equivalent of --socks5
5771
5772       socks5h://
5773              Makes it the equivalent of --socks5-hostname
5774

EXIT CODES

5776       There  are a bunch of different error codes and their corresponding er‐
5777       ror messages that may appear under error conditions.  At  the  time  of
5778       this writing, the exit codes are:
5779
5780       0      Success.  The  operation completed successfully according to the
5781              instructions.
5782
5783       1      Unsupported protocol. This build of curl has no support for this
5784              protocol.
5785
5786       2      Failed to initialize.
5787
5788       3      URL malformed. The syntax was not correct.
5789
5790       4      A  feature  or option that was needed to perform the desired re‐
5791              quest was not enabled or was explicitly disabled at  build-time.
5792              To make curl able to do this, you probably need another build of
5793              libcurl.
5794
5795       5      Could not resolve proxy. The given proxy host could not  be  re‐
5796              solved.
5797
5798       6      Could  not  resolve host. The given remote host could not be re‐
5799              solved.
5800
5801       7      Failed to connect to host.
5802
5803       8      Weird server reply. The server sent data curl could not parse.
5804
5805       9      FTP access denied. The server denied login or denied  access  to
5806              the  particular  resource or directory you wanted to reach. Most
5807              often you tried to change to a directory that does not exist  on
5808              the server.
5809
5810       10     FTP  accept failed. While waiting for the server to connect back
5811              when an active FTP session is used, an error code was sent  over
5812              the control connection or similar.
5813
5814       11     FTP weird PASS reply. Curl could not parse the reply sent to the
5815              PASS request.
5816
5817       12     During an active FTP session while waiting  for  the  server  to
5818              connect back to curl, the timeout expired.
5819
5820       13     FTP weird PASV reply, Curl could not parse the reply sent to the
5821              PASV request.
5822
5823       14     FTP weird 227 format. Curl could  not  parse  the  227-line  the
5824              server sent.
5825
5826       15     FTP cannot use host. Could not resolve the host IP we got in the
5827              227-line.
5828
5829       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.
5830              This is somewhat generic and can be one out of several problems,
5831              see the error message for details.
5832
5833       17     FTP could not set binary. Could not change  transfer  method  to
5834              binary.
5835
5836       18     Partial file. Only a part of the file was transferred.
5837
5838       19     FTP could not download/access the given file, the RETR (or simi‐
5839              lar) command failed.
5840
5841       21     FTP quote error. A quote command returned error from the server.
5842
5843       22     HTTP page not retrieved. The requested URL was not found or  re‐
5844              turned  another  error  with  the  HTTP  error code being 400 or
5845              above. This return code only appears if -f, --fail is used.
5846
5847       23     Write error. Curl could not write data to a local filesystem  or
5848              similar.
5849
5850       25     FTP  could  not STOR file. The server denied the STOR operation,
5851              used for FTP uploading.
5852
5853       26     Read error. Various reading problems.
5854
5855       27     Out of memory. A memory allocation request failed.
5856
5857       28     Operation timeout. The specified time-out period was reached ac‐
5858              cording to the conditions.
5859
5860       30     FTP  PORT  failed.  The PORT command failed. Not all FTP servers
5861              support the PORT command, try doing a transfer  using  PASV  in‐
5862              stead!
5863
5864       31     FTP could not use REST. The REST command failed. This command is
5865              used for resumed FTP transfers.
5866
5867       33     HTTP range error. The range "command" did not work.
5868
5869       34     HTTP post error. Internal post-request generation error.
5870
5871       35     SSL connect error. The SSL handshaking failed.
5872
5873       36     Bad download resume. Could not continue an earlier aborted down‐
5874              load.
5875
5876       37     FILE could not read file. Failed to open the file. Permissions?
5877
5878       38     LDAP cannot bind. LDAP bind operation failed.
5879
5880       39     LDAP search failed.
5881
5882       41     Function not found. A required LDAP function was not found.
5883
5884       42     Aborted by callback. An application told curl to abort the oper‐
5885              ation.
5886
5887       43     Internal error. A function was called with a bad parameter.
5888
5889       45     Interface error. A specified outgoing  interface  could  not  be
5890              used.
5891
5892       47     Too many redirects. When following redirects, curl hit the maxi‐
5893              mum amount.
5894
5895       48     Unknown option specified to libcurl.  This  indicates  that  you
5896              passed  a weird option to curl that was passed on to libcurl and
5897              rejected. Read up in the manual!
5898
5899       49     Malformed telnet option.
5900
5901       52     The server did not reply anything, which here is  considered  an
5902              error.
5903
5904       53     SSL crypto engine not found.
5905
5906       54     Cannot set SSL crypto engine as default.
5907
5908       55     Failed sending network data.
5909
5910       56     Failure in receiving network data.
5911
5912       58     Problem with the local certificate.
5913
5914       59     Could not use specified SSL cipher.
5915
5916       60     Peer  certificate cannot be authenticated with known CA certifi‐
5917              cates.
5918
5919       61     Unrecognized transfer encoding.
5920
5921       63     Maximum file size exceeded.
5922
5923       64     Requested FTP SSL level failed.
5924
5925       65     Sending the data requires a rewind that failed.
5926
5927       66     Failed to initialise SSL Engine.
5928
5929       67     The user name, password, or similar was not  accepted  and  curl
5930              failed to log in.
5931
5932       68     File not found on TFTP server.
5933
5934       69     Permission problem on TFTP server.
5935
5936       70     Out of disk space on TFTP server.
5937
5938       71     Illegal TFTP operation.
5939
5940       72     Unknown TFTP transfer ID.
5941
5942       73     File already exists (TFTP).
5943
5944       74     No such user (TFTP).
5945
5946       77     Problem reading the SSL CA cert (path? access rights?).
5947
5948       78     The resource referenced in the URL does not exist.
5949
5950       79     An unspecified error occurred during the SSH session.
5951
5952       80     Failed to shut down the SSL connection.
5953
5954       82     Could not load CRL file, missing or wrong format.
5955
5956       83     Issuer check failed.
5957
5958       84     The FTP PRET command failed.
5959
5960       85     Mismatch of RTSP CSeq numbers.
5961
5962       86     Mismatch of RTSP Session Identifiers.
5963
5964       87     Unable to parse FTP file list.
5965
5966       88     FTP chunk callback reported error.
5967
5968       89     No connection available, the session will be queued.
5969
5970       90     SSL public key does not matched pinned public key.
5971
5972       91     Invalid SSL certificate status.
5973
5974       92     Stream error in HTTP/2 framing layer.
5975
5976       93     An API function was called from inside a callback.
5977
5978       94     An authentication function returned an error.
5979
5980       95     A  problem  was  detected  in the HTTP/3 layer. This is somewhat
5981              generic and can be one out of several problems,  see  the  error
5982              message for details.
5983
5984       96     QUIC  connection  error.  This error may be caused by an SSL li‐
5985              brary error. QUIC is the protocol used for HTTP/3 transfers.
5986
5987       97     Proxy handshake error.
5988
5989       98     A client-side certificate is required to complete the TLS  hand‐
5990              shake.
5991
5992       99     Poll or select returned fatal error.
5993
5994       XX     More error codes will appear here in future releases. The exist‐
5995              ing ones are meant to never change.
5996

BUGS

5998       If you experience any problems  with  curl,  submit  an  issue  in  the
5999       project's bug tracker on GitHub: https://github.com/curl/curl/issues
6000

AUTHORS / CONTRIBUTORS

6002       Daniel  Stenberg is the main author, but the whole list of contributors
6003       is found in the separate THANKS file.
6004

WWW

6006       https://curl.se
6007

SEE ALSO

6009       ftp(1), wget(1)
6010
6011
6012
6013curl 8.0.0                       March 18 2023                         curl(1)
Impressum