sderle.wikibot.io/third-gulf-war/ → wiki web UI (free wiki, under user namespace)
sderle.wikibot.io/third-gulf-war/api/v1/ → wiki REST API
sderle.wikibot.io/third-gulf-war/mcp → wiki MCP endpoint
```
-
### Custom domains (premium)
+
### Custom slugs (paid wikis)
-
Premium users can CNAME their own domain to their `{username}.wikibot.io` subdomain. Implementation: API Gateway custom domain + ACM certificate (free via AWS). The Lambda resolver checks DynamoDB for custom domain → user mapping.
+
Paid wikis get a top-level slug: `{slug}.wikibot.io`. This is a vanity URL that routes directly to the wiki without the username prefix. The slug is chosen at wiki creation time and must be globally unique (same validation rules as usernames: lowercase alphanumeric + hyphens, 3–30 characters, drawn from the same namespace/blocklist).
```
-
research.mysite.com → CNAME → sderle.wikibot.io
+
third-gulf-war.wikibot.io/ → wiki web UI (paid wiki, top-level slug)
+
third-gulf-war.wikibot.io/api/v1/ → wiki REST API
+
third-gulf-war.wikibot.io/mcp → wiki MCP endpoint
```
-
This requires wildcard routing at the API Gateway level (`*.wikibot.io`) and TLS cert provisioning per custom domain. ACM supports up to 2500 certs per account, which is fine for early scale. At larger scale, CloudFront with SNI handles this better.
+
The user-namespace URL (`sderle.wikibot.io/third-gulf-war/`) continues to work as a redirect. This means existing MCP connections and bookmarks survive if a free wiki is later upgraded to paid.
+
+
Implementation: the Lambda resolver checks the subdomain against the Wikis table's `custom_slug` GSI first, then falls back to username resolution.