| name | curl-http |
| description | API testing with curl and httpie for HTTP requests. Use when user asks to "test API", "make HTTP request", "curl POST", "send request", "test endpoint", "debug API", or make any HTTP calls from command line. |
curl & HTTPie
Command-line HTTP clients for API testing.
curl Basics
GET Request
curl https://api.example.com/users
curl -s https://api.example.com/users
curl -i https://api.example.com/users
POST Request
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"John","email":"john@example.com"}'
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @data.json
Headers & Auth
curl -H "Authorization: Bearer token123" https://api.example.com
curl -u username:password https://api.example.com
curl -H "Content-Type: application/json" \
-H "X-API-Key: key123" \
https://api.example.com
Other Methods
curl -X PUT https://api.example.com/users/1 \
-H "Content-Type: application/json" \
-d '{"name":"Updated"}'
curl -X PATCH https://api.example.com/users/1 \
-d '{"status":"active"}'
curl -X DELETE https://api.example.com/users/1
File Upload
curl -X POST https://api.example.com/upload \
-F "file=@photo.jpg" \
-F "description=My photo"
curl -X POST https://api.example.com/upload \
--data-binary @file.bin \
-H "Content-Type: application/octet-stream"
Useful Options
-v
-s
-o file
-O
-L
-k
-w '\n'
--max-time 10
HTTPie (Friendlier Alternative)
GET Request
http https://api.example.com/users
http GET api.example.com/users
POST Request
http POST api.example.com/users name=John email=john@example.com
http POST api.example.com/users name=John age:=30 active:=true
Headers & Auth
http api.example.com Authorization:"Bearer token"
http -a user:pass api.example.com
http api.example.com "Authorization: Bearer token"
Output Control
http -h api.example.com
http -b api.example.com
http -p Hh api.example.com
Common Patterns
Test Response Code
status=$(curl -s -o /dev/null -w "%{http_code}" https://api.example.com)
echo "Status: $status"
if curl -s -f https://api.example.com > /dev/null; then
echo "Success"
fi
Pretty Print JSON
curl -s https://api.example.com | jq .
curl -s https://api.example.com | python -m json.tool
Save Response & Headers
curl -D headers.txt -o response.json https://api.example.com
Retry on Failure
curl --retry 3 --retry-delay 2 https://api.example.com
Timing Info
curl -w "Time: %{time_total}s\n" -o /dev/null -s https://api.example.com
GraphQL
curl -X POST https://api.example.com/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ users { id name } }"}'
Debug
curl -v https://api.example.com
curl --trace - https://api.example.com
curl -I https://api.example.com