JSONsilo
JSON as a queryable endpoint

A JSON store you can query over HTTP

Save a JSON document and get a URL. Read the whole file, or ask for just the field you need with a simple query string. Public or private, served from the edge.

Free plan, no card required · 1,000 requests/day · upgrade any time

# Whole catalog, public, no key needed
curl https://api.jsonsilo.com/public/60f97483-c283-45a6-b967-4c1e87268407

# One nested value, as plain text
curl "https://api.jsonsilo.com/60f97483-c283-45a6-b967-4c1e87268407?path=0.name&output=text" \
  -H "X-SILO-KEY: silo_live_xxx"

# Grab the second product
curl "https://api.jsonsilo.com/60f97483-c283-45a6-b967-4c1e87268407?idx=1" \
  -H "X-SILO-KEY: silo_live_xxx"

# Filter: products on sale, names only
curl "https://api.jsonsilo.com/60f97483-c283-45a6-b967-4c1e87268407?q=tags..label&value=sale&op=eq&path=name" \
  -H "X-SILO-KEY: silo_live_xxx"
Response200 OK
["Notebook", "Backpack"]
PrivateSilo-Req-Remaining: 998
12K silos served
9M reads / day
3 edge regions
The platform

Everything a small dataset needs, and nothing it doesn't

No connection string, no ORM, no migrations. Just a document you address by URL and shape with query-string operators.

Query over HTTP

Pull a nested value with a dot-path, index into an array, or filter an array of objects with eq / ne / gt / lt / like. Project one field out of the matches, or cast the result to text, number or bool.

GETapi.jsonsilo.com/60f97483-…?path=0.name
"Notebook" · value at a dot-path

Instant JSON endpoints

Save a blob, get a URL. No server to run, no schema to define.

POST{ "name": "Notebook", … }201api.jsonsilo.com/60f97483-…GET{ "name": "Notebook", … }

Public or private

Private behind an API key, or flip it public for a no-auth read. Your call, per silo.

PrivateX-SILO-KEY
Public/public/<uuid>

Edge regions

Pin a silo to Germany, Singapore or the United States so reads are served close to whoever is calling. Basic and Pro can use all three.

Germanyapi.jsonsilo.com
Singaporesg-01-api.jsonsilo.com
United Statesusc-01-api.jsonsilo.com

Request analytics & limits

Every plan has a per-minute burst limit and a daily cap, and every response carries live *-Req-* headers. On Basic and Pro, a dashboard also breaks requests down per silo by day, week or month.

dayweekmonth

1,284 requests · 3 silos · last 7 days

*-Req-Limit*-Req-Remaining*-Req-Reset

Built-in caching

Reads are served from a cache at the edge: roughly 30 minutes for a whole silo, 5 for a query result. A write to a silo clears its cache straight away, so hot endpoints stay fast without ever going stale.

HITserved from the edgeage 214s
Whole silo
~30 min
Query · index · path
~5 min
Metadata
~6 hr
On write
cleared
Query engine

Ask for exactly the slice you need

One endpoint on api.jsonsilo.com/<uuid>. The query string picks one of four branches, checked top to bottom, and the first one that matches runs. No schema, nothing to set up.

Four branches, first match wins

Every read is the same GET. Which branch runs depends only on which params you send.

GETapi.jsonsilo.com/60f97483-…X-SILO-KEY
  1. q / value / op

    Filter a top-level array. Add path= to project one field out of every match.

    ?q=price&value=10&op=lt&path=name["Notebook", "Pen"]
  2. idx

    One element of a top-level array, by position.

    ?idx=1{ "name": "Pen", "price": 2, … }
  3. path

    Dot-path into the root document. A numeric segment indexes an array.

    ?path=0.tags.1.label"sale"
  4. no params

    Nothing to match, so the whole silo comes back.

    (no query string)[ { "name": "Notebook", … }, … ]

op=

Six comparisons, one per condition.

eq
equals
ne
not equal
gt
greater than
lt
less than
lk
pattern, % wildcard
il
pattern, any case
?q=name&value=Pen&op=eq&path=price[2]

The document

A three-item catalog, stored exactly as you posted it. Every example here reads from it.

silo.json
[
{ "name": "Notebook", "price": 6, "inStock": true,
"tags": [{ "label": "paper" }, { "label": "sale" }] },
{ "name": "Pen", "price": 2, "inStock": true,
"tags": [{ "label": "ink" }] },
{ "name": "Backpack", "price": 45, "inStock": false,
"tags": [{ "label": "bags" }, { "label": "sale" }] }
]

q= reaches nested data

A filter is not limited to the element's own fields. Dots walk down into it.

name
a plain field on the element
profile.city
one dot walks a nested object
tags..label
two dots walk a nested array and match any item
?q=tags..label&value=sale&op=eq&path=name["Notebook", "Backpack"]

path=

Dot-separated keys. A numeric segment indexes an array.

0.nameprofile.address.citytags.0

output=

Cast the value on the way out. Raw JSON by default.

jsonjsonbtextintfloatbool
?idx=1&path=price&output=int2

Stack conditions

Repeat the trio to AND them. Send the same number of each.

?q=price&value=5&op=gt
&q=price&value=50&op=lt
&path=name

["Notebook", "Backpack"]

Pricing

Start free, scale when you need to

Every plan includes the query engine, public and private silos, and edge caching. You're billed for capacity (silos, size and daily requests), not seats.

Free

Perfect for trying it out.

$0/month
Start free
  • 1 silo
  • 1 MB per silo
  • 1 region
  • 1,000 requests / day
  • Public & private silos
  • Query engine

Basic

For growing projects.

$9/month
Choose Basic
  • 6 silos
  • 5 MB per silo
  • 3 regions
  • 1M requests / day
  • API keys & manage keys
  • Request analytics
Most popular

Pro

For serious workloads.

$29/month
Choose Pro
  • 111 silos
  • 10 MB per silo
  • 3 regions
  • 10M requests / day
  • Priority edge routing
  • Everything in Basic

Need more than Pro? Talk to us.

FAQ

Questions, answered

Still stuck? The docs go deeper on every endpoint and operator.

What is a silo?

A silo is one JSON file with its own web address. You save it once, then read all of it or just the parts you need over HTTP.

Is my data public?

Only if you choose to make it public. New silos are private, so no one can read them without your key.

How do I authenticate?

You send a key with each request. There's a read key for fetching data and a separate key for creating or changing silos from your own code.

Can I query nested JSON?

Yes. You can reach a value deep inside the file, pick one item out of a list, or filter a list down to the items you want.

What are the rate limits?

Each plan has a per-minute limit and a daily limit, from 1,000 requests a day on Free up to 10 million on Pro. Every response tells you how many requests you have left.

How is this different from a database?

There's nothing to set up or connect to. You just read a file from a URL. It's made for config, content and small datasets, not for heavy transactional apps.

Which regions can I use?

Germany, Singapore and the United States. Free silos stay in one region; Basic and Pro can pick any of the three.

Do reads get cached?

Yes. Full reads are cached for about 30 minutes and query results for about 5, so busy endpoints stay fast. Saving a change clears the cache right away.

JSONsilo

Create your first silo in about two minutes

Sign up, paste some JSON, and copy the URL into your code. The Free plan is enough to ship something real.