لوكلاء AI: ملف markdown لهذه الصفحة — /docs-content-en/calls.md فهرس التوثيق — /llms.txt
مقالات التوثيق متاحة حاليًا باللغة الإنجليزية فقط.
Calls
Programmatic access to Bitrix24 calls: AI Follow-up of completed calls, the personal call journal, call recordings and CRM card lookup by phone number.
Scope: call | Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key
Documentation sections
- Call follow-up — AI review of completed calls: transcript, meeting overview, agreements, tasks
- Call journal — the personal call journal of the key's user
- Call recording — attach an audio recording to a completed external telephony call
- CRM cards by phone — CRM cards and the responsible employee for a phone number
External telephony
The following operations require the telephony scope:
- Attach a recording
- Find CRM cards by phone
- Manage SIP connections
- Default outgoing line
- Employee telephony settings
What a Follow-up is
A Follow-up is an AI review of an internal call or a meeting between employees: the conversation transcript, the meeting topic, agreements, assigned tasks, participant analysis and an efficiency score. Bitrix24 generates it automatically after the call ends. The methods in this section only read the finished result and create nothing.
A Follow-up is not generated for every call. The blocks that are ready are listed in the outcomes field of the response; the ones that have not been generated come back as null.
This is not the transcript of a call with a client. A conversation with a client logged as a CRM activity is transcribed by a separate mechanism — its text is returned by GET /v1/activities/:activityId/transcript. If the task sounds like "get the text of a conversation with a client for a deal or a lead" — use that endpoint, not this section.
Quick start
List the calls from January that already have a Follow-up:
curl -X POST https://vibecode.bitrix24.com/v1/calls/followups/list \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filter": { "startDate": { "from": "2026-01-01T00:00:00Z", "to": "2026-01-31T23:59:59Z" } },
"pagination": { "limit": 5 }
}'
The response contains an array of calls in data.items and the next-page cursor in data.afterCursor:
{
"success": true,
"data": {
"items": [
{
"callId": 12345,
"callType": 1,
"initiatorId": 7,
"startDate": "2026-01-15T10:00:00+00:00",
"endDate": "2026-01-15T10:42:00+00:00",
"durationSeconds": 2520
}
],
"hasMore": false,
"afterCursor": null
}
}
Full example
Review the outcome of a meeting: find a call for the period, read the overview and agreements, retrieve the tasks.
BASE='https://vibecode.bitrix24.com/v1'
# 1. Calls with a Follow-up for the period → take the identifier of the first one
CALL_ID=$(curl -s -X POST "$BASE/calls/followups/list" \
-H "X-Api-Key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"filter": {"startDate": {"from": "2026-01-01T00:00:00Z", "to": "2026-01-31T23:59:59Z"}},
"order": {"startDate": "desc"}, "pagination": {"limit": 1}}' | jq -r '.data.items[0].callId')
# 2. Meeting overview and agreements
curl -s "$BASE/calls/followups/$CALL_ID?select=overview&mentionFormat=none" \
-H "X-Api-Key: YOUR_API_KEY" | jq '.data.item.overview.topic, .data.item.overview.agreements'
# 3. Tasks assigned during the meeting
curl -s "$BASE/calls/followups/$CALL_ID?select=overview.actionItems&mentionFormat=none" \
-H "X-Api-Key: YOUR_API_KEY" | jq '.data.item.overview.actionItems'
mentionFormat=none removes @-mention markup: the text comes back without the internal tags, ready to pass to an AI model or save to a task.
Endpoint reference
| Method | Path | Bitrix24 method | Description |
|---|---|---|---|
| MethodPOST | Path/v1/calls/followups/list |
Bitrix24 methodcall.followup.list | DescriptionList of Follow-ups for a period with filtering, sorting and cursor navigation |
| MethodGET | Path/v1/calls/followups/:callId |
Bitrix24 methodcall.followup.get | DescriptionFull Follow-up data for a single call |
| MethodGET | Path/v1/calls/log |
Bitrix24 methodcall.CallLog.list | DescriptionPersonal call journal |
| MethodDELETE | Path/v1/calls/log/:callId |
Bitrix24 methodcall.CallLog.delete | DescriptionDelete a journal entry |
| MethodGET | Path/v1/calls/log/chat |
Bitrix24 methodcall.CallLog.getChat | DescriptionID of the personal chat with the other party |
| MethodPOST | Path/v1/calls/:callId/record |
Bitrix24 methodtelephony.externalCall.attachRecord | DescriptionAttach a conversation recording to a call |
| MethodGET | Path/v1/calls/crm-entities |
Bitrix24 methodtelephony.externalCall.searchCrmEntities | DescriptionCRM cards by phone number |
Error codes
Section errors
| HTTP | Code | When |
|---|---|---|
| HTTP400 | CodeMISSING_PARAMS |
WhenThe request body has no filter object |
| HTTP400 | CodeINVALID_PARAMS |
WhencallId in the path is not a positive integer |
| HTTP400 | CodeINVALID_PARAMS |
WhenBitrix24 rejected the parameter value. The response additionally contains an error.validation array with the field name |
| HTTP400 | CodeMISSING_REQUIRED_FIELDS |
WhenA required parameter is missing: phone in the CRM lookup by phone, fileContent or fileName when uploading a recording |
| HTTP403 | CodeBITRIX_ACCESS_DENIED |
WhenBitrix24 denied access. A common cause is that the set of scopes the key uses to reach the portal does not include call. The full list of causes and what to do per key type — Authorization, keys and permissions |
| HTTP413 | CodePAYLOAD_TOO_LARGE |
WhenThe recording file exceeds 2 MiB after decoding, or the request body exceeds 3 MiB |
| HTTP422 | CodeBITRIX_ERROR |
WhenThe request was rejected: invalid date range, unsupported field in select, invalid pagination or order, no access to the call data |
| HTTP422 | CodeBITRIX_ERROR |
WhenThe call for the recording is not found or has not ended yet |
System errors
| HTTP | Code | When | Retry |
|---|---|---|---|
| HTTP401 | CodeMISSING_API_KEY |
WhenThe X-Api-Key header is missing |
Retryno |
| HTTP401 | CodeTOKEN_MISSING |
WhenThe key has no portal tokens. An OAuth application key requires the Authorization: Bearer header |
Retryno |
| HTTP403 | CodeSCOPE_DENIED |
WhenThe key has no call scope, or the telephony scope for external telephony operations |
Retryno |
| HTTP429 | CodeRATE_LIMITED |
WhenRequest rate exceeded on the Bitrix24 side | Retryyes, after a delay |
| HTTP429 | CodeQUEUE_OVERFLOW, QUEUE_TIMEOUT |
WhenThe portal request queue is full or the request did not get through the queue in time. The Retry-After header indicates the delay |
Retryyes, after Retry-After |
| HTTP503 | CodeBITRIX_TIMEOUT |
WhenBitrix24 accepted the request but did not respond within 60 seconds | Retryyes for read operations. Before retrying a recording upload or a deletion, check the result: the request may have been executed |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
WhenBitrix24 is unavailable | Retryyes, after a delay |
The full list of common API errors — Error codes.