
## Page fields

`GET /v1/pages/fields`

Returns a map of all page fields with type and read-only flag. Fields without this flag are writable on create and update.

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/pages/fields" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/pages/fields" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
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

```javascript
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 }`), a `batch` list of batch-mode operations, a list of available `include`, and a set of `aggregatable` fields for grouping in [aggregation](./aggregate.md).

| 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 | | Whether the page is active. Accepted on write but not stored — managed in the Bitrix24 interface |
| `description` | `DESCRIPTION` | string \| null | | Description. `null` when unset |
| `xmlId` | `XML_ID` | string \| null | | External code |
| `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 | | Template identifier |
| `tplCode` | `TPL_CODE` | string \| null | yes | Template symbolic code |
| `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 | | Site section folder identifier |
| `searchContent` | `SEARCH_CONTENT` | string | yes | Indexable page content for site search |
| `version` | `VERSION` | number | yes | Page internal 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 | yes | Code of the application that created the page |
| `rule` | `RULE` | string | yes | Bitrix24 service field |
| `createdById` | `CREATED_BY_ID` | number | yes | Creator. Lookup: `GET /v1/users` |
| `dateCreate` | `DATE_CREATE` | datetime | yes | Creation date. Bitrix24 locale format, not ISO 8601 |
| `dateModify` | `DATE_MODIFY` | datetime | yes | Last modification date. Bitrix24 locale format |
| `datePublic` | `DATE_PUBLIC` | datetime | yes | Publication date. For an unpublished page it arrives as an empty object `{}` |

## Available include

The endpoint returns a list of available include: `site` — the page owner site. More: [Related data](/docs/includes).

## Response example

```json
{
  "success": true,
  "data": {
    "fields": {
      "id": { "type": "number", "readonly": true },
      "title": { "type": "string", "readonly": false },
      "siteId": { "type": "number", "readonly": false },
      "active": { "type": "boolean", "readonly": false }
    },
    "relations": {
      "site": { "type": "one", "entity": "site", "includable": true }
    },
    "aggregatable": ["siteId", "active", "deleted", "public", "folderId", "tplId", "createdById", "modifiedById"],
    "batch": ["create", "update", "delete"],
    "include": ["site"]
  }
}
```

4 of 27 fields are shown. The full list is in the table above.

## Error response example

403 — no scope:

```json
{
  "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 |

Full list of common API errors — [Errors](/docs/errors).

## See also

- [Create a page](/docs/entities/pages/create)
- [Update a page](/docs/entities/pages/update)
- [Page aggregation](/docs/entities/pages/aggregate)
- [Pages](/docs/entities/pages)
- [Entity API](/docs/entity-api)
