[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-timeline-logs\u002Fpins\u002Fpin":3,"docs-tabs-timeline-logs\u002Fpins\u002Fpin":6},{"content":4,"lastmod":5},"\n## Закрепить запись\n\n`POST \u002Fv1\u002Ftimeline-logs\u002F:id\u002Fpin`\n\nЗакрепляет лог-запись в верхней части таймлайна родительской CRM-сущности. Закреплённые записи всегда видны при открытии карточки — менеджеру не нужно скроллить историю, чтобы увидеть важное событие.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | number | да | ID лог-записи (или другого элемента таймлайна) |\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| **`entityTypeId`** | number | да | Тип родительской CRM-сущности |\n| **`entityId`** | number | да | ID родительской записи |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Fpin \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"entityTypeId\": 2, \"entityId\": 100 }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Fpin \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"entityTypeId\": 2, \"entityId\": 100 }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ftimeline-logs\u002F5012\u002Fpin', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ entityTypeId: 2, entityId: 100 }),\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\u002Fpin', {\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: 2, entityId: 100 }),\n})\n\nconst { success } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.pinned` | boolean | Всегда `true` — подтверждение, что запись закреплена |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": { \"pinned\": true }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — пропущены обязательные поля:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_PARAMS\",\n    \"message\": \"Required body: entityTypeId, entityId (positive ints)\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | Не переданы или некорректны `entityTypeId` \u002F `entityId` либо `id` не положительное целое |\n| 404 | `ENTITY_NOT_FOUND` | Элемент таймлайна с указанным `id` не существует |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Закрепление работает не только для лог-записей.** Эндпоинт принимает `id` любого элемента таймлайна — включая комментарии пользователя из [`\u002Fv1\u002Ftimelines`](\u002Fdocs\u002Fentities\u002Ftimelines) и дела ([`\u002Fv1\u002Factivities`](\u002Fdocs\u002Fentities\u002Factivities)). Если знаете `id` комментария — его тоже можно закрепить через этот эндпоинт.\n\n**Повторный pin идемпотентен.** Закрепить уже закреплённую запись — операция тоже отдаст `200 + {pinned: true}`. Открепить запись — отдельный вызов [`POST \u002Funpin`](\u002Fdocs\u002Ftimeline-logs\u002Fpins\u002Funpin).\n\n**Закрепление не зависит от привязок.** Если запись привязана к нескольким сущностям через [`bind`](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Fbind), pin закрепляет её только в указанной паре `entityTypeId+entityId`. Чтобы закрепить во всех связанных карточках — отдельные вызовы pin для каждой.\n\n## Смотрите также\n\n- [Открепить запись](\u002Fdocs\u002Ftimeline-logs\u002Fpins\u002Funpin) — обратная операция\n- [Привязать к ещё одной сущности](\u002Fdocs\u002Ftimeline-logs\u002Fbindings\u002Fbind) — мультибиндинг с возможностью pin в каждой\n- [Создать запись](\u002Fdocs\u002Ftimeline-logs\u002Flogs\u002Fcreate) — создать перед закреплением\n","2026-06-23",{}]