Sending Your First GET Request

8 min read

You've got Postman installed and you can name every region of the window. Time to make a real API call. This lesson walks you through your first GET request against a public test API — including path parameters, query parameters, and how to save the request so you don't have to retype it tomorrow. The API itself is dead simple: JSONPlaceholder, a free fake REST API that returns realistic data and never charges or fails on you. We'll use it throughout the course.

Sending the request — the four-step rhythm

Every Postman request follows the same rhythm: pick a method, type the URL, click Send, read the response. Today's request is a GET against https://jsonplaceholder.typicode.com/users.

Step 1 of 5

Open a tab

Press Cmd/Ctrl+T or click the + on the tabs row. The method dropdown defaults to GET, which is exactly what we want.

If you got a 200 OK and a list of ten user objects, congratulations — you just made an API call. Now let's read what came back.

Reading the response

The response panel has more information than first-timers notice. Working from left to right along the top:

  • Status200 OK in a green pill. Green = 2xx success, yellow = 3xx redirect, orange/red = 4xx/5xx error. (You met these in the HTTP Methods, Status Codes, and Headers lesson of the API Testing Masterclass.)
  • Time — milliseconds the server took to reply. 245 ms is normal for a public API; anything north of 1 second is worth a second look.
  • Size — total bytes (headers + body). 5.6 KB for ten users is reasonable.

Below that, four tabs: Body, Cookies, Headers, Test Results. Body is the one you'll use 90% of the time. It has its own toggle:

  • Pretty — formatted, syntax-highlighted JSON. The default; the view you'll use most.
  • Raw — the bytes as they arrived, one long line. Useful when checking exact whitespace or non-printing characters.
  • Preview — renders HTML. If an API returns an HTML error page instead of JSON (e.g. behind a load balancer that returned a 502 page), this is where you'll see it.

Click each toggle once to feel the difference. Pretty is your default; the other two are situational.

GET with a path parameter

Most REST APIs let you ask for one specific resource by appending its ID to the URL. Change the URL to https://jsonplaceholder.typicode.com/users/1 and click Send again. You'll now get a single user object instead of an array of ten:

{
  "id": 1,
  "name": "Leanne Graham",
  "username": "Bret",
  "email": "Sincere@april.biz",
  ...
}

The /1 is a path parameter — part of the URL path that names a specific resource. Try /users/2, /users/10, /users/999. The first two return data; the third returns an empty object (JSONPlaceholder's stand-in for "not found"). On a real API, /users/999 would return 404 Not Found.

GET with query parameters — two ways

Query parameters live after a ? in the URL: ?key=value&otherKey=otherValue. They're how you filter, paginate, and sort. Postman gives you two equivalent ways to set them.

Option 1: type them in the URL.

https://jsonplaceholder.typicode.com/posts?userId=1

Postman auto-detects the ?userId=1 and copies it into the Params tab.

Option 2: use the Params tab. Click Params (just under the URL bar). Type userId into the Key column and 1 into the Value column. Postman builds the URL for you. This is the cleaner approach when you have several parameters or values with special characters that would need URL-encoding.

Try both with https://jsonplaceholder.typicode.com/posts?userId=1 — the response should be all posts authored by user 1 (ten of them). Add a second parameter _limit=3 and re-send; you'll get only three posts back. JSONPlaceholder supports several conventional query keys (_limit, _start, _sort) for testing pagination.

The Headers tab

Click the Headers tab. You'll see a list of headers Postman is sending automatically — User-Agent: PostmanRuntime/..., Accept: */*, Cache-Control, Postman-Token, Host. Most of the time you don't touch these. When you start dealing with auth in Chapter 4 you'll add an Authorization header here.

To add one yourself: click an empty row, type a key (e.g. Accept-Language), tab to the value column, type a value (e.g. en-GB). Postman appends it to the request. Untick the checkbox to disable a header without deleting it.

Saving the request to a collection

A request that exists only in a tab disappears when you close the tab. To keep it around: press Cmd/Ctrl+S (or click Save next to the URL bar). A dialog appears. Two fields matter:

  • Request name — give it a verbose, scannable name. GET All Users beats Untitled Request. The convention is METHOD <what it does>.
  • Save to — pick a collection or create one. For now, click + Create Collection, name it JSONPlaceholder Practice, and save into it.

Your saved request now appears in the Collections sidebar on the left. Click it once to reopen it; you can run the exact same call days later without retyping anything.

A small QA exercise

Spend two minutes feeling out the API:

GET https://jsonplaceholder.typicode.com/users        → 10 users
GET https://jsonplaceholder.typicode.com/users/1      → user with id=1
GET https://jsonplaceholder.typicode.com/users/1/posts → all posts authored by user 1
GET https://jsonplaceholder.typicode.com/posts?userId=1&_limit=3 → first 3 posts by user 1

Same Postman tab, four URLs, four different shapes of response. That's the whole point of GET — you ask, the server tells you. Nothing changes on the server.

⚠️ Common mistakes

  • Wrong protocol or trailing slash. http:// instead of https:// will fail (or get redirected). A stray space after the URL — copy-pasted from chat — produces a 404 with a confusing error. Click the URL bar and check the start and end characters.
  • Treating an empty {} as a 404. JSONPlaceholder returns an empty object for missing IDs with status 200 OK. On a real API, missing resources should return 404. Always check the status code, not just the body.
  • Confusing query params with body. Query parameters live in the URL (?userId=1); a request body is a separate thing (covered in the next lesson). GET requests don't have a body — Postman lets you set one, but most servers will ignore it.

🎯 Practice task

Get fluent with GET. 20-25 minutes.

  1. In your JSONPlaceholder Practice collection, save four GET requests with descriptive names:
    • GET All Users/users
    • GET User by ID/users/1
    • GET Posts by User/posts?userId=1
    • GET Comments on Post/posts/1/comments
  2. Run each one. For each response, write down (in a notebook or scratch file) the status code, time, size, and the number of items returned.
  3. On GET Posts by User, switch to the Params tab. Add _limit=3 as a second param. Re-send. Confirm the response has only three items.
  4. Open the Headers tab on the response (not the request). Identify the Content-Type and the Cache-Control headers. The Content-Type should be application/json; charset=utf-8.
  5. Open the Postman Console (Cmd/Ctrl+Alt+C). Re-send any request. Find the resolved request URL in the console output. Notice it's the exact URL with all params expanded — the most reliable single thing you can look at when debugging.
  6. Stretch: find another free public API (e.g. reqres.in or restful-booker.herokuapp.com). Make a GET request to its /users or /booking endpoint. Read the response shape — is it an array, an object with a wrapper key, or paginated?

You can now read any GET endpoint in Postman. The next lesson covers the four verbs that change state: POST, PUT, PATCH, and DELETE — and the body formats they need.

// tip to track lessons you complete and pick up where you left off across devices.