Credit first: npoint.io ("n:point") is one of the most likeable tools in the JSON-hosting category. It's completely open source, free ("all current features are free", says the FAQ), and you can create a bin with one click โ no signup. The editor accepts relaxed JavaScript object syntax, CORS is * on every API response, and you can fetch sub-properties straight from the URL (api.npoint.io/<bin>/0/title). Its signature idea โ attach a JSON Schema and lock it so future edits can never break your app โ is genuinely clever and, as far as we know, unique. It's a well-run labour of love that serves thousands of requests a minute.
This guide is for the moment your bin stops being a read-only document. Three things to know, all from npoint's own homepage or verified hands-on (September 2026):
POST to an account-owned bin answers 401; PUT and DELETE answer a 500 error page. If your prototype needs to write โ a form, a todo toggle, anything โ the API can't do it.curl -X POST from a different machine replaced its entire contents โ no key, no cookie, it even let us change the top-level object into an array. Log in and your bins become protected (only you can edit) โ but then API writes are back to 401. So the real choice is: writable by everyone, or writable by no one./0/title breaks the moment order changes). There's no per-record CRUD, no ?done=false filter, no sorting, pagination, or search. Also worth knowing: API reads are served with cache-control: max-age=3600 through a CDN โ npoint purges its edge cache on edit, but any browser or client that honours the header can hold data an hour stale. Rate limits are 100 requests/min per IP and 600/min per bin.If your bin holds an array of records โ the common case โ pipe npoint's read straight into Mockbird's import. No account or key on either side:
curl -s 'https://api.npoint.io/<BIN_ID>' \
| curl -s -X POST 'https://mockbird.mockbird.workers.dev/api/projects/import?resource=todos' \
-H 'content-type: application/json' --data-binary @-
# โ { "id": "vsr338puws", "adminKey": "โฆ",
# "resources": [{ "name": "todos", "records": 3,
# "url": "https://mockbird.mockbird.workers.dev/m/vsr338puws/todos" }] }
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. All of these ran against production before this page was published:
curl https://mockbird.mockbird.workers.dev/m/vsr338puws/todos # list
curl https://mockbird.mockbird.workers.dev/m/vsr338puws/todos/2 # one record โ by id, not position
curl 'https://mockbird.mockbird.workers.dev/m/vsr338puws/todos?done=false' # filter
curl 'https://mockbird.mockbird.workers.dev/m/vsr338puws/todos?title_like=launch' # substring search
curl 'https://mockbird.mockbird.workers.dev/m/vsr338puws/todos?sortBy=priority&order=desc&select=id,priority'
curl -X PATCH https://mockbird.mockbird.workers.dev/m/vsr338puws/todos/2 \
-H 'content-type: application/json' -d '{"done":true}' # a real write โ persists, no blob replace
Plus range operators (priority_gte=4 and friends), 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). And unlike an unclaimed npoint bin, writes need nothing or โ flip on protected mode โ a real JWT, your choice.
| On npoint.io | On Mockbird |
|---|---|
| Click "Create JSON Bin" (no signup) | one anonymous curl โ POST /api/projects/import or paste in the dashboard |
GET api.npoint.io/<bin> โ whole blob | GET /m/<project>/<collection> โ list, filter, sort, paginate |
Sub-property by position: /<bin>/0/title | by id: /todos/2 ยท projection: ?select=id,title |
| API writes: private beta (owned bins 401) | POST / PUT / PATCH / DELETE per record, live now |
| Anonymous bin: anyone with the URL can overwrite | writes open by default, or JWT-protected โ never "world-writable or nothing" |
| Schema locking (their killer feature) | typed fields per collection โ but no lock; honest gap |
| Rate limits 100/min/IP ยท 600/min/bin | 10,000 requests per project per day |
| Edit online at npoint.io/docs/<bin> | dashboard data browser โ table view, JSON editor |
| Data export | GET /m/<project>/db.json โ eject everything anytime |
| npoint.io | Mockbird | |
|---|---|---|
| Price | free, all features | free while in beta |
| Signup required | no (login only to protect bins) | no (anonymous projects; free signup to keep them) |
| API writes | private beta โ 401 on owned bins; unclaimed bins writable by anyone | full CRUD, open or JWT-protected |
| Querying | sub-property by key/position | filters, ranges, search, sort, pagination, projection, GraphQL |
| Schema safety | JSON Schema validation + locking โ no equivalent here | typed fields, no lock |
| Arbitrary JSON shapes | any shape, any nesting | records-in-collections (nested values kept verbatim inside records) |
| Freshness | API reads CDN-cached (max-age=3600; edge purged on edit) | reads hit live data |
| Open source / self-host | yes โ full Rails app on GitHub | no (honest downside) |
| Track record | running since 2018, transparent hobby project (no SLA, says so upfront) | newer (honest downside) |
Where npoint wins, plainly: if you want a free, open-source place to keep a config blob or CMS-ish document that non-developers can edit safely โ schema locking is a genuinely great idea nobody else has, and you can even self-host the whole thing. This page is for the other job: a list your app queries and mutates record-by-record, over the API, today.
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. npoint.io facts verified September 4, 2026: the one-way-store description, private-beta API writes, and the 100/min-per-IP ยท 600/min-per-bin rate limits are quoted from npoint.io's own homepage; "all current features are free" and the no-SLA stance are from its FAQ; CORS *, the cache-control: max-age=3600 header, sub-property access, the owned-bin 401, the PUT/DELETE 500s, and the credential-less overwrite of an anonymous bin were all verified hands-on with curl (against a bin we created ourselves โ no third-party data was touched). npoint is open source at github.com/azirbel/npoint. 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: jsonbin.io alternative ยท host a JSON file as an API ยท jsonbox alternative ยท CSV โ REST API. Create your API โ