## Get a page

`GET /v1/pages/:id`

Returns a single page by identifier. Deleted pages are not returned by this endpoint.

Requires the `landing` scope.

The `domainId` (`DOMAIN_ID`) field is not returned even with an explicit `select=domainId`: the get-by-ID endpoint requests the default fields from Bitrix24 without `DOMAIN_ID`, and `select` only narrows the response. The `id` field is always returned. For an existing page, `GET /v1/pages/9?select=domainId` returns `200 {"success":true,"data":{"id":9}}`.

## Parameters

| Parameter | Type | Required | Description |
|----------|-----|:-----:|---------|
| `id` (path) | number | yes | Page identifier. List: [`GET /v1/pages`](/docs/entities/pages/list) |
| `scope` (query) | string | no | Site type: `KNOWLEDGE` — knowledge base, `GROUP` — workgroup site, `MAINPAGE` — main page. Specify it if the page belongs to such a site. Otherwise `404 ENTITY_NOT_FOUND` is returned. Example: `GET /v1/pages/9?scope=KNOWLEDGE` |
| `select` (query) | string | no | Field selection: `?select=id,title`. The `id` field is always returned |

## Examples

### curl — personal key

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

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/pages/9" \
  -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/9', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data } = await res.json()
console.log('Page:', data.title, '— site:', data.siteId)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/pages/9', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success, data } = await res.json()
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data` | object | Page object. With `select`, only the listed fields and `id` are returned. All fields — [Page fields](/docs/entities/pages/fields) |
| `data.siteId` | number | Site identifier. List: [`GET /v1/sites`](/docs/entities/sites/list) |
| `data.createdById` | number | Identifier of the employee who created the page. List: [`GET /v1/users`](/docs/entities/users/list) |
| `data.dateCreate` | string | Creation date. A string in the format of the Bitrix24 account's regional settings, not ISO 8601 — see the block below |
| `data.dateModify` | string | Last modification date. Same format |

> **Date format is locale-dependent, not ISO 8601.** Bitrix24 returns `dateCreate`/`dateModify` as a string in a local format, and **the specific template depends on the Bitrix24 account's regional settings**: in the RU locale it is `DD.MM.YYYY HH:MM:SS` (`30.12.2021 12:30:52`), and in the EN locale it is `MM/DD/YYYY hh:mm:ss am/pm` (`04/22/2020 02:39:17 pm`). Vibecode returns the Bitrix24 value as is, without converting it to ISO, and **identically in the get-by-ID endpoint and in the list** — there is no divergence between `GET /v1/pages/:id` and `GET /v1/pages`. `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()`**. Rely on the regional settings of the specific Bitrix24 account.

## Response example

Main fields are shown. Full list: [Page fields](/docs/entities/pages/fields).

```json
{
  "success": true,
  "data": {
    "id": 9,
    "title": "page transfer test",
    "code": "change1",
    "siteId": 3,
    "active": true,
    "description": null,
    "folderId": 1,
    "createdById": 1,
    "dateCreate": "05/26/2020 07:24:02 pm",
    "dateModify": "10/10/2022 05:25:30 pm"
  }
}
```

## Error response example

404 — the page is not found:

```json
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "landingPage 999999999 not found"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 404 | `ENTITY_NOT_FOUND` | A page with this ID is not found, deleted, or not accessible to the user |
| 403 | `SCOPE_DENIED` | The API key does not have the `landing` scope |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |
| 401 | `MISSING_API_KEY` | The `X-Api-Key` header is missing |
| 401 | `INVALID_API_KEY` | The key in `X-Api-Key` is not found or has been revoked |
| 429 | `RATE_LIMITED` | The Bitrix24 request limit is exceeded. Retry the request in 1-2 seconds |
| 502 | `BITRIX_UNAVAILABLE` | Bitrix24 did not respond or returned a server error |
| 503 | `BITRIX_TIMEOUT` | Bitrix24 did not respond in time |

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

## See also

- [List pages](/docs/entities/pages/list)
- [Page fields](/docs/entities/pages/fields)
- [Update a page](/docs/entities/pages/update)
- [Delete a page](/docs/entities/pages/delete)
- [Pages](/docs/entities/pages)
- [Limits and optimization](/docs/optimization)
