For AI agents: markdown of this page — /docs-content-en/calls/sync-followup.md documentation index — /llms.txt

Calls meeting follow-ups

Read meeting follow-ups from Calls with the syncconnector scope. These read-only methods use Bitrix24 REST 3.0 and require syncconnector 26.100.0 and rest 26.1300.0 or later. The scope is available without a feature flag. Method availability depends on the Bitrix24 account update.

Cowork keys and automatically assembled scope sets do not include syncconnector. To read Calls follow-ups, explicitly select this scope for a personal key or an application.

Base URL: https://vibecode.bitrix24.com/v1 | Scope: syncconnector

Operations

Method Route Bitrix24 method
MethodPOST Route/v1/calls/sync-followups/list Bitrix24 methodsyncconnector.followup.list
MethodGET Route/v1/calls/sync-followups/:followupId Bitrix24 methodsyncconnector.followup.get

Access and identifiers

The response contains only meetings of the webhook owner or the user whose OAuth token is forwarded. This restriction applies to administrators too. filter.participantId cannot expand access: the platform refuses it with 400 INVALID_PARAMS because Calls only returns the key owner meetings. Optional filter.chatId narrows this set.

followupId is the number of a follow-up page: take it from the list item callId. It is not a call number and cannot be matched to classic follow-up ids from Call follow-up.

An application using a personal key shows the key owner meetings to all its users. A multiuser application needs an OAuth application key and the current user session. This determines which user meetings each request reads.

List parameters

Send a JSON body to POST /v1/calls/sync-followups/list.

Parameter Type Required Meaning
Parameterfilter Typeobject RequiredYes MeaningMeeting filter
Parameterfilter.startDate Typeobject RequiredYes MeaningClosed date range
Parameterfilter.startDate.from TypeISO 8601 string RequiredYes MeaningStart, including timezone
Parameterfilter.startDate.to TypeISO 8601 string RequiredYes MeaningEnd, including timezone; no earlier than from
Parameterfilter.chatId Typepositive integer RequiredNo MeaningRestrict to a chat
Parameterselect Typestring array RequiredNo MeaningSupported fields below; omitted or [] selects base fields
Parameterorder.startDate Typeasc or desc RequiredNo MeaningThe only supported order field
ParametermentionFormat Typebb, html or none RequiredNo MeaningMention formatting
Parameterpagination.limit Typeinteger RequiredNo MeaningWith any AI block or dotted AI field: default 20, max 20; otherwise default 50, max 200; minimum 1
Parameterpagination.afterCursor Typeobject RequiredNo MeaningPrevious response cursor, unchanged

page, offset, start, unsupported fields, invalid dates and unsupported selection/order/format values return 400 INVALID_PARAMS before Bitrix24 is called. Request bodies and nested parameter objects accept only the fields listed above.

Example requests

Illustrative requests, using your own key and date window:

Terminal
curl -X POST 'https://vibecode.bitrix24.com/v1/calls/sync-followups/list' \
  -H "X-Api-Key: $VIBE_API_KEY" -H 'Content-Type: application/json' \
  -d '{"filter":{"startDate":{"from":"2026-11-01T00:00:00Z","to":"2026-11-10T23:59:59Z"}},"select":["callId","chatId","overview"],"pagination":{"limit":20}}'

For an OAuth application key, add Authorization: Bearer <current-user-session-token> alongside X-Api-Key: <application-key>. Do not substitute a shared personal key.

javascript
const response = await fetch(`${baseUrl}/v1/calls/sync-followups/list`, {
  method: 'POST',
  headers: { 'X-Api-Key': apiKey, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    filter: { startDate: { from: '2026-11-01T00:00:00Z', to: '2026-11-10T23:59:59Z' } },
    select: ['callId', 'chatId', 'overview'], pagination: { limit: 20 },
  }),
});
const page = (await response.json()).data;

Get parameters

GET /v1/calls/sync-followups/:followupId accepts a positive integer page number. Internally the same number is sent as callId.

Query parameter Type Meaning
Query parameterselect Typerepeated or comma-separated field names MeaningOmit for the full form. ?select= or ?select=[] explicitly selects base fields. These are different requests
Query parametermentionFormat Typebb, html or none MeaningMention formatting

Example: GET /v1/calls/sync-followups/17?select=overview.actionItems&mentionFormat=none. Obtain 17 from your own list response.

Supported selection

Blocks and the listed dotted subfields are supported. Any unknown field returns 400 INVALID_PARAMS.

Field or block Supported dotted subfields
Field or blockcallId, callType, initiatorId, startDate, endDate, durationSeconds, uuid, chatId, participants, tracks, outcomes, language, version, createdAt Supported dotted subfieldsMetadata
Field or blocktranscription Supported dotted subfieldstranscription.language, transcription.segments
Field or blockoverview Supported dotted subfieldsoverview.topic, overview.detailedTakeaways, overview.meetingType, overview.agenda, overview.agreements, overview.actionItems, overview.meetings
Field or blocksummary Supported dotted subfieldsEntire block
Field or blockinsights Supported dotted subfieldsinsights.speakerEvaluationAvailable, insights.speakerAnalysis, insights.meetingStrengths, insights.meetingWeaknesses, insights.speechStyleInfluence, insights.engagementLevel, insights.areasOfResponsibility, insights.finalRecommendations
Field or blockevaluation Supported dotted subfieldsevaluation.efficiencyValue, evaluation.calendar, evaluation.criteria

Selecting any of transcription, overview, summary, insights, evaluation or their supported dotted subfields reduces the list page limit to 20.

Response fields and pagination

The list response is { success: true, data: { items, hasMore, afterCursor } }; get returns { success: true, data: { item } }. Items contain metadata and the selected blocks listed above, as supplied by Bitrix24.

Field Meaning
Fielddata.items MeaningArray of follow-up pages; it can be empty while hasMore is true
Fielddata.hasMore MeaningWhether to continue paging
Fielddata.afterCursor MeaningOpaque cursor: pass it unchanged in the next request pagination.afterCursor
Fielddata.item MeaningOne follow-up page on get
Fielditem.callId MeaningFollow-up page number to use as followupId
FieldAI blocks MeaningMay be null while analysis is not ready; they can be filled later. Read again when needed
Fieldtracks MeaningTrack links do not guarantee that a recording can be downloaded

Stop only when hasMore is false. An empty items page with hasMore: true is not the end; continue with its afterCursor. Do not derive an offset or reinterpret the cursor.

Errors

HTTP Code Condition
HTTP400 CodeINVALID_PARAMS ConditionInvalid or unsupported parameters, including participantId, page, offset, start, or an AI limit over 20
HTTP401 CodeUNAUTHORIZED ConditionInvalid or missing API key
HTTP403 CodeSCOPE_DENIED ConditionThe key has no syncconnector scope
HTTP403 CodeBITRIX_ACCESS_DENIED ConditionBitrix24 refused access, including a webhook without the scope
HTTP422 CodeMETHOD_NOT_YET_AVAILABLE ConditionRequired account update/module is unavailable; error.release names syncconnector 26.100.0; rest >= 26.1300.0
HTTP422 CodeBITRIX_ERROR ConditionOther Bitrix24 refusal

See Errors for common authentication, credential and account refusals. Choosing syncconnector explicitly on a personal key fails if the account does not support that scope; it is never silently removed from a human selection.

See also