landing.landing.addblock
Добавить блок на страницу
Описание
Метод landing.landing.addblock добавляет новый блок на страницу и возвращает идентификатор созданного блока.
Если страница уже опубликована, для посетителей новый блок станет виден после команды «Опубликовать изменения» в интерфейсе или после вызова метода landing.landing.publication.
Параметры
scope
string
необязательный
Внутренний скоуп лендингов. Он не связан с REST-скоупом landing в названии метода.
Для страниц типов PAGE, STORE и SMN параметр передавать не нужно. Для страниц в скоупах GROUP, KNOWLEDGE и MAINPAGE передайте такое же значение scope. Правила выбора значения описаны в статье Работа с типами сайтов и скоупами
lid
integer
обязательный
Идентификатор страницы.
Идентификатор страницы можно получить методом landing.landing.getList, а также из результата методов landing.landing.add, landing.landing.addByTemplate и landing.landing.copy
fields
object
обязательный
Набор параметров нового блока (подробное описание)
preventHistory
boolean
необязательный
Если true, метод не добавляет действие в историю изменений страницы. По умолчанию false
Параметр fields
CODE
string
обязательный
Символьный код блока из репозитория.
Код можно получить методом landing.block.getrepository: для fields.CODE нужно брать ключ элемента из result.items, например 02.three_cols_big_1 или repo_385.
Для блока, зарегистрированного приложением через landing.repo.register, используйте значение вида repo_<ID>.
Доступность кода зависит от типа страницы и от верхнеуровневого параметра scope, если он передан. Если получаете код через landing.block.getrepository, используйте тот же scope, что и в landing.landing.addblock.
Если параметр не передан или передан пустой строкой, метод вернет ошибку
AFTER_ID
integer
необязательный
Идентификатор блока, после которого нужно вставить новый блок.
Идентификатор блока можно получить методом landing.block.getList.
Если передать идентификатор существующего блока на странице, новый блок будет добавлен сразу после него. Если параметр не передан, новый блок добавится в начало страницы.
Если AFTER_ID передан, но блока с таким идентификатором на странице нет, отдельной ошибки не будет. В этом случае новый блок тоже добавится в начало страницы
ACTIVE
string
необязательный
Флаг активности нового блока. Возможные значения:
Y — блок активен
N — блок неактивен
По умолчанию — Y
CONTENT
string
необязательный
HTML-содержимое блока. Позволяет заменить стандартный контент блока своим HTML-кодом. При этом код блока все равно должен быть доступен в репозитории для текущего типа страницы и scope. Перед сохранением значение очищается и проверяется
RETURN_CONTENT
string
необязательный
Если передать Y, после добавления блока метод вернет не только его идентификатор, но и данные блока (подробное описание). При любом другом значении метод вернет только идентификатор блока
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"lid": 351,
"fields": {
"CODE": "02.three_cols_big_1",
"AFTER_ID": 6428,
"ACTIVE": "Y"
}
}' \
"https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.landing.addblock.json"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"lid": 351,
"fields": {
"CODE": "02.three_cols_big_1",
"AFTER_ID": 6428,
"ACTIVE": "Y"
},
"auth": "**put_access_token_here**"
}' \
"https://**put.your-domain-here**/rest/landing.landing.addblock.json"
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
try {
const response = await $b24.actions.v2.call.make<number>({
method: 'landing.landing.addblock',
params: {
lid: 351,
fields: {
CODE: '02.three_cols_big_1',
AFTER_ID: 6428,
ACTIVE: 'Y',
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('New block ID:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function addBlock() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'landing.landing.addblock',
params: {
lid: 351,
fields: {
CODE: '02.three_cols_big_1',
AFTER_ID: 6428,
ACTIVE: 'Y',
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('New block ID:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addBlock)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.landing.landing.addblock(
lid=351,
fields={
"CODE": "02.three_cols_big_1",
"AFTER_ID": 6428,
"ACTIVE": "Y",
},
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'landing.landing.addblock',
[
'lid' => 351,
'fields' => [
'CODE' => '02.three_cols_big_1',
'AFTER_ID' => 6428,
'ACTIVE' => 'Y',
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . var_export($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error adding block: ' . $e->getMessage();
}
BX24.callMethod(
'landing.landing.addblock',
{
lid: 351,
fields: {
CODE: '02.three_cols_big_1',
AFTER_ID: 6428,
ACTIVE: 'Y'
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'landing.landing.addblock',
[
'lid' => 351,
'fields' => [
'CODE' => '02.three_cols_big_1',
'AFTER_ID' => 6428,
'ACTIVE' => 'Y',
],
]
);
if (isset($result['error']))
{
echo 'Ошибка: ' . $result['error_description'];
}
else
{
echo '<pre>';
print_r($result['result']);
echo '</pre>';
}
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "landing.landing.addblock", b24.Params{
"lid": 351,
"fields": b24.Params{
"CODE": "02.three_cols_big_1",
"AFTER_ID": 6428,
"ACTIVE": "Y",
},
})
if err != nil {
return fmt.Errorf("landing.landing.addblock: %w", err)
}
var value b24.ID
if err := json.Unmarshal(res.Result, &value); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("результат:", value)
Ответ
HTTP-статус: 200
{
"result": 28597,
"time": {
"start": 1773923439,
"finish": 1773923439.57418,
"duration": 0.5741798877716064,
"processing": 0,
"date_start": "2026-03-19T15:30:39+03:00",
"date_finish": "2026-03-19T15:30:39+03:00",
"operating_reset_at": 1773924039,
"operating": 0.10522103309631348
}
}
Возвращаемые данные
result
integer
Идентификатор созданного блока. Если передан fields.RETURN_CONTENT = 'Y', метод вернет объект блока (подробное описание)
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": "BLOCK_CANT_BE_ADDED",
"error_description": "Cannot add block because it is not intended for this type of page."
}
| Код | Описание | Значение |
|---|---|---|
MISSING_PARAMS |
Не передан обязательный верхнеуровневый параметр lid или fields |
|
LANDING_NOT_EXIST |
Страница с идентификатором lid не найдена |
|
ACCESS_DENIED |
У пользователя нет прав для вызова метода или нет права редактировать страницу | |
BLOCK_CANT_BE_ADDED |
Код из fields.CODE отсутствует в доступном репозитории, этот блок нельзя добавить на страницу текущего типа или переданный scope ограничил набор доступных блоков. Та же ошибка возвращается, если fields.CODE не передан или передан пустой строкой |
|
BLOCK_WRONG_VERSION |
Версия блока из репозитория выше версии установленного модуля landing | |
BLOCK_NOT_FOUND |
Для блока не найден контент, в том числе если передан пустой fields.CONTENT |

