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
This does only return page meta informaiton. To retrieve the page content, you need to use the Placeholders.
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¶
List Pages¶
GET /api/{language}/pages/
Retrieve a list of all pages for the specified language.
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 placeholder relations with content_type_id, object_id, slot, and details
Note
You can use the application_namespace identifer 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": [
{
"content_type_id": 5,
"object_id": 11,
"slot": "content",
"details": "http://localhost:8080/api/en/placeholders/5/11/content/"
},
{
"content_type_id": 5,
"object_id": 11,
"slot": "cta",
"details": "http://localhost:8080/api/en/placeholders/5/11/cta/"
}
]
}
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 simplified list of pages with basic information.
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",
"absolute_url": "http://localhost:8080/en/",
"path": "/en/",
"is_home": true,
"in_navigation": true
},
{
"title": "About Us",
"absolute_url": "http://localhost:8080/en/about/",
"path": "/en/about/",
"is_home": false,
"in_navigation": true
}
]
}
Pages Tree¶
GET /api/{language}/pages-tree/
Retrieve pages in a hierarchical tree structure.
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",
"absolute_url": "http://localhost:8080/en/",
"path": "/en/",
"is_home": true,
"in_navigation": true,
"children": [
{
"title": "About Us",
"absolute_url": "http://localhost:8080/en/about/",
"path": "/en/about/",
"is_home": false,
"in_navigation": true,
"children": []
},
{
"title": "Contact",
"absolute_url": "http://localhost:8080/en/contact/",
"path": "/en/contact/",
"is_home": false,
"in_navigation": true,
"children": []
}
]
}