Products
Products
Video Hosting
Upload and manage your videos in a centralized video library.
Image Hosting
Upload and manage all your images in a centralized library.
Galleries
Choose from 100+templates to showcase your media in style.
Video Messaging
Record, and send personalized video messages.
CincoTube
Create your own community video hub your team, students or fans.
Pages
Create dedicated webpages to share your videos and images.
Live
Create dedicated webpages to share your videos and images.
For Developers
Video API
Build a unique video experience.
DeepUploader
Collect and store user content from anywhere with our file uploader.
Solutions
Solutions
Enterprise
Supercharge your business with secure, internal communication.
Townhall
Webinars
Team Collaboration
Learning & Development
Creative Professionals
Get creative with a built in-suite of editing and marketing tools.
eCommerce
Boost sales with interactive video and easy-embedding.
Townhall
Webinars
Team Collaboration
Learning & Development
eLearning & Training
Host and share course materials in a centralized portal.
Sales & Marketing
Attract, engage and convert with interactive tools and analytics.
"Cincopa helped my Enterprise organization collaborate better through video."
Book a Demo
Resources
Resources
Blog
Learn about the latest industry trends, tips & tricks.
Help Centre
Get access to help articles FAQs, and all things Cincopa.
Partners
Check out our valued list of partners.
Product Updates
Stay up-to-date with our latest greatest features.
Ebooks, Guides & More
Customer Stories
Hear how we've helped businesses succeed.
Boost Campaign Performance Through Video
Discover how to boost your next campaign by using video.
Download Now
Pricing
Watch a Demo
Demo
Login
Start Free Trial
Umbraco, originally built as a .NET-based content management system, can be configured as a headless CMS by exposing content through RESTful and GraphQL APIs. In this mode, Umbraco’s back office handles structured content and media management, while frontend applications (built with any technology) consume this content via API endpoints. This architecture enables flexible frontend development, supports hierarchical content organization, multilingual variants, and provides CDN-backed media delivery. Operating headlessly, Umbraco offers robust content modeling and delivery features but also introduces certain constraints. Public APIs are read-only, preventing external write operations. Media transformations must be handled outside the platform, and API responses are tightly coupled to the back-office schema. These architectural decisions define both the strengths and limitations of Umbraco as a headless CMS. Architecture of UmbracoContent Modeling Content types (document types) are defined in the Umbraco backoffice. Each content type consists of fields such as text, rich text, media, and nested content. Example : Defining a Document Type in Backoffice Create a document type called Article with fields: title (Textstring), body (Rich Text), author (Textstring), coverImage (Media Picker). Exposing Content via REST API The Umbraco Content Delivery API enables headless content delivery by exposing structured content as JSON. This allows frontend applications and external systems to retrieve and display content directly from Umbraco, supporting modern web, mobile, and multi-channel experiences through simple, secure API endpoints. Example : Fetching a Content Node by ID GET https://your-umbraco-site.com/umbraco/delivery/api/v2/content/items?id={GUID} Api-Key: {API_KEY} Sample JSON Response : { 'id': '1234', 'contentType': 'article', 'name': 'Headless CMS in Practice', 'properties': [ { 'alias': 'title', 'value': 'Headless CMS in Practice' }, { 'alias': 'body', 'value': '
This is the article body.
' }, { 'alias': 'author', 'value': 'Jane Doe' }, { 'alias': 'coverImage', 'value': 'https://cdn.umbraco.io/media/abcd1234/cover.jpg' } ] } Properties are returned as an array of alias-value pairs, matching the schema defined in the back office. Exposing Content via GraphQL (Heartcore or Community Packages) Umbraco Heartcore provides a built-in GraphQL API for querying published content in a flexible, efficient manner. Community packages like Nikcio.UHeadless also enable GraphQL endpoints for self-hosted Umbraco projects. The GraphQL schema is auto-generated based on the content types defined in the Umbraco backoffice, allowing clients to request exactly the fields and structures they need without over-fetching or multiple roundtrips. Example : Fetching Content with GraphQL query { content(id: '1234') { name properties { alias value } } } Explanation : The content field takes an id argument and returns the node’s name and its properties. The properties array contains alias-value pairs, directly reflecting the schema defined in Umbraco. The GraphQL schema is generated based on the content types defined in Umbraco. Media Handling in Umbraco Umbraco manages media files (such as images, documents, and videos) through its dedicated media library in the back office. When a media file is uploaded, it is stored either on the local file system, in cloud storage (like Azure Blob Storage), or routed through a CDN, depending on the configured storage provider and deployment environment. For cloud-hosted or high-traffic sites, using a CDN is recommended to improve delivery speed and reduce server load. How Media URLs Work: Each media item in Umbraco is assigned a unique URL. When the system is configured with a CDN provider (e.g., via AddCdnMediaUrlProvider() in code or through appsettings.json), these URLs point to the CDN endpoint. In API responses, media properties return the absolute CDN-backed URL, which the frontend can use directly to render images or other assets. Example : { 'alias': 'coverImage', 'value': 'https://cdn.umbraco.io/media/abcd1234/cover.jpg' } This approach ensures that media files are delivered efficiently, leveraging CDN caching and HTTP/2 support where available. Features of Umbraco Multilingual Content Support Umbraco supports language variants at the content node level. You can request specific language versions using the API. Example : Fetching Localized Content GET https://your-umbraco-site.com/umbraco/delivery/api/v2/content/items?id={GUID} Api-Key: {API_KEY} Accept-Language: fr-FR Explanation: The API returns the French variant of the content if available. Webhook Integration Umbraco’s webhook system enables real-time, event-driven communication between the CMS and external services. When specific content or media events occur (such as publishing, unpublishing, deleting, or saving), Umbraco can send HTTP POST requests to configured endpoints. This mechanism automates workflows, synchronizes data, and integrates with third-party platforms without manual intervention. Decoupled Frontend Example You can consume Umbraco content in any frontend framework. Here’s a Next.js example using the Content Delivery API. // pages/index.js import axios from 'axios'; export async function getStaticProps() { const { data } = await axios.get( 'https://your-umbraco-site.com/umbraco/rest/v1/content/root', { headers: { Authorization: 'Bearer YOUR_API_KEY' } } ); return { props: { articles: data.items } }; } Explanation: This fetches root-level content nodes at build time, passing them as props for static site generation. Security and Access Control Umbraco secures its Content Delivery API using API keys, which must be included in the Authorization header of each request. This ensures that clients with valid credentials can access the API endpoints and retrieve content data. Public-facing APIs are read-only for external consumers to fetch and display content only. But they cannot create, modify, or delete content through these endpoints. All write operations (such as publishing, editing, or deleting content) are restricted to the Umbraco back office, where user authentication and role-based access control are enforced. Comparison between Self-Hosted Umbraco and Umbraco Heartcore (SaaS)