---
title: Managing pages using REST
related:
  - https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/authenticating-rest-requests.md
  - https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/manipulating-data-using-rest/managing-objects-using-rest.md
  - https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/getting-data-using-rest.md
  - https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/sending-rest-requests-from-code.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

The REST service allows you to manipulate the data of pages on Xperience websites. Send requests using the **POST**, **PUT** or **DELETE** [HTTP method](http://en.wikipedia.org/wiki/HTTP#Request_methods) to the appropriate URL – append the  _**resource paths**_  described below to the _**base URL**_ of your REST service.

The base URL of the Xperience REST service is **/rest**. For example, if your administration application runs at  _http://localhost/Xperience_, use  _http://localhost/Xperience/rest_  as the base URL of the service.

## Creating pages

HTTP method: **POST**

Resource format:

- **/content/currentsite//document/** - creates a new page in the given culture for the site running on the domain in the base URL.
- **/content/site///document/** - creates a new page in the given culture on the specified site.

Use the [alias path](https://docs.kentico.com/13/developing-websites/implementing-routing/custom-routing-using-url-patterns/identifying-pages-based-on-url-parameters.md) to identify the _**parent page**_ under which you want to create the new page.

Set the name and other fields of the new page in the data of the POST request. Both [XML](http://en.wikipedia.org/wiki/XML) and [JSON](http://en.wikipedia.org/wiki/JSON) formats are supported for the data.

> **Info:** **Important**:
>
> - When creating new pages, always set the **NodeClassID** field. To find the _NodeClassID_ value for a page type, [get a page of the given type](https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/getting-data-using-rest.md) using the REST service and check the data or view the _ClassID_ column in the _CMS\_Class_ database table.
> - The request data must contain values for **all fields that are set as required** for the given [page type](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types.md).
> - The service automatically sets the system fields of the new page (such as the ID and timestamp fields).
> - Creating multiple pages in a single request is not supported. You need to send a separate POST request for each page.

> **Info:** **Creating language versions of pages**
>
> You can use POST requests to create new [language versions](https://docs.kentico.com/13/multilingual-websites/editing-the-content-of-multilingual-websites.md) of existing pages:
>
> - Use the culture code in the resource path to set the desired language.
> - Identify the page using the [alias path](https://docs.kentico.com/13/developing-websites/implementing-routing/custom-routing-using-url-patterns/identifying-pages-based-on-url-parameters.md).
> - Specify the **NodeID** of the existing page in the request data. Do NOT manually set a _DocumentID_ for the new language version.
> - Set any other required data for the page language version.

### Examples

**Creates a _New services_ page (of a custom page type) under the _Services_ page**

| XML                                                                                                                                                                                             | JSON                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **URL**: _\~/rest/content/currentsite/en-us/document/Services_<br>**Data**:<br>`  <Custom_Page>   <NodeClassID>5488</NodeClassID>   <DocumentName>New services</DocumentName> </Custom_Page>
 ` | **URL**: _\~/rest/content/currentsite/en-us/document/Services?format=json_<br>**Data**:<br>` 
{
"NodeClassID":5488,
"DocumentName":"New services"
}
 ` |

**Creates a _News article_ page (CMS.News type) under the _News_ page**

| XML                                                                                                                                                                                                                                                                                                             | JSON                                                                                                                                                                                                                                  |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **URL**: _\~/rest/content/currentsite/en-us/document/News_<br>**Data**:<br>`  <CMS_News>   <NodeClassID>4112</NodeClassID>   <NewsTitle>News article</NewsTitle>   <NewsReleaseDate>2014-06-05T00:00:00+02:00</NewsReleaseDate>   <NewsSummary>Summary</NewsSummary>   <NewsText>Text</NewsText> </CMS_News>
 ` | **URL**: _\~/rest/content/currentsite/en-us/document/News?format=json_<br>**Data**:<br>` 
{
"NodeClassID":4112,
"NewsTitle":"News article",
"NewsReleaseDate":"2014-06-05T00:00:00Z",
"NewsSummary":"Summary",
"NewsText":"Text"
}
 ` |

**Creates a _French_ version of the existing _Services_ page on a site with code name _SampleSite_**

| XML                                                                                                                                                                                       | JSON                                                                                                                                                  |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **URL**: _\~/rest/content/site/SampleSite/fr-fr/document/Services_<br>**Data**:<br>`  <Custom_Page>   <NodeID>5</NodeID>   <DocumentName>French Services</DocumentName> </Custom_Page>
 ` | **URL**: _\~/rest/content/site/SampleSite/fr-fr/document/Services?format=json_<br>**Data**:<br>` 
{
"NodeID":5,
"DocumentName":"French Services"
}
 ` |

## Updating existing pages

HTTP method: **PUT**

### Updating page data

Resource format:

- **/content/currentsite//document/** - updates the data of an existing page on the site running on the domain in the base URL.
- **/content/site///document/** - updates the data of an existing page on the specified site.

Use the [alias path](https://docs.kentico.com/13/developing-websites/implementing-routing/custom-routing-using-url-patterns/identifying-pages-based-on-url-parameters.md) to identify the page that you want to update. Updating multiple pages in a single request is not supported. You need to send a separate PUT request for each page.

Update the values of the page's fields using the data of the PUT request. Both [XML](http://en.wikipedia.org/wiki/XML) and [JSON](http://en.wikipedia.org/wiki/JSON) formats are supported for the data.

> **Info:** **Updating page names**
>
> Many [page types](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types.md) have a unique field that serves as the source for the page name (instead of the default _DocumentName_ field). When updating the names of such page types, always set the new value for both the **DocumentName** field and the dedicated page type name field to ensure consistency.

Examples:

**Updates the name of the _Services_ page on a site with code name _SampleSite_**

| XML                                                                                                                                                                                                                     | JSON                                                                                                                                                                            |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **URL**: _\~/rest/content/site/SampleSite/en-us/document/Services_<br>**Data**:<br>`  <Custom_Page>   <DocumentName>Services MODIFIED</DocumentName>   <MenuItemName>Services MODIFIED</MenuItemName> </Custom_Page>
 ` | **URL**: _\~/rest/content/site/SampleSite/en-us/document/Services?format=json_<br>**Data**:<br>` 
{
"DocumentName":"Services MODIFIED",
"MenuItemName":"Services MODIFIED"
}
 ` |

**Updates the title, release date and summary of a news article on a site with code name _SampleSite_**

| XML                                                                                                                                                                                                                                                                                                                                                 | JSON                                                                                                                                                                                                                                                                              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **URL**\*: \~/rest/content/site/SampleSite/en-us/document/News/New-Consulting-Services\*<br>**Data**:<br>`  <CMS_News>   <DocumentName>Consulting available</DocumentName>   <NewsTitle>Consulting available</NewsTitle>   <NewsReleaseDate>2014-07-04T00:00:00+02:00</NewsReleaseDate>   <NewsSummary>Updated summary</NewsSummary> </CMS_News>
 ` | **URL**: _\~/rest/content/site/SampleSite/en-us/document/News/New-Consulting-Services?format=json_<br>**Data**:<br>` 
{
"DocumentName":"Consulting available",
"NewsTitle":"Consulting available",
"NewsReleaseDate":"2014-07-04T00:00:00Z",
"NewsSummary":"Updated summary"
}
 ` |

### Workflow actions

You can also use PUT requests to move pages through the [workflow](https://docs.kentico.com/13/configuring-xperience/configuring-the-environment-for-content-editors/configuring-workflows.md) life cycle, or check pages in and out when using [content locking](https://docs.kentico.com/13/configuring-xperience/configuring-the-environment-for-content-editors/configuring-and-using-page-versioning/content-locking.md).

Resource format:

- **/content/currentsite///** - performs the given workflow action for the specified page on the site running on the domain in the base URL.
- **/content/site////** - performs the given workflow action for the given page on the specified site.

| Workflow action    | Description                                                                                                                                                                                                                                                     |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| publish            | Publishes the page.                                                                                                                                                                                                                                             |
| checkout           | Performs check-out for the page. The page is checked out under the user account specified by the REST request's [authentication](https://docs.kentico.com/13/integrating-3rd-party-systems/xperience-rest-service/authenticating-rest-requests.md) information. |
| checkin            | Performs check-in for the page.                                                                                                                                                                                                                                 |
| archive            | Archives the page.                                                                                                                                                                                                                                              |
| movetonextstep     | Moves the page to the next workflow step.                                                                                                                                                                                                                       |
| movetopreviousstep | Moves the page to the previous workflow step.                                                                                                                                                                                                                   |

Use the [alias path](https://docs.kentico.com/13/developing-websites/implementing-routing/custom-routing-using-url-patterns/identifying-pages-based-on-url-parameters.md) to identify the page for which you want to perform the workflow action. Do not submit any data when sending workflow action requests.

**URL example**: _\~/rest/content/currentsite/en-us/checkout/Home_

## Deleting pages

HTTP method: **DELETE**

Resource format:

- **/content/currentsite//document/** - deletes the given [language version](https://docs.kentico.com/13/multilingual-websites/editing-the-content-of-multilingual-websites.md) of the page for the site running on the domain in the base URL.
- **/content/site///document/** - deletes the given language version of the page on the specified site.

Use the [alias path](https://docs.kentico.com/13/developing-websites/implementing-routing/custom-routing-using-url-patterns/identifying-pages-based-on-url-parameters.md) to identify the page that you want to delete. Deleting multiple pages in a single request is not supported. You need to send a separate DELETE request for each page.

### Page deletion parameters

When deleting pages via REST, you can append the following query string parameters to the request URL:

| Parameter         | Value (default bold) | Description                                                                                                                                                                                                                                                                                                                |
| ----------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| deleteallcultures | true/**false**       | Indicates if the request also deletes all [language versions](https://docs.kentico.com/13/multilingual-websites/editing-the-content-of-multilingual-websites.md) of the specified page.<br>To delete all language versions of a page, append _?deleteallcultures=true_ to the request URL.                                 |
| destroyhistory    | true/**false**       | Indicates if the request also deletes the page's [version history](https://docs.kentico.com/13/configuring-xperience/configuring-the-environment-for-content-editors/configuring-and-using-page-versioning.md).<br>To delete the version history together with the page, append _?destroyhistory=true_ to the request URL. |
