For AI agents: markdown of this page — /docs-content-en/timeline-logs/bindings/list.md documentation index — /llms.txt
List bindings
GET /v1/timeline-logs/:id/bindings
Returns all CRM entities a log entry is bound to. Handy for checking which timelines the event currently appears in.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id (path) |
number | yes | Log entry ID |
Examples
curl — personal key
curl https://vibecode.bitrix24.com/v1/timeline-logs/5012/bindings \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth app
curl https://vibecode.bitrix24.com/v1/timeline-logs/5012/bindings \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/timeline-logs/5012/bindings', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data, total } = await res.json()
data.forEach(b => console.log(`${b.entityType} #${b.entityId}`))
JavaScript — OAuth app
const res = await fetch('https://vibecode.bitrix24.com/v1/timeline-logs/5012/bindings', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data, total } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
array | Array of bindings |
data[].ownerId |
number | ID of the log entry itself (equals :id from the path, duplicated for convenience) |
data[].entityId |
number | ID of the bound CRM entity |
data[].entityType |
string | String type: "deal", "contact", "dynamic_174", etc. |
data[].entityTypeId |
number | Numeric type. Present if the string maps into the type table; for arbitrary smart processes it is extracted from dynamic_<id> |
total |
number | Number of bindings |
Response example
{
"success": true,
"data": [
{ "ownerId": 5012, "entityId": 100, "entityType": "deal", "entityTypeId": 2 },
{ "ownerId": 5012, "entityId": 50, "entityType": "contact", "entityTypeId": 3 },
{ "ownerId": 5012, "entityId": 10, "entityType": "company", "entityTypeId": 4 },
{ "ownerId": 5012, "entityId": 1, "entityType": "dynamic_174", "entityTypeId": 174 }
],
"total": 4
}
Error response example
400 — id is invalid:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Path parameter :id must be a positive integer"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMS |
id is not a positive integer |
| 422 | BITRIX_ERROR |
Bitrix24 rejected the request |
| 403 | SCOPE_DENIED |
The API key lacks the crm scope |
| 401 | TOKEN_MISSING |
The API key has no configured tokens |
Full list of common API errors — Errors.
Known specifics
The parent entity is in the list. When an entry is created via POST /v1/timeline-logs, the entityTypeId+entityId pair is automatically added to bindings. So even without explicit bind calls, total ≥ 1.
Both type formats in one object. Vibecode returns both entityType (the string from B24) and entityTypeId (the number) — for the client's convenience. If the string value does not map (a nonstandard smart process with entityTypeId < 128 and no clear name), entityTypeId may be absent from the object.
A nonexistent id — an empty array, not a 404. If you request bindings for a nonexistent log entry, Bitrix24 returns total: 0, data: [] with no error. To check whether an entry exists, use GET /v1/timeline-logs/:id.
Sorting is not set by a parameter. The list usually comes back by entityId ascending, but the order is not guaranteed. If you need a predictable order, sort on the client.
See also
- Bind — add a new entity
- Unbind — remove a binding
- Get an entry — check whether
idexists - Create an entry — the parent entity lands in bindings immediately