← All guides

A free Postman mock server alternative β€” 10,000 requests/day, and it's stateful

Postman's built-in mock servers are great for a quick demo, but the free plan caps them at 1,000 calls per month β€” one frontend polling every few seconds burns through that in an hour. And they're example-based: they replay saved responses, so a POST doesn't actually create anything and the next GET won't reflect it. Mockbird gives you a stateful mock REST API β€” creates persist, deletes disappear, filters filter β€” with 10,000 requests/day per project, free. And because every project exports a native Postman collection, you keep working in Postman.

Try it in 10 seconds (no signup)

Import the shared demo project into Postman right now: Import β†’ paste this link:

https://HOST/m/demo/postman.json

You get folders for products, orders, customers and reviews, each with List / Get one / Create / Update / Delete requests, example JSON bodies that match the schema, and a {{baseUrl}} variable already set. Or peek at it from the terminal:

curl https://HOST/m/demo/postman.json

Your own mock in 60 seconds

  1. Create a project β€” one request, no account:
    curl -X POST https://HOST/api/projects \
      -H 'content-type: application/json' \
      -d '{"name":"my-api","preset":"ecommerce"}'
    # β†’ {"id":"abc123","adminKey":"KEY","baseUrl":"https://HOST/m/abc123", ...}
    (Presets: blog, ecommerce, saas β€” or define your own resources, or import an OpenAPI spec.)
  2. In Postman: Import β†’ Link β†’ https://HOST/m/abc123/postman.json.
  3. Send requests. That's the whole setup.

The collection is generated from the live schema on every request, so after you add or change resources, just re-import to sync. Insomnia and Hoppscotch import Postman collections too β€” the same URL works there.

Stateful beats example-based

The core difference to a Postman mock server: Mockbird endpoints are backed by a real database with seeded, realistic fake data.

# create something…
curl -X POST https://HOST/m/demo/products \
  -H 'content-type: application/json' \
  -d '{"name":"Test Product","price":9.99}'

# …and it's actually there
curl "https://HOST/m/demo/products?search=Test+Product"

Pagination with x-total-count, sorting, field filters, full-text search, relations (?_expand=/?_embed=, nested routes), CORS on everything β€” the behaviors your real API will have, so your error handling and loading states get exercised for real. Plus simulation knobs Postman mocks don't have: ?mock_delay=2000 for latency and ?mock_status=500 for failures (guide).

Bring your existing collection

Already have your API described as a Postman collection β€” the same one you built the mock server from? Import it directly; you don't have to recreate anything:

# export your collection from Postman (Collection v2.1), then:
curl -X POST https://HOST/api/projects/import --data-binary @collection.json

Requests become resources (GET /users, /users/:id β†’ users), and here's the part that matters if you've invested in examples: your saved 2xx example responses become the hosted records, verbatim β€” the same data your mock server was returning, now behind stateful CRUD endpoints with filtering and pagination. Requests without saved examples get a schema inferred from their JSON bodies and realistic seeded data instead. {{baseUrl}} variables, :id/{{userId}} path params and {"data": [...]} wrappers are all handled. Details in the docs.

It round-trips, too: every Mockbird project exports a ready-to-import collection at /postman.json, and that file imports back cleanly.

Testing auth flows in Postman

Flip a project into protected mode and every endpoint requires a Bearer token β€” and the exported collection handles that for you: it gains an auth (mock) folder whose Login request (any email + password returns a real signed JWT) stores the token in a {{token}} collection variable via a test script. Run Login once; every other request in the collection authenticates automatically. Set expiresIn: 5 in the login body to watch your 401 handling cope with expiry.

Honest comparison

Postman mock server (free)Mockbird
Free capacity1,000 calls/month10,000 requests/day/project
Behaviorreplays saved examplesstateful CRUD on seeded data
Setupaccount + collection + examples per endpointone curl (or one OpenAPI/db.json paste), no signup
Pagination / filters / searchonly what you hand-write as examplesbuilt in on every resource
Latency & error simulationfixed per mock (delay); x-mock-response-code needs matching examples?mock_delay= / ?mock_status= on any request
GraphQL✘same data at /graphql + GraphiQL
Works outside Postmanyes (public URL)yes β€” plain HTTPS + CORS, plus openapi.json and types.ts exports

Where Postman's own mocks still win: they replay your exact saved examples (byte-for-byte contract responses, selectable with x-mock-response-name), they live inside the workspace your team already shares, and paid plans raise the caps. If you need precise canned responses rather than realistic behavior, use those β€” or add a Mockbird custom route with a fixed payload for the handful of endpoints where the exact bytes matter. Written by the Mockbird maker β€” bias disclosed; Postman numbers checked July 2026.

FAQ

Does the import stay in sync? The collection regenerates from your live schema on every fetch of /postman.json; re-import after schema changes. Postman keeps your edits in the old copy, so re-importing creates a fresh collection alongside it.

Can I go the other way β€” Postman/OpenAPI β†’ Mockbird? Yes: export your API definition as OpenAPI from Postman and POST it to /api/projects/import β€” you get a live seeded mock of the whole spec in one request.

Limits? 10,000 requests/day per project, 20 projects per free account (anonymous projects work too β€” 10/day per IP), records capped per resource. Details in the docs.

The same project also gives you a request bin, mock JWT auth, snapshot fixtures and signed webhooks. (WireMock Cloud's free tier has the same 1,000-calls/month cap β€” that comparison here.) Create your mock β†’