Skip to content

Instantly share code, notes, and snippets.

@rmusser01
Forked from afair/curl reference.md
Created August 30, 2017 00:27
Show Gist options
  • Save rmusser01/1ee2a01e550b7fd82215199bd267aa05 to your computer and use it in GitHub Desktop.
Save rmusser01/1ee2a01e550b7fd82215199bd267aa05 to your computer and use it in GitHub Desktop.
Curl command reference with options sorted by category for easier usage than that man page.
==========================================
CURL COMMAND
==========================================
Format curl [options] [URL...]
Quick Ref:
curl -X POST http://example.com/ <= Method option and URL (Options come before or after URL)
-H "Authorization: <data>" <= Add HTTP Header (like Authorization)
-H "Authorization: Token token=a47a8e54b11c4de5a4a351734c80a14a"
-A "user-agent-string" <= Specify an Agent
-b "name=data" <= Send cookies
-u "user:password" <= Basic HTTP Auth (or "<apikey>:")
-H "Range: page=1" <= Range header for pagination
-H "Accept: application/vnd.mycompany.api.v3+json"
<= Specify API version and JSON as Content-Type
-d "name=value" <= Multiple POST parameters
--data-urlencode "name=value" <= SAFER: URL-Encodes the POST parameter (with special characters)
-F "name=@/path/file" <= Multiple File Uploads
-F "webpage=@index.html;filename=index.html;type=text/html"
-I <= Make HEAD request only
-i <= Print response headers
-v <= Verbose, see request and response
-sS <= Do not print status bar (in scripts)
OPERATIONS
-# --progress-bar
--environment
-f --fail (fail silently)
-g --globoff
-K --config <config file>
--libcurl <file>
-n --netrc (.netrc password file)
--netrc-file <alt-filename>
--netrc-optional
--proto <protocols>
--proto-redir <protocols>
-q (skip .curlrc)
--retry <num>
--retry-delay <seconds>
--retry-max-time <seconds>
-s --silent
-S --show-error
-y --speed-time <time>
-Y --speed-limit <speed>
-h --help
-M --manual
-V --version
.
NETWORK
-4 --ipv4
-6 --ipv6
---connect-timeout <seconds>
--interface <name>
--keepalive-time <seconds>
--limit-rate <speed>
--local-port <num>[-num]
--no-keepalive
--noproxy <list>
-p --proxytunnel
--proxy1.0 <proxyhost[:port]>
--resolve <host:port:address>
--socks4 <host:port>
--socks4a <host:port>
--socks5-hostname <host:port>
--socks5 <host:port>
--socks5-gssapi-service <name>
--socks5-gssapi-nec
-t --telnet-option <OPT=val>
--tcp-nodelay
-x --proxy <protocol:://[user@pw:]host:port>
.
OUTPUT
-a --append
-B --use-ascii
-C --continue-at <offset>
--create-dirs
--crlf
-D --dump-header <file>
--max-filesize <bytes>
-N --no-buffer
-o --output <file>
-O --remote-name (save with remote naming)
-r --range <range> (byte range)
-R --remote-file (set file to remote timestamp)
--raw
--remote-name-all
--stderr <file>
--trace <file>
--trace-ascii <file>
--trace-time
-v --verbose
-w --write-out <format>
--xattr
.
HTTP
-0 --http1.0
-3 --tlsv3
--compressed
--crlfile <file>
--ignore-content-length
-I --head (headers only)
-O --remote-name
-J --remote-header-name
-L --location (follow redirect)
--location-trusted (redirect with name/pw)
--max-redirs <num>
--negotiate
--ntlm
--url <URL>
.
SSL
-1 --tlsv1
-2 --tlsv2
--cyphers <list>
-E --cert <certificate[:password]>
--engine <name>
--egd-file <file>
--cert-type <type>
--cacert <CA certificate>
--capath <CA certificate directory>
-k --insecure
--key <private key file name>
--key-type <DER|PEM|ENG>
--no-sessionid
--random-file <file>
--ssl
--ssl-reqd
.
AUTHENTICATION
--anyauth
--basic
--delegation <none|policy|always>
--digest
--proxy-anyauth
--proxy-basic
--proxy-digest
--proxy-negotiate
--proxy-ntlm
--tlsauthtype <authtype>
--tlsuser <user>
--tlspassword
-u --user <user:password>
-U --proxy-user <user:password>
.
HEADERS
-A --user-agent <string>
-b --cookie <name=data>
-c --cookie-jar <file>
-j --junk-session-cookies
-e --referer <URL>
-H --header <header>
--tr-encoding (compressed transfers)
.
REQUEST
--post301
--post302
-T --upload-file <file>
-X --request <command>
PUT DELETE PATCH, WebDAV
-z --time-cond <date expression>
GET .
-G --get
.
POST DATA .
-d --data <data>
--data-ascii <data>
--data-binary <data>
--data-urlencode <data>
content (no @, =)
=content (allows @, =)
name=content
@filename (filedata)
name@filename (name=filedata)
.
POST .
-F --form <name=content>
name=data
name=data;type=text/foo
name=@index.html;type=text/html
name=@filename;filename=postname
--form-string <name=string> (literal)
.
FTP
--disable-epsc
--ftp-account [data]
--ftp-alternative-to-user <command>
--ftp-create-dirs
--ftp-method [multicwd|nocwd|singlecwd]
--ftp-pasv
--ftp-skip-pasv-ip
--ftp-pret
--ftp-ssl-ccc
--ftp-ssl-ccc-mode [active|passsive]
--ftp-ssl-control
--krv <level>
-- --list-only
-P --ftp-port <interface|ipaddress|hostname|->
-Q --quote <command>
--tftp-blksize <value>
.
SCP/SFTP
--hostpubmd4 <md5>
--pass <phrase>
.
SMTP
--mail-from <address>
--mailprcpt <address>
.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment