Getting Started
Pubby publishes a web page in under 3 seconds. There's not much to learn. This doc covers the three ways to publish, how authentication works, and what you get after a successful publish.
If you've used any hosting tool before, this will feel faster than you expect.
Three ways to publish
You can publish via the web UI (point-and-click), the API (programmatic, for scripts and agents), or the CLI (terminal-native, no browser required). All three produce the same result: a live URL with SSL.
Pick whichever fits how you work. Most people start with the web UI, then move to the API once they want to automate.
Web UI
The simplest path. Open pubby.au, paste your HTML into the editor or drag a file onto the upload target, and click Publish. The URL appears within 3 seconds. No account required for your first publish on the free plan.
What you can do in the web UI
- ✓Paste raw HTML directly
- ✓Upload single files or entire folders (zip or drag-and-drop)
- ✓Set a custom slug for your URL
- ✓Toggle password protection on or off
- ✓View all your published pages in one place
- ✓Delete or update any page
API
The Pubby API is one endpoint. You POST a file (or raw HTML), and you get a JSON response containing your live URL. No setup beyond getting an API key.
Authentication
All API requests need a Bearer token in the Authorization header. Get your API key from your dashboard under Settings > API Keys. It looks like pk_live_xxxxxxxxxxxx.
API Example: Publish an HTML file
curl -X POST https://api.pubby.au/v1/publish \
-H "Authorization: Bearer pk_live_your_api_key_here" \
-H "Content-Type: multipart/form-data" \
-F "file=@./index.html" \
-F "slug=my-page" \
-F "expires=never"Response
{
"success": true,
"url": "https://my-page.pubby.au",
"slug": "my-page",
"expires": null,
"ssl": true,
"published_at": "2026-02-22T12:34:56Z"
}Publishing raw HTML (no file upload)
If you're generating HTML in memory and don't want to write it to disk first:
curl -X POST https://api.pubby.au/v1/publish \
-H "Authorization: Bearer pk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Hello</h1><p>This is a test page.</p>",
"slug": "hello-world",
"expires": "7d"
}'API parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file (multipart) | No* | HTML file or zip of files |
html | string | No* | Raw HTML string (JSON body only) |
slug | string | No | Custom URL slug. Auto-generated if omitted. |
expires | string | No | "7d", "30d", or "never". Defaults to plan setting. |
password | string | No | Password-protect the page |
domain | string | No | Publish to a custom domain (Pro+ required) |
*Either file or html is required. Not both.
Response codes
200Page published successfully
400Bad request (missing file/html, invalid slug format)
401Invalid or missing API key
403Feature not available on your plan (e.g. custom domain on free)
429Rate limit hit. Back off and retry after the Retry-After header value.
500Something went wrong on our end. Rare. Try again.
CLI
The Pubby CLI wraps the API in a terminal command. Install it once, configure your API key, and publish from wherever your files are without opening a browser.
Install
npm install -g pubby-cliConfigure
pubby auth loginPrompts for your API key and saves it to ~/.pubby/config. You only do this once per machine.
Publish
# Publish a single file
pubby publish ./index.html
# Publish a directory
pubby publish ./my-site/
# Publish with a custom slug
pubby publish ./report.html --slug q4-report
# Publish with expiry
pubby publish ./demo.html --expires 7d