"tool":"dummy-json-api"

A mock REST API that acts like a real one

Point fetch, axios, or curl at a live endpoint and get real JSON back — full GET, POST, PUT, and DELETE support, no signup, no API key, and nothing to run locally. Built for the moment your frontend is ready before your backend is.

Currently handling a large number of requests each month for developers who’d rather not wait on a backend team.

GET /api/dummy → 200 OK
[
  {
    "id": 1,
    "name": "Max",
    "species": "Bald Eagle",
    "age": 6,
    "habitat": "Forests & Mountains",
    "diet": "Carnivore",
    "conservationStatus": "Least Concern"
  }
]
"section":"overview"

What you're actually looking at

Dummy JSON API is one hosted endpoint — /api/dummy — that answers with realistic JSON and accepts the same four HTTP methods a production API would: GET, POST, PUT, and DELETE. There's no dashboard to configure and no schema to register ahead of time. You send a request, you get JSON back, and you carry on building whatever you actually opened your editor to build.

The example payload on this page uses animal-style records — name, species, age, habitat, diet, and conservation status — but that's just the demo data. The endpoint is intentionally schema-flexible, so you can send whatever JSON shape your app actually needs to practice against.

No setup

No signup, no API key, no Docker container to keep running while you work.

Full CRUD

All four core HTTP methods are wired up, so you can practice more than just read-only calls.

Plain JSON

Works with anything that speaks HTTP — fetch, axios, curl, Postman, or a language you're still learning.

"section":"how-it-works"

Four steps, no setup screen

This is the whole workflow — there isn't a hidden fifth step where you configure something.

01 Point your code at the base URL 02 Send a GET, POST, PUT, or DELETE 03 Get a real JSON response back 04 Build, test, or teach with what comes back
"section":"connection-details"

Base URL & authentication

base url
https://dummy-json-api-sigma.vercel.app
authentication
No API key. No auth header.
Send the request, get JSON back.
"section":"endpoints"

Every method at a glance

One base path, four methods. Bookmark this table before you bookmark anything else on the page.

MethodPathWhat it does
GET/api/dummyReturn the current list of mock records
POST/api/dummyAdd a new record with your own JSON body
PUT/api/dummy/:idReplace an existing record by its id
DELETE/api/dummy/:idRemove a record by its id
"section":"try-it-live"

Run each request from this page

These buttons fire real requests at the live API. Open your browser console if you want to watch it happen there too.

GET

Get all records

/api/dummy

request
const response = await fetch("https://dummy-json-api-sigma.vercel.app/api/dummy");
if (!response.ok) {
  throw new Error(`HTTP error! Status: ${response.status}`);
}
const users = await response.json();
POST

Add a record

/api/dummy

request
const response = await fetch("https://dummy-json-api-sigma.vercel.app/api/dummy", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    name: "Max",
    species: "Bald Eagle",
    age: 6,
    habitat: "Forests & Mountains",
    diet: "Carnivore",
    conservationStatus: "Least Concern"
  })
});
const data = await response.json();
PUT

Update a record

/api/dummy/:id — the sample below uses id 1

request
const id = 1; // swap in any id returned by GET
const response = await fetch(`https://dummy-json-api-sigma.vercel.app/api/dummy/${id}`, {
  method: "PUT",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    name: "Max",
    species: "Bald Eagle",
    age: 7,
    habitat: "Forests & Mountains",
    diet: "Carnivore",
    conservationStatus: "Least Concern"
  })
});
const data = await response.json();
DELETE

Remove a record

/api/dummy/:id — the sample below uses id 1

request
const id = 1; // swap in any id returned by GET
const response = await fetch(`https://dummy-json-api-sigma.vercel.app/api/dummy/${id}`, {
  method: "DELETE"
});
const data = await response.json();

Wrap real usage in try/catch and use async/await — the same as you would against any production API.

"section":"field-reference"

What's inside the demo record

Here's what each field in the example payload represents, in case you're mapping it to your own UI.

FieldTypeExampleNotes
namestring"Max"Display name of the record
speciesstring"Bald Eagle"Free-text category label
agenumber6Whole number, no units attached
habitatstring"Forests & Mountains"Free-text description
dietstring"Carnivore"Free-text description
conservationStatusstring"Least Concern"Free-text status label
"section":"use-cases"

Where this actually gets used

Frontend work, backend not ready yet

Your product list, form, or dashboard needs real requests to feel real. Wire the UI to this endpoint first, then swap the base URL once your actual API exists. You can rough out the markup and styling in our HTML, CSS & JS playground while you're at it.

Learning HTTP and REST

Status codes, methods, headers, and response bodies make a lot more sense once you've actually sent a request and watched what comes back, instead of just reading about it.

QA and test-automation practice

Point a test script at a target that won't complain, break, or need seeding before every run. Handy for practicing assertions before you aim them at something that matters.

Teaching and workshops

No signup step means no one gets stuck creating an account fifteen minutes into a lesson. Everyone hits the same URL and sees the same shape of data.

Placeholder — replace with your own screenshot of a request/response pair or a workshop/classroom setting
screenshot of a request/response pair or a workshop/classroom setting.
"section":"how-it-compares"

How this stacks up against the other options

There's no single best mock API — it depends on whether you want fixed resources or a blank slate.

ToolSetupData shapeBest for
Dummy JSON API None One flexible endpoint, any JSON shape Quick CRUD practice without deciding on a schema first
JSONPlaceholder None Fixed resources — posts, comments, albums, users Practicing against realistic, blog-style content
Reqres None Fixed user records Login and user-management UI mockups
Mockaroo Define a schema first Custom, generated at scale Bulk sample data or CSV exports for a specific structure
"section":"faq"

Questions people actually ask

It's a single hosted endpoint, /api/dummy, that responds with realistic JSON and accepts GET, POST, PUT, and DELETE requests. It exists so you can build and test against something that behaves like a real backend without actually running one.

No. There's no signup, no API key, and no authentication header to set. Point a request at the base URL and it responds.

Yes. It's built for learning, prototyping, and testing, and there's no paid tier to unlock.

Treat the dataset as shared and temporary. It's meant for practicing request and response shapes, not for storing anything you actually need to keep.

Yes. The demo payload uses animal-style fields just as an example — the endpoint isn't locked to that schema.

JSONPlaceholder gives you several fixed resources like posts and users. Dummy JSON API gives you one flexible endpoint instead, which is simpler when you just need somewhere to send arbitrary CRUD requests.

"section":"more-tools"

More free tools on RunCodeDev

If this page got you mid-project, these are the other tools people usually reach for next.