Welcome
Brandfine is a multi-tenant headless CMS. Pick your integration path.
Brandfine ships every workspace's content through one stable
HTTP surface: /external/*. Consumer sites — Astro, Next.js,
Remix, anywhere with fetch — read posts, navigations,
categories, and workspace metadata from that surface and
render them however they like.
Two integration paths:
REST API
Plain HTTP. Use it directly from any language with a JSON HTTP
client. Auth is a single workspace-scoped X-Api-Key header.
SDK (TypeScript)
@brandfine/client wraps the REST surface with typed methods,
server-side caches with stale-while-revalidate semantics, locale
helpers, navigation resolvers, and a framework-agnostic webhook
handler. @brandfine/client-astro adds an Astro APIRoute
shape on top.
npm install @brandfine/client @brandfine/client-astroStart with the SDK quickstart →
Core concepts
Whichever path you take, you'll work with the same domain model: workspaces own posts (grouped by post types), categories, and navigations. Translation groups tie locale variants of the same article together.
Built-in analytics
Every workspace gets a self-hosted analytics surface inside the CMS — visitor counts, top pages, sources, real-time view, and a content × traffic join that links each pageview back to the post that produced it. Cookieless, no consent banner, no third-party data sharing.
Concept overview → · SDK install →
Contact-form submissions
bf.submissions.create({...}) ingests contact-form submissions
into the workspace's Submissions inbox. Standard fields
(name, email, message) plus optional phone, subject,
source, and free-form metadata round-tripped to the CMS.
Work in Brandfine from Claude
Connect Claude (web, desktop, mobile or Claude Code) to your Brandfine account and ask it to draft, edit, translate and publish posts. You sign in once in the browser; no API keys to copy.
Using AI to integrate?
These docs ship with llms.txt and
llms-full.txt — markdown-formatted, AI-friendly
versions of everything you see here. Drop the URL into ChatGPT,
Claude, or Cursor (@docs https://docs.brandfine.co/llms-full.txt)
and the model has the full reference in context.