A real REST API for data
that doesn't exist yet

Define your resources, get a live CRUD API with realistic fake data in seconds. REST + GraphQL, mock auth, request bins, snapshots β€” CORS-enabled and free. No signup wall: you reach for a mock API in the ten minutes you're annoyed enough to look, so your first working endpoint is one curl β€” or one click β€” away.

Open dashboard


  
# live public playground β€” try it right now, no signup:
$ curl "https://HOST/m/demo/products?limit=2"
$ curl "https://HOST/m/demo/orders?status=shipped&_expand=customer"
$ curl "https://HOST/m/demo/products/3/reviews"

The demo project is a shared sandbox (e-commerce preset: products, orders, customers, reviews). Writes welcome β€” it resets every 24 h.

⚑ Instant

One click gives you a live endpoint seeded with realistic data β€” names, emails, prices, images, dates. No LLM, no waiting.

πŸ” Full CRUD

GET, POST, PUT, PATCH, DELETE all work. Pagination, sorting, search and field filters built in β€” exact, range and substring: ?price_gte=100&name_like=chair&sortBy=price&order=desc. Need {"data":[…],"total":n} instead of a bare array? Response envelopes match your real API's shape β€” mockapi.io sells that, here it's free.

🎁 Actually generous

20 projects, 20 resources each, 1000 records per resource, 10k requests per project per day. Free while in beta.

🌐 CORS everywhere

Call it straight from localhost, CodePen, or your deployed frontend. No proxy needed, no API key required for reads.

πŸ§ͺ Chaos on demand

Test spinners and error states: ?mock_delay=2000, ?mock_status=500 β€” or real chaos injection: ?mock_chaos=0.3 randomly fails 30% of requests, ?mock_jitter=100-1500 adds random latency. Test retry & backoff logic. WireMock charges Enterprise for this.

πŸ—‘οΈ httpbin, but up

Scripts hardcoding httpbin.org? Swap the host: /m/httpbin/get, /status/503, /delay/3, /anything, /basic-auth… β€” same paths, same response shapes, no signup. Guide β†’

πŸ” Request inspector

See the last 50 requests hitting your endpoints β€” method, path, status, origin, body and headers (webhook signatures included) β€” live in the dashboard. Add a catch-all /* route and it's a free request bin: a webhook.site alternative with no 100-request cap.

✏️ Data browser

Inspect and edit your mock records right in the dashboard β€” table view, JSON editor, add and delete rows without leaving the page.

πŸ“‹ Copy-paste ready

Every resource comes with ready-made fetch, axios and curl snippets, plus one-click JSON export of all your data.

πŸ“œ OpenAPI + Postman built in

Every project serves a live OpenAPI 3.0 spec at /openapi.json and a ready-to-import Postman collection at /postman.json β€” Import β†’ Link in Postman (Insomnia and Hoppscotch too) and every CRUD request is set up with example bodies. Docs β†’

🧬 TypeScript & Zod export

curl -o api.ts .../types.ts β€” ready-to-paste TypeScript interfaces for every resource, or Zod schemas with ?format=zod (.email(), .uuid(), literal unions for enums). No codegen tooling, always in sync with your mock. Docs β†’

πŸ—οΈ One-click backends

Project presets spin up an entire fake backend at once: Blog, E-commerce or SaaS β€” multiple linked resources, seeded and live in seconds.

πŸ–ΌοΈ Placeholder images

Every project serves its own placeholder images: /img/300x200?text=Product β€” SVG, any size, colors, avatar circles. Seeded image and avatar fields point at them automatically, so your product grid renders pictures with zero setup and no third-party image service. Docs β†’

πŸͺ Webhooks

Fire signed webhooks (HMAC-SHA256) at your own endpoint on every create, update or delete β€” build and debug your webhook consumer before the real event source exists. Delivery log included.

πŸ“₯ OpenAPI, db.json, Postman, HAR + CSV import

Paste your real API's OpenAPI/Swagger spec (JSON or YAML) and get a live mock of it in one request β€” schema-aware fake data, enums kept, $refs resolved. POST your json-server db.json and we host your exact data. Import a Postman collection: saved example responses become the hosted records. POST a DevTools HAR export and the JSON responses your app really received become the records β€” record real traffic, replay it as a mock. Or POST a CSV β€” every row becomes a record, header row becomes the fields: a spreadsheet turns into a REST+GraphQL API in one curl. And it round-trips β€” GET /m/<id>/db.json exports everything back, so there's no lock-in. Docs β†’

⬑ GraphQL too

Every project is also a GraphQL API at /graphql β€” typed schema generated from your resources, relations, filters, mutations, full introspection. Open it in a browser for a built-in GraphiQL IDE. Try it on the demo β†’

πŸ” Mock auth & JWT

A fake login flow that behaves like a real one: /auth/login accepts any email+password and returns a signed JWT that actually expires. Flip on protected mode and every endpoint 401s without a token β€” test auth guards, interceptors and expiry logic with zero backend. Docs β†’

πŸ“Έ Scenario snapshots

Save the entire data state under a name, let your tests trash it, restore in one call β€” or serve any snapshot per-request with the X-Mockbird-Snapshot header, so parallel test workers each pin their own scenario on one project. Docs β†’

πŸ›£οΈ Custom routes

Beyond CRUD: define your own endpoints β€” /health, /config/:key, a 418 /teapot β€” with templated responses that echo {{query.x}}, {{body.x}} and path params back. Custom routes even override generated ones, and a trailing * makes a catch-all that accepts any path. Beeceptor's paid rules engine, free. Docs β†’

πŸ€– MCP server for coding agents

Point Claude Code, Cursor or VS Code at /mcp and your agent gets mock backends as tools: β€œspin up an ecommerce mock and wire my frontend to it” is one tool call. Hosted MCP (Streamable HTTP), no signup, no OAuth dance β€” and the resulting API is plain HTTP your generated code can ship with. Docs β†’

πŸ”— Real relations

Join resources like json-server: ?_expand=customer pulls in the parent, ?_embed=comments attaches the children β€” or go path-style with /posts/1/comments. One request, nested data.

Why not the alternatives?

Mockbirdmockapi.ioBeeceptorJSONPlaceholder
Try without signupβœ”βœ˜βœ”βœ”
Custom schemaβœ”βœ”~✘
Free projects201limitedβ€”
Free requests10k/day/projectok50/dayβœ”
Realistic seeded dataβœ”βœ”βœ˜fixed
Request inspectorβœ” freeβœ˜βœ” (their paid core)✘
Outbound webhooksβœ” free, signed✘paid✘
Import OpenAPI specβœ” JSON+YAML✘✘✘
Import json-server db.json (your data)βœ”βœ˜βœ˜βœ˜
Import Postman collection (examples become records)βœ”βœ˜βœ˜βœ˜
CSV β†’ hosted API (rows become records)βœ”βœ˜βœ˜βœ˜
HAR import (record traffic β†’ replay as mock)βœ”βœ˜βœ˜βœ˜
GraphQL endpoint + GraphiQLβœ” REST & GraphQL, same data✘✘✘
Mock JWT auth / protected modeβœ” real signed tokens✘✘✘
Custom routes + response templatingβœ” free✘paid✘
Save / restore data snapshotsβœ” 10 per project✘✘✘
Request bin (catch-all /* + header capture)βœ” 10k/day, no expiry✘~✘
TypeScript types + Zod schemas exportβœ” /types.ts✘✘✘
Postman collection exportβœ” /postman.json✘✘✘
Response envelope reshapingβœ” free β€” ?mock_envelope= or project defaultpaid✘✘
Placeholder images (self-hosted, no third-party)βœ” /img/300x200, seeded fields use them✘✘✘
MCP server (agents create & drive mocks as tools)βœ” hosted, no auth✘✘✘