- %{json}: Available --write-out variables
- .netrc: Command line leakage, .netrc
- /etc/hosts: Host name or address, Edit the hosts file
- <curl/curl.h>: include/curl, Include files, curl --libcurl, Header files, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP
- --alt-svc: Enable
- --anyauth: HTTP authentication
- apt: Ubuntu and Debian
- Arch Linux: Arch Linux
- -b: Cookie engine, curl HTTP cheat sheet, Web logins and sessions
- --basic: HTTP authentication
- BoringSSL: Select TLS backend, Build to use a TLS library, Build curl with boringssl
- -c: Writing cookies to file, curl HTTP cheat sheet, Web logins and sessions
- c-ares: c-ares, Line 4: Features, Name resolve tricks with c-ares, Name resolver backends
- C89: Comments, Building and installing
- CA: Verbose mode, MITM-proxies, Available exit codes, Verifying server certificates, Verification
- Chrome: SSLKEYLOGFILE, Copy as curl
- clone: Clone the code, git, Web site source code, build boringssl
- code of conduct: Code of conduct
- --compressed: Compression, Gzipped transfers, curl HTTP cheat sheet
- configure: root, Handling different build options, On Linux and Unix-like systems, configure, set up the build tree to get detected by curl's configure
- --connect-timeout: Connection timeout, Never spend more than this to connect
- --connect-to: Provide a replacement name
- connection cache: Persistent connections, Connection reuse, Multi handle
- connection pool: Connection reuse, Connection reuse
- Connection reuse: Connection reuse, Connection reuse
- content-encoding: Compression, Transfer encoding
- contribute: Code of conduct, Contributing
- Contributing: docs, Contributing
- Cookie engine: Cookie engine, Cookie engine
- Cookies: docs, libpsl, Server differences, Change the Host: header, Not perfect, HTTP authentication, Cookies, Cookies, Simple by default, more on demand, Available information, Sharing between easy handles, Submit a login form over HTTP, HTTP authentication, Cookies with libcurl
- copyright: License, Copyright
- curl-announce: curl-announce, Vulnerability handling
- curl-library: curl-users, Make a patch for the mailing list, Vulnerability handling
- curl-users: curl-users, Vulnerability handling
- CURLE_ABORTED_BY_CALLBACK: Progress callback
- CURLINFO_CERTINFO: Available information
- CURLINFO_CONTENT_TYPE: Post transfer info
- CURLINFO_EFFECTIVE_URL: Available information
- CURLINFO_FILETIME: Available information
- CURLINFO_TOTAL_TIME_T: Available information
- CURLMOPT_SOCKETFUNCTION: socket_callback
- CURLMOPT_TIMERFUNCTION: timer_callback
- CURLOPT_CLOSEOCKETFUNCTION: Socket close callback
- CURLOPT_COOKIE: Setting custom cookies
- CURLOPT_COOKIEFILE: Submit a login form over HTTP, Enable cookie engine with reading
- CURLOPT_COOKIEJAR: Enable cookie engine with writing
- CURLOPT_COOKIELIST: Add a cookie to the cookie store
- CURLOPT_CURLU: CURLOPT_CURLU
- CURLOPT_CUSTOMREQUEST: Request method
- CURLOPT_DEBUGDATA: Debug callback, Trace everything
- CURLOPT_DEBUGFUNCTION: Debug callback, Trace everything
- CURLOPT_DNS_CACHE_TIMEOUT: Caching
- CURLOPT_DNS_INTERFACE: Name server options
- CURLOPT_DNS_LOCAL_IP4: Name server options
- CURLOPT_DNS_LOCAL_IP6: Name server options
- CURLOPT_DNS_SERVERS: Name server options
- CURLOPT_DNS_USE_GLOBAL_CACHE: No global DNS cache
- CURLOPT_ERRORBUFFER: curl --libcurl, CURLcode return code
- CURLOPT_FAILONERROR: About HTTP response code "errors"
- CURLOPT_HEADER: Write callback, Referrer, Download headers too
- CURLOPT_HEADERDATA: Header callback, curl --libcurl, Download headers too
- CURLOPT_HEADERFUNCTION: Header callback, curl --libcurl
- CURLOPT_HTTPGET: Submit a login form over HTTP, libcurl HTTP download
- CURLOPT_HTTPHEADER: Add a header
- CURLOPT_IPRESOLVE: Name resolving
- CURLOPT_MAXFILE_LARGE: Setting numerical options
- CURLOPT_MAXREDIRS: curl --libcurl
- CURLOPT_MIMEPOST: HTTP multipart formposts
- CURLOPT_NOBODY: Request method
- CURLOPT_NOPROGRESS: Progress callback, curl --libcurl
- CURLOPT_OPENSOCKETDATA: Provide a file descriptor
- CURLOPT_OPENSOCKETFUNCTION: Provide a file descriptor
- CURLOPT_POST: HTTP POST
- CURLOPT_POSTFIELDS: Submit a login form over HTTP, Request method, HTTP POST
- CURLOPT_POSTFIELDSIZE: HTTP POST
- CURLOPT_POSTREDIR: Decide what method to use in redirects
- CURLOPT_PROGRESSFUNCTION: Progress callback
- CURLOPT_PROXY: Proxy types
- CURLOPT_PROXYPORT: Proxy types
- CURLOPT_PROXYTYPE: Proxy types
- CURLOPT_READDATA: Read callback, curl --libcurl
- CURLOPT_READFUNCTION: Read callback, curl --libcurl, HTTP POST
- CURLOPT_RESOLVE: Custom addresses for hosts
- CURLOPT_SEEKDATA: curl --libcurl
- CURLOPT_SEEKFUNCTION: curl --libcurl
- CURLOPT_SOCKOPTDATA: sockopt callback
- CURLOPT_SOCKOPTFUNCTION: sockopt callback
- CURLOPT_SSH_KNOWNHOSTS: curl --libcurl
- CURLOPT_SSLVERSION: Protocol version
- CURLOPT_SSL_VERIFYHOST: Verification
- CURLOPT_SSL_VERIFYPEER: HTTPS proxy, Verification
- CURLOPT_STDERR: curl --libcurl, Verbose operations
- CURLOPT_TCP_KEEPALIVE: curl --libcurl
- CURLOPT_TIMEOUT: Setting numerical options
- CURLOPT_TLSAUTH_USERNAME: TLS auth
- CURLOPT_UPLOAD: Request method, HTTP PUT
- CURLOPT_URL: Easy handle, curl --libcurl, Set handle options, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP, Request method, libcurl HTTP download, HTTP PUT
- CURLOPT_USERAGENT: curl --libcurl, Get a HTML page in memory
- CURLOPT_VERBOSE: Verbose operations, Download headers too
- CURLOPT_WRITEDATA: Write callback, curl --libcurl, Get a HTML page in memory
- CURLOPT_WRITEFUNCTION: Write callback, curl --libcurl, Get a HTML page in memory
- CURLOPT_XFERINFODATA: Progress callback
- CURLOPT_XFERINFOFUNCTION: Progress callback
- CURLUPART_FRAGMENT: Get individual URL parts
- CURLUPART_HOST: Get individual URL parts
- CURLUPART_PASSWORD: Get individual URL parts
- CURLUPART_PATH: Get individual URL parts
- CURLUPART_PORT: Get individual URL parts
- CURLUPART_QUERY: Get individual URL parts
- CURLUPART_USER: Get individual URL parts
- curl_easy_cleanup: easy handle, curl --libcurl, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP, Enable cookie engine with writing
- curl_easy_getinfo: docs/libcurl/opts, Post transfer info, HTTP responses, Get all cookies from the cookie store
- curl_easy_init: Easy handle, curl --libcurl, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP, libcurl HTTP download
- curl_easy_perform: Driving with the easy interface, Easy API pool, Caching, curl --libcurl, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP, Add a header, libcurl HTTP download, Everything is multi
- curl_easy_reset: Reuse!
- curl_easy_setopt: docs/libcurl/opts, Easy handle, Write callback, Read callback, Progress callback, Header callback, Debug callback, sockopt callback, Provide a file descriptor, Name resolving, Sharing between easy handles, curl --libcurl, Set handle options, libcurl TLS options, CURLcode return code, Verbose operations, Get a simple HTML page, Get a HTML page in memory, Submit a login form over HTTP, Request method, HTTP ranges, User name and password, Enable cookie engine with reading, libcurl HTTP download, HTTP POST
- curl_global_cleanup: Global initialization, Get a HTML page in memory
- curl_global_init: Global initialization, Get a HTML page in memory
- CURL_IPRESOLVE_V6: Name resolving
- CURL_MAX_WRITE_SIZE: Write callback
- curl_mime_addpart: HTTP multipart formposts
- curl_mime_filedata: HTTP multipart formposts
- curl_mime_init: HTTP multipart formposts
- curl_mime_name: HTTP multipart formposts
- curl_multi_add_handle: Driving with the multi interface, Many easy handles
- curl_multi_cleanup: Multi API
- curl_multi_fdset: Driving with the multi interface
- curl_multi_info_read: When is a single transfer done?, When is it done?, Multi API
- curl_multi_init: Driving with the multi interface
- curl_multi_remove_handle: Driving with the multi interface, Many easy handles, Multi API
- curl_multi_setopt: docs/libcurl/opts, Driving with the multi interface, socket_callback
- curl_multi_socket_action: socket_callback
- curl_multi_timeout: Driving with the multi interface
- curl_multi_wait: Driving with the multi interface
- curl_off_t: Progress callback, Available information, Setting numerical options, HTTP PUT
- CURL_SOCKET_TIMEOUT: timer_callback
- CURL_SSL_BACKEND: Line 1: TLS versions, Multiple TLS backends
- curl_url: Create, cleanup, duplicate
- curl_url_cleanup: Create, cleanup, duplicate
- curl_url_dup: Create, cleanup, duplicate
- curl_url_get: Get a URL
- curl_url_set: Parse a URL
- curl_version_info: Which libcurl version runs
- -d: Arguments to options, Separate options per URL, POST, MQTT, HTTP methods, HTTP POST, -d vs -F, PUT, curl HTTP cheat sheet, Web logins and sessions
- --data: Arguments to options, Separate options per URL, POST, HTTP POST
- --data-binary: Not perfect, POSTing binary
- --data-urlencode: URL encoding
- debian: Ubuntu and Debian, lib/vtls, Version
- Debug callback: Debug callback, Verbose operations
- development: Project communication, curl-users, Reporting bugs, The development team, Future, Ubuntu and Debian, Development, Who decides what goes in?, From Safari, Figure out what a browser sends, Which libcurl version runs, Verification
- environment variables: Default config file, Proxy environment variables, Proxy environment variables
- etiquette: Mailing list etiquette
- event-driven: Driving with the "multi_socket" interface, Everything is multi
- -F: multipart formpost, Not perfect, HTTP methods, Sending such a form with curl, -d vs -F, curl HTTP cheat sheet
- --fail: Available exit codes, HTTP response codes
- --fail-with-body: HTTP response codes
- Firefox: lib/vtls, Discover your proxy, SSLKEYLOGFILE, Copy as curl, User-agent
- Fragment: Fragment, Anchors or fragments
- --ftp-method: multicwd
- --ftp-pasv: Passive connections
- --ftp-port: Available exit codes, Active connections
- --ftp-skip-pasv-ip: Passive connections
- future: Project communication, Future, docs, curl-security@haxx.se, What other protocols are there?, "Not used", Cookies, Multiplexing, When QUIC is denied, API compatibility
- --get: Convert that to a GET
- git: Daily snapshots, Clone the code, root, git, Web site source code, git vs tarballs, build boringssl
- Globbing: URL globbing
- GnuTLS: Build to use a TLS library, OCSP stapling, Proxy types
- GOPHER: How it started, What protocols does curl support?, GOPHER, Supported protocols, Version
- GOPHERS: What protocols does curl support?, GOPHERS, Supported protocols
- --header: Server differences, Proxy headers, Customize headers
- Header callback: Header callback, HTTP responses
- Host:: Verbose mode, --trace and --trace-ascii, Change the Host: header, HTTP protocol basics, The HTTP this generates, Customize headers, Customize HTTP request headers
- HTTP ranges: HTTP ranges, HTTP ranges
- HTTP redirects: Short options, Available exit codes, HTTP redirects, Submit a login form over HTTP
- HTTP/1.1: HTTP, Verbose mode, --trace and --trace-ascii, HTTP protocol basics, HTTP versions, The HTTP this generates, GET or POST?, Request method, HTTP/2, Customize HTTP request headers, HTTP versions
- HTTP/2: docs, nghttp2, HTTP/2 and HTTP/3, Line 4: Features, Available exit codes, HTTP versions, GET or POST?, HTTP/2, HTTP/3, DNS over HTTPS, HTTP versions, Expect: headers
- HTTP/3: Select HTTP/3 backend, HTTP/2 and HTTP/3, Line 4: Features, HTTP/3, HTTP/3, Which libcurl version runs, HTTP versions, Expect: headers
- HTTP/3 backend: Select HTTP/3 backend
- --http1.1: HTTP versions
- --http2: HTTP versions, HTTP/2
- --http2-prior-knowledge: HTTP versions, HTTP/2
- --http3: HTTP versions, Enable
- HttpGet: How it started
- IDN: libidn2, Version
- Indentation: Indentation
- IPv4: Host name or address, Available --write-out variables, Name resolving
- IPv6: Host name or address, URL globbing, Available --write-out variables, Version, Name resolving
- IRC: How it started, Project communication
- JavaScript: Client differences, PAC, JavaScript and forms, JavaScript redirects, Figure out what the browser does
- json: Arguments with spaces, Available --write-out variables, Content-Type, POST outside of HTML
- -K: Command lines, quotes and aliases, Config file
- keep-alive: Keep connections alive
- --keepalive-time: Keep alive, Keep connections alive
- -L: Short options, Available --write-out variables, Tell curl to follow redirects, Request method, Cookie engine, curl HTTP cheat sheet, Redirects
- --libcurl: curl --libcurl
- libcurl version: The latest version?, Line 1: curl, Available exit codes, Which libcurl version
- libidn2: libidn2
- libpsl: libpsl
- libressl: Select TLS backend, Build to use a TLS library
- librtmp: librtmp
- libssh2: libssh2
- license: Finding users, License, root
- --limit-rate: Rate limiting
- --location: Long options, Separate options per URL, Config file, Tell curl to follow redirects
- --max-filesize: Maximum filesize
- --max-time: Retrying failed attempts, Maximum time allowed to spend
- MesaLink: Build to use a TLS library
- MIT: License
- MITM-proxies: MITM-proxies
- MQTT: What protocols does curl support?, MQTT, Supported protocols, Line 3: Protocols, MQTT
- multi-threading: libcurl multi-threading
- name resolving: Handling different build options, Host name resolving, Available --write-out variables, Name resolve tricks with c-ares, SOCKS types, Connection reuse, Name resolving, Proxy types, Available information
- --negotiate: Network leakage, HTTP authentication
- --netrc-file: Enable netrc
- --netrc-optional: Enable netrc
- nghttp2: nghttp2, Which libcurl version runs
- nix: nix
- --no-eprt: Active connections
- --no-epsv: Passive connections
- NSS: Build to use a TLS library, OCSP stapling, Proxy types
- --ntlm: Network leakage, HTTP authentication
- -O: Many options and URLs, Numerical ranges, Download to a file named by the URL, curl HTTP cheat sheet
- openldap: openldap
- OpenSSL: lib/vtls, Select TLS backend, Build to use a TLS library, OCSP stapling, Proxy types, Available information
- PAC: PAC, Which proxy?
- --parallel: Do the transfers in parallel
- --parallel-max: Do the transfers in parallel
- Percent-encoding: URL encoding
- pop3: What protocols does curl support?, POP3, Without scheme, Supported protocols, Verbose mode, Version, Available exit codes, Reading email, Secure mail transfer, Enable TLS, STARTTLS
- port number: Connects to "port numbers", Port number, Available --write-out variables, Provide a replacement name, HTTP, Available exit codes, The URL converted to a request, Enable, Connection reuse, Custom addresses for hosts, Proxies, Post transfer info
- --post301: Decide what method to use in redirects
- --post302: Decide what method to use in redirects
- --post303: Decide what method to use in redirects
- Progress callback: timer_callback, Progress callback
- pronunciation: Pronunciation
- --proxy: HTTP, HTTP authentication
- proxy: How it started, Available --write-out variables, Line 4: Features, Intermediaries' fiddlings, Proxies, Available exit codes, CONNECT response codes, HTTP authentication, Proxies, Available information, Verification, HTTP proxy
- --proxy-user: Proxy authentication, HTTP authentication
- --proxy1.0: HTTP proxy tunneling
- --proxytunnel: HTTP proxy tunneling
- ranges: Numerical ranges, Resuming and ranges, HTTP ranges, Provide a file descriptor, HTTP response code, HTTP ranges
- Read callback: Read callback, HTTP POST
- redhat: Redhat and Centos, lib/vtls
- redirects: Long options, Separate options per URL, Config file, Available --write-out variables, Download to a file named by the URL, Provide a custom IP address for a name, Available exit codes, HTTP redirects, Request method, Redirects, Custom addresses for hosts, Available information, Submit a login form over HTTP, Automatic referrer
- RELEASE-NOTES: scripts
- releases: [1. The cURL project](how-to-read.md#1.-the-curl-project), curl-announce, Releases, scripts, Verbose mode, Which libcurl version
- --remote-name-all: Use the URL's file name part for all URLs
- repository: Releases, Arch Linux, Source code on GitHub, Hosting and download, root, What to add, Web site source code, git vs tarballs
- --resolve: Provide a custom IP address for a name
- RFC 1436: GOPHER
- RFC 1738: FILE, multicwd
- RFC 1939: POP3
- RFC 1945: HTTP redirects
- RFC 2229: DICT
- RFC 2246: SSL and TLS versions
- RFC 2326: RTSP
- RFC 2595: IMAP
- RFC 2818: HTTPS
- RFC 3207: SMTP
- RFC 3501: IMAP
- RFC 3986: URLs
- RFC 4217: FTPS
- RFC 4511: LDAP
- RFC 5321: SMTP
- RFC 7230: HTTP
- RFC 7540: HTTP
- RFC 7838: Alternative Services
- RFC 8314: IMAPS
- RFC 8446: SSL and TLS versions
- RFC 854: TELNET
- RFC 959: FTP, FTP
- RTMP: librtmp, What protocols does curl support?, RTMP, Supported protocols, Version
- RTSP: What protocols does curl support?, RTSP, Supported protocols, Version, RTSP interleave callback, Available information
- Safari: Copy as curl
- Schannel: Build to use a TLS library, CA store on windows
- Scheme: librtmp, Connects to "port numbers", FILE, Scheme, Available --write-out variables, Proxy type, Available exit codes, TLS for emails, Proxy types, Available information, Which libcurl version, Get a HTML page in memory, HTTPS, HTTP authentication, Bindings, Different protocols "hooked in"
- SCP: libssh2, What protocols does curl support?, SCP, Supported protocols, Version, Protocols allowing upload, Available exit codes, SCP and SFTP
- security: curl-announce, Security, Trust, docs, Reporting vulnerabilities, TLS, How much do protocols change?, FTPS, http_proxy in lower case only, TLS, How to HTTP with curl, URL API, Protocol version, HTTPS
- SFTP: libssh2, What protocols does curl support?, SFTP, Supported protocols, --trace and --trace-ascii, Version, Protocols allowing upload, Available exit codes, SCP and SFTP
- --show-error: Silence
- --silent: The progress meter, Silence, Error message
- SMTP: What protocols does curl support?, SMTP, Without scheme, Supported protocols, Verbose mode, Version, Protocols allowing upload, Available exit codes, Sending email, Enable TLS, STARTTLS
- SMTPS: Build to use a TLS library, What protocols does curl support?, SMTPS, Supported protocols, Version, Protocols allowing upload, Enable TLS
- snapshots: Daily snapshots, root
- SNI: Change the Host: header
- --socks4: SOCKS types
- --socks4a: SOCKS types
- --socks5: SOCKS types
- --socks5-hostname: SOCKS types
- --speed-limit: Transfer speeds slower than this means exit
- --speed-time: Transfer speeds slower than this means exit
- SSH: Select SSH backend, SCP, Available exit codes, SCP and SFTP, SSH key callback, Trace everything
- SSH backend: Select SSH backend
- SSL context callback: SSL context callback
- SSLKEYLOGFILE: SSLKEYLOGFILE
- STARTTLS: IMAP, TLS for emails, STARTTLS
- -T: PUT, Uploading with FTP, HTTP methods, PUT, curl HTTP cheat sheet
- TELNET: What protocols does curl support?, TELNET, Supported protocols, Version, Available exit codes, TELNET
- testing: What does curl do?, Reporting bugs, Handling different build options, Contributing, About HTTP response code "errors"
- TLS: Ubuntu and Debian, lib/vtls, Handling different build options, Select TLS backend, TLS libraries, Build to use a TLS library, TLS, How much do protocols change?, GOPHERS, Connection reuse, Verbose mode, Line 1: curl, Change the Host: header, MITM-proxies, Available exit codes, SCP and SFTP, TLS for emails, Caveats, TLS, SSLKEYLOGFILE, How to HTTP with curl, The URL converted to a request, HTTPS, Figure out what a browser sends, HTTPS only, Proxy types, Available information, libcurl TLS options, Trace everything, HTTPS
- TLS backend: Ubuntu and Debian, lib/vtls, Select TLS backend, Line 1: curl, Certificate pinning
- TODO: Suggestions
- --tr-encoding: Compression, Transfer encoding
- --trace: --trace and --trace-ascii
- --trace-ascii: --trace and --trace-ascii, Server differences, curl HTTP cheat sheet
- --trace-time: --trace-time
- transfer-encoding: Pass on transfer encoding, Chunked encoded POSTs
- -u: Passwords and snooping, Authentication, URLs, IMAP, HTTP authentication, curl HTTP cheat sheet
- -U: Proxy authentication
- Ubuntu: Ubuntu and Debian
- URL Globbing: URL globbing
- --verbose: Long options, Verbose mode, --trace-time
- --version: Version, Multiple TLS backends
- Vulnerability: Vulnerability handling
- Wireshark: --trace and --trace-ascii, Available exit codes, SSLKEYLOGFILE, Figure out what a browser sends
- wolfSSL: Build to use a TLS library
- Write callback: Write callback, Get a HTML page in memory, HTTP responses
- --write-out: --write-out, HTTP response codes
- -X: Request method, PUT, curl HTTP cheat sheet
- -x: HTTP, curl HTTP cheat sheet, Proxy environment variables
- yum: Redhat and Centos
- -Z: Do the transfers in parallel
- zlib: zlib