How to hit the JSONPlaceholder API

JSONPlaceholder at https://jsonplaceholder.typicode.com is a fake REST API with posts, comments, users, and todos. It answers every method like a real API, which makes it the standard sandbox for trying out HTTP clients. Every example below runs as-is.

Authentication

None. Writes are faked: POST, PATCH, and DELETE return what a real API would, but nothing is saved — fetch the same resource again and it's unchanged.

Full reference: https://jsonplaceholder.typicode.com/guide/

Get one resource

Resources: /posts, /comments, /albums, /photos, /todos, /users.

curl https://jsonplaceholder.typicode.com/posts/1
Run in PostTaco
Example response (trimmed)
{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

Filter and limit a list

Any field works as a query filter; _limit, _page, and _sort are built in.

curl "https://jsonplaceholder.typicode.com/posts?userId=1&_limit=2"
Run in PostTaco
Example response (trimmed)
[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  }
]

Nested route

Child resources hang off their parent: a post's comments, a user's todos.

curl "https://jsonplaceholder.typicode.com/posts/1/comments?_limit=2"
Run in PostTaco
Example response (trimmed)
[
  {
    "postId": 1,
    "id": 1,
    "name": "id labore ex et quam laborum",
    "email": "[email protected]",
    "body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
  },
  {
    "postId": 1,
    "id": 2,
    "name": "quo vero reiciendis velit similique earum",
    "email": "[email protected]",
    "body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
  }
]

Create (POST JSON)

Returns 201 with your object and a new id. Always 101 — nothing is actually stored.

curl -X POST https://jsonplaceholder.typicode.com/posts \
  -H "Content-Type: application/json" \
  -d '{"title": "Hello", "body": "From PostTaco", "userId": 1}'
Run in PostTaco
Example response (trimmed)
{
  "title": "Hello",
  "body": "From PostTaco",
  "userId": 1,
  "id": 101
}

Partial update (PATCH)

Send only the fields that change; the response is the merged object.

curl -X PATCH https://jsonplaceholder.typicode.com/posts/1 \
  -H "Content-Type: application/json" \
  -d '{"title": "Updated title"}'
Run in PostTaco
Example response (trimmed)
{
  "userId": 1,
  "id": 1,
  "title": "Updated title",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

Delete

Returns 200 with an empty object.

curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
Run in PostTaco
Example response (trimmed)
{}