# Documentation - [Welcome](/docs): Brandfine is a multi-tenant headless CMS. Pick your integration path. - [Getting started](/docs/getting-started): 60-second integration. Get an API key, install the SDK, fetch your first posts. - Concepts - [Workspaces](/docs/concepts/workspaces): The unit of multi-tenancy. One workspace = one site = one API key. - [Post types](/docs/concepts/post-types): How Brandfine groups posts into families. - [Locales](/docs/concepts/locales): BCP47 locale codes, default-locale fallback, hreflang. - [Translation groups](/docs/concepts/translation-groups): How Brandfine ties locale variants of the same article together. - REST API - [Authentication](/docs/api/authentication): Workspace-scoped X-Api-Key header. One key per workspace. - [GET /external/workspace](/docs/api/workspace): Workspace metadata, customConfig, and schemaOrg. - [Posts](/docs/api/posts): GET /external/posts and GET /external/posts/:slug - [GET /external/categories](/docs/api/categories): Workspace categories filtered to those with published content. - [GET /external/navigations/:key](/docs/api/navigations): Workspace navigation by key, with POST items pre-resolved per locale. - [Webhooks](/docs/api/webhooks): Publish notifier — POST to your URL whenever workspace content changes. - SDK - [Installation](/docs/sdk/installation): Two packages — the core SDK and an optional Astro adapter. - [Quickstart](/docs/sdk/quickstart): From npm install to rendered nav in under 2 minutes. - [createBrandfineClient](/docs/sdk/client): The SDK's entry point. Typed HTTP client over the /external/* surface. - [Caching](/docs/sdk/caching): createCache and createKeyedCache — server-side SWR primitives. - [Resolvers](/docs/sdk/resolvers): Locale helpers and the navigation resolver. - [Webhook handler](/docs/sdk/webhooks): Framework-agnostic POST handler. Works on Astro, Next, Remix, Bun, Workers. - [Astro adapter](/docs/sdk/astro-adapter): @brandfine/client-astro — thin layer for Astro projects.