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
- HTML —
POST /api/html(5 MB, rendered with a CSP sandbox). - Markdown —
POST /api/markdown(5 MB, rendered to HTML). - File —
POST /api/files(5 MB generic, 20 MB video, 5 MB audio). - Multi-file site —
POST /api/sites(ZIP, up to 20 MB / 100 files). - KV entry —
PUT /api/kv/{ns}/{store}/{key}(1 MB value, 1000 keys per namespace). - JSON document —
POST /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.
- Private — Only 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-Afterheader 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
- /api — REST API reference with curl examples and spec links.
- Swagger UI — interactive API browser.
- OpenAPI 3.1 YAML — machine-readable spec.
- llms.txt and llms-full.txt — AI-agent reference.
- Interactive OpenAPI reference (Scalar).
- brewpage-mcp — MCP server for Claude, Codex, Cursor, Gemini.