๐ก Is apiary-mock.com still dead? We check it (and 36 other classic public mock/placeholder APIs) with a plain GET every 30 minutes โ see the live status page.
Apiary was the original design-first API tool: write an API Blueprint (the Markdown-ish .apib format), and you got rendered docs plus a hosted mock server at private-<hash>-<api>.apiary-mock.com that replayed your example responses. It powered a decade of "design the API before you build it" tutorials, and after Oracle bought it in 2017 it kept running quietly โ free plans and all.
Oracle retired Apiary on September 9, 2025. As of August 2026 the shutdown is total โ but confusingly half-visible, because the marketing homepage is still up:
# the homepage still says "Sign up free with GitHub" (August 2026):
curl -s https://apiary.io/ | grep -o "Sign up free[^<]*"
# โ Sign up free with GitHub
# ...but the app itself just bounces you back to that marketing page:
curl -sI https://app.apiary.io/
# โ HTTP/2 302 location: https://apiary.io/home
# every mock URL is dead:
curl https://private-anon-8f3c1d-polls.apiary-mock.com/questions
# โ 404 "No API found"
# (docs subdomains have flickered back as read-only archives โ the docs
# pages load again as of late Aug 2026, but the mocks stay dead)
If your frontend, Postman environment, CI job, or tutorial points at an apiary-mock.com URL, it is broken and it is not coming back. Here's how to get a hosted mock for the same API back in about two minutes โ free, no signup โ starting from the .apib file you already have.
Mockbird imports OpenAPI 3.x and Swagger 2.0 directly. API Blueprint isn't OpenAPI, but the community apib2swagger converter (npm, MIT) turns a .apib into Swagger 2.0 โ which we accept as-is:
# 1. convert your blueprint (the classic Polls tutorial API, say)
npx apib2swagger -i polls.apib -o polls-swagger.json
# 2. import it โ this answers with a live base URL
curl -X POST "https://mockbird.mockbird.workers.dev/api/projects/import?name=polls" \
-H 'content-type: application/json' --data-binary @polls-swagger.json
The response contains your baseUrl, an adminKey, and a dashboard link. For the Polls blueprint (the one from Apiary's own tutorial), you get a questions resource with fields inferred from the example bodies (question as text, published_at as an ISO date) and 20 seeded records:
curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/questions?limit=2"
# โ [{"id":1,"question":"โฆ","published_at":"2026-04-17T21:14:33.603Z"}, โฆ]
curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/questions/1" # single record
curl -X POST "https://mockbird.mockbird.workers.dev/m/YOUR_ID/questions" \
-H 'content-type: application/json' -d '{"question":"Tabs or spaces?"}'
# โ created with a real id โ and unlike Apiary's replay mock, a GET actually returns it
Honest caveat: nested arrays inside example bodies (the Polls choices array) are skipped by the schema import with a warning โ field inference keeps flat fields. If you need the nested example payload byte-for-byte, use a verbatim route (next section). And apib2swagger is a community tool: complex MSON data structures may need a quick manual touch-up after conversion.
Apiary's mock did one thing: replay the example response from your blueprint, verbatim. If that's the behavior you want (nested payloads and all), a custom route reproduces it exactly:
curl -X POST "https://mockbird.mockbird.workers.dev/api/projects/YOUR_ID/routes" \
-H "x-admin-key: YOUR_ADMIN_KEY" -H 'content-type: application/json' \
-d '{"method":"GET","path":"/questions","status":200,
"contentType":"application/json",
"body":"[{\"question\":\"Favourite programming language?\",\"published_at\":\"2015-08-05T08:40:51.620Z\",\"choices\":[{\"choice\":\"Swift\",\"votes\":2048}]}]"}'
Custom routes win over generated resource endpoints, so you can mix modes per path: verbatim replay where the exact example matters, live stateful CRUD everywhere else. Routes support :params, wildcards, response templating ({{query.x}}, {{now}}, {{uuid}}โฆ), custom headers, any status, and per-route delay.
?price_gte=100, ?name_like=foo), search, relations (?_expand=/?_embed=), field projection (?select=).?mock_status=503, ?mock_delay=2000, chaos injection (?mock_chaos=0.3), sequenced responses./auth/login, protected mode for 401 flows.db.json. Apiary users just learned why this matters.Apiary was three products in one, and we only replace one of them:
The uncomfortable truth for blueprint fans: the API Blueprint ecosystem largely wound down with Apiary. Converting to OpenAPI once โ with apib2swagger, while your .apib files are still in git โ is the durable move, whatever mock server you pick.
| Apiary mock server | Mockbird | |
|---|---|---|
| Status | shut down Sep 9, 2025 โ all URLs 404 | live, free while in beta |
| Input format | API Blueprint, Swagger 2.0 | OpenAPI 3.x / Swagger 2.0, db.json, CSV, Postman collection, HAR (blueprint via apib2swagger) |
| Mock behavior | replays example responses | stateful CRUD + seeded fake data + verbatim routes |
| Writes persist | no | yes |
| Latency / error / chaos simulation | no | yes (mock_delay, mock_status, mock_chaos) |
| Auth simulation | no | signed JWTs + protected mode |
| Signup required | yes (GitHub/email) | no (anonymous projects; free signup to keep them) |
| Free limits | โ | 10,000 req/project/day |
This page is written by the Mockbird maker โ bias disclosed. Apiary's shutdown was announced by Oracle for September 9, 2025, and every claim above (zombie homepage, 302 app redirect, 404 mock URLs, the apib2swagger โ import round-trip, the verbatim route) was verified by hand in August 2026. Other places a blueprint can go: convert to OpenAPI and self-host Prism (our Prism comparison), or WireMock Cloud (paid tiers). Anonymous Mockbird projects have a per-IP daily creation cap; sign up (free) to keep projects permanently.
Full API reference in the docs. More guides: mock server from OpenAPI ยท Mocky is gone too ยท mock any endpoint. Create your API โ