๐ก We check mockbin.org and mockbin.io (and 36 other public mock/testing services) with a plain GET every 30 minutes โ see the live status page.
For about a decade, Kong's open-source Mockbin ran the public site mockbin.org: paste a response, get a bin URL that answered with it, inspect everything that hit it. It appeared in Kong's own docs, in API-gateway tutorials, in HAR tooling examples, in a thousand Stack Overflow answers. If you try any of those URLs today:
curl -X POST https://mockbin.org/bin/create
# curl: (6) Could not resolve host: mockbin.org
Checked August 28, 2026: the domain still has nameservers, but no DNS address records at all โ every mockbin.org/bin/..., mockbin.org/request and mockbin.org/status/... URL ever published is dead. The code didn't die, though โ it moved. The original Kong/mockbin GitHub repository is now Kong/insomnia-mockbin, described by Kong as the backend for the API-mocks capability of Insomnia โ and its README now says "source visible, but not open-source". So the classic public playground became the engine of a logged-in product (Insomnia's cloud mocks give you 1,000 requests per month on the free plan).
Zuplo rebuilt the idea as mockbin.io โ free, no signup, open source, and genuinely pleasant for its one job: a single fixed-response endpoint plus request inspection. We tested it hands-on (Aug 28, 2026). What's great: bin creation is instant (UI, or one POST to their API), any method on any sub-path with any query answers your configured status/headers/body, CORS is wide open, and the request log captured everything we threw at it (59 of 59 requests). You can also upload an OpenAPI v3.1 document and get a mock generated from its schemas and examples.
The sharp edges โ all verified on live bins:
PUT and DELETE on /v1/bins/:id both answer HTTP 400. Typo in your response body? That's a new bin, a new URL, and re-pointing every caller. And there is no way to erase a log you've already collected.GET api.mockbin.io/v1/bins/<id>/requests needs nothing but the id that's embedded in the URL you hand out. Each logged request exposes full headers and body โ including every caller's IP address (true-client-ip / x-forwarded-for are stored verbatim). Point a third-party webhook at a bin and that third party can read your entire request history.curl -X POST https://mockbird.mockbird.workers.dev/api/projects \
-H 'content-type: application/json' -d '{"name":"my bins"}'
# โ {"id":"PROJECT_ID","adminKey":"ADMIN_KEY",...} โ save both
curl -X POST https://mockbird.mockbird.workers.dev/api/projects/PROJECT_ID/routes \
-H "x-admin-key: ADMIN_KEY" -H 'content-type: application/json' \
-d '{"method":"ANY","path":"/*","status":200,
"body":"{\"message\":\"Hello World\"}","contentType":"application/json"}'
Exactly like a mockbin bin, any method / path / query now answers your response:
curl -X POST "https://mockbird.mockbird.workers.dev/m/PROJECT_ID/users/1?x=2" -d '{"a":1}' \
-H 'content-type: application/json'
# โ {"message":"Hello World"}
Unlike a mockbin bin, it's a real route you own: edit it, delete it, add more (/health, /webhooks/*, /maintenanceโฆ) on the same project, each with its own status, headers, content-type and delay โ and templating if you want the response to reflect the request:
# a 503 with a custom header and a 2-second delay (we measured 2.27 s end-to-end)
curl -X POST https://mockbird.mockbird.workers.dev/api/projects/PROJECT_ID/routes \
-H "x-admin-key: ADMIN_KEY" -H 'content-type: application/json' \
-d '{"method":"GET","path":"/maintenance","status":503,
"body":"{\"error\":\"maintenance\"}","headers":{"X-Custom":"yes"},"delayMs":2000}'
# an echo route โ {{{body}}} and {{now}} are filled per request
curl -X POST https://mockbird.mockbird.workers.dev/api/projects/PROJECT_ID/routes \
-H "x-admin-key: ADMIN_KEY" -H 'content-type: application/json' \
-d '{"method":"ANY","path":"/echo","contentType":"application/json",
"body":"{\"youSent\":{{{body}}},\"at\":\"{{now}}\"}"}'
And the request log is private by design: reading /api/projects/PROJECT_ID/requests requires the admin key (which is not part of the mock URL you share), and client-IP headers are deliberately never stored โ we strip them at capture time, so there's no caller-IP history for anyone to leak.
Want zero setup first? The shared demo has a public bin โ that one's inspector is intentionally open, so you can see the capture format:
curl -X POST "https://mockbird.mockbird.workers.dev/m/demo/hooks/anything" \
-H 'content-type: application/json' -d '{"hello":"bin"}'
curl "https://mockbird.mockbird.workers.dev/api/projects/demo/requests"
| mockbin.org (dead) | Mockbird |
|---|---|
POST /bin/create (HAR response object) | POST /api/projects/:id/routes โ status, headers, body, content-type, delayMs, templating |
PUT /bin/upsert/:id | Routes are editable and deletable (mockbin.io dropped upsert entirely) |
GET /bin/:id/log (HAR log) | Request inspector โ admin-key protected, live view in the dashboard |
/request / /echo echo | /m/httpbin/anything (httpbin-compatible surface) or your own templated echo route |
/status/:code/:reason | /m/httpbin/status/:code, or ?mock_status=503 on any endpoint โ plus ?mock_seq=500,200 sequences mockbin never had |
/headers, /header/:name, /agent | /m/httpbin/headers, /m/httpbin/user-agent |
/redirect/:status/:count, /stream/:chunks | /m/httpbin/redirect/:n, /m/httpbin/stream/:n |
/ip, /ips | Deliberately no equivalent โ we don't store or echo caller IPs |
Beyond bin parity, a Mockbird project is a full stateful CRUD mock โ resources, seeded realistic data, filtering/pagination/sorting, relations, GraphQL, mock JWT auth, OpenAPI/Postman/TypeScript exports. If you were uploading OpenAPI documents to mockbin.io for schema mocks, import the same spec here and the POST/PUT/DELETE actually persist instead of replaying examples.
Bias disclosed โ this page is written by the Mockbird maker. Honest credit: for the single job of "give me one fixed-response URL and show me what hits it", mockbin.io is simpler than us โ one form, one button, no admin key to keep track of. Its request log had no visible cap in our testing, while our inspector keeps the last 50 requests and truncates stored bodies at 2 KB; and our projects share a 10,000 requests/day cap. Mockbin.io's code is also self-hostable from their repo (R2/S3-backed). If none of the sharp edges above bite your use case, it's a perfectly good tool.
# one curl โ a whole seeded e-commerce mock (products, orders, customers, reviews):
curl -X POST "https://mockbird.mockbird.workers.dev/api/projects" \
-H 'content-type: application/json' -d '{"name":"my api","preset":"ecommerce"}'
Or try the shared demo with zero setup: curl https://mockbird.mockbird.workers.dev/m/demo/products/1
Facts checked hands-on Aug 28, 2026: mockbin.org DNS (NS present, no A/AAAA records, via two public resolvers); the Kong/mockbin โ Kong/insomnia-mockbin rename via the GitHub API; live mockbin.io bins โ create via POST /v1/bins, any-method/any-path fixed responses, permissive CORS, public per-request log with stored caller-IP headers, PUT/DELETE โ 400, the localStorage notice on their homepage. All Mockbird commands on this page were run against production before publishing. If either service changes, re-check their sites.
Full API reference in the docs. More guides: webhook.site alternative ยท RequestBin alternative ยท Mocky alternative ยท Insomnia mock servers. Create your API โ