Quickstart and feature examples

API v0.1.17

Build the brand. Own the content.

AtlasCMS is a hosted service for many brands at once, with a free plan available and paid plans for teams. An API keeps the content, revisions and roles. Any Nuxt front end reads it through a read token.

$pnpm add @atlas/client @atlas/nuxt

Connect one brand in a few lines. The client reads the public API with a read token.

content.ts
import { createAtlasClient } from '@atlas/client'const atlas = createAtlasClient({  baseUrl: 'https://api.atlascms.id',  token: process.env.ATLAS_READ_TOKEN!,})const page = await atlas.getPage({ path: '/' })

One installation, many brands. Each request is scoped to its brand, and a foreign record is a 404.

brands.ts
// Every manage request names its brand.const headers = {  'Authorization': `Bearer ${token}`,  'X-Brand-Id': brandId,}await fetch(`${api}/v1/manage/entries`, { headers })

Every save writes a revision. Publish promotes the revision you pin, and a page that moved on answers 409.

publish.http
POST /v1/manage/entries/{entry}/publishX-Brand-Id: {brand}{  "revision_id": "01m4..."}

Editors request a review. Publishers approve it. Only then does a change reach the live site.

reviews.http
GET /v1/manage/reviewsX-Brand-Id: {brand}# editors request, publishers approve

Entries keep their translations as a group. Ask for a locale and get the translated entry back.

locale.ts
const posts = await atlas.getEntries({  type: 'post',  locale: 'id',  limit: 10,})

A publish fires a webhook signed with HMAC-SHA256, so the receiver can verify where it came from.

webhook.ts
// X-Atlas-Signature: sha256=<hmac>const expected = createHmac('sha256', secret)  .update(`${timestamp}.${body}`)  .digest('hex')

AI writes a draft revision. It never publishes on its own, so a person still approves every change.

ai.http
POST /v1/manage/ai/entries/{entry}/writeX-Brand-Id: {brand}# returns a draft revision, never a live page

Built for owners and agencies

AtlasCMS is for the people who run the brands and the people who run the sites.

Owners

Run every brand you own from one API, with each brand kept apart.

Agencies

Run client sites from the same API, with a role per brand for the people who work on each one.

Access you can audit

Who can reach a brand, what each role may change, and a record of every live change.

Tenancy per brand

Requests are scoped to a brand, and a foreign record answers 404.

Editor, publisher and admin roles

Each role changes only what it is allowed to.

Audit trail

Live changes write an audit row.

Start free, upgrade when a team needs more

A free plan to try the platform, and a paid plan for teams that run more brands together.

Start here

Free

  • One brand to try the platform
  • Public read API and the admin
  • Community support

For teams

Paid

  • More brands and seats for teams
  • Review workflow and roles for every brand
  • Priority support

From draft to live

A change moves through the API first. Your front end only reacts once a revision is published.

  1. 01 · AtlasCMS API

    Draft

    An editor saves a revision. Drafts are never served by the public read API.

  2. 02 · AtlasCMS API

    Review

    Editors request a review. A publisher approves the revision that goes live.

  3. 03 · Your front end

    Webhook

    The publish fires a signed webhook. Your server verifies the signature first.

  4. 04 · Your front end

    Revalidate

    Your front end refetches the entry with its ETag and rebuilds the page.

  5. 05 · AtlasCMS API

    Live

    The pinned revision is served on the public read API.

01

Drafts stay drafts

Only a publish moves content to the public read API. AI writes drafts only.

02

One revision, one answer

A publish pins a revision. If the page moved on, the API answers 409 revision_changed.

03

Signed webhooks

Each webhook carries an HMAC-SHA256 signature, so your server can check it came from AtlasCMS.

What ships today

Capabilities already in the AtlasCMS API and admin, not a roadmap. See everything on the features page.

Multi-brand tenancy

Run several brands from one installation, with entries, media and settings scoped to the brand they belong to.

Append-only revisions

Every entry keeps its full revision history, and publishing or scheduling promotes the revision you choose.

Review workflow

Editors, publishers and admins act only at the stage their role allows, so a change is reviewed before it goes live.

Block-based pages

Compose a page from blocks, and keep content types and translations next to the entries they describe.