Para agentes de IA: markdown de esta página — /docs-content-en/voximplant-sip/list.md índice de la documentación — /llms.txt
Los artículos de la documentación están disponibles actualmente en inglés.
List connections
GET /v1/voximplant-sip
Returns the SIP connections of office and cloud PBXs available to the key, with filtering, sorting and pagination.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filter (query) |
object | no | — | Filter by the connection fields from the "Response fields" table, except hasPassword and hasIncomingPassword. The operator goes before the field name: >, >=, ! — not equal, % — substring.Filtering syntax. Pass several values of one field as an array. Conditions on different fields are combined with AND, and filter[logic]=OR combines them with OR. Example: ?filter[type]=office, ?filter[configId][]=1&filter[configId][]=17 |
sort (query) |
string | no | — | Sort field — any field that filter works with. Pass it only together with order |
order (query) |
string | no | — | Sort direction: ASC or DESC, case-insensitive. Pass it only together with sort |
start (query) |
number | no | 0 |
How many records to skip. For the next page, pass the meta.next value from the previous response |
The request accepts no other parameters.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/voximplant-sip?sort=configId&order=ASC" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/voximplant-sip?sort=configId&order=ASC" \
-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-sip?sort=configId&order=ASC', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data, meta } = await res.json()
for (const sip of data) {
console.log(sip.configId, sip.type, sip.title, sip.server)
}
if (meta.next !== undefined) {
console.log('Next page: start =', meta.next)
}
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/voximplant-sip?sort=configId&order=ASC', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, meta } = await res.json()
for (const sip of data) {
console.log(sip.configId, sip.type, sip.title, sip.server)
}
if (meta.next !== undefined) {
console.log('Next page: start =', meta.next)
}
Response fields
Passwords are not included in the response — the hasPassword and hasIncomingPassword flags are returned instead.
| Field | Type | Description |
|---|---|---|
success |
boolean | true on success |
data |
array | Connections. An empty array if nothing matches the filter |
data[].configId |
string | Connection ID |
data[].type |
string | PBX type: office — office PBX, cloud — cloud PBX |
data[].title |
string | Connection name |
data[].server |
string | SIP server address |
data[].login |
string | Login on the SIP server |
data[].hasPassword |
boolean | Whether the connection password is set |
data[].authUser |
string | null | User name for authorization on the SIP server. null if not set |
data[].outboundProxy |
string | null | Proxy server address for outgoing calls. null if not set |
data[].detectLineNumber |
string | Whether to detect the line number from the SIP headers of an incoming call: N — do not detect |
data[].lineDetectHeaderOrder |
string | SIP headers used to detect the line number, in the order they are checked, for example diversion;to |
data[].registrationStatusCode |
string | null | Result code of the registration on the SIP server, for example 502 when the server is not found |
data[].registrationErrorMessage |
string | null | Registration error text. null if there is no error |
data[].regId |
string | Cloud PBX only: registration ID on the SIP server |
data[].incomingServer |
string | Office PBX only: server address for incoming calls, issued by Bitrix24 |
data[].incomingLogin |
string | Office PBX only: login for incoming calls, issued by Bitrix24 |
data[].hasIncomingPassword |
boolean | Office PBX only: whether the password for incoming calls is set |
meta.total |
number | How many connections match the filter. When nothing matches the filter, meta is an empty object |
meta.next |
number | The start value for the next page. Present only when there is a next page |
Response example
{
"success": true,
"data": [
{
"type": "cloud",
"configId": "1",
"regId": "133788",
"server": "pbx.example.com",
"login": "cloud-line",
"hasPassword": true,
"authUser": "cloud-user",
"outboundProxy": "proxy.example.com",
"detectLineNumber": "N",
"lineDetectHeaderOrder": "diversion;to",
"registrationStatusCode": "502",
"registrationErrorMessage": "Unable to resolve hostname",
"title": "Cloud PBX"
},
{
"type": "office",
"configId": "17",
"server": "sip.example.com",
"login": "office-line",
"hasPassword": true,
"incomingServer": "ip.b24-1234-1234567890.bitrixphone.com",
"incomingLogin": "sip17",
"hasIncomingPassword": true,
"authUser": null,
"outboundProxy": null,
"detectLineNumber": "N",
"lineDetectHeaderOrder": "diversion;to",
"registrationStatusCode": "0",
"registrationErrorMessage": null,
"title": "Office PBX"
}
],
"meta": {
"total": 2
}
}
Error response example
400 — filter by a password field:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "filter may use only noncredential SIP fields and logical groups"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMS |
A parameter other than filter, sort, order, start is passed |
| 400 | INVALID_PARAMS |
filter is not an object, or it contains a password field, a dot path or a field that is not in the response |
| 400 | INVALID_PARAMS |
sort and order are not passed together, or order is neither ASC nor DESC |
| 400 | INVALID_PARAMS |
sort names a password field or a field that is not in the response |
| 400 | INVALID_PARAMS |
start is not a non-negative integer |
| 401 | MISSING_API_KEY |
The X-Api-Key header is not passed |
| 401 | INVALID_API_KEY |
The platform does not know this key string: a typo, a truncated value or a deleted key |
| 401 | TOKEN_MISSING |
The key has no access to the portal: a personal key has no portal webhook, or an application key was passed without a session token in Authorization: Bearer |
| 403 | SCOPE_DENIED |
The key has no telephony scope |
| 403 | BITRIX_ACCESS_DENIED |
Bitrix24 denied access — causes explained |
| 422 | BITRIX_ERROR |
Bitrix24 rejected the request. The reason is in error.message |
| 429 | RATE_LIMITED |
Request rate exceeded |
| 429 | QUEUE_OVERFLOW |
The account request queue is full, so the request is rejected without waiting. The Retry-After header suggests the delay |
| 429 | QUEUE_TIMEOUT |
The request did not get through the account queue in time and was not sent to Bitrix24. The Retry-After header suggests the delay |
| 502 | BITRIX_UNAVAILABLE |
Bitrix24 is unavailable |
| 503 | BITRIX_TIMEOUT |
Bitrix24 did not respond in time |
Full list of common API errors — Errors.
Known specifics
- Only your own application's connections are visible. The list contains connections created by the same Bitrix24 application as the key: an application key sees its own application's connections, a personal key sees connections created through the Bitrix24 account webhooks. Connections of other applications are not included in the list.
- Upper-case field names.
filterandsortalso accept field names in upper case with underscores:filter[CONFIG_ID]=1,sort=CONFIG_ID.