For AI agents: markdown of this page — /docs-content-en/openlines/sessions/transfers.md documentation index — /llms.txt
Reassignment history
⚠️ The method ships in update
imopenlines 26.700.0and is not yet available on all Bitrix24 portals. If the update has not reached your portal yet, the API returns422 METHOD_NOT_YET_AVAILABLE— this means the method has not been released on the portal yet, not that the integration is broken.
POST /v1/openlines/sessions/transfers
A chronological list of reassignments (transfers) for specific sessions — from whom to whom, between which lines, for what reason. Up to 50 identifiers per call.
Request fields (body)
| Field | Type | Req. | Description |
|---|---|---|---|
sessionId |
number[] | yes | Array of session identifiers, up to 50 elements. Source: POST /v1/openlines/sessions/search. A single number is also accepted and wrapped into an array |
Duplicates in sessionId are collapsed. A nonexistent, foreign, or inaccessible sessionId does not cause an error — there simply will be no records in transfers for it.
Examples
curl — personal key
curl -X POST "https://vibecode.bitrix24.com/v1/openlines/sessions/transfers" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "sessionId": [1024, 1025] }'
curl — OAuth application
curl -X POST "https://vibecode.bitrix24.com/v1/openlines/sessions/transfers" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "sessionId": [1024, 1025] }'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/openlines/sessions/transfers', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ sessionId: [1024, 1025] }),
})
const { data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/openlines/sessions/transfers', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ sessionId: [1024, 1025] }),
})
const { data } = await res.json()
Response fields
The response is { "success": true, "data": { "transfers": [...] } }. Transfers of all requested sessions are interleaved, in chronological order (by date ascending). To group by session, use the transfers[].sessionId field.
| Key | Description |
|---|---|
sessionId |
Session identifier |
date |
Date and time of the reassignment |
fromOperatorId |
Operator the session left (null if from the queue) |
toOperatorId |
Operator the session went to (null if to the queue) |
fromConfigId |
Source line |
toConfigId |
Target line (if transferred to another line) |
reason |
Reason: manual / auto |
mode |
Mode: MANUAL / AUTO |
type |
Type: USER / QUEUE |
initiatorId |
Transfer initiator (null if automatic) |
Response example
Session 1024 — auto-distributed from the queue, then manually transferred to an operator; session 1025 — no transfers:
{
"success": true,
"data": {
"transfers": [
{ "sessionId": 1024, "date": "2026-06-15T14:30:05+00:00", "fromOperatorId": null, "toOperatorId": 42, "fromConfigId": 3, "toConfigId": null, "reason": "auto", "mode": "AUTO", "type": "USER", "initiatorId": null },
{ "sessionId": 1024, "date": "2026-06-15T14:40:00+00:00", "fromOperatorId": 42, "toOperatorId": 51, "fromConfigId": 3, "toConfigId": null, "reason": "manual", "mode": "MANUAL", "type": "USER", "initiatorId": 42 }
]
}
}
Error response example
400 — more than 50 identifiers in the batch:
{
"success": false,
"error": { "code": "BATCH_LIMIT_EXCEEDED", "message": "sessionId batch must not exceed 50 unique ids" }
}
Errors
| HTTP | Code | When |
|---|---|---|
| 403 | B24_TARIFF_RESTRICTION |
The tariff does not include Open Channels statistics (report_open_lines) |
| 400 | MISSING_PARAMS |
sessionId is an empty array or missing |
| 400 | INVALID_PARAMS |
A non-numeric element in sessionId |
| 400 | BATCH_LIMIT_EXCEEDED |
More than 50 unique identifiers (after collapsing duplicates) |
| 422 | METHOD_NOT_YET_AVAILABLE |
The imopenlines 26.700.0 update has not reached the portal yet |
The full list of system codes — API errors.