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.

Never commit your API key to a repo. Use environment variables.

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

ParameterTypeRequiredDescription
filefile (multipart)No*HTML file or zip of files
htmlstringNo*Raw HTML string (JSON body only)
slugstringNoCustom URL slug. Auto-generated if omitted.
expiresstringNo"7d", "30d", or "never". Defaults to plan setting.
passwordstringNoPassword-protect the page
domainstringNoPublish to a custom domain (Pro+ required)

*Either file or html is required. Not both.

Response codes

200

Page published successfully

400

Bad request (missing file/html, invalid slug format)

401

Invalid or missing API key

403

Feature not available on your plan (e.g. custom domain on free)

429

Rate limit hit. Back off and retry after the Retry-After header value.

500

Something 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-cli

Configure

pubby auth login

Prompts 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

What happens after you publish

Your URL is live immediately. SSL is already active. No waiting for DNS. No certificate provisioning delay.
The URL format is https://your-slug.pubby.au by default. With a custom domain on Pro+, it's whatever you've configured.
Free plan pages expire after 7 days. You'll get an email reminder before expiry. Upgrading to Pro converts all your free-plan pages to permanent.
Updating a page means republishing to the same slug. The new version goes live instantly. If you're on Pro+, the last 10 versions are saved and you can roll back from the dashboard.
Deleting a page frees up the slug and the storage immediately. The URL returns a 404 from that point on.

Next steps

Questions? The fastest way to get help is the support chat in the dashboard. Average response time is under 2 hours on business days.