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://mockbird.mockbird.workers.dev/m/demo/products?limit=2"
$ curl "https://mockbird.mockbird.workers.dev/m/demo/orders?status=shipped&_expand=customer"
$ curl "https://mockbird.mockbird.workers.dev/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.
One click gives you a live endpoint seeded with realistic data β names, emails, prices, images, dates. No LLM, no waiting.
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. Testing infinite scroll? ?mock_cursor=1 serves Stripe-style next_cursor pages.
20 projects, 20 resources each, 1000 records per resource, 10k requests per project per day. Free while in beta.
Call it straight from localhost, CodePen, or your deployed frontend. No proxy needed, no API key required for reads.
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. ?mock_ratelimit=5 simulates a real per-IP rate limit (429 + Retry-After + live x-ratelimit-* countdown headers). Prefer determinism? ?mock_seq=503,503,200 fails exactly twice, then succeeds β WireMock's "scenarios", as a query param. WireMock charges Enterprise for this.
Any list can stream: ?mock_sse=1 serves real Server-Sent Events (one event per record + a done event), ?mock_stream=1 serves NDJSON β paced with ?mock_stream_interval=300. Test EventSource clients, fetch-stream readers and progressive rendering against a hosted URL. Docs
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 β
fakerapi.it has been 502ing since Aug 2026. Swap the host: /m/fakerapi/api/v2/persons, products, custom?name=firstNameβ¦ β same params (_quantity/_seed/_locale), same envelope, no signup. Guide β
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.
Inspect and edit your mock records right in the dashboard β table view, JSON editor, add and delete rows without leaving the page.
Every resource comes with ready-made fetch, axios and curl snippets, plus one-click JSON export of all your data.
Every project serves a live OpenAPI 3.0 spec at /openapi.json, a ready-to-import Postman collection at /postman.json β Import β Link in Postman (Insomnia and Hoppscotch too) β and a ready-to-run /requests.http file for the VS Code REST Client, JetBrains HTTP Client and Thunder Client: save it, click Send Request. Docs β
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 β
Project presets spin up an entire fake backend at once: Blog, E-commerce or SaaS β multiple linked resources, seeded and live in seconds.
Every project has wss://β¦/ws (an echo server β goodbye, dead echo.websocket.events β that also streams your own records as a mock realtime feed) and /sse for browser EventSource, reconnect-aware via Last-Event-ID. ?subscribe=products&interval=500&repeat=1 and your ticker UI has live data. Docs β
Every project serves its own placeholder images: /img/300x200?text=Product β SVG or PNG (.png), any size, colors, avatar circles + identicons, even dynamic Open Graph social cards (/og?title=β¦ β a paste-able og:image URL), scannable QR codes (/qr?data=β¦) and chart images from numbers in the URL (/chart?data=3,7,4,9 β line/bar/sparkline, no chart library). Seeded image and avatar fields point at them automatically, so your product grid renders pictures with zero setup and no third-party image service. Playground β Docs β
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.
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. POST a VCR / vcrpy cassette and the recorded responses become the records too (headers β including any recorded credentials β are discarded, with a warning so you know to rotate them). 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. Even a bare JSON array works β host any JSON file as a queryable API, no signup, no API key. And it round-trips β GET /m/<id>/db.json exports everything back, and any list GET returns CSV with ?mock_format=csv, so there's no lock-in in either format β GET /m/<id>/msw.js even ejects to a ready-made MSW v2 handlers module with your data baked in. Docs β
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 β
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 β
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 β
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 β
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 β
Mock some endpoints, pass the rest through to your real API: set proxyBase and any path you haven't mocked is forwarded upstream β auth header, body and all β while your defined resources keep serving mock data. Mirage's passthrough, hosted; and ?mock_chaos works on proxied paths without touching the real API. Flip on recording and proxied responses are saved as routes and replayed locally β record & replay, free. Docs β
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.
Not just mocks: POST any public URL + a webhook and we check it every 30 min from the edge β one alert on down, one on recovery, plus a public status page, README badge and Atom feed. Cron jobs flip the direction: a heartbeat gives your job a secret ping URL and alerts when check-ins stop. One curl each, no account. Guide β
| Mockbird | mockapi.io | Beeceptor | JSONPlaceholder | |
|---|---|---|---|---|
| Try without signup | β | β | β | β |
| Custom schema | β | β | ~ | β |
| Free projects | 20 | 1 | limited | β |
| Free requests | 10k/day/project | ok | 50/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) | β | β | β | β |
CSV export of any list (?mock_format=csv) | β | β | β | β |
| HAR import (record traffic β replay as mock) | β | β | β | β |
| VCR / vcrpy cassette import (cassette β hosted 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 | β | β | β |
| .http file export (VS Code / JetBrains) | β /requests.http | β | β | β |
| Response envelope reshaping | β free β ?mock_envelope= or project default | paid | β | β |
Cursor pagination (Stripe-style next_cursor) | β ?mock_cursor=1 | β | β | β |
Write validation (real 422 field errors) | β ?mock_validate=1 or project default | β | β | β |
| Placeholder images (self-hosted, no third-party) | β /img/300x200, seeded fields use them | β | β | β |
| MCP server (agents create & drive mocks as tools) | β hosted, no auth | β | β | β |
| WebSocket + SSE endpoints (echo + your records as a live feed) | β wss://β¦/ws + /sse | β | β | β |
| Streaming mocks (SSE + NDJSON) | β ?mock_sse=1 / ?mock_stream=1 | β | β | β |
| Proxy fallback (unmatched paths β your real API) | β free, 10k/day | β | ~ 50 req/day | β |
| Record proxied traffic β replayable stubs | β free | β | ~ 50 req/day | β |