[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-timeline-logs\u002Fbindings\u002Funbind":3,"docs-tabs-timeline-logs\u002Fbindings\u002Funbind":6},{"content":4,"lastmod":5},"\n## Отвязать\n\n`POST \u002Fv1\u002Ftimeline-logs\u002F:id\u002Funbind`\n\nУдаляет привязку лог-записи к указанной CRM-сущности. В её таймлайне запись больше не отображается, но остаётся в журналах остальных привязанных сущностей.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | number | да | ID лог-записи |\n\n## Поля запроса (body)\n\nТе же поля, что и в [`bind`](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Fbind):\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| **`entityId`** | number | да | ID сущности, от которой отвязываем |\n| **`entityTypeId`** | number | да* | Числовой тип CRM-сущности |\n| **`entityType`** | string | да* | Строковый код типа: `\"lead\"`, `\"deal\"`, `\"contact\"`, `\"company\"`, `\"quote\"`, `\"order\"`, `\"smart_invoice\"`, `\"dynamic_\u003CentityTypeId>\"` |\n\n*Передайте либо `entityTypeId`, либо `entityType`. Полный список поддерживаемых типов — [Привязать запись](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Fbind#поддерживаемые-типы).\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Funbind \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"entityTypeId\": 3, \"entityId\": 50 }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Funbind \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"entityTypeId\": 3, \"entityId\": 50 }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Funbind', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ entityTypeId: 3, entityId: 50 }),\n})\n\nconst { success } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Funbind', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ entityTypeId: 3, entityId: 50 }),\n})\n\nconst { success } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.bound` | boolean | Всегда `false` — подтверждение, что привязка снята |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": { \"bound\": false }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — `entityTypeId` без отображения:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_ENTITY_TYPE_ID\",\n    \"message\": \"entityTypeId=99 has no ENTITY_TYPE mapping. Use 1=lead, 2=deal, 3=contact, 4=company, 7=quote, 14=order, 31=smart_invoice, or ≥128 for smart-processes.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | Не передан `entityId` или ни `entityTypeId`, ни `entityType` |\n| 400 | `INVALID_ENTITY_TYPE_ID` | `entityTypeId` \u003C 128 и нет в таблице маппинга |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Идемпотентно.** Отвязать от уже отвязанной сущности — `200 + {bound: false}` без ошибки.\n\n**Не валидирует существование `:id` лог-записи.** На несуществующий `id` `unbind` тоже возвращает `200 + {bound: false}` — операция silently no-op. Если важен факт «привязка реально существовала и была удалена» — сначала [`GET \u002Fv1\u002Ftimeline-logs\u002F:id\u002Fbindings`](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Flist) и проверьте список перед `unbind`.\n\n**Не отвязывайте единственную привязку — запись «осиротеет».** Если у записи только одна привязка (например, та, что создана автоматически вместе с записью), `unbind` ответит `200 + {bound: false}`, но запись после этого станет недоступна через API: [`GET \u002Fv1\u002Ftimeline-logs\u002F:id`](\u002Fdocs\u002Ftimeline-logs\u002Flogs\u002Fget) вернёт `403 BITRIX_ACCESS_DENIED`. Это поведение Битрикс24 — без активной привязки запись теряет доступ.\n\n**Безопасный порядок при смене родителя.** Сначала привяжите к новой сущности через [`POST \u002F:id\u002Fbind`](.\u002Fbind.md), затем отвяжите от исходной. Пока есть хотя бы одна оставшаяся привязка — запись остаётся доступной через её таймлайн.\n\n**Чтобы убрать запись отовсюду — удаляйте через `DELETE`.** [`DELETE \u002Fv1\u002Ftimeline-logs\u002F:id`](\u002Fdocs\u002Ftimeline-logs\u002Flogs\u002Fdelete) удаляет запись разом из всех привязанных таймлайнов (с учётом ограничения cross-app — см. документацию метода).\n\n## Смотрите также\n\n- [Привязать](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Fbind) — обратная операция\n- [Список привязок](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Flist) — проверить, к чему запись сейчас привязана\n- [Удалить запись](\u002Fdocs\u002Ftimeline-logs\u002Flogs\u002Fdelete) — полностью убрать запись из всех таймлайнов\n","2026-06-16",{}]