Для AI-агентов: markdown этой страницы — /docs-content/calls/record.md индекс документации — /llms.txt

Запись разговора

POST /v1/calls/:callId/record

Скоуп: telephony | Авторизация: X-Api-Key | URL: https://vibecode.bitrix24.tech/v1

POST /v1/calls/:callId/record вызывает telephony.externalCall.attachRecord для завершённого внешнего звонка. Тело: {fileName,fileContent} с base64 или {recordUrl,fileName?}. fileName только .mp3 или .wav; без fileName в режиме URL имя берётся из пути URL. recordUrl — публичный HTTPS без credentials, внутренние адреса запрещены. Лимит: 2 MiB декодированного файла и 3 MiB JSON; превышение 413 PAYLOAD_TOO_LARGE. fileName без fileContent и recordUrl: 400 MISSING_REQUIRED_FIELDS. uploadUrl никогда не возвращается. Ответ: data: {fileId}. Незавершённый звонок: отказ Б24 422; отсутствующий звонок может дать 404 ENTITY_NOT_FOUND. Загрузка заменяет прежнюю запись звонка. 429 LARGE_BODY_BACKEND_BUSY означает занятый лимит больших тел.

Ошибки: 400 неверные параметры; 401 ключ или токен; 403 scope, права Б24 или READONLY на записи; 422 отказ Б24; 429 лимиты; 502 недоступность; 503 таймаут или заморозка.

Параметры запроса

Поле Тип Обязательно Значение
callId string да ID завершённого звонка из регистрации.
fileName string для inline Имя с расширением .mp3 или .wav; для URL берётся из пути URL, если не задано.
fileContent string inline-режим Base64 аудио, до 2 MiB после декодирования; нельзя вместе с recordUrl.
recordUrl string URL-режим Публичный HTTPS URL без секретов и внутренних адресов; нельзя вместе с fileContent.

Поля ответа

Поле Значение
success Успех операции
data Результат, описанный выше; секреты исключены

Примеры

cURL Личный ключ

Terminal
curl -X POST 'https://vibecode.bitrix24.tech/v1/calls/YOUR_COMPLETED_CALL_ID/record' \
  -H 'X-Api-Key: FAKE_VIBE_API_KEY' \
  -H 'Content-Type: application/json' \
  --data '{"fileName":"record.wav","fileContent":"UklGRjQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YRAAAAAAAAAAAAAAAAAAAAAAAAAA"}'

cURL OAuth

Terminal
curl -X POST 'https://vibecode.bitrix24.tech/v1/calls/YOUR_COMPLETED_CALL_ID/record' \
  -H 'X-Api-Key: FAKE_VIBE_API_KEY' \
  -H 'Authorization: Bearer FAKE_APP_SESSION_TOKEN' \
  -H 'Content-Type: application/json' \
  --data '{"fileName":"record.wav","fileContent":"UklGRjQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YRAAAAAAAAAAAAAAAAAAAAAAAAAA"}'

JavaScript Личный ключ

javascript
const response = await fetch('https://vibecode.bitrix24.tech/v1/calls/YOUR_COMPLETED_CALL_ID/record', {
  method: 'POST',
  headers: {"X-Api-Key": "FAKE_VIBE_API_KEY", "Content-Type": "application/json"},
  body: JSON.stringify({"fileName": "record.wav", "fileContent": "UklGRjQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YRAAAAAAAAAAAAAAAAAAAAAAAAAA"}),
});
console.log(await response.json());

JavaScript OAuth

javascript
const response = await fetch('https://vibecode.bitrix24.tech/v1/calls/YOUR_COMPLETED_CALL_ID/record', {
  method: 'POST',
  headers: {"X-Api-Key": "FAKE_VIBE_API_KEY", "Authorization": "Bearer FAKE_APP_SESSION_TOKEN", "Content-Type": "application/json"},
  body: JSON.stringify({"fileName": "record.wav", "fileContent": "UklGRjQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YRAAAAAAAAAAAAAAAAAAAAAAAAAA"}),
});
console.log(await response.json());

Наблюдалось на тестовом портале 2026-10-02; пример содержит поля ответа без секретов.

JSON
{
  "success": true,
  "data": {
    "fileId": 10209
  }
}

Ошибки

HTTP Code
400 INVALID_PARAMS / MISSING_REQUIRED_FIELDS / READONLY_FIELD
401 MISSING_API_KEY / INVALID_API_KEY / TOKEN_MISSING
403 SCOPE_DENIED / WRITE_BLOCKED_READONLY_KEY / BITRIX_ACCESS_DENIED
422 BITRIX_ERROR
429 RATE_LIMITED
502 BITRIX_UNAVAILABLE
503 BITRIX_TIMEOUT
404 ENTITY_NOT_FOUND
413 PAYLOAD_TOO_LARGE
429 LARGE_BODY_BACKEND_BUSY

Справочник ошибок

403, если у ключа нет скоупа telephony:

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

Смотрите также

Calls

SIP