For AI agents: markdown of this page — /docs-content-en/telephony/lines/voximplant.md documentation index — /llms.txt
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
curl "https://vibecode.bitrix24.com/v1/voximplant-lines" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/voximplant-lines" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
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
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
{
"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:
{
"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.
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, auto-call, and auto-call-audio methods accepts both an id from this list and an application line number from GET /v1/telephony-lines. 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 —
GET /v1/telephony-lines - Callback —
POST /v1/calls/callback - Auto-call —
POST /v1/calls/auto-call - Auto-call with audio —
POST /v1/calls/auto-call-audio
List application lines
GET /v1/telephony-lines
Returns the list of external lines added by the application via POST /v1/telephony-lines. The list is returned in full — filtering, sorting, and offset are not supported; select the line you need on the client side.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
select (query) |
string | — | Field selection in camelCase: ?select=number,name |
limit (query) |
number | 50 |
Number of records (up to 5000) |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/telephony-lines" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/telephony-lines" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/telephony-lines', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data, meta } = await res.json()
console.log(`Found ${meta.total} lines`)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/telephony-lines', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data, meta } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of lines |
data[].number |
string | Line identifier set at creation |
data[].name |
string | null | Display name. null if not set at creation |
data[].crmAutoCreate |
boolean | Auto-create a CRM entity on an outbound call through this line: true — create, false — do not create |
meta.total |
number | Total number of application lines |
meta.hasMore |
boolean | Whether more records exist beyond limit |
Response example
HTTP 200, empty selection:
{"success":true,"data":[],"meta":{"total":0,"hasMore":false}}
HTTP 200, one line:
{
"success": true,
"data": [
{
"number": "doc-test-line-001",
"name": "Test line (audit)",
"crmAutoCreate": true
}
],
"meta": {
"total": 1,
"hasMore": false
}
}
Error response example
403 — no scope:
{
"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 |
| 429 | RATE_LIMITED |
Request rate limit exceeded |
| 502 | BITRIX_UNAVAILABLE |
Bitrix24 is unavailable |
Full list of common API errors — Errors.
Known specifics
Only this application's lines. The list contains lines created via POST /v1/telephony-lines under the current API key. Lines rented from Voximplant or connected over SIP are available via GET /v1/voximplant-lines.
Filtering, sorting, and offset do not work. The filter, order, and offset parameters are accepted without error but ignored — the whole list of lines is returned. Only limit (caps the count) and select (field selection in camelCase) work. Filter by number or name on the client side.
All response fields are in camelCase, including crmAutoCreate (boolean). Previously this field came back in UPPER_SNAKE_CASE as the string "Y"/"N" — since 07.2026 it is normalized to a camelCase boolean, like the other fields.
serverName is not returned. The field is declared in GET /v1/telephony-lines/fields but never comes back in the list under any condition — even if it was set at creation (details).
See also
- Add a line —
POST /v1/telephony-lines - Update a line —
PATCH /v1/telephony-lines/:number - Delete a line —
DELETE /v1/telephony-lines/:number - Voximplant lines —
GET /v1/voximplant-lines - Filtering syntax
- Outbound calls — lines are used as
fromLine