DevelopersPUBLIEKE CONTENT API

Gewoon REST en JSON. Dicht totdat jij het opent.

De publieke API-configuratie per site bepaalt precies wat er wordt opengesteld en voor wie. Haal gepubliceerde content, sitemaps en redirects op in overal dezelfde voorspelbare JSON-vorm — geen GraphQL-schema om te leren, geen gegenereerde client om bij te houden. Elk verzoek hieronder is echt: een blog gebouwd op CMSHub, aangeroepen met niets anders dan curl.

01 / GEPUBLICEERDE CONTENT OPHALEN

Eén GET-verzoek, gepubliceerde records als JSON

Zodra een site zich aanmeldt en een collectie toestaat, zijn de gepubliceerde records één simpel GET-verzoek verwijderd — volledig opgelost via de Host-header, zonder API-sleutel voor publieke data.

  • Alleen GEPUBLICEERDE records worden ooit teruggegeven — concepten en ongepubliceerde revisies lekken nooit via het publieke pad.
  • Standaard geweigerd: een onbekende host, een uitgeschakelde site of een niet-toegestane collectie geven allemaal op dezelfde manier een 404.
  • ?locale=xx geeft de gepubliceerde variant in die taal terug, met terugval op de standaardtaal van de workspace.
GEThttps://the-signal.blog/api/posts
curl https://the-signal.blog/api/posts
RESPONSE
{
  "siteId": "the-signal-4f2a",
  "siteName": "The Signal",
  "baseUrl": "https://the-signal.blog",
  "collection": {
    "id": "3b0d6f2a-9c41-4e8a-8f2e-1d4c9a7b6e11",
    "slug": "posts",
    "name": "Posts"
  },
  "data": [
    {
      "id": "a91f2e3c-7d5b-4a10-9c3e-6f8a2b1d0e44",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "Shipping a public content API without a GraphQL schema",
        "slug": "shipping-a-public-content-api",
        "excerpt": "Plain REST beats a bespoke query language when a frontend just needs JSON.",
        "category": "Engineering",
        "author": "Dana Osei",
        "published_at": "2026-09-10"
      }
    },
    {
      "id": "d2c5b8a1-4e3f-4c9d-8b7a-2f1e6d5c4b33",
      "locale": "en",
      "translationOfId": null,
      "data": {
        "title": "What the quality gate actually checks before you publish",
        "slug": "the-quality-gate-explained",
        "excerpt": "Every generated page passes the same checks, whether it's post 1 or post 10,000.",
        "category": "Product",
        "author": "Dana Osei",
        "published_at": "2026-09-04"
      }
    }
  ],
  "meta": {
    "locale": "en",
    "pagination": { "start": 0, "limit": 20, "total": 2, "nextCursor": null }
  }
}
02 / VINDBAARHEID, AUTOMATISCH

Een sitemap die altijd klopt met wat echt gepubliceerd is

sitemap.xml en robots.txt worden gegenereerd uit dezelfde pagina-inventaris die de content-API leest — geen aparte configuratie om synchroon te houden, niets om met de hand opnieuw te genereren.

  • Weerspiegelt bij elk verzoek de live pagina-inventaris — publiceer een pagina en ze staat in de sitemap.
  • hreflang-alternatieven worden automatisch toegevoegd voor elke pagina met vertaalde varianten.
  • /robots.txt verwijst crawlers per site naar dezelfde sitemap.
GEThttps://the-signal.blog/sitemap.xml
curl https://the-signal.blog/sitemap.xml
RESPONSE
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url><loc>https://the-signal.blog/posts/shipping-a-public-content-api</loc><lastmod>2026-09-10T14:22:00.000Z</lastmod></url>
  <url><loc>https://the-signal.blog/posts/the-quality-gate-explained</loc><lastmod>2026-09-04T09:15:00.000Z</lastmod></url>
</urlset>
03 / STANDAARD GESLOTEN

Jij bepaalt wat een site openstelt

Publieke content-API's blijven dicht totdat je expliciet instelt wat een site openstelt — er is geen standaard open endpoint dat ongemerkt ongepubliceerde content of concepten serveert.

Configuratie per site

Schakel de publieke API voor elke site in een workspace afzonderlijk in en configureer hem.

Alleen gepubliceerde content

De publieke API levert alleen wat door de kwaliteitscontrole is gekomen en echt gepubliceerd is — nooit concepten.

Geversioneerd, stabiel

Elke route staat onder een geversioneerd pad, dus een integratie die je vandaag bouwt, blijft werken terwijl CMSHub zich ontwikkelt.

ROEP EEN ECHT ENDPOINT AAN

Zet de publieke API aan voor een site.

Schakel de publieke content-API in voor een van je sites en haal een gegenereerde pagina op.