Credit first: jsonbin.io is one of the good ones. It has been storing people's JSON reliably for years, CORS is enabled on every endpoint, records are private by default, updates are versioned, there's server-side JSONPath extraction on reads, and the pricing model is genuinely rare in its fairness: one-time purchases, no subscription โ you buy requests, they never expire, and the site doesn't even store your card details. They also grant free plans to open-source projects. If what you need is "put this JSON document somewhere safe and get it back", jsonbin does that job well.
This guide is for the moment the job changes โ when the blob is actually a list your frontend wants to query. Three things to know before you build on the free plan, all from jsonbin's own pricing page and docs:
POST https://api.jsonbin.io/v3/b answers 401 {"message":"You need to pass X-Master-Key or X-Access-Key in the header to create a bin"}. That key then lives in your client code or a proxy you now have to run.?done=false filter, no pagination, no sorting, no search. On the free plan a record maxes out at 100 KB with 1 collection and no version history (versioning, schema validation and 10 MB XL bins are Pro).If your bin holds an array of records โ the common case โ pipe jsonbin's read straight into Mockbird's import. ?meta=false strips jsonbin's {"record": โฆ, "metadata": โฆ} wrapper so the raw payload transfers:
curl -s -H 'X-Master-Key: <YOUR_JSONBIN_KEY>' \
'https://api.jsonbin.io/v3/b/<BIN_ID>/latest?meta=false' \
| curl -s -X POST 'https://mockbird.mockbird.workers.dev/api/projects/import?resource=todos' \
-H 'content-type: application/json' --data-binary @-
# โ { "id": "utj435hqk2", "adminKey": "โฆ",
# "resources": [{ "name": "todos", "records": 3,
# "url": "https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos" }] }
No account, no API key, one curl. Records are hosted verbatim โ integer ids preserved. An object of arrays works too (each key becomes its own collection, db.json-style), and a plain config object becomes a 1-record collection.
Every item is now a record behind a real REST endpoint, so the query toolkit jsonbin doesn't have works immediately โ all of these ran against production before this page was published:
curl https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos # list
curl https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos/2 # one record
curl 'https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos?done=false' # filter
curl 'https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos?title_like=launch' # substring
curl 'https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos?sortBy=priority&order=desc&select=id,priority'
curl -X PATCH https://mockbird.mockbird.workers.dev/m/utj435hqk2/todos/2 \
-H 'content-type: application/json' -d '{"done":true}' # per-record merge โ no blob round-trip
Writes persist. Plus range operators (_gte/_lte/_gt/_lt/_ne), full-text q= search, pagination with X-Total-Count, GraphQL on the same data, a request inspector, and typed exports (openapi.json, postman.json, types.ts).
| On jsonbin.io | On Mockbird |
|---|---|
POST /v3/b + X-Master-Key (signup first) | one anonymous curl โ POST /api/projects/import or paste in the dashboard |
GET /v3/b/<id>/latest?meta=false โ whole blob | GET /m/<project>/<collection> โ list, filter, sort, paginate |
X-JSON-Path extraction | ?select= projection + field filters + q= + GraphQL selection |
PUT /v3/b/<id> โ replace the whole document | POST / PUT / PATCH / DELETE per record |
| Version history (Pro, up to 1,000/record) | named snapshots โ save/restore the whole dataset, 10 per project |
| Private bins behind your API key | open by default; protected mode puts JWT auth on every endpoint |
| 10,000 requests credited once, ever | 10,000 requests per project per day, every day, free |
| 100 KB/record, 1 collection (free) | 1,000 records per collection, 20 collections per project |
| Data export | GET /m/<project>/db.json โ eject everything anytime |
| jsonbin.io free | Mockbird | |
|---|---|---|
| Signup required | yes โ API key on effectively every call | no (anonymous projects; free signup to keep them) |
| Free requests | 10,000 credited once (never renew) | 10,000/day per project, renews daily |
| Data model | one JSON document per bin | records in collections โ per-record CRUD |
| Querying | JSONPath extraction | filters, ranges, search, sort, pagination, projection, GraphQL |
| Versioning | Pro only (up to 1,000 versions/record) | snapshots (10/project) โ coarser but free |
| Max payload | 100 KB/record (10 MB XL bins on Pro) | 1,000 records/collection โ large single blobs aren't the use case |
| Pricing model | genuinely fair: one-time purchases, requests never expire, no card stored | free while in beta |
| Track record | years of stable service + status page | newer (honest downside) |
Where jsonbin wins, plainly: if you need one durable private JSON document with version history and a provider you can pay once and forget โ jsonbin's model is better than a subscription and better than most of this category. Big blobs (XL bins), schema validation, and per-version reads have no equivalent here. This page is for the other job: a list your app queries and mutates record-by-record.
curl 'https://mockbird.mockbird.workers.dev/m/demo/products?limit=2&sortBy=price&order=desc'
curl -X POST https://mockbird.mockbird.workers.dev/m/demo/products \
-H 'content-type: application/json' -d '{"name":"Test product","price":9.99}'
# โ it persists โ GET it back by the id you received
This page is written by the Mockbird maker โ bias disclosed. jsonbin.io facts verified September 2026 from official pages: free-tier limits, the "credited only for once" request model, Pro $20 one-time / additional requests from $15, 100 KB free record size, 1 free collection and Pro-only versioning/schema-validation/XL-bins are from jsonbin.io/pricing; CORS-on-all-endpoints, the {"record","metadata"} read shape, ?meta=false, /latest, and X-JSON-Path are from jsonbin.io/api-reference; the anonymous-create 401 and its exact error message were curled live on Sep 4, 2026. Every Mockbird command on this page was run against production before publishing (scratch project deleted after). Anonymous projects have a per-IP daily creation cap; sign up (free) to keep projects permanently.
Full API reference in the docs. More guides: npoint.io alternative ยท host a JSON file as an API ยท jsonbox alternative ยท CSV โ REST API ยท json-server, hosted. Create your API โ