Help — REST API, KV Store, JSON DB, S3-Compatible | BrewPage

BrewPage Help — REST API & Developer Tools

BrewPage is a REST-first content host for HTML, Markdown, files, key-value entries, JSON documents and multi-file sites. No signup. No SDK. Every feature is reachable from curl, any HTTP client, or an AI agent.

Quick start — publish HTML in one curl

Publish an HTML page (public namespace)

curl -X POST https://brewpage.app/api/html \
  -H "Content-Type: text/html" \
  --data-binary @page.html
# response: {"url":"https://brewpage.app/public/aB3xK9mP2q","ownerToken":"..."}

The response contains a short public URL and an Owner Token. Save the token — it is the only way to edit or delete the page later. There is no account or password reset.

Content types

  • HTMLPOST /api/html (5 MB, rendered with a CSP sandbox).
  • MarkdownPOST /api/markdown (5 MB, rendered to HTML).
  • FilePOST /api/files (5 MB generic, 20 MB video, 5 MB audio).
  • Multi-file sitePOST /api/sites (ZIP, up to 20 MB / 100 files).
  • KV entryPUT /api/kv/{ns}/{store}/{key} (1 MB value, 1000 keys per namespace).
  • JSON documentPOST /api/json/{ns}/{collection} (1 MB doc, 10 000 docs per collection).

All resources share the same TTL model: default 15 days, max 30 days. After TTL the nightly cleanup job permanently deletes the content — there is no recovery.

Namespaces and privacy

A resource is public (listed in the gallery, indexed by search engines) only when the namespace is public AND no password is set. Any other namespace is private. A password makes any resource private regardless of namespace.

Publish a private page under your own namespace

curl -X POST https://brewpage.app/api/html/mycompany \
  -H "Content-Type: text/html" \
  -H "X-Password: secret123" \
  --data-binary @internal.html

The homepage gallery shows public, password-less publications by default. If you are signed in with an Owner Token, press the bookmark toggle in the gallery header to switch to All your publications — the view then lists every resource you own, regardless of namespace or password.

The owner view groups your publications into three sections:

  • Public — Listed in the public gallery — anyone with the link can open it.
  • Public · password — In the public namespace but password-protected — not listed in the gallery.
  • PrivateOnly you can see these — accessible by direct link only.

Your Owner Token is stored in localStorage for 30 days and is managed automatically by the browser UI. You can view, paste or clear it any time on the Advanced Tools page.

Owner Token — edit & delete

Every publish returns an ownerToken. Send it as X-Owner-Token to edit or delete:

Delete a page with its Owner Token

curl -X DELETE https://brewpage.app/api/html/public/aB3xK9mP2q \
  -H "X-Owner-Token: $OWNER_TOKEN"

Replace a page in place (same short URL)

curl -X PUT https://brewpage.app/api/html/public/aB3xK9mP2q \
  -H "Content-Type: text/html" \
  -H "X-Owner-Token: $OWNER_TOKEN" \
  --data-binary @page-v2.html

Tokens are hashed (bcrypt) on the server — the plaintext exists only in the original response. The browser UI stores the token in localStorage for 30 days as a convenience. Clear or paste a different token any time from Advanced Tools.

KV store

Create a KV store

curl -X POST https://brewpage.app/api/kv/public \
  -H "Content-Type: application/json" \
  -d '{"storeId":"my-config"}'

Write a key

curl -X PUT https://brewpage.app/api/kv/public/my-config/api_url \
  -H "Content-Type: text/plain" \
  --data "https://example.com"

Read a key

curl https://brewpage.app/api/kv/public/my-config/api_url

JSON document storage

Create a JSON document

curl -X POST https://brewpage.app/api/json/public/notes \
  -H "Content-Type: application/json" \
  -d '{"docId":"my-note","data":{"title":"Hi","body":"..."}}'

Fetch a JSON document by id

curl https://brewpage.app/api/json/public/notes/my-note

Multi-file site

Upload a ZIP with an index.html at the root to publish a static site (CSS, JS, images and fonts allowed; 20 MB / 100 files / 5 MB per file).

Zip a site and publish it

zip -r site.zip index.html assets/
curl -X POST https://brewpage.app/api/sites \
  -F "file=@site.zip"
# response: {"url":"https://brewpage.app/public/aB3xK9mP2q","ownerToken":"..."}

Rate limits

Uploads
60 requests / hour / IP.
Reads
300 requests / minute / IP.
429 response
Includes a Retry-After header so clients can back off.
Access logs
IP, user-agent, referer, status, latency kept for 30 days, then deleted.

Interactive tools

Go to Advanced Tools for the in-browser UI — Owner Token inspector, KV store, file manager, JSON editor.

Learn more