Skip to content
CODELAND

Sanity as a headless CMS

One content, many heads

A classic CMS is one block: the editor, the database, and a built-in “head” that produces the web pages.

Headless doesn’t mean no head: it means removing the built-in one so you can choose your own. Website, app, screens, voice, feeds all read the same content over an API.

The condition: structured content with no layout baked in. Then a new channel is a new head, not a rewrite.

Every head below shows the latest published news item: “Sanity evaluation results presented at the CodeLand Plenary”.

Edit it in the Studio and publish: every head updates within seconds, without a reload. Open in the Studio

Content, not pages

Sanity doesn’t store HTML pages: it stores structured documents (title, excerpt, rich text as data, an image with a focal point, references). No colours, columns or templates inside the content.

That is why every frontend decides on its own how to show it, in any technology: React, plain HTML, Python, an app, a screen, a voice. Head 8 shows exactly the data they all receive.

Real, separate frontends

Four different technologies, no shared code, the same content in real time:

The heads

1. Website

Next.js, this site

GROQ in five minutes for AEM developers
Press release

Sanity evaluation results presented at the CodeLand Plenary

Read

2. Phone app

Preview: a native app would call the same query

CodeLand

Sanity evaluation results presented at the CodeLand Plenary

The full results of CodeLand’s Sanity evaluation, including the AEM concept map and the recommendation, are published after the Plenary.

3. Smartwatch

Preview: title only, because the content is structured

Press

Sanity evaluation results presented at the CodeLand Plenary

4. Office or airport screen

Preview; the real one is full screen and live

CodeLand · News

Sanity evaluation results presented at the CodeLand Plenary

Open the full-screen display

5. Voice assistant

Plain text from pt::text(), read aloud

Speech synthesis is not available in this browser.

“Sanity evaluation results presented at the CodeLand Plenary. The full results of CodeLand’s Sanity evaluation, including the AEM concept map and the recommendation, are published after the Plenary.”

6. RSS feed

XML for feed readers and podcasts

<item>
  <title>Sanity evaluation results presented at the CodeLand Plenary</title>
  <pubDate>Thu, 01 Oct 2026 07:00:00 GMT</pubDate>
</item>
/feed.xml?lang=en

7. Any language

HTTP and GROQ, no SDK: Python, terminal, Ruby…

curl "https://8augwmcx.apicdn.sanity.io/v2025-02-19/data/query/production?query=*%5B_type%20%3D%3D%20%22article%22%20%26%26%20language%20%3D%3D%20%22en%22%5D%20%7C%20order(publishedAt%20desc)%5B0%5D%7Btitle%2C%20excerpt%7D"

In the repository: Demo/heads/voice_briefing.py (Python, reads the headlines aloud) and Demo/heads/terminal.mjs (Node).

8. The raw data (JSON)

What every head receives from the API

{
  "_id": "5h6FyZinaruU6QbliPNVif",
  "author": "Marco Bianchi",
  "coverImage": {
    "_type": "accessibleImage",
    "alt": "GROQ in five minutes for AEM developers",
    "asset": {
      "_id": "image-c33647637e4be2368ef7a672885a86ed78902d93-1600x900-png",
      "metadata": {
        "dimensions": {
          "_type": "sanity.imageDimensions",
          "aspectRatio": 1.7777777777777777,
          "height": 900,
          "width": 1600
        },
        "lqip": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAACEElEQVQokS3Ra2vUQBQG4PysYiYzZy6ZmUwm1ya7bZPuZtMmrVvdal2FtqJoixdECiKUUhBR8Iv+SJnV4TDMh/eZD+f1EPIDHHApVWwp5yhACPmEEKBAKACjQCmXUkZGaEUF5yI0WWGyggruuSiQUEfSGALg/goQAMB/CZQxobUyNq0n5d5+Ula2qLRNCIDDlDMZW6F1gAPf4YAAECCEAgZCuRBKx1kxrC/Orj83w9KWlVAu7GGCTZqWO3tpuS2VYpxxIbgQoQylVqGS2sQmSafz/vLm7tWX+4PjsSgtFxwh3+OhaObdyZOzo+VJt1i0+23TtpPptGmbRd/Pu27W9f0wPn99/en775fvP5wOSVMSxrCPfE9F0Wxx8Gh1+nC5HI/GcRyHcdyfz+dddzgMh8N4MIyPz559vP128/PPxcXqxSLYTR9g7PbqqdgWVV1WVZ5nWZ7lRZGXRZxYbaLIGJtlSV7Mj5Zvb39cfb0/X02ftluJ8pE7vhclmTIx44wQDACMM8YZMLbpiQmlVGz71frN3a/L66vzUY71lmBoozeYSxngACEfY+eJ64kSACbCUEdRkvar9frdzerJ8ekMJtZ3nTi+wUwIjDEmGBilnFHGKOeU81BHysTa2qzeqWeLvXZnt460BIyDYDNeul1rY4XSLhpbba22iXJ3assq2a7jvIwS966aWTaZKhMLpf/NXwGlzPv7TYDWAAAAAElFTkSuQmCC"
      },
      "url": "https://cdn.sanity.io/images/8augwmcx/production/c33647637e4be2368ef7a672885a86ed78902d93-1600x900.png"
    }
  },
  "excerpt": "The full results of CodeLand’s Sanity evaluation, including the AEM concept map and the recommendation, are published after the Plenary.",
  "kind": "pressRelease",
  "plainText": "MILAN — Embargoed until 1 October 2026, 09:00 CEST.…",
  "publishedAt": "2026-10-01T07:00:00Z",
  "slug": "sanity-evaluation-results-presented-at-the-plenary",
  "title": "Sanity evaluation results presented at the CodeLand Plenary"
}

Sanity compared with other CMSs

WordPressAEMStrapiSanity
Head (rendering)Built in (PHP themes)Pages (HTL) + headless (Content Fragments, GraphQL)None: you pickNone: you pick
Where content livesYour databaseYour repository (or AEM Cloud Service)Your database (or Strapi Cloud)Sanity’s Content Lake (cloud, EU)
Who runs the backendYouYou or AdobeYouSanity (zero ops)
Editorwp-adminAuthor (Sites)Admin panelOpen-source Studio: customisable, hostable anywhere
A new channelPlugin or REST APIHeadless as an add-onREST/GraphQL APIOne GROQ query: nothing re-authored

Contentful is headless SaaS like Sanity, but its editor can’t be self-hosted.