Skip to content

Configuration

whiz.pub handles all server configuration automatically. This page covers the settings available to you as a blog owner.

Content Types

Posts

Posts are your main blog content. They appear in your blog index, RSS feed, sitemap, and tag listings. Posts support tags, pinning, SEO fields (summary, featured image), and status (draft/published).

Pages

Pages are standalone content like "About", "Contact", or "Tools" — they don't appear in the blog index or RSS feed. Pages render at their slug URL just like posts (e.g., yourblog.whiz.pub/about).

Create and manage pages from the Pages section in the web dashboard sidebar.

Tags

Tags help organize your posts. You can:

  • Add tags to posts via the tag field when creating/editing
  • Manage tags from the Tags section in the sidebar: rename tags across all posts, add descriptions, or delete tags entirely
  • Tags have their own public pages on your blog (e.g., yourblog.whiz.pub/tag/javascript)

Blog Settings

You can manage your blog settings from the dashboard at /app/settings. Available options:

Custom Domain

Add a custom domain to replace your yourname.whiz.pub subdomain. See Custom Domains for full DNS setup instructions.

Web

Go to /app/settings and enter your domain in the Custom Domain field, then click Save.

API

bash
curl -X PUT https://api.whiz.pub/v1/settings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"custom_domain": "blog.example.com"}'

CLI

bash
whiz settings set custom-domain blog.example.com

SEO & Metadata

  • Display name — shown in the blog header and browser title.
  • Description — used in meta tags for search engines and social previews.
  • Open Graph image — URL of an image used for social media previews.

Web

Go to /app/settings and fill in the Display name, Description, and Open Graph image fields, then click Save.

API

bash
curl -X PUT https://api.whiz.pub/v1/settings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "My Blog",
    "description": "A blog about interesting things",
    "og_image": "https://example.com/og.png"
  }'

CLI

bash
whiz settings set display-name "My Blog"
whiz settings set description "A blog about interesting things"
whiz settings set og-image "https://example.com/og.png"

API Key

Your API key is used with the CLI (whiz auth YOUR_KEY) and MCP endpoint. You can regenerate it at any time — the old key stops working immediately.

Web

Go to /app/settings. Your API key is displayed under the API Key section. Click Regenerate to create a new key.

API

bash
curl -X POST https://api.whiz.pub/v1/settings/regenerate-api-key \
  -H "Authorization: Bearer YOUR_API_KEY"

CLI

bash
whiz auth YOUR_KEY
whiz settings regenerate-api-key

AI Access

Toggle whether your blog exposes machine-readable pages at /llms.txt, /sitemap.xml, and markdown mirrors (/*.md). When disabled, these endpoints return 404.

Web

Go to /app/settings and toggle the AI Access switch on or off, then click Save.

API

bash
curl -X PUT https://api.whiz.pub/v1/settings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ai_access": true}'

CLI

bash
whiz settings set ai-access true
whiz settings set ai-access false

Headless Mode

Use whiz purely as a headless CMS. When enabled, your blog's public pages (subdomain, sitemap, robots.txt, markdown mirrors) return 404. The API, CLI, and MCP continue to work normally — you can still create, edit, and manage posts. Your subdomain remains reserved.

Headless mode and custom domains are mutually exclusive. Remove your custom domain before enabling headless mode; disable headless mode before adding a custom domain.

Web

Go to /app/settings and toggle the Headless Mode switch on or off, then click Save. The toggle is disabled when a custom domain is configured.

API

bash
# Enable headless mode
curl -X PUT https://api.whiz.pub/v1/headless \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'

# Disable headless mode
curl -X PUT https://api.whiz.pub/v1/headless \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

CLI

bash
whiz headless enable
whiz headless disable

MCP

Call whiz_set_headless with {"enabled": true} or {"enabled": false}.

Custom Landing Page

By default, your blog's homepage (/) shows a paginated list of posts. You can instead use a dedicated landing page — a regular page with the special slug home — as your homepage.

When enabled:

  • The / route renders your "home" page instead of the blog post listing.
  • The blog post listing moves to /blog (with pagination at /blog/page/2, /blog/page/3, etc.).
  • If no page with slug home exists, one is created automatically as a published page with placeholder content.
  • Disabling the feature keeps the "home" page intact but restores the default blog listing at /. Re-enabling reuses the existing "home" page.

Web

Go to Settings > Advanced and toggle the Custom Landing Page switch on, then click Save. A link to edit your new home page is shown after saving.

API

bash
# Enable custom landing page
curl -X PUT https://api.whiz.pub/v1/settings/landing-page \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'

# Disable custom landing page
curl -X PUT https://api.whiz.pub/v1/settings/landing-page \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

The response includes "home_page_created": true if a new home page was auto-created.

Blog Pagination

The public blog index and tag pages display posts in paginated form.

  • Posts per page: configurable per blog via the dashboard settings or the PUT /v1/settings/blog API endpoint.
  • Default: 10 posts per page. Allowed range: 5-100 (controlled by global admin config).
  • Blog index: paginated pages are available at /page/2, /page/3, etc. When a custom landing page is enabled, pagination is at /blog/page/2, /blog/page/3, etc.
  • Tag pages: also paginate at /tag/:name/page/2, /tag/:name/page/3, etc.

Web

Go to /app/settings and adjust the Posts per page value, then click Save.

API

bash
curl -X PUT https://api.whiz.pub/v1/settings/blog \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"posts_per_page": 15}'

Appearance

Customise your blog's visual appearance at /app/settings/appearance. See Themes & Appearance for details on presets, fonts, custom CSS, custom head HTML, and favicons.

Account

Log In

Authentication uses one-time codes sent to your email. To log in:

Web

  1. Visit https://app.whiz.pub/auth/login.
  2. Enter your email and click Send code.
  3. Check your email for a one-time code and enter it.

API

bash
# Step 1: Request a login code
curl -X POST https://api.whiz.pub/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'

# Step 2: Verify the code and get your API key
curl -X POST https://api.whiz.pub/v1/auth/verify-otp \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "code": "123456"}'

CLI

bash
whiz login
# Follow the prompts to enter your email and the code from your inbox.

Delete Account

You can permanently delete your account and all associated data. This action is irreversible.

Web

Go to /app/settings, scroll to the bottom, and click Delete Account. Confirm the deletion when prompted.

API

bash
curl -X DELETE https://api.whiz.pub/v1/account \
  -H "Authorization: Bearer YOUR_API_KEY"

CLI

bash
whiz account delete

Content Limits

The limits below apply to all blogs. Note that some limits differ between free and donor tiers. See Support & Limits for tier-specific limits and how to become a donor.

SettingLimit
Post title length200 characters
Post content size100 KB
Tags per post10
Tag length50 characters
Custom CSS10 KB
Custom head HTML5 KB
Favicon upload512 KB
Image upload (inline)3 MB
Image upload (OG/featured)10 MB input, resized to 1200x630
Saved themes10 per blog

Rate Limits

The following rate limits apply per IP address:

EndpointLimit
POST /v1/signup5 requests per minute
POST /v1/auth/login5 requests per minute
POST /v1/auth/verify-otp10 requests per minute
All other endpointsNo hard limit (subject to change)

Exceeding a rate limit returns HTTP 429 Too Many Requests. Wait and retry after the cooldown period.

Environment Variables (Self-Hosting / Admin)

If you are deploying or administering a whiz instance, the following environment variables are available:

VariableDescription
ADMIN_EMAILSComma-separated list of email addresses granted admin privileges (e.g. admin@example.com,ops@example.com). Admin users can access the admin dashboard and manage all tenants.
SESSION_HASH_SECRETSecret key used to hash session tokens. Must be a strong random string (32+ characters). Keep this value stable across deployments — changing it invalidates all active sessions.

Instant, agent-first blogging.