The publishing service still exists underneath the editorial site. This section keeps API and deployment details away from the reader-facing homepage.
What it is
PageDrop-compatible publishing, now used for content
create.brillyance began as a private HTML page publisher. The same mechanism now powers discoverable editorial pieces: a generated HTML article is stored privately, then served through a stable /s/:idOrSlug route with metadata, analytics, and optional indexability.
The homepage is intentionally separate. It curates published work and links to live pages, while this docs route explains how the publishing engine works.
API
Endpoints
Base path: /api/v1/sites. All write operations require Authorization: Bearer PUBLISH_TOKEN.
Creates a page and returns the public URL plus delete token.
PUT
/api/v1/sites/:siteId
X-Delete-Token plus replacement HTML and optional password.
Updates the existing page without changing its public URL.
POST
/api/v1/sites/:siteId/assets
X-Delete-Token plus { assets: [{ path, contentType, base64 }] }.
Uploads page-owned assets and returns public app-served URLs.
DELETE
/api/v1/sites/:siteId
X-Delete-Token
Deletes the stored HTML and metadata.
GET
/api/v1/sites/:siteId
No body.
Returns public metadata, never the raw HTML or secrets.
GET
/s/:idOrSlug
Public article/page route.
Renders the HTML, with password gate when configured.
Discovery
SEO controls
Published pages default to private sharing behavior. Setdiscoverable when a page should receiveindex, follow, canonical tags, Open Graph tags, and a sitemap entry.
Use title and description for article previews and snippets.
Keep /embed/:id out of the index; canonical URLs point back to /s/:id.
The public homepage and /docs are crawlable static pages.
Access
TTL and passwords
Omit ttl for permanent pages, use1h through 365d for expiry, or useonce for a one-time view. Password-protected pages are served only after the visitor unlocks the route with the configured password.
HTML is stored in private Vercel Blob storage and served through the Next.js route handler, so the raw blob URL is not exposed to visitors. Page-owned assets are stored privately under the site ID and served publicly through/assets/:siteId/....