
## List applications

`GET /v1/apps`

Returns the Bitrix24 account applications registered by the current API key, with pagination.

## Parameters

| Parameter | Type | Required | Default | Description |
|----------|-----|:-----:|:---------:|---------|
| `page` (query) | number | No | 1 | Page number, from 1. A value below 1 or non-numeric is replaced with 1 |
| `limit` (query) | number | No | 50 | Page size. Maximum 200. A value of 0, negative, or non-numeric is replaced with 50 |

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/apps?page=1&limit=50" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/apps?page=1&limit=50" \
  -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/apps?page=1&limit=50', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data, total } = await res.json()
console.log(`Applications: ${total}`, data)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/apps?page=1&limit=50', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const { data, total } = await res.json()
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data` | array | Array of applications |
| `data[].id` | string | Application identifier |
| `data[].title` | string | Name |
| `data[].description` | string \| null | Description |
| `data[].scopes` | string[] | Bitrix24 scopes assigned to the application key |
| `data[].handlerUrl` | string | Handler address on the platform side. Details — [Applications](/docs/apps) |
| `data[].appUrl` | string \| null | Application address on Black Hole. Before publishing — `null` |
| `data[].redirectUris` | string[] | Allowed OAuth return addresses |
| `data[].bitrixClientId` | string \| null | OAuth client identifier in the Bitrix24 account |
| `data[].prefix` | string | Application key prefix |
| `data[].suffix` | string | Last characters of the application key |
| `data[].authorId` | string | Application author identifier |
| `data[].portalId` | string | Bitrix24 portal identifier |
| `data[].createdAt` | string | Creation date, ISO 8601 |
| `data[].updatedAt` | string | Modification date, ISO 8601 |
| `data[].placements` | string[] | Bound [placements](/docs/apps/placements). Before publishing — empty array |
| `data[].catalogStatus` | string | Catalog status: `PRIVATE` / `PUBLISHED` / `UNPUBLISHED`. The reliable publication signal |
| `data[].publishedAt` | string \| null | Publication date, ISO 8601. `null` if the application was never published |
| `total` | number | Total number of Bitrix24 account applications available to the key |
| `page` | number | Current page |
| `limit` | number | Applied page size |

## Response example

```json
{
  "success": true,
  "data": [
    {
      "id": "11a2b3c4-d5e6-47f8-9012-3a4b5c6d7e8f",
      "title": "Contact center connector",
      "description": null,
      "scopes": ["crm", "imopenlines", "imconnector", "placement"],
      "handlerUrl": "https://vibecode.bitrix24.com/v1/bitrix-handler",
      "appUrl": null,
      "redirectUris": [
        "https://vibecode.bitrix24.com/oauth/complete",
        "http://localhost"
      ],
      "bitrixClientId": "local.6b2c3d4e5f6a70.33334444",
      "prefix": "vibe_app_local_6b2",
      "suffix": "4444",
      "authorId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
      "portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
      "createdAt": "2026-06-04T08:52:57.583Z",
      "updatedAt": "2026-06-04T08:52:57.583Z",
      "placements": [],
      "catalogStatus": "PRIVATE",
      "publishedAt": null
    },
    {
      "id": "22b3c4d5-e6f7-48a9-0123-4b5c6d7e8f90",
      "title": "Sales dashboard",
      "description": null,
      "scopes": ["crm", "user", "placement"],
      "handlerUrl": "https://vibecode.bitrix24.com/v1/bitrix-handler",
      "appUrl": "https://app-abc12345.vibecode.bitrix24.com",
      "redirectUris": [
        "https://vibecode.bitrix24.com/oauth/complete",
        "http://localhost"
      ],
      "bitrixClientId": "local.5a1b2c3d4e5f60.11112222",
      "prefix": "vibe_app_local_5a1",
      "suffix": "2222",
      "authorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
      "createdAt": "2026-05-13T11:31:53.810Z",
      "updatedAt": "2026-05-13T11:35:12.204Z",
      "placements": ["CRM_DEAL_DETAIL_TAB"],
      "catalogStatus": "PUBLISHED",
      "publishedAt": "2026-05-13T11:35:12.204Z"
    }
  ],
  "total": 2,
  "page": 1,
  "limit": 50
}
```

## Error response example

401 — the `X-Api-Key` header was not passed:

```json
{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "API key required. Pass via X-Api-Key header."
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 401 | `MISSING_API_KEY` | The `X-Api-Key` header was not passed |
| 401 | `INVALID_API_KEY` | Invalid API key |

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

## Known specifics

- The system companion bot application and deleted applications are not included in the list.
- By default the response contains no more than 50 applications — this is a boundary, not an error. Compare `total` with the length of `data` to determine whether applications remain beyond the page, and request the next one via `page` if needed.

## See also

- [Applications](/docs/apps)
- [Application data](/docs/apps/get)
- [Create application](/docs/apps/create)
- [Scopes](/docs/scopes)
