Для AI-агентов: markdown этой страницы — /docs-content/voximplant-sip.md индекс документации — /llms.txt
SIP-подключения
Управление SIP-подключениями офисных и облачных АТС, через которые портал Битрикс24 принимает и совершает звонки.
Скоуп: telephony | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key
Что нужно знать перед работой
- Два типа АТС.
cloud— облачная АТС,office— офисная. Тип задаётся при создании, по умолчаниюcloud, и потом не меняется. Офисной АТС Битрикс24 при создании выдаёт адрес и логин для входящих вызовов — поляincomingServerиincomingLogin. - Пароли только на запись.
passwordпередаётся при создании и изменении, но в ответ не попадает: вместо паролей приходят признакиhasPasswordиhasIncomingPassword. По этим признакам нельзя фильтровать и сортировать список. - Через API задаются пять полей:
type,title,server,login,password. Остальные поля подключения только для чтения, а лишнее поле в теле запроса даёт400 READONLY_FIELD. - Видны только подключения своего приложения. Методы раздела работают с подключениями, созданными тем же приложением Битрикс24, что и ключ: ключ приложения — с подключениями своего приложения, личный ключ — с подключениями, созданными через вебхуки портала. Подключение другого приложения не попадает в список, а по его
configIdметоды отвечают404 ENTITY_NOT_FOUND. - Тип
configIdзависит от метода. В ответах списка, получения, создания и изменения это строка, в ответе удаления — число. В пути ID передаётся числом:/v1/voximplant-sip/17.
Быстрый старт
Список SIP-подключений, доступных ключу:
curl "https://vibecode.bitrix24.tech/v1/voximplant-sip" \
-H "X-Api-Key: YOUR_API_KEY"
Ответ содержит массив подключений в data и их число в meta.total. Поля подключения описаны на странице Список подключений.
Полный пример
Подключение офисной АТС от создания до удаления: создать, прочитать, сменить логин и пароль, удалить. Скрипт запускается в Node.js 18+ из файла с расширением .mjs.
const BASE = 'https://vibecode.bitrix24.tech/v1/voximplant-sip'
const API_KEY = 'YOUR_API_KEY'
async function call(method, path, body) {
const headers = { 'X-Api-Key': API_KEY }
if (body) headers['Content-Type'] = 'application/json'
const res = await fetch(BASE + path, { method, headers, body: body && JSON.stringify(body) })
const json = await res.json()
if (!json.success) throw new Error(`${json.error.code}: ${json.error.message}`)
return json.data
}
// 1. Создать подключение офисной АТС
const created = await call('POST', '', {
type: 'office',
title: 'Офисная АТС',
server: 'sip.example.com',
login: 'office-line',
password: 'EXAMPLE_SIP_PASSWORD',
})
console.log('Создано:', created.configId, 'сервер для входящих:', created.incomingServer)
// 2. Прочитать подключение
const sip = await call('GET', `/${created.configId}`)
console.log('Тип:', sip.type, 'пароль задан:', sip.hasPassword)
// 3. Сменить логин и пароль
const updated = await call('PATCH', `/${created.configId}`, {
login: 'office-line-2',
password: 'EXAMPLE_NEW_SIP_PASSWORD',
})
console.log('Новый логин:', updated.login)
// 4. Удалить подключение
const removed = await call('DELETE', `/${created.configId}`)
console.log('Удалено:', removed.deleted)
Справочник эндпоинтов
| Метод | Путь | Bitrix24 метод | Описание |
|---|---|---|---|
| GET | /v1/voximplant-sip |
voximplant.sip.get | Список подключений с фильтром, сортировкой и постраничным выводом |
| GET | /v1/voximplant-sip/:configId |
voximplant.sip.get | Одно подключение по ID |
| POST | /v1/voximplant-sip |
voximplant.sip.add | Создать подключение |
| PATCH | /v1/voximplant-sip/:configId |
voximplant.sip.update | Изменить название, сервер, логин или пароль |
| DELETE | /v1/voximplant-sip/:configId |
voximplant.sip.delete | Удалить подключение |
Коды ошибок
Ошибки SIP-подключений
| HTTP | Код | Когда |
|---|---|---|
| 400 | INVALID_PARAMS |
Неверные параметры списка filter, sort, order, start, configId — не целое положительное число, тело — не JSON-объект, type — не office и не cloud, значение поля — не строка, при изменении нет поля, кроме type |
| 400 | MISSING_REQUIRED_FIELDS |
При создании не передан server или login |
| 400 | READONLY_FIELD |
В теле есть поле, кроме type, title, server, login, password, или при изменении type отличается от текущего |
| 404 | ENTITY_NOT_FOUND |
Подключения с таким configId нет среди подключений, доступных ключу |
| 422 | BITRIX_ERROR |
Битрикс24 отклонил запрос или не подтвердил изменение либо удаление, причина — в error.message |
Системные ошибки
| HTTP | Код | Когда |
|---|---|---|
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Платформа не знает такой строки ключа: опечатка, обрезанное значение или удалённый ключ |
| 401 | TOKEN_MISSING |
У ключа нет доступа к порталу: у личного ключа нет вебхука портала, ключу приложения не передан Authorization: Bearer с токеном сессии |
| 403 | SCOPE_DENIED |
У ключа нет скоупа telephony |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ только для чтения пытается создать, изменить или удалить подключение |
| 403 | BITRIX_ACCESS_DENIED |
Битрикс24 отказал в доступе — разбор причин |
| 429 | RATE_LIMITED |
Превышена частота запросов |
| 429 | QUEUE_OVERFLOW |
Очередь запросов к порталу переполнена, запрос отклонён без ожидания. Задержку подсказывает заголовок Retry-After |
| 429 | QUEUE_TIMEOUT |
Запрос не дождался очереди к порталу и не был отправлен в Битрикс24. Задержку подсказывает заголовок Retry-After |
| 502 | BITRIX_UNAVAILABLE |
Битрикс24 недоступен |
| 503 | BITRIX_TIMEOUT |
Битрикс24 не ответил вовремя |
Полный список общих ошибок API — Ошибки.