dotCMS Page API

Page rendering, layout management, and content operations

Business capability
Content Management AE-170.70

Operations 18

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /api/v1/page/{pageId}/content Replace which content sits in a page's containers · Replace the content mapping of a page #
Ask an LLM
“How do I set exactly which contentlets appear in each container on a page?”
“Does saving page content remove anything I leave out of a container slot?”
Tell an agent
Replace the container content mapping on page {pageId}.
Set the content layout of page {pageId} for variant {variantName}.
GET /api/v1/page/{pageId}/languages Check which languages a page exists in · Check page availability by language (deprecated) #
Ask an LLM
“Which languages is this page already translated into?”
“Is there an older endpoint that flags page availability per language?”
Tell an agent
List the languages page {pageId} is available in.
Check which language versions exist for page {pageId}.
POST /api/v1/page/_check-permission Check a user's permission on a page · Check user permission on a page #
Ask an LLM
“Can the current user edit or publish a given page path?”
“What permission is checked by default when I test access to a page?”
Tell an agent
Check whether I have {type} permission on page {path}.
Verify I can read page {path} on site {hostId}.
PUT /api/v1/page/copyContent Copy a contentlet placed on a page · Copy a contentlet on a page #
Ask an LLM
“Can I duplicate a single contentlet that's already placed on a page?”
“What gets returned when I copy content inside a page container?”
Tell an agent
Copy contentlet {contentId} in container {containerId} on page {pageId}.
Make an editable copy of content {contentId} used on page {pageId}.
PUT /api/v1/page/{pageId}/_deepcopy Deep copy a page and all its content · Deep copy a page and all its content #
Ask an LLM
“How do I clone a page along with copies of every contentlet on it?”
“Does a deep copy duplicate the page's content or just link to it?”
Tell an agent
Deep copy page {pageId} including all its content.
Clone page {pageId} with fresh copies of every contentlet.
POST /api/v1/page/actions Find workflow actions available for a page · Find available workflow actions for a page #
Ask an LLM
“What workflow actions can I take on the page at a given path?”
“Can I get a page's properties and its available actions together?”
Tell an agent
List the workflow actions available for page {path}.
Show page {path} on site {hostId} with its available workflow actions.
GET /api/v1/page/{pageId}/content/tree Get a page's container-to-content structure · Get the multi-tree content structure of a page #
Ask an LLM
“Which contentlets are placed in which containers on this page?”
“Can I see the multi-tree mapping and order of content on a page?”
Tell an agent
Show the content tree of page {pageId}.
Get the container and contentlet positions for page {pageId}.
GET /api/v1/page/{pageId}/render/versions Compare a page's live and preview versions · Get live and preview render versions of a page #
Ask an LLM
“Does my page have unpublished changes compared to the live version?”
“Can I render both the live and working versions of a page at once?”
Tell an agent
Compare live and preview renders of page {pageId}.
Check if page {pageId} differs between live and working in language {langId}.
GET /api/v1/page/types List content types that act as pages · Get content types associated with pages #
Ask an LLM
“Which content types can render as pages, including URL-mapped ones?”
“Can I filter and page through page-capable content types?”
Tell an agent
List all content types that are pages or have URL map patterns.
Find page content types matching {filter}.
GET /api/v1/page/{pageId}/personas List personas personalized on a page · Get personalized personas for a page #
Ask an LLM
“Which personas have their own content variation on this page?”
“Can I tell which personas are still using the default page content?”
Tell an agent
List personas and whether each is personalized on page {pageId}.
Show personalized personas on page {pageId} for site {hostId}.
GET /api/v1/page/_render-sources/{uri} Map a rendered page to its source files · Get render sources for a page #
Ask an LLM
“Which template, theme and container files make up a rendered page?”
“Can I get source file references for a page without the file contents?”
Tell an agent
List the source files behind page {uri}.
Show render sources for {uri} on site {host_id} for persona {persona_id}.
GET /api/v1/page/json/{uri} Get a page's metadata as JSON · Get page metadata as JSON by URI #
Ask an LLM
“Can I get the objects that make up a page as JSON without rendered HTML?”
“What did this page look like on a past date using Time Machine?”
Tell an agent
Get the page metadata JSON for {uri}.
Fetch unrendered page JSON for {uri} as of {publishDate}.
GET /api/v1/page/render/{uri} Get a page with its rendered HTML and content · Get rendered page metadata by URI #
Ask an LLM
“How do I fetch a page for headless use with its containers already rendered?”
“Can I render a page as a specific persona in a given language?”
Tell an agent
Render page {uri} with its container content as JSON.
Render {uri} in language {language_id} for persona {persona}.
GET /api/v1/page/renderHTML/{uri} Get a page's raw rendered HTML · Render page as raw HTML #
Ask an LLM
“Can I get just the final HTML of a page without any JSON wrapper?”
“What returns a page's raw markup for server-side embedding?”
Tell an agent
Give me the raw HTML of page {uri}.
Render {uri} on site {host_id} as plain HTML in {mode} mode.
POST /api/v1/page/layout Save a page template layout · Saves a page template #
Ask an LLM
“How do I save a new template layout with rows and columns?”
“Can I save a template layout with a theme before attaching it to any page?”
Tell an agent
Save template layout {layout} titled {title}.
Save a template with layout {layout} using theme {themeId} on site {siteId}.
GET /api/v1/page/search Search pages by path · Search pages by path #
Ask an LLM
“Which pages have a path containing a given word?”
“Can I limit a page path search to live pages on live sites?”
Tell an agent
Find pages whose path matches {path}.
Search live pages only for path {path}.
PUT /api/v1/page/{pageId}/styles Update style properties of content on a page · Update contentlet styles in a page #
Ask an LLM
“Can I change the styling of a contentlet on a page without touching the layout?”
“Are style changes on page content scoped to a persona?”
Tell an agent
Update styles for contentlet {identifier} in container slot {uuid} on page {pageId}.
Restyle content {identifier} in slot {uuid} on page {pageId} for persona {personaTag}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dotcms:dotcms-page-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dotcms-page-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Page API
  version: '3'
  description: Page rendering, layout management, and content operations
servers:
- url: /
  description: dotCMS Server
tags:


# --- truncated at 32 KB (99 KB total) ---
# Full source: https://artifacts.apis.io/dotcms/openapi/dotcms-page-api-openapi.yml