The HTTP delivery API reads published content. It is useful for a headless frontend, a server integration, or inspecting what the CMS currently delivers. It is separate from authoring APIs and MCP tools that can change content.
Make your first request
Replace the host, culture and path with values from your website:
curl -i "https://YOUR-CMS-HOST/api/site"
curl -i "https://YOUR-CMS-HOST/api/en-US/pages/articles/hello"
The hostname selects the website; the culture segment selects the language. /api/site
reports site metadata. Page paths are relative to that website's start page. A root page read
uses /api/en-US/pages/.
If delivery keys are required, add X-Cendia-Api-Key: YOUR-DELIVERY-KEY. Create and manage these
under the website's delivery API key settings. See
Delivery API keys for requirements, limits and
rotation. Keys for external services under Settings > Configuration are a different feature.
Select the appropriate endpoint
| Request | Purpose |
|---|---|
GET /api/site |
Website metadata for the requested host |
GET /api/cultures |
Available cultures |
GET /api/{culture}/pages/{path} |
A published page |
GET /api/{culture}/children/{path} |
Children under a page |
GET /api/{culture}/ancestors/{path} |
A page's ancestors |
GET /api/{culture}/blocks/{id} |
A published block by ID |
GET /api/{culture}/media/{id} |
Published media metadata by ID |
GET /api/{culture}/query |
A filtered, paged content query, when enabled |
Use your actual ID in place of {id}. Media metadata and the media file itself are different
resources: follow the media URL returned by the API.
Query a list of pages
curl -i "https://YOUR-CMS-HOST/api/en-US/query?type=mysite.page.article&page=1&size=10&sort=-published"
type is the stable content type ID, not the C# class name. under can narrow a query to a
page path. Supported sort values are published, -published, order, name and -name.
Use the response's paging information to retrieve subsequent pages.
The query endpoint can be disabled with Cendia:EnableQueryApi. Filters can target only fields
declared [Indexed], after their backfill finishes. A field that is unavailable for filtering
produces an error rather than an incomplete answer. Do not treat the query endpoint as an
unrestricted database query interface.
Publication, permissions and errors
Public delivery respects publication dates, expiry and content read permissions. A delivery key does not make an unpublished page public. A missing result should not be retried endlessly: first verify the hostname, culture, path, publication state and caller access.
Handle non-success responses explicitly. An invalid query or sort may produce a bad request; a disabled endpoint or unavailable content may produce a missing response. Inspect the body for useful error details. Never treat every missing response as proof that content was deleted.
Preview and next steps
Use the authenticated preview surface for drafts. For selected fields and typed client generation, see GraphQL. For a complete frontend workflow, follow Build headless.