For AI agents: markdown of this page — /docs-content-en/entities/pages/fields.md documentation index — /llms.txt
Page fields
GET /v1/pages/fields
Returns a map of all page fields with their type, label and read-only flag, plus a nullable flag on the fields that can arrive empty. Fields without the read-only flag are writable on create and update.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/pages/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/pages/fields" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/pages/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/pages/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
The data object contains a fields map (field name → { type, readonly, label }, with a description on some fields and nullable on the fields that can arrive empty), a batch list of bulk-mode operations, and a set of aggregatable fields for grouping in aggregation.
| Field | Bitrix24 | Type | RO | Description |
|---|---|---|---|---|
id |
ID |
number | yes | Page identifier |
title |
TITLE |
string | Title, up to 255 characters | |
code |
CODE |
string | Symbolic code in the URL. No /, auto-generated from title |
|
siteId |
SITE_ID |
number | Owner site. Source: GET /v1/sites |
|
active |
ACTIVE |
boolean | yes | Whether the page is published. Bitrix24 does not accept the field on create or on update, and a new page is always created inactive. Publish through POST /v1/pages/:id/publication and unpublish through POST /v1/pages/:id/unpublish |
description |
DESCRIPTION |
string | null | Description. null when unset |
|
xmlId |
XML_ID |
string | null | External code. null when not set |
|
deleted |
DELETED |
string | yes | Trash flag: "Y" / "N" |
public |
PUBLIC |
string | Public flag: "Y" / "N" |
|
sys |
SYS |
string | yes | Bitrix24 system page: "Y" / "N" |
views |
VIEWS |
number | yes | View counter |
tplId |
TPL_ID |
number | null | Template identifier. null when the page uses no template |
|
tplCode |
TPL_CODE |
string | null | yes | Template symbolic code. null when the page uses no template |
sitemap |
SITEMAP |
string | Include in the sitemap: "Y" / "N" |
|
folder |
FOLDER |
string | Whether the page is a section folder: "Y" / "N" |
|
folderId |
FOLDER_ID |
number | null | Site section folder identifier. null when the page lies at the root of the site |
|
searchContent |
SEARCH_CONTENT |
string | null | yes | Indexable page content for site search. null while the page has not been indexed yet |
version |
VERSION |
number | yes | Internal page structure version |
historyStep |
HISTORY_STEP |
number | yes | Change-history service field |
modifiedById |
MODIFIED_BY_ID |
number | yes | Last editor. Lookup: GET /v1/users |
domainId |
DOMAIN_ID |
number | yes | Site domain identifier |
initiatorAppCode |
INITIATOR_APP_CODE |
string | null | yes | Code of the application that created the page. null for a page created in the Bitrix24 interface |
rule |
RULE |
string | null | yes | Bitrix24 service field. Usually null |
createdById |
CREATED_BY_ID |
number | yes | Creator. Lookup: GET /v1/users |
dateCreate |
DATE_CREATE |
datetime | yes | Creation date. A string in the account locale format, not ISO 8601 — see the format block below |
dateModify |
DATE_MODIFY |
datetime | yes | Last modification date. Same format as dateCreate |
datePublic |
DATE_PUBLIC |
datetime | null | yes | Publication date, same format as dateCreate. Arrives as null when Bitrix24 has no publication date for the page — the usual case even for a published page. Read active or public to tell whether a page is published |
Fields that can be empty
A field Bitrix24 does not always fill carries "nullable": true in the endpoint response, and its type is written as … | null in the table above. There are nine such fields: description, xmlId, tplId, tplCode, folderId, searchContent, initiatorAppCode, rule, datePublic. The value arrives as null — not as an empty string and not as 0 — so check it before parsing. Every other field always has a value.
Date format
Dates are strings in the account locale format, NOT ISO 8601. Bitrix24 returns dateCreate, dateModify and datePublic as strings, and the specific template depends on the regional settings of the account: in the RU locale it is DD.MM.YYYY HH:MM:SS (30.12.2021 12:30:52), in the EN locale it is MM/DD/YYYY hh:mm:ss am/pm (12/30/2021 12:30:52 pm). Vibecode returns the value as is, without normalizing to ISO, identically in the list and in the card — there is no divergence between GET /v1/pages and GET /v1/pages/:id. new Date(value) returns Invalid Date or silently swaps day and month: do not parse the date with a fixed template and do not trust new Date(). The filter needs the same format — see Search pages.
Response example
Besides type and readonly, every field carries a label (short name) and a description, in English. Request headers do not switch the language. A field that can arrive empty additionally carries nullable. In the example below, description is shown on active only — it is omitted from the other fields for brevity.
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true, "label": "Page ID" },
"title": { "type": "string", "readonly": false, "label": "Title" },
"siteId": { "type": "number", "readonly": false, "label": "Site ID" },
"active": {
"type": "boolean",
"readonly": true,
"label": "Active",
"description": "Whether the page is published. Read-only: Bitrix24 does not accept the field on create or on update, and a new page is always created inactive. Publish through POST /v1/pages/:id/publication and unpublish through POST /v1/pages/:id/unpublish."
},
"xmlId": { "type": "string", "readonly": false, "nullable": true, "label": "External ID" },
"datePublic": { "type": "datetime", "readonly": true, "nullable": true, "label": "Published at" }
},
"aggregatable": ["siteId", "active", "deleted", "public", "folderId", "tplId", "createdById", "modifiedById"],
"batch": ["create", "update", "delete"]
}
}
6 of 27 fields are shown. The full list is in the table above.
Error response example
403 — no scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'landing' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 403 | SCOPE_DENIED |
API key does not have the landing scope |
| 401 | TOKEN_MISSING |
API key has no configured tokens |
| 429 | RATE_LIMITED |
Rate limit exceeded: 300 requests per minute per portal, all API keys of the portal share one limit. The exact value arrives in the x-ratelimit-limit header (the cap is divided across replicas). Retry after the delay in the Retry-After header |
Full list of common API errors — Errors.