Add Page or Folder landing.landing.add
Scope:
landingWho can execute the method: user with "edit" access permission for the site
The method landing.landing.add adds a page or folder to the specified site and returns the identifier of the created object. The new object is created as inactive (ACTIVE = N).
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
fields* |
Set of fields for the new page or folder (detailed description) |
Parameter fields
Required parameters are marked with *
|
Name |
Description |
|
TITLE* |
Title of the page |
|
SITE_ID* |
Identifier of the site where the page is created. The site identifier can be obtained using the method landing.site.getList or from the result of the method landing.site.add |
|
CODE |
Symbolic code of the page. It must not contain the character If the field is not provided or a string consisting only of spaces is passed, the code will be generated from An empty string If such a code is already in use within the site or folder after creation, a suffix of the form |
|
DESCRIPTION |
Arbitrary description of the page |
|
XML_ID |
External identifier of the page |
|
SITEMAP |
Flag to include the page in the sitemap. Supported values are |
|
FOLDER |
Used if a folder needs to be created instead of a page. Supported values are |
|
FOLDER_ID |
Identifier of the folder where the page should be created. The folder must belong to the same site as The folder identifier can be obtained using the method landing.site.getFolders |
|
TPL_ID |
Identifier of the page view template. The view template identifier can be obtained using the method landing.template.getlist |
|
ADDITIONAL_FIELDS |
Additional fields for the page. Available codes and values are described in the article Additional Page Fields |
|
BLOCK_ID |
Used with |
|
MENU_CODE |
Used with |
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"fields": {
"TITLE": "Spring Sale",
"SITE_ID": 292,
"CODE": "spring-sale",
"DESCRIPTION": "Page for seasonal promotion",
"ADDITIONAL_FIELDS": {
"THEME_CODE": "wedding"
}
}
}' \
"https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.landing.add.json"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"fields": {
"TITLE": "Spring Sale",
"SITE_ID": 292,
"CODE": "spring-sale",
"DESCRIPTION": "Page for seasonal promotion",
"ADDITIONAL_FIELDS": {
"THEME_CODE": "wedding"
}
},
"auth": "**put_access_token_here**"
}' \
"https://**put.your-domain-here**/rest/landing.landing.add.json"
try
{
const response = await $b24.callMethod(
'landing.landing.add',
{
fields: {
TITLE: 'Spring Sale',
SITE_ID: 292,
CODE: 'spring-sale',
DESCRIPTION: 'Page for seasonal promotion',
ADDITIONAL_FIELDS: {
THEME_CODE: 'wedding'
}
}
}
);
const result = response.getData().result;
console.info(result);
}
catch (error)
{
console.error(error);
}
try {
$response = $b24Service
->core
->call(
'landing.landing.add',
[
'fields' => [
'TITLE' => 'Spring Sale',
'SITE_ID' => 292,
'CODE' => 'spring-sale',
'DESCRIPTION' => 'Page for seasonal promotion',
'ADDITIONAL_FIELDS' => [
'THEME_CODE' => 'wedding',
],
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . var_export($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error adding landing page: ' . $e->getMessage();
}
BX24.callMethod(
'landing.landing.add',
{
fields: {
TITLE: 'Spring Sale',
SITE_ID: 292,
CODE: 'spring-sale',
DESCRIPTION: 'Page for seasonal promotion',
ADDITIONAL_FIELDS: {
THEME_CODE: 'wedding'
}
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'landing.landing.add',
[
'fields' => [
'TITLE' => 'Spring Sale',
'SITE_ID' => 292,
'CODE' => 'spring-sale',
'DESCRIPTION' => 'Page for seasonal promotion',
'ADDITIONAL_FIELDS' => [
'THEME_CODE' => 'wedding',
],
],
]
);
if (isset($result['error']))
{
echo 'Error: ' . $result['error_description'];
}
else
{
echo '<pre>';
print_r($result['result']);
echo '</pre>';
}
Warning
If you want the new page to immediately appear in the block menu, pass both service parameters: BLOCK_ID and MENU_CODE in fields
Response Handling
HTTP Status: 200
{
"result": 2227,
"time": {
"start": 1773694924,
"finish": 1773694924.307754,
"duration": 0.3077540397644043,
"processing": 0,
"date_start": "2026-03-17T00:02:04+01:00",
"date_finish": "2026-03-17T00:02:04+01:00",
"operating_reset_at": 1773695524,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
Identifier of the created page or folder |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400
{
"error": "SLASH_IS_NOT_ALLOWED",
"error_description": "Slash is not allowed in the landing address."
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
|
|
Required top-level parameter |
|
|
Access to create the page is denied: the user does not have "edit" permission for the specified site |
|
|
Site not found: a non-existent site identifier is passed in |
|
|
Folder not found: a folder that does not belong to the specified site or does not exist is passed in |
|
|
Slash is not allowed in the landing address: a character |
|
|
The page address cannot be empty: an empty string |
|
|
Invalid page address: a value in the format |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Add Page by Template landing.landing.addByTemplate
- Copy Page landing.landing.copy
- Delete Page landing.landing.delete
- Get Additional Fields of the Page landing.landing.getadditionalfields
- Get a List of Pages landing.landing.getList
- Publish Page landing.landing.publication
- Update Page landing.landing.update