Skip to content
Menu
Search
Browse documentation & this page

Developer Guide

Delivery API

Read published pages, blocks and media, using the request hostname and culture.

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.