[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Fcalendar-events\u002Fcreate":3,"docs-tabs-entities\u002Fcalendar-events\u002Fcreate":6},{"content":4,"lastmod":5},"\n## Создать событие\n\n`POST \u002Fv1\u002Fcalendar-events`\n\nСоздаёт новое событие в указанном календаре.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `type` | string | да | Тип календаря: `user`, `group`, `company_calendar` |\n| `ownerId` | number | да | ID владельца календаря: сотрудник (`GET \u002Fv1\u002Fusers`) или рабочая группа |\n| `name` | string | да | Название события |\n| `from` | datetime | да | Начало события в ISO 8601. Принимается строка с явным смещением (`2026-06-10T10:00:00+03:00`), в UTC (`2026-06-10T07:00:00Z`) или без зоны (`2026-06-10T10:00:00`) |\n| `to` | datetime | да | Окончание события в ISO 8601. Принимается строка с явным смещением (`2026-06-10T11:00:00+03:00`), в UTC (`2026-06-10T08:00:00Z`) или без зоны (`2026-06-10T11:00:00`) |\n| `timezoneFrom` | string | нет | Часовой пояс начала события (IANA-имя: `Europe\u002FMoscow`, `Asia\u002FAlmaty`, `UTC`). Без него используется часовой пояс сотрудника-владельца API-ключа |\n| `timezoneTo` | string | нет | Часовой пояс окончания события (IANA-имя) |\n| `description` | string | нет | Описание |\n| `sectionId` | number | нет | ID секции календаря. Если поле не передано — при каждом вызове создаётся новая секция. Чтобы события писались в одну секцию, передавайте `sectionId` существующей секции. ID существующей секции возвращает [`GET \u002Fv1\u002Fcalendar-events`](.\u002Flist.md) в поле `sectionId` любого ранее созданного события |\n| `skipTime` | boolean | нет | Событие на весь день. При `true` время в `from`\u002F`to` игнорируется, длительность фиксируется в 24 часа |\n| `importance` | string | нет | `high`, `normal`, `low` |\n| `accessibility` | string | нет | Занятость: `busy`, `quest` (под вопросом), `free`, `absent` |\n| `location` | string | нет | Место проведения |\n| `color` | string | нет | Цвет события (HEX, `#RRGGBB`) |\n| `attendees` | number[] | нет | Массив ID приглашённых сотрудников. Список: `GET \u002Fv1\u002Fusers`. **Только для записи** — в ответе участники возвращаются в полях `attendeeList`, `attendeesCodes`. См. [Поля события](.\u002Ffields.md) |\n| `remind` | array | нет | Настройки напоминаний. Каждый элемент: `{type: 'min' \\| 'hour' \\| 'day', count: \u003Cчисло>}` |\n| `rrule` | object | нет | Расписание повторения регулярного события. Структура полей и пример — секция [Регулярное событие](#регулярное-событие) ниже |\n| `isPrivate` | boolean | нет | Приватное событие — детали скрыты от других пользователей |\n| `isMeeting` | boolean | нет | Событие-встреча с приглашениями |\n\nПолный список полей: [`GET \u002Fv1\u002Fcalendar-events\u002Ffields`](.\u002Ffields.md).\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fcalendar-events\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"user\",\n    \"ownerId\": 1,\n    \"name\": \"Созвон с командой\",\n    \"from\": \"2026-06-10T10:00:00\",\n    \"to\": \"2026-06-10T11:00:00\",\n    \"timezoneFrom\": \"Europe\u002FMoscow\",\n    \"timezoneTo\": \"Europe\u002FMoscow\",\n    \"description\": \"Еженедельная синхронизация\",\n    \"accessibility\": \"busy\",\n    \"sectionId\": 3\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fcalendar-events\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"user\",\n    \"ownerId\": 1,\n    \"name\": \"Созвон с командой\",\n    \"from\": \"2026-06-10T10:00:00\",\n    \"to\": \"2026-06-10T11:00:00\",\n    \"timezoneFrom\": \"Europe\u002FMoscow\",\n    \"timezoneTo\": \"Europe\u002FMoscow\",\n    \"description\": \"Еженедельная синхронизация\",\n    \"accessibility\": \"busy\",\n    \"sectionId\": 3\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fcalendar-events', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    type: 'user',\n    ownerId: 1,\n    name: 'Созвон с командой',\n    from: '2026-06-10T10:00:00',\n    to: '2026-06-10T11:00:00',\n    timezoneFrom: 'Europe\u002FMoscow',\n    timezoneTo: 'Europe\u002FMoscow',\n    description: 'Еженедельная синхронизация',\n    accessibility: 'busy',\n    sectionId: 3,\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('ID события:', data.id)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fcalendar-events', {\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({\n    type: 'user',\n    ownerId: 1,\n    name: 'Созвон с командой',\n    from: '2026-06-10T10:00:00',\n    to: '2026-06-10T11:00:00',\n    timezoneFrom: 'Europe\u002FMoscow',\n    timezoneTo: 'Europe\u002FMoscow',\n    description: 'Еженедельная синхронизация',\n    accessibility: 'busy',\n    sectionId: 3,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Регулярное событие\n\nЧтобы создать повторяющееся событие, передайте поле `rrule` как объект. Запрос:\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fcalendar-events\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"type\": \"user\",\n    \"ownerId\": 1,\n    \"name\": \"Созвон команды\",\n    \"from\": \"2026-07-13T10:00:00\",\n    \"to\": \"2026-07-13T11:00:00\",\n    \"timezoneFrom\": \"Europe\u002FMoscow\",\n    \"timezoneTo\": \"Europe\u002FMoscow\",\n    \"rrule\": {\n      \"FREQ\": \"WEEKLY\",\n      \"INTERVAL\": 1,\n      \"BYDAY\": [\"MO\", \"WE\"],\n      \"UNTIL\": \"2026-09-30\"\n    }\n  }'\n```\n\nСоздаётся одно событие с одним `id` — список (`GET \u002Fv1\u002Fcalendar-events`) вернёт по элементу на каждое вхождение серии, все они будут иметь общий `parentId`. Удаление события (`DELETE \u002Fv1\u002Fcalendar-events\u002F:id`) убирает всю серию.\n\nПоля `rrule`:\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `FREQ` | string | Периодичность: `DAILY`, `WEEKLY`, `MONTHLY`, `YEARLY` |\n| `INTERVAL` | number | Интервал. `1` — каждый цикл, `2` — через один и т. д. |\n| `BYDAY` | string[] | Дни недели для `WEEKLY`: `SU`, `MO`, `TU`, `WE`, `TH`, `FR`, `SA` |\n| `UNTIL` | date | Дата окончания серии в формате `YYYY-MM-DD`. Альтернатива — `COUNT` |\n| `COUNT` | number | Количество повторений. Альтернатива — `UNTIL` |\n\n## Поля ответа\n\nОбъект созданного события со всеми полями — см. [Поля события](.\u002Ffields.md).\n\nURL карточки события в Битрикс24 зависит от типа календаря:\n\n| `type` | URL |\n|---|---|\n| `user` | `https:\u002F\u002F\u003Cportal>.bitrix24.ru\u002Fcompany\u002Fpersonal\u002Fuser\u002F\u003CownerId>\u002Fcalendar\u002F?EVENT_ID=\u003Cid>&EVENT_DATE=\u003Cdd.mm.yyyy>` |\n| `group` | `https:\u002F\u002F\u003Cportal>.bitrix24.ru\u002Fworkgroups\u002Fgroup\u002F\u003CownerId>\u002Fcalendar\u002F?EVENT_ID=\u003Cid>&EVENT_DATE=\u003Cdd.mm.yyyy>` |\n| `company_calendar` | `https:\u002F\u002F\u003Cportal>.bitrix24.ru\u002Fcalendar\u002F?EVENT_ID=\u003Cid>&EVENT_DATE=\u003Cdd.mm.yyyy>` |\n\n`\u003Cdd.mm.yyyy>` — дата начала события (поле `from`) в формате «день.месяц.год» через точку. `\u003Cportal>` — домен вашего портала. Доступ ограничен правами сотрудника в Битрикс24.\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 7773,\n    \"parentId\": 7773,\n    \"deleted\": false,\n    \"type\": \"user\",\n    \"ownerId\": 1,\n    \"name\": \"Созвон с командой\",\n    \"from\": \"2026-06-10T10:00:00+03:00\",\n    \"to\": \"2026-06-10T11:00:00+03:00\",\n    \"skipTime\": false,\n    \"durationSeconds\": 3600,\n    \"createdBy\": 1,\n    \"dateCreate\": \"06\u002F05\u002F2026 09:12:00 am\",\n    \"updatedAt\": \"06\u002F05\u002F2026 09:12:00 am\",\n    \"description\": \"Еженедельная синхронизация\",\n    \"accessibility\": \"busy\",\n    \"importance\": \"normal\",\n    \"isMeeting\": false,\n    \"meetingStatus\": \"H\",\n    \"meetingHost\": 1,\n    \"sectionId\": 3,\n    \"attendeeList\": [\n      { \"id\": 1, \"entryId\": \"7773\", \"status\": \"H\" }\n    ]\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n422 — не передано обязательное поле:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Не задан обязательный параметр \\\"name\\\" для метода \\\"calendar.event.add\\\"\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 422 | `BITRIX_ERROR` | Не передано обязательное поле (`type`, `ownerId`, `name`, `from`, `to`) |\n| 400 | `READONLY_FIELD` | В теле запроса передано read-only поле (`id`, `createdBy`, `dateCreate`, `updatedAt`) |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `calendar` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Накопление секций при создании без `sectionId`.** Если поле `sectionId` не передано, при каждом вызове создаётся новая секция календаря. На серии вызовов без `sectionId` в календаре сотрудника копятся пустые секции, видимые в веб-интерфейсе Битрикс24. Чтобы все события писались в одну секцию, передавайте `sectionId` существующей секции — её ID можно взять из ответа [`GET \u002Fv1\u002Fcalendar-events`](.\u002Flist.md).\n\n## Смотрите также\n\n- [Поля события](.\u002Ffields.md)\n- [Обновить событие](.\u002Fupdate.md)\n- [Удалить событие](.\u002Fdelete.md)\n- [Список событий](.\u002Flist.md)\n","2026-07-07",{}]