profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

Quick startSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST API

REST API OverviewgetConnect your websitegetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

REST API Overview

Base URL, authentication schemes, tenant resolution, and the error model for the CMS REST API.

The Profound CMS REST API is served by the Rust translation_manager service. It exposes headless read/stream endpoints used by the renderer, plus write endpoints for content, translation, and CSV import.

All examples use {CMS_API_URL} as the base URL of your CMS API host (for example https://cms.dev.tryprofound.com). There is no global path prefix β€” routes are mounted at the root, e.g. {CMS_API_URL}/routes.

Authentication

The API uses two separate schemes depending on the endpoint.

API key (headless reads + variant upsert)

Send the key as the x-api-key header or the api_key query parameter:

curl '{CMS_API_URL}/dataset/post?websiteId=<uuid>' \
  -H 'x-api-key: <your-api-key>'

Keys are validated against WorkOS and cached briefly in memory. For read endpoints, an API key is only required when the server sets require_schema_api_key = true; otherwise anonymous reads are allowed. The variant upsert (PATCH /dataset/{schema_name}) always requires a valid key carrying the content_write permission.

Uses API-key auth: /routes, /route, /blocks*, /components*, /dataset/*, /schemas/*, /content-changes.

Bearer JWT (WorkOS)

Management endpoints require a WorkOS user JWT:

curl '{CMS_API_URL}/usage?orgId=<uuid>' \
  -H 'Authorization: Bearer <workos-jwt>'

Uses Bearer auth: /translation, /translations, /usage, /csv.

Resolving the website (tenant)

API-key endpoints resolve the target website in this order:

  1. The ?websiteId=<uuid> query parameter
  2. The Host header, matched against a configured website domain
  3. The CMS_WEBSITE_ID fallback (single-tenant / local dev)

If none resolves to a valid UUID, the endpoint returns 400.

Error model

StatusMeaning
400Bad request β€” missing/invalid websiteId, invalid UUID, or validation failure
401Missing or invalid credentials
403Authenticated but missing a required permission
404Resource not found
500Internal / database error

Health check

GET {CMS_API_URL}/health returns { "status": "ok" } and needs no authentication β€” use it for liveness probes.

Continue Reading
NextConnect your websiteβ€Ί