This topic introduces the concept of "headless CMS" and the Episerver Content Delivery API. A "headless CMS" consists of a back-end content repository that can be accessed for example through a RESTful API, providing flexibility when pulling content data into other systems.
The Episerver Content Delivery API is installed through a set of NuGet packages, depending on the scenario in which the headless API will be used. See Installing Content Delivery API for installation and configuration details.
See also David Buö's blog post Get started with Content Delivery API 2.2.0.
A traditional non-headless CMS is built so that the CMS runnning on the server controls how the content is presented. The "head" is responsible for generating the HTML that is parsed and rendered by the browser.
A headless CMS is a back-end only CMS built up as a content repository that makes content accessible through REST APIs for display on multiple devices. The "head" is the front-end, and the "body" is the back-end content repository. The "missing head" is the presentation layer.
The headless CMS does not know how content is presented. It is a specialized database, serving content that is transformed into HTML by other systems. Episerver CMS has a powerful presentation layer, and as such is not a headless CMS.
However, there are situations where a headless approach is preferred, to provide the ability to pull raw content from outside the presentation layer.
The following are example scenarios when a headless approach is useful:
The Content Delivery API is a flexible programming interface that you can use for building this type of solutions, using Episerver as a hub for all content.
The Content Delivery API is a pluggable and configurable web API for querying IContent, providing you with the ability to:
How do you add content personalization to a headless solution where the tracking does not hit a controller in the presentation layer?
You can use a headless approach through the Content Delivery API, for content recommendations with Episerver Advance. To do this you need to implement a compatible tracking, and calls to the recommendation API, since in this case you cannot use the native integration packages. See Tracking and Advance API.
In a headless scenario, you can also customize the DefaultContentModelMapper and replace it with your own. See How to customize API to change data returned to clients and Serialization.
Note: The DefaultContentModelMapper is currently marked as internal, so there is a risk of unadvertised breaking changes when customizing this.
Last updated: Feb 01, 2019