GraphQL API
Jahia’s GraphQL API is the recommended application programming interface for working with the CMS. It lets an application, such as a React site or a mobile app, request exactly the content it needs in a single typed query. It queries the content repository (Content Repository) directly, specifying the target workspace, either the one holding content being edited or the one holding published content.
Definition and how it works
GraphQL is a query language for APIs. Instead of calling several endpoints that each return a fixed block of data, the client application describes in one query the exact fields it needs. It receives a response with the same shape. The typed schema documents what can be requested.
What an organization gains is the ability to serve the same content to several interfaces (website, mobile app, intranet, kiosks) without entering it twice. Front-end teams work with tooling they already know. Each screen only loads what it displays. It is the foundation of a headless CMS setup (content served through APIs to separate interfaces) or a hybrid CMS one.
Developers can extend the schema with their own types and queries, deployed with their module. Access remains subject to Jahia permissions and can be protected with tokens. A tool called GraphQL Playground, available from Jahia Administration (Developer Tools) to users with the right permissions, is used to write and test queries.
Academy documentation: using GraphQL to perform queries
Related terms: Content as a service · Headless CMS · Content Repository · Hybrid CMS · Content management system · Intranet
Resources that cover this term
- Use Case - PWA
- Headless CMS personalization: How to deliver truly adaptive experiences
- How to develop a DXP platform with the best UX for business users?
- What is Content as a Service (CaaS)?
- Best Java CMS in 2026: what to check before you choose a platform
- Creating A Progressive Web App In 2 Weeks - Part 2
GraphQL API vs headless CMS: the differences
GraphQL is a means of access, not an architecture. A headless CMS or a content-as-a-service approach describes how content delivery is organized. The GraphQL API is one of the tools that make it possible.
| Concept | What distinguishes it |
|---|---|
| Headless CMS | A content management system without a built-in presentation layer that delivers content through APIs. Jahia can be used this way or render pages itself. |
| Content as a service | A model where content is exposed as a service consumed by different interfaces. The API is its channel. |
| Content Repository | The repository stores content and its relationships. The GraphQL API queries it without replacing it. |
GraphQL API in practice
An organization publishes its offer pages on its website and in its mobile app. Editors enter the content once in Jahia. The website shows the full page. The app, through the GraphQL API, only requests the title, the teaser and the image, in the user’s language and from the published content workspace.
A query that works with a developer account does not prove the content is publicly accessible. The test has to run with the application’s real permissions.
Frequently asked questions
Do we need to go headless to benefit from Jahia’s GraphQL API?
No. The GraphQL API can feed an application or a separate front end while Jahia still renders the pages of the main website. The two approaches can be combined, with pages managed in Jahia for the site and content served through the API to a mobile app or another channel. The right mix depends on your front-end teams and your channels.
Does the GraphQL API bypass the permissions set on content?
No. Queries remain subject to Jahia permissions. An application only gets what the identity it uses is allowed to read, in the requested workspace. Access can be protected with tokens. It is up to the technical team to define the identity each application uses to query the API and to keep its rights to the strict minimum.
Can we expose business-specific data through the GraphQL API?
Yes, by extending it. The Academy documentation describes how to define your own types and queries in the GraphQL schema language, then deploy them with a module. A team can thus offer its applications a query tailored to its business instead of making them walk through the repository. It is development work to scope and maintain.