Cheatsheet & Examples: curl

Download a webpage
Example Usage:
curl example.com
What it does:
Fetches the content of the webpage at example.com
and displays it in the terminal.
Command-line Arguments Explained:
example.com
: The URL to fetch the content from.
Upload data via POST
Example Usage:
curl -X POST -d "data=example" http://example.com/api
What it does: Sends data to the specified URL using the HTTP POST method.
Command-line Arguments Explained:
-X POST
: Specifies the HTTP request method as POST.-d "data=example"
: Sends the given data in the request body (used with POST/PUT).
Send custom headers
Example Usage:
curl -H "User-Agent: Mozilla" -H "Accept: application/json" example.com
What it does: Adds custom HTTP headers to the request (e.g., User-Agent, Accept).
Command-line Arguments Explained:
-H "Header: Value"
: Specifies a custom HTTP header to include in the request.
Follow redirects automatically
Example Usage:
curl -L http://short.url
What it does: Automatically follows HTTP redirects (e.g., 301, 302) to the final destination.
Command-line Arguments Explained:
-L
: Tells curl to follow redirects.
Save output to a file
Example Usage:
curl -o output.html example.com
What it does:
Saves the fetched content to a file named output.html
instead of printing it to the terminal.
Command-line Arguments Explained:
-o output.html
: Specifies the filename to save the output to.
Retrieve HTTP headers only
Example Usage:
curl -I example.com
What it does: Fetches the HTTP headers of the specified URL without the body content.
Command-line Arguments Explained:
-I
: Outputs only the HTTP headers.
Use a proxy server
Example Usage:
curl -x http://proxy.example.com:8080 example.com
What it does: Routes the request through a specified proxy server.
Command-line Arguments Explained:
-x http://proxy.example.com:8080
: Sets the proxy server to use for the request.
Send cookies with a request
Example Usage:
curl -b cookies.txt example.com
What it does:
Includes cookies from the cookies.txt
file in the request.
Command-line Arguments Explained:
-b cookies.txt
: Sends cookies stored in the specified file with the request.
Retrieve HTTP status code
Example Usage:
curl -w "%{http_code}\n" -o /dev/null -s example.com
What it does: Prints the HTTP status code (e.g., 200, 404) of the response without the body.
Command-line Arguments Explained:
-w "%{http_code}\n"
: Formats the output to show only the HTTP status code.-o /dev/null
: Discards the response body by writing it to/dev/null
.-s
: Suppresses progress output.
Download a file with the same name
Example Usage:
curl -O http://example.com/file.txt
What it does:
Downloads the file at http://example.com/file.txt
and saves it locally with the same name.
Command-line Arguments Explained:
-O
: Saves the file using the remote filename.
Upload a file via PUT
Example Usage:
curl -X PUT -d @file.txt http://example.com/upload
What it does:
Uploads the contents of file.txt
to the specified URL using the PUT method.
Command-line Arguments Explained:
-X PUT
: Specifies the HTTP request method as PUT.-d @file.txt
: Reads the request body from the local filefile.txt
.
Basic HTTP authentication
Example Usage:
curl -u username:password http://example.com/api
What it does: Sends HTTP Basic Authentication credentials in the request headers.
Command-line Arguments Explained:
-u username:password
: Provides the username and password for authentication.
Check connection time (time to first byte)
Example Usage:
curl -w "%{time_connect}\n" -s http://example.com
What it does: Displays the time taken for the TCP connection to be established.
Command-line Arguments Explained:
-w "%{time_connect}\n"
: Customizes the output to show the time to connect.
Send JSON data in a POST request
Example Usage:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api
What it does: Sends a JSON payload to an API endpoint with the correct content type.
Command-line Arguments Explained:
-H "Content-Type: application/json"
: Sets the request header to indicate JSON content.-d '{"key":"value"}'
: Sends the JSON data in the request body.
Download multiple files
Example Usage:
curl -O http://example.com/file1.txt -O http://example.com/file2.txt
What it does: Downloads multiple files from the specified URLs.
Command-line Arguments Explained:
-O
: Saves each file with its remote filename.
Simulate a HEAD request
Example Usage:
curl -X HEAD http://example.com
What it does: Sends a HEAD request to retrieve headers without the response body.
Command-line Arguments Explained:
-X HEAD
: Specifies the HTTP request method as HEAD.
Stream output to a file
Example Usage:
curl -OJ http://example.com/file.txt
What it does: Downloads the file and preserves its original filename and content disposition.
Command-line Arguments Explained:
-O
: Saves the file with the remote name.-J
: Uses the filename from the Content-Disposition header.
Send form-encoded data
Example Usage:
curl -X POST -d "username=admin&password=secret" http://example.com/login
What it does: Submits form data (application/x-www-form-urlencoded) to a login endpoint.
Command-line Arguments Explained:
-d "username=admin&password=secret"
: Sends form-encoded data in the request body.
Use a specific user agent
Example Usage:
curl -A "MobileUserAgent" example.com
What it does: Sets the User-Agent string to mimic a mobile browser.
Command-line Arguments Explained:
-A "MobileUserAgent"
: Sets the User-Agent header for the request.
Show verbose output
Example Usage:
curl -v example.com
What it does: Displays detailed information about the request and response, including headers and timing.
Command-line Arguments Explained:
-v
: Enables verbose mode for debugging purposes.
Resume a partially downloaded file
Example Usage:
curl -C - -o file.txt http://example.com/file.txt
What it does: Resumes a download from where it left off (useful for large files).
Command-line Arguments Explained:
-C -
: Tells curl to resume the download from the last position.
Verify SSL certificate
Example Usage:
curl --cacert /path/to/ca-cert.pem https://example.com
What it does: Verifies the SSL certificate against a specified CA certificate file.
Command-line Arguments Explained:
--cacert /path/to/ca-cert.pem
: Specifies the path to a CA certificate file for validation.
Send HTTP/1.1 request
Example Usage:
curl -1 http://example.com
What it does: Forces curl to use HTTP/1.1 instead of the default protocol (usually HTTP/1.1 or HTTP/2).
Command-line Arguments Explained:
-1
: Uses HTTP/1.1 protocol.
Send DELETE request
Example Usage:
curl -X DELETE http://example.com/api/resource/123
What it does: Sends a DELETE request to remove a resource at the specified URL.
Command-line Arguments Explained:
-X DELETE
: Specifies the HTTP request method as DELETE.
Subscribe to my newsletter
Read articles from Hong directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Hong
Hong
I am a developer from Malaysia. I work with PHP most of the time, recently I fell in love with Go. When I am not working, I will be ballroom dancing :-)