1 Postman Basics
Postman is one of the most useful tools for learning and troubleshooting APIs — it lets you construct an API request (method, URL, parameters, authorization, headers, body) without writing an application. A basic GET: enter GET https://jsonplaceholder.typicode.com/users/1 and press Send, then inspect the status code, response time, response headers, and response body. To send JSON, create a POST request, choose Body → raw → JSON, and enter something like {"username": "student01", "department": "Security"} — Postman normally sets Content-Type: application/json automatically, but verify it rather than just trusting the UI.
The real value shows up in troubleshooting. Suppose an application reports "API authentication isn't working." Rather than immediately changing the application, reproduce the same call independently in Postman:
Application fails → Try the same request in Postman
If Postman works, the API is probably available and the credentials probably valid — the application's own request likely differs from what you assumed it was sending. If Postman also fails, the problem is genuinely upstream: investigate the API, authentication, network, account, permissions, or configuration. This single technique — isolating "is it the app, or is it the API?" — is one of the most useful moves in this entire module.
2 Authorization & Environments in Postman
Postman supports No Auth, API Key, Bearer Token, Basic Auth, OAuth 2.0, Digest Auth, and AWS Signature, among others. Understand the raw HTTP underneath the UI, too — Postman might show you a "Bearer Token" field, but what actually travels over HTTP is just Authorization: Bearer abc123. Knowing that prevents the tool itself from becoming a black box you can't reason about without it.
Enterprise engineers routinely work across Development, Test, UAT, Staging, Production and Disaster Recovery. Instead of editing every URL by hand, use variables: {{baseUrl}}/api/users, with baseUrl set per environment (https://dev-api.example.com, https://uat-api.example.com, https://api.example.com). This is genuinely useful — but it introduces real risk. Always verify the active environment before sending POST, PATCH, PUT or DELETE requests. You do not want a test deletion accidentally landing on production because a dropdown was left on the wrong setting.
3 curl
Learn curl even if Postman is your primary lab tool — servers don't always have graphical interfaces. When troubleshooting Linux systems, containers, cloud servers, or production infrastructure, curl may already be sitting there and Postman won't be.
curl https://api.example.com/users/100
With headers:
curl \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
https://api.example.com/users/100
A POST request:
curl -X POST \
https://api.example.com/users \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "student01",
"department": "Security"
}'
One of the most useful troubleshooting commands is verbose curl:
curl -v https://api.example.com
Verbose output can reveal DNS resolution, the TCP connection, TLS negotiation, certificate information, the actual HTTP request sent, the response, headers, and redirects — a genuinely complete picture of the whole transaction. Be careful when sharing verbose output, though: it can contain authorization tokens, cookies, internal hostnames, IP addresses, and other sensitive headers that shouldn't end up in a shared ticket or chat message unredacted.
4 Parsing JSON: jq & PowerShell
Linux engineers frequently reach for jq:
curl -s https://api.example.com/users | jq
curl -s https://api.example.com/users | jq '.[].username'
"jsmith"
"agarcia"
"mrossi"
Windows administrators should understand PowerShell's native REST support instead:
$response = Invoke-RestMethod `
-Uri "https://api.example.com/users" `
-Method GET
$response
$response.username
$response | Where-Object {$_.enabled -eq $true}
This is the moment API knowledge connects directly to the PowerShell module later in the course — a JSON API response becomes structured PowerShell data immediately, ready to filter, script, and automate against.
5 Pagination & Rate Limiting
Large APIs can't return millions of records in one response, so they paginate:
GET /users?page=1&limit=100
{
"page": 1,
"pageSize": 100,
"total": 8532,
"users": []
}
Or a cursor-based style: {"next": "/users?cursor=eyJpZCI6MTAwMH0="}. Recognise that GET /users returning 100 users doesn't mean only 100 users exist — this matters enormously when writing audit or security scripts, where silently missing 8,000 of 8,500 users because you stopped at the first page can produce a dangerously incomplete result that looks complete.
Cloud services frequently rate-limit usage, e.g. 1,000 requests per minute; exceeding it returns 429 Too Many Requests (Lesson 2). Clients should implement sensible retries. Bad: fail, retry immediately, retry immediately, retry immediately — this can make an outage worse by hammering an already-struggling service. Better: fail, wait, retry, increase the wait, retry — known as exponential backoff.
6 API Versioning, Deprecation & OpenAPI
APIs evolve. Versioning methods include path-based (/api/v1/users, /api/v2/users), header-based (Accept: application/vnd.company.v2+json), or query-based (/users?api-version=2026-01-01). Large organisations often run multiple versions simultaneously because thousands of dependent systems can't all migrate at once — a legacy CRM might still call API v1 while a mobile app calls v2 and a new platform calls v3. Support engineers must always verify which version is actually being used before assuming behaviour.
APIs eventually get deprecated: an announcement, then End of Support, then disabled entirely. Global enterprises may need months or years to migrate because integrations span countries, business units, vendors, mobile apps, banking platforms, and legacy systems — API lifecycle management is a genuine architectural concern, not an afterthought.
Modern APIs often ship machine-readable documentation via the OpenAPI Specification, describing endpoints, methods, parameters, authentication, request/response bodies, schemas and status codes — you'll encounter swagger.json, openapi.json, or openapi.yaml. OpenAPI 3.2.0 is among the current published specification versions as of 2026. An interactive Swagger interface can let you test GET /users, POST /users, GET /users/{id} and DELETE /users/{id} directly from the documentation itself — genuinely useful when you're exploring an API you've never touched before.
Lesson Outcome
You should now be able to use Postman to reproduce and isolate an API failure, use curl (including verbose mode) from a command line with no GUI available, parse JSON with jq or PowerShell, explain why pagination means "100 results" doesn't mean "100 total," explain exponential backoff, and describe how APIs version and eventually deprecate. Lesson 5 zooms out to the infrastructure sitting in front of the API itself — gateways, WAFs, proxies, and the older protocols you'll still meet in real enterprises.