Create SIP Line voximplant.sip.add
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Scope:
telephonyWho can execute the method: user with the Management of numbers — modification access permission
The method voximplant.sip.add creates a new SIP line associated with an application.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
SERVER* |
Address of the SIP registration server |
|
LOGIN* |
Login for connecting to the server |
|
PASSWORD |
Password for connecting to the server. Maximum length — 100 characters. Not required for calling the method, but necessary for working registration with the operator |
|
TYPE |
Type of PBX. Possible values:
Default: |
|
TITLE |
Name of the connection. If the parameter is not provided, the interface will display a system name based on the connection type:
where The |
You can connect no more than 10 cloud SIP lines. Exceeding this limit will return the error MAX_CLOUD_PBX
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"TYPE":"cloud","TITLE":"SIP line 1","SERVER":"sip.provider.com","LOGIN":"sip_user","PASSWORD":"secret"}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/voximplant.sip.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"TYPE":"cloud","TITLE":"SIP line 1","SERVER":"sip.provider.com","LOGIN":"sip_user","PASSWORD":"secret","auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/voximplant.sip.add
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type SipAddResult = {
ID: string
TYPE: string
CONFIG_ID: string
REG_ID?: number
TITLE: string
SERVER: string
LOGIN: string
PASSWORD: string
AUTH_USER: string | null
OUTBOUND_PROXY: string | null
DETECT_LINE_NUMBER: string
LINE_DETECT_HEADER_ORDER: string
REGISTRATION_STATUS_CODE: number | null
REGISTRATION_ERROR_MESSAGE: string | null
INCOMING_SERVER?: string
INCOMING_LOGIN?: string
INCOMING_PASSWORD?: string
}
try {
const response = await $b24.actions.v2.call.make<SipAddResult>({
method: 'voximplant.sip.add',
params: {
TYPE: 'cloud',
TITLE: 'SIP line 1',
SERVER: 'sip.provider.com',
LOGIN: 'sip_user',
PASSWORD: 'secret',
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Created SIP line:', result.ID, result.TYPE, result.TITLE)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function addSipLine() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'voximplant.sip.add',
params: {
TYPE: 'cloud',
TITLE: 'SIP line 1',
SERVER: 'sip.provider.com',
LOGIN: 'sip_user',
PASSWORD: 'secret',
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Created SIP line:', result.ID, result.TYPE, result.TITLE)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addSipLine)
</script>
try {
$response = $b24Service
->core
->call(
'voximplant.sip.add',
[
'TYPE' => 'cloud',
'TITLE' => 'SIP line 1',
'SERVER' => 'sip.provider.com',
'LOGIN' => 'sip_user',
'PASSWORD' => 'secret',
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error: ' . $e->getMessage();
}
BX24.callMethod(
'voximplant.sip.add',
{
TYPE: 'cloud',
TITLE: 'SIP line 1',
SERVER: 'sip.provider.com',
LOGIN: 'sip_user',
PASSWORD: 'secret'
},
function(result)
{
if (result.error())
{
console.error(result.error(), result.error_description());
}
else
{
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'voximplant.sip.add',
[
'TYPE' => 'cloud',
'TITLE' => 'SIP line 1',
'SERVER' => 'sip.provider.com',
'LOGIN' => 'sip_user',
'PASSWORD' => 'secret',
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Response Handling
HTTP Status: 200
Example Response for Creating a Cloud PBX
{
"result": {
"ID": "5",
"TYPE": "cloud",
"CONFIG_ID": "5",
"REG_ID": 151082,
"TITLE": "SIP line 1",
"SERVER": "sip.provider.com",
"LOGIN": "sip_user",
"PASSWORD": "secret",
"AUTH_USER": null,
"OUTBOUND_PROXY": null,
"DETECT_LINE_NUMBER": "N",
"LINE_DETECT_HEADER_ORDER": "diversion;to",
"REGISTRATION_STATUS_CODE": null,
"REGISTRATION_ERROR_MESSAGE": null
},
"time": {
"start": 1773654128,
"finish": 1773654129.048472,
"duration": 1.0484719276428223,
"processing": 1,
"date_start": "2026-03-16T12:42:08+02:00",
"date_finish": "2026-03-16T12:42:09+02:00",
"operating_reset_at": 1773654728,
"operating": 0.2883341312408447
}
}
Example Response for Creating an Office PBX
{
"result": {
"ID": "7",
"TYPE": "office",
"CONFIG_ID": "7",
"SERVER": "office.provider.local",
"LOGIN": "office_user",
"PASSWORD": "secret",
"INCOMING_SERVER": "ip.b24-6058-1587535982.bitrixphone.com",
"INCOMING_LOGIN": "sip7",
"INCOMING_PASSWORD": "71747503265fb091223eb31776a4a225",
"AUTH_USER": null,
"OUTBOUND_PROXY": null,
"DETECT_LINE_NUMBER": "N",
"LINE_DETECT_HEADER_ORDER": "diversion;to",
"REGISTRATION_STATUS_CODE": null,
"REGISTRATION_ERROR_MESSAGE": null,
"TITLE": "Office PBX 1"
},
"time": {
"start": 1773654928,
"finish": 1773654928.708338,
"duration": 0.7083380222320557,
"processing": 0,
"date_start": "2026-03-16T12:55:28+02:00",
"date_finish": "2026-03-16T12:55:28+02:00",
"operating_reset_at": 1773655528,
"operating": 0.24362492561340332
}
}
Returned Data
|
Name |
Description |
|
result |
Object with the created SIP line |
|
ID |
Internal identifier of the SIP line record |
|
TYPE |
Type of PBX |
|
CONFIG_ID |
Identifier of the SIP line configuration |
|
REG_ID |
Identifier of the SIP registration. Returned when creating a cloud PBX |
|
TITLE |
Name of the connection |
|
SERVER |
Address of the SIP registration server |
|
LOGIN |
Login for connecting to the server |
|
PASSWORD |
Password for connecting to the server |
|
AUTH_USER |
User for SIP authorization |
|
OUTBOUND_PROXY |
Address of the SIP proxy for outgoing connection to the operator or PBX |
|
DETECT_LINE_NUMBER |
Indicator for line number detection. Possible values:
|
|
LINE_DETECT_HEADER_ORDER |
Order of headers for line number detection |
|
REGISTRATION_STATUS_CODE |
Status code of the SIP line registration |
|
REGISTRATION_ERROR_MESSAGE |
Text of the SIP registration error |
|
INCOMING_SERVER |
Address of the server for incoming calls. Returned when creating an office PBX |
|
INCOMING_LOGIN |
Login for incoming calls. Returned when creating an office PBX |
|
INCOMING_PASSWORD |
Password for incoming calls. Returned when creating an office PBX |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400, 403
{
"error": "CHECK_FIELDS_ERROR",
"error_description": "Server address not specified"
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
Value |
|
|
|
Required parameter |
|
|
|
Required parameter |
|
|
|
Exceeded limit for parameter |
|
|
|
A line with this name already exists |
|
|
|
Exceeded limit for cloud SIP lines |
|
|
|
Insufficient permissions to create a SIP line |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not permitted for calls using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The HTTPS protocol is required for method calls |
|
|
|
The REST API is blocked due to overload. This is a manual individual block; please contact Bitrix24 technical support to lift it |
|
|
|
The REST API is only available on commercial plans |
|
|
|
The user associated with the access token or webhook used to call the method lacks the necessary permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the portal administrator has restricted access to this application to specific users only |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the "Temporary closure of the public part of the site" option. Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |