
## Список линий приложения

`GET /v1/telephony-lines`

Возвращает список внешних линий, добавленных приложением через `POST /v1/telephony-lines`. Список возвращается целиком — фильтрация, сортировка и `offset` не поддерживаются и отклоняются с `400`, нужную линию отбирайте на стороне клиента.

## Параметры

| Параметр | Тип | По умолч. | Описание |
|----------|-----|-----------|---------|
| `select` (query) | string | — | Выборка полей в camelCase: `?select=number,name` |
| `limit` (query) | number | `50` | Количество записей (до 5000) |

## Примеры

### curl — личный ключ

```bash
curl "https://vibecode.bitrix24.tech/v1/telephony-lines" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl "https://vibecode.bitrix24.tech/v1/telephony-lines" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/telephony-lines', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

const { success, data, meta } = await res.json()
console.log(`Найдено ${meta.total} линий`)
```

### JavaScript — OAuth-приложение

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

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

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | array | Массив линий |
| `data[].number` | string | Идентификатор линии, заданный при создании |
| `data[].name` | string \| null | Отображаемое название. `null`, если не задано при создании |
| `data[].crmAutoCreate` | boolean | Автосоздание CRM-сущности при исходящем звонке через эту линию: `true` — создавать, `false` — не создавать |
| `meta.total` | number | Общее количество линий приложения |
| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` |

## Пример ответа

HTTP 200, пустая выборка:

```json
{"success":true,"data":[],"meta":{"total":0,"hasMore":false}}
```

HTTP 200, одна линия:

```json
{
  "success": true,
  "data": [
    {
      "number": "doc-test-line-001",
      "name": "Тестовая линия (аудит)",
      "crmAutoCreate": true
    }
  ],
  "meta": {
    "total": 1,
    "hasMore": false
  }
}
```

## Пример ответа при ошибке

403 — нет скоупа:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'telephony' scope"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `UNSUPPORTED_FILTER` | Передан фильтр — метод Битрикс24 его не поддерживает |
| 400 | `INVALID_SORT_FIELD` | Передана сортировка — метод Битрикс24 её не поддерживает |
| 400 | `UNSUPPORTED_OFFSET` | Передано ненулевое смещение — у метода Битрикс24 нет постраничности |
| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |
| 401 | `INVALID_API_KEY` | Неверный API-ключ |
| 401 | `TOKEN_MISSING` | Ключ не имеет настроенных токенов |
| 401 | `KEY_INACTIVE` | API-ключ неактивен или отозван |
| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `telephony` |
| 429 | `RATE_LIMITED` | Превышен лимит запросов |
| 502 | `BITRIX_UNAVAILABLE` | Битрикс24 недоступен |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Только линии этого приложения.** Список содержит линии, созданные через `POST /v1/telephony-lines` в рамках текущего API-ключа. Линии, арендованные у Voximplant или подключённые по SIP, доступны через [`GET /v1/voximplant-lines`](./voximplant.md).

**Фильтрация, сортировка и смещение отклоняются.** Метод Битрикс24 за этим списком не принимает входных параметров вовсе, поэтому фильтр отвечает `400 UNSUPPORTED_FILTER`, сортировка — `400 INVALID_SORT_FIELD`, а ненулевой `offset` — `400 UNSUPPORTED_OFFSET`. Раньше все три принимались без ошибки и молча игнорировались. Отказ фильтру приходит также на `POST /v1/telephony-lines/search`, `POST /v1/telephony-lines/aggregate` и в подзапросах обоих пакетных запросов. Отказ сортировке и смещению — на `POST /v1/telephony-lines/search` и в подзапросе общего `POST /v1/batch`, агрегат этих параметров не читает. Работают `limit`, он ограничивает количество, и `select`, он выбирает поля в camelCase. Коллекция линий приложения приходит целиком одной страницей, поэтому отбирайте, сортируйте и разбивайте её на страницы на своей стороне.

**Все поля ответа — в camelCase**, включая `crmAutoCreate` (boolean). Ранее это поле приходило в UPPER_SNAKE_CASE строкой `"Y"`/`"N"` — с 07.2026 оно нормализовано в camelCase boolean, как и остальные поля.

**`serverName` не возвращается.** Поле объявлено в [схеме полей](./fields.md), но в списке не приходит ни при каких условиях — даже если задавалось при создании ([детали](./create.md#известные-особенности)).

## Смотрите также

- [Добавить линию](./create.md)
- [Обновить линию](./update.md)
- [Удалить линию](./delete.md)
- [Линии Voximplant](./voximplant.md)
- [Исходящие звонки](/docs/telephony/outbound)
