Pages Endpoints¶
The Pages endpoints provide django CMS pages and their content.
This returns all pages available for the specified language with their metadata and placeholder information
Page information includes titles, URLs, navigation settings, and template configurations
This endpoint is essential for page meta information, SEO and building page listings
Pages can be retrieved as a nested tree structure or a list of pages with pagination support
Note
The single-page endpoints (/pages/ and /pages/{path}/) embed each placeholder
together with its serialized content. The list and tree endpoints
(/pages-list/ and /pages-tree/) return page meta information only; use the
Placeholders endpoint to retrieve their content.
Warning
Fetching a deeply nested tree of pages can be very slow for large page sets. Use the Pages List API instead.
CMS Reference¶
Endpoints¶
Retrieve Home Page¶
GET /api/{language}/pages/
Retrieve the home (root) page for the specified language. The response is a single page object that includes its placeholders together with their serialized content.
Response Attributes:
title: Page titlepage_title: SEO page titlemenu_title: Navigation menu titlemeta_description: SEO meta descriptionredirect: Redirect URLin_navigation: Whether the page appears in navigationsoft_root: Whether this is a soft root pagetemplate: Page template namexframe_options: X-Frame-Options settinglimit_visibility_in_menu: Whether to limit visibility in menulanguage: Language codepath: URL pathabsolute_url: Complete URL to the pageis_home: Whether this is the home pagelogin_required: Whether login is required to view the pagelanguages: Array of available language codesis_preview: Whether this is a previewapplication_namespace: Application namespacecreation_date: Page creation date (ISO format)changed_date: Last modification date (ISO format)details: Page details/descriptionplaceholders: Array of placeholders, each withslot,label,language,content(serialized plugin tree),details(link to the placeholder endpoint), andhtml(empty unless?html=1is set)
Note
You can use the application_namespace identifier to render your django app in a decoupled frontend application. Similar to how you would render a django app using app_hooks.
Path Parameters:
language(string, required): Language code (e.g., “en”, “de”)
Query Parameters:
preview(boolean, optional): Set to true to preview unpublished content (admin access required)
Example Request:
GET /api/en/pages/?preview=true
Example Response:
{
"title": "test",
"page_title": "test",
"menu_title": "test",
"meta_description": "",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "",
"absolute_url": "http://localhost:8080/",
"is_home": true,
"login_required": false,
"languages": [
"de",
"en"
],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/",
"placeholders": [
{
"slot": "content",
"label": "Content",
"language": "en",
"content": [
{
"plugin_type": "TextPlugin",
"body": "<p>Hello World!</p>"
}
],
"details": "http://localhost:8080/api/en/placeholders/5/11/content/",
"html": ""
},
{
"slot": "cta",
"label": "CTA",
"language": "en",
"content": [],
"details": "http://localhost:8080/api/en/placeholders/5/11/cta/",
"html": ""
}
]
}
Retrieve Page by Path¶
GET /api/{language}/pages/{path}/
Retrieve a specific page by its path.
Path Parameters:
language(string, required): Language code (e.g., “en”, “de”)path(string, required): Page path (e.g., “about”, “contact”)
Query Parameters:
preview(boolean, optional): Set to true to preview unpublished content (admin access required)
Example Request:
GET /api/en/pages/about/?preview=true
Example Response:
{
"title": "About Us",
"page_title": "About Us - Our Company",
"menu_title": "About",
"meta_description": "Learn more about our company",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/about/",
"absolute_url": "http://localhost:8080/en/about/",
"is_home": false,
"login_required": false,
"languages": [
"de",
"en"
],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/about/",
"placeholders": [
{
"content_type_id": 5,
"object_id": 12,
"slot": "content",
"details": "http://localhost:8080/api/en/placeholders/5/12/content/"
}
]
}
List Pages (Paginated)¶
GET /api/{language}/pages-list/
Retrieve a paginated list of pages for the specified language. Each entry contains the
same page meta fields as a single page (without placeholders).
Path Parameters:
language(string, required): Language code (e.g., “en”, “de”)
Query Parameters:
limit(integer, optional): Number of items to returnoffset(integer, optional): Number of items to skippreview(boolean, optional): Set to true to preview unpublished content (admin access required)
Example Request:
GET /api/en/pages-list/?limit=10&offset=0&preview=true
Example Response:
{
"count": 25,
"next": "http://localhost:8080/api/en/pages-list/?limit=10&offset=10",
"previous": null,
"results": [
{
"title": "Home",
"page_title": "Home",
"menu_title": "Home",
"meta_description": "",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/",
"absolute_url": "http://localhost:8080/en/",
"is_home": true,
"login_required": false,
"languages": ["de", "en"],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/"
},
{
"title": "About Us",
"page_title": "About Us - Our Company",
"menu_title": "About",
"meta_description": "Learn more about our company",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/about/",
"absolute_url": "http://localhost:8080/en/about/",
"is_home": false,
"login_required": false,
"languages": ["de", "en"],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/about/"
}
]
}
Search Pages¶
GET /api/{language}/page_search/
Search for pages matching a search term. Returns the same paginated structure as the Pages List API.
Path Parameters:
language(string, required): Language code (e.g., “en”, “de”)
Query Parameters:
q(string, optional): Search term used to find matching pageslimit(integer, optional): Number of items to returnoffset(integer, optional): Number of items to skippreview(boolean, optional): Set to true to preview unpublished content (admin access required)
Note
Without a q parameter the search returns an empty result set.
Example Request:
GET /api/en/page_search/?q=about
Example Response:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"title": "About Us",
"page_title": "About Us - Our Company",
"menu_title": "About",
"meta_description": "Learn more about our company",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/about/",
"absolute_url": "http://localhost:8080/en/about/",
"is_home": false,
"login_required": false,
"languages": ["de", "en"],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/about/"
}
]
}
Pages Tree¶
GET /api/{language}/pages-tree/
Retrieve pages in a hierarchical tree structure. The response is an array of root page
nodes; each node carries the full page meta fields plus a children array of the same
shape.
Path Parameters:
language(string, required): Language code (e.g., “en”, “de”)
Query Parameters:
preview(boolean, optional): Set to true to preview unpublished content (admin access required)
Example Request:
GET /api/en/pages-tree/?preview=true
Example Response:
[
{
"title": "Home",
"page_title": "Home",
"menu_title": "Home",
"meta_description": "",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/",
"absolute_url": "http://localhost:8080/en/",
"is_home": true,
"login_required": false,
"languages": ["de", "en"],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/",
"children": [
{
"title": "About Us",
"page_title": "About Us - Our Company",
"menu_title": "About",
"meta_description": "Learn more about our company",
"redirect": "",
"in_navigation": true,
"soft_root": false,
"template": "INHERIT",
"xframe_options": "",
"limit_visibility_in_menu": false,
"language": "en",
"path": "/en/about/",
"absolute_url": "http://localhost:8080/en/about/",
"is_home": false,
"login_required": false,
"languages": ["de", "en"],
"is_preview": false,
"application_namespace": "",
"creation_date": "2025-05-22T19:30:49.343177Z",
"changed_date": "2025-05-22T19:30:49.343248Z",
"details": "http://localhost:8080/api/en/pages/about/",
"children": []
}
]
}
]