
## Voximplant lines

`GET /v1/voximplant-lines`

Returns the list of lines rented from Voximplant or connected over SIP that are visible to your Bitrix24 account. Create, update, and delete operations are not available for these lines — read-only. Identifiers from this list can be passed as `fromLine` in outbound calls.

## Examples

### curl — personal key

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

### curl — OAuth application

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

const { success, data } = await res.json()
console.log(`${data.length} lines available`)
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/voximplant-lines', {
  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` | array | Array of lines |
| `data[].id` | string | Line identifier. The `reg` prefix means a number rented from Voximplant, `sip` means a connected SIP channel |
| `data[].name` | string | Display name |

## Response example

```json
{
  "success": true,
  "data": [
    {"id": "reg133788", "name": "test"},
    {"id": "reg150907", "name": "+12025550123"},
    {"id": "sip7", "name": "Office PBX 1"},
    {"id": "reg151083", "name": "Cloud PBX (9)"},
    {"id": "sip11", "name": "Office PBX (11)"},
    {"id": "reg151085", "name": "SIP line 2"}
  ]
}
```

## Error response example

403 — no scope:

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

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 401 | `MISSING_API_KEY` | The `X-Api-Key` header was not provided |
| 401 | `INVALID_API_KEY` | Invalid API key |
| 401 | `TOKEN_MISSING` | The key has no configured tokens |
| 401 | `KEY_INACTIVE` | The API key is inactive or revoked |
| 403 | `SCOPE_DENIED` | The key lacks the `telephony` scope |
| 403 | `BITRIX_ACCESS_DENIED` | The scope is present, but the key owner has no telephony administrator rights (line management) in Bitrix24 |
| 429 | `RATE_LIMITED` | Request rate limit exceeded |
| 502 | `BITRIX_UNAVAILABLE` | Bitrix24 is unavailable |

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

## Known specifics

**Two line types by the `id` prefix.** Identifiers `reg<N>` correspond to numbers rented from Voximplant; `sip<N>` to channels connected over SIP. Both types are accepted as `fromLine` in outbound calls.

**Source for outbound calls.** The `fromLine` parameter of the [callback](../outbound/callback.md), [auto-call](../outbound/auto-call.md), and [auto-call-audio](../outbound/auto-call-audio.md) methods accepts both an `id` from this list and an application line `number` from [`GET /v1/telephony-lines`](./list.md). The choice depends on which line type the call goes through.

**Telephony administrator rights required.** The `telephony` scope on the key is not enough: the line list is returned only if the key owner (for `vibe_app_` — the authorized user) has the telephony line management right in Bitrix24. Without it, the request returns `403 BITRIX_ACCESS_DENIED`. The telephony line management right is granted by the Bitrix24 account administrator in the Bitrix24 telephony settings. The same rights model applies to call statistics — without telephony administrator rights the selection comes back empty. This is a Bitrix24 limitation, not Vibecode.

## See also

- [List application lines](./list.md) — `GET /v1/telephony-lines`
- [Callback](../outbound/callback.md) — `POST /v1/calls/callback`
- [Auto-call](../outbound/auto-call.md) — `POST /v1/calls/auto-call`
- [Auto-call with audio](../outbound/auto-call-audio.md) — `POST /v1/calls/auto-call-audio`
