Skip to main content

Overview

WhatDoc allows you to customize your documentation site with branding, navigation links, version information, and custom domains.

Update Project Customization

Update appearance and branding settings for your documentation.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "customization": {
      "logoUrl": "https://example.com/logo.png",
      "ownerName": "Acme Corporation",
      "currentVersion": "2.1.0",
      "upcomingVersion": "2.2.0",
      "navLinks": [
        {
          "label": "Website",
          "url": "https://acme.com"
        },
        {
          "label": "GitHub",
          "url": "https://github.com/acme/project"
        }
      ]
    }
  }'
Authentication: Required
projectId
string
required
Project unique identifier

Customization Options

Branding

customization.logoUrl
string
URL to your logo image. Displayed in the documentation header.Recommended:
  • PNG or SVG format
  • Transparent background
  • Maximum height: 48px
  • Hosted on a reliable CDN
customization.ownerName
string
Organization or owner name displayed in the documentation footer and metadata.
Example:
{
  "customization": {
    "logoUrl": "https://cdn.acme.com/logo.svg",
    "ownerName": "Acme Corporation"
  }
}

Version Information

customization.currentVersion
string
default:"1.0.0"
Current version number displayed in documentation. Follows semantic versioning.
customization.upcomingVersion
string
Optional upcoming/beta version number. Used to show version roadmap.
Example:
{
  "customization": {
    "currentVersion": "2.1.0",
    "upcomingVersion": "2.2.0-beta"
  }
}
Array of custom navigation links displayed in the documentation header.Each link object has:
  • label (string) - Link text
  • url (string) - Link destination URL
Example:
{
  "customization": {
    "navLinks": [
      {
        "label": "Home",
        "url": "https://acme.com"
      },
      {
        "label": "Blog",
        "url": "https://acme.com/blog"
      },
      {
        "label": "Support",
        "url": "https://support.acme.com"
      }
    ]
  }
}

Templates

Change the documentation template to match your brand style.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "twilio"
  }'
template
string
Template name. Available templates:Free Templates:
  • modern - Modern, clean design
  • minimal - Minimalist approach
Premium Templates (Pro or promo code required):
  • twilio - Twilio-inspired design
  • django - Django documentation style
  • mdn - MDN Web Docs style
  • aerolatex - LaTeX documentation style
  • fintech - Financial services style
  • devtools - Developer tools focused
  • minimalist - Ultra-minimal design
  • opensource - Open source project style
  • wiki - Wiki-style documentation
  • componentlib - Component library focused
  • consumertech - Consumer technology style
  • deepspace - Dark theme with space aesthetics
  • web3 - Web3/blockchain style
  • enterprise - Enterprise software style
Premium templates are available to Pro users or users who have redeemed the WHATDOCFAM promo code.

Domain Configuration

Subdomain

Set up a subdomain on whatdoc.xyz.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subdomain": "acme"
  }'
subdomain
string
Subdomain name (lowercase, alphanumeric and hyphens only).Result: acme.whatdoc.xyz
Validation:
  • Only lowercase letters, numbers, and hyphens allowed
  • Must be unique across all projects
  • Automatically converted to lowercase

Custom Domain

Configure a custom domain for your documentation.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "customDomain": "docs.acme.com"
  }'
customDomain
string
Your custom domain name. Must be a valid domain you control.
Automatic Setup: When you set a custom domain, WhatDoc automatically:
  1. Provisions SSL certificate via Cloudflare
  2. Adds domain to Vercel project
  3. Configures routing to your documentation
DNS Configuration: Point your domain to WhatDoc by adding a CNAME record:
Type: CNAME
Name: docs (or your subdomain)
Value: cname.vercel-dns.com
TTL: 3600
Remove Custom Domain: Set customDomain to empty string or null:
{
  "customDomain": ""
}
Domain Conflicts:
  • Each domain can only be mapped to one project
  • Attempting to use an already-mapped domain returns 409 Conflict
  • Cloudflare SSL provisioning may take 1-2 minutes

Update Documentation Content

Directly update the generated documentation content.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "generatedDocs": "# Updated Documentation\n\nThis is the updated content..."
  }'
generatedDocs
string
Raw documentation content (usually Markdown or MDX format)
Manual content updates will be overwritten if you regenerate documentation from the repository.

Update URL Slug

Change the project’s URL slug.
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "new-project-slug"
  }'
slug
string
New URL slug (lowercase, alphanumeric and hyphens only).Must be unique across all projects.
Validation:
  • Automatically converted to lowercase
  • Non-alphanumeric characters (except hyphens) removed
  • Must be unique

Complete Customization Example

Update all customization options at once:
curl -X PUT https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "enterprise",
    "slug": "acme-api-docs",
    "subdomain": "acme",
    "customDomain": "docs.acme.com",
    "customization": {
      "logoUrl": "https://cdn.acme.com/logo.svg",
      "ownerName": "Acme Corporation",
      "currentVersion": "3.0.0",
      "upcomingVersion": "3.1.0",
      "navLinks": [
        {
          "label": "Home",
          "url": "https://acme.com"
        },
        {
          "label": "API Status",
          "url": "https://status.acme.com"
        },
        {
          "label": "GitHub",
          "url": "https://github.com/acme/api"
        },
        {
          "label": "Support",
          "url": "https://support.acme.com"
        }
      ]
    }
  }'
message
string
Success message: “Project updated.”
project
object
Updated project object with all new settings applied

Retrieve Customization

Get current customization settings by fetching the project:
curl -X GET https://api.whatdoc.xyz/projects/PROJECT_ID \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
The response includes the customization object with all current settings.

Public Access to Customization

Customization settings are included in public endpoints:
# By custom domain
curl -X GET https://api.whatdoc.xyz/projects/custom-domain/docs.acme.com

# By subdomain  
curl -X GET https://api.whatdoc.xyz/projects/subdomain/acme

# By slug
curl -X GET https://api.whatdoc.xyz/projects/slug/acme-api-docs
These endpoints return customization data for rendering the documentation site.

Best Practices

Logo Guidelines:
  • Use SVG for scalability
  • Ensure good contrast on both light and dark themes
  • Test at different viewport sizes
Version Numbers:
  • Follow semantic versioning (MAJOR.MINOR.PATCH)
  • Update version numbers when regenerating docs after releases
Navigation Links:
  • Limit to 3-5 links for best UX
  • Use clear, concise labels
  • Ensure all URLs are HTTPS
Custom Domains:
  • Use a subdomain (e.g., docs.acme.com) rather than root domain
  • Wait 5-10 minutes after DNS changes for propagation
  • Test with both http:// and https:// after setup

Build docs developers (and LLMs) love