dotCMS Page API

Page rendering, layout management, and content operations

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"

Discovery needs no key. Ratings and market analysis are Pro.

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://raw.githubusercontent.com/api-evangelist/dotcms/refs/heads/main/openapi/dotcms-page-api-openapi.yml