
## List Open Channel configurations

`GET /v1/openline-configs`

Returns a list of Open Channel configurations with support for filtering, sorting, and pagination.

## Parameters

| Parameter | Type | Default | Allowed values | Description |
|----------|-----|-----------|---------------------|---------|
| `limit` | number | `50` | `1`–`200` | Number of records per request |
| `offset` | number | `0` | `0` and above | Skip N records |
| `sort` | string | — | `id`, `name`, `active`, `queueType`, `workTimeFrom`, `workTimeTo` | Sort field |
| `order` | string | `asc` | `asc`, `desc` | Sort direction |
| `filter` | object | — | keys — the same 6 fields as in `sort`; values — by field type | Filtering by schema fields.<br>[Filtering syntax](/docs/filtering). Example: `?filter[active]=false`, `?filter[queueType]=evenly` |

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true" \
  -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/openline-configs?limit=10&sort=id&order=asc&filter[active]=true', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, total, hasMore } = await res.json()
console.log(`Received ${data.length} configurations, total in the window: ${total}`)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/openline-configs?limit=10&sort=id&order=asc&filter[active]=true', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

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

## Response fields

The response contains metadata fields at the top level (not nested in `meta`):

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data` | array | Array of configurations (all fields — see [Configuration fields](/docs/openlines/config/fields)) |
| `total` | number | Number of records in the current window (not the overall Bitrix24 account count) |
| `limit` | number | Page size |
| `offset` | number | Offset |
| `hasMore` | boolean | Whether there are more records beyond `limit` |

## Response example

Core fields are shown. Full list: [Configuration fields](/docs/openlines/config/fields).

```json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "active": true,
      "name": "Open Channel",
      "queueType": "all",
      "workTimeFrom": "8",
      "workTimeTo": "17",
      "crm": "Y",
      "crmCreate": "deal",
      "queueTime": "60",
      "noAnswerTime": "180",
      "welcomeMessage": "Y",
      "workTimeEnable": "Y",
      "workTimeTimezone": "UTC",
      "dateCreate": {},
      "dateModify": {}
    },
    {
      "id": 3,
      "active": true,
      "name": "Wix",
      "queueType": "all",
      "workTimeFrom": "9",
      "workTimeTo": "18.30",
      "crm": "Y",
      "crmCreate": "deal",
      "queueTime": "60",
      "noAnswerTime": "180",
      "welcomeMessage": "Y",
      "workTimeEnable": "N",
      "workTimeTimezone": "UTC",
      "dateCreate": {},
      "dateModify": {}
    }
  ],
  "total": 10,
  "limit": 10,
  "offset": 0,
  "hasMore": false
}
```

> The example shows 2 records out of 10 — the other 8 are omitted for brevity. Each element contains roughly 75 more fields beyond those shown.

## Error response example

400 — an `$or` / `$and` logical operator in the filter (Bitrix24 does not support OR/AND for this method):

```json
{
  "success": false,
  "error": {
    "code": "INVALID_FILTER_OPERATOR",
    "message": "'$or' is not supported. OR/AND logic cannot be expressed in a single openline-configs filter. For same-field OR use { field: { $in: [v1, v2] } }. For cross-field OR run parallel requests. AND is the default — combine conditions as sibling keys in one filter object."
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `INVALID_FILTER_OPERATOR` | A logical operator `$or` / `$and` / `$not` / `LOGIC` was passed in the filter. For OR on a single field use `{ field: { $in: [...] } }` |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |
| 403 | `SCOPE_DENIED` | The API key lacks the `imopenlines` scope |
| 422 | `BITRIX_ERROR` | A field name absent from the Bitrix24 `imopenlines.config` entity was passed (e.g. `createdAt`, a typo, or a non-filterable field). Use the 6 documented camelCase schema fields |

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

## Known specifics

**`total` is the current-window count, not the overall one.** Bitrix24 does not return the total number of configurations for the list method, so `total` holds the number of records in the current page only. To check for the next page, use the `hasMore` field.

**Filtering and sorting — the 6 camelCase schema fields.** The `filter` and `sort` parameters work on all 6 documented names: `id`, `name`, `active`, `queueType`, `workTimeFrom`, `workTimeTo` (the wrapper maps them to the real Bitrix24 names on the request side).

**Other fields are also accepted (escape hatch).** To filter/sort by a field outside these six (for example `crmCreate`, `languageId`), pass its camelCase name from [Configuration fields](/docs/openlines/config/fields) — the canonical form. B24-native UPPER_SNAKE names are also accepted for backward compatibility. Bitrix24 validates it: an unknown field returns `422 BITRIX_ERROR`.

**OR/AND in the filter are not supported.** `imopenlines.config.list.get` cannot express OR/AND logic in a single filter — the operators `$or` / `$and` / `$not` / `LOGIC` are rejected with `400 INVALID_FILTER_OPERATOR`. For OR on a single field use `{ "id": { "$in": [1, 3] } }` (in a querystring — `filter[id][$in]=1,3`).

**The `queue`, `queueFull`, `queueUsersFields`, `queueOnline` fields are not returned in the list** — they are available only in [Get configuration](/docs/openlines/config/get).

**camelCase and empty dates.** Each record contains ~91 fields, all in camelCase; `dateCreate` and `dateModify` come back as empty objects `{}`. `/fields` describes every field with a `label` and `description` — the full registry and explanations — [Configuration fields](/docs/openlines/config/fields).

## See also

- [Get configuration](/docs/openlines/config/get)
- [Create configuration](/docs/openlines/config/create)
- [Configuration fields](/docs/openlines/config/fields)
- [Filtering syntax](/docs/filtering)
- [Entity API](/docs/entity-api)
- [Limits and optimization](/docs/optimization)
