Basis-URL, authenticatieschema's, tenant-resolutie en het foutenmodel voor de CMS REST API.
De Profound CMS REST API wordt aangeboden door de Rust-service translation_manager. Deze stelt headless lees-/stream-endpoints beschikbaar die door de renderer worden gebruikt, plus schrijvendpoints voor content, vertalingen en CSV-import.
Alle voorbeelden gebruiken {CMS_API_URL} als de basis-URL van je CMS API-host (bijvoorbeeld https://cms.dev.tryprofound.com). Er is geen globaal padprefix — routes worden aan de root gemonteerd, bijvoorbeeld {CMS_API_URL}/routes.
De API gebruikt twee afzonderlijke schema's afhankelijk van het endpoint.
Stuur de sleutel mee als de x-api-key-header of als de queryparameter api_key:
curl '{CMS_API_URL}/dataset/post?websiteId=<uuid>' \
-H 'x-api-key: <jouw-api-sleutel>'
Sleutels worden gevalideerd tegen WorkOS en kortstondig in het geheugen gecached. Voor lees-endpoints is een API-sleutel alleen nodig wanneer de server require_schema_api_key = true instelt; anders zijn anonieme leesacties toegestaan. De variant-upsert (PATCH /dataset/{schema_name}) vereist altijd een geldige sleutel met de permissie content_write.
Gebruikt API-sleutelauthenticatie: /routes, /route, /blocks*, /components*, /dataset/*, /schemas/*, /content-changes.
Beheerendpoints vereisen een WorkOS-gebruikers-JWT:
curl '{CMS_API_URL}/usage?orgId=<uuid>' \
-H 'Authorization: Bearer <workos-jwt>'
Gebruikt Bearer-authenticatie: /translation, /translations, /usage, /csv.
API-sleutelaanroepen bepalen de doelwebsite in deze volgorde:
?websiteId=<uuid>Host-header, vergeleken met een geconfigureerd webdomeinCMS_WEBSITE_ID-fallback (single-tenant / lokale ontwikkeling)Als geen van deze tot een geldige UUID leidt, retourneert het endpoint 400.
| Status | Betekenis |
|---|---|
400 | Ongeldig verzoek — ontbrekende/ongeldige websiteId, ongeldige UUID of validatiefout |
401 | Ontbrekende of ongeldige referenties |
403 | Geauthenticeerd maar zonder een vereiste permissie |
404 | Resource niet gevonden |
500 | Interne / databasefout |
GET {CMS_API_URL}/health retourneert { "status": "ok" } en vereist geen authenticatie — gebruik dit voor liveness-probes.