# curl Cheatsheet - Cheatsheets - Launch Pad

__ _______________________ _________._________________________ \_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / \/ \/ \/ \/ \/ \/ \/

# curl Cheatsheet

← Back to cheatsheets

← Home

curl is a command-line tool for transferring data with URLs. It supports HTTP, HTTPS, FTP, and many other protocols. Essential for API testing, web scraping, and general HTTP operations.

## Basic Usage

- curl <url> - GET request, output to stdout

- curl -o file.html <url> - Save to file

- curl -O <url> - Save with remote filename

## HTTP Methods

- curl -X GET <url> - GET request (default)

- curl -X POST <url> - POST request

- curl -X PUT <url> - PUT request

- curl -X DELETE <url> - DELETE request

- curl -X PATCH <url> - PATCH request

- curl -I <url> - HEAD request (headers only)

## Headers

- -H "Header: Value" - Add custom header

- -H "Content-Type: application/json" - Set content type

- -H "Authorization: Bearer token" - Auth header

- -A "User-Agent" - Set User-Agent

- -e "Referer" - Set Referer header

## Data/Body

- -d "data" - Send POST data

- -d @file.json - POST data from file

- --data-urlencode "param=value" - URL encode data

- -F "file=@path/file.txt" - Form upload

- -F "field=value" - Form field

## Output Options

- -o filename - Output to file

- -O - Save with remote filename

- -s - Silent mode (no progress)

- -S - Show errors in silent mode

- -v - Verbose output

- -i - Include response headers

- -w "%{http_code}" - Write out format

## Authentication

- -u user:password - Basic auth

- --digest - Digest auth

- --ntlm - NTLM auth

- --negotiate - Negotiate auth

- -E cert.pem - Client certificate

## Cookies

- -b "name=value" - Send cookie

- -b cookies.txt - Read cookies from file

- -c cookies.txt - Save cookies to file

- -c - - Print cookies to stdout

## SSL/TLS

- -k - Ignore SSL errors

- --cacert file - CA certificate

- --cert file - Client certificate

- --key file - Private key

- --tlsv1.2 - Force TLS 1.2

- --tlsv1.3 - Force TLS 1.3

## Proxy

- -x proxy:port - HTTP proxy

- -x socks5://proxy:port - SOCKS5 proxy

- --proxy-user user:pass - Proxy auth

- --noproxy "localhost" - Bypass proxy

## Redirects & Timeouts

- -L - Follow redirects

- --max-redirs N - Max redirects

- --connect-timeout N - Connection timeout

- -m N - Max time for operation

- --retry N - Retry count

## Common Examples

### Simple GET

    curl https://api.example.com/data

Basic GET request.

### POST JSON

    curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data

POST JSON data.

### Download File

    curl -O https://example.com/file.zip

Download and save with original name.

### With Auth

    curl -u admin:password https://api.example.com/admin

Basic authentication.

### Headers Only

    curl -I https://example.com

Get response headers only.

### Verbose Debug

    curl -v https://example.com

See full request/response details.

### Follow Redirects

    curl -L https://example.com/redirect

Follow HTTP redirects.

### Upload File

    curl -F "file=@/path/to/file.txt" https://example.com/upload

Upload file via form.

### Status Code Only

    curl -s -o /dev/null -w "%{http_code}" https://example.com

Get only HTTP status code.

### Through Proxy

    curl -x http://proxy:8080 https://example.com

Route through HTTP proxy.

### Save Cookies

    curl -c cookies.txt -b cookies.txt https://example.com/login

Manage session cookies.

### API Token

    curl -H "Authorization: Bearer eyJhbGc..." https://api.example.com/user

Request with bearer token.

## Write-Out Variables

Use with -w option:

- %{http_code} - HTTP status code
- %{time_total} - Total time
- %{time_connect} - Time to connect
- %{size_download} - Downloaded bytes
- %{speed_download} - Download speed
- %{url_effective} - Final URL
- %{redirect_url} - Redirect URL

## Tips

- Use -s for scripts (silent mode)

- Use -v to debug connection issues

- Use -L to handle redirects automatically

- Use -k only for testing (insecure)

- Combine -sS for silent but show errors

- Use @filename to read data from files

- Essential for API testing and debugging

- Supports many protocols beyond HTTP

← Back to cheatsheets

← Home