## Добавить пункт чек-листа

`POST /v1/tasks/:taskId/checklist`

Добавляет пункт в чек-лист задачи. `title` обязателен. Возвращает `id` нового пункта.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `taskId` (path) | integer | да | ID задачи |

## Поля запроса (body)

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `title` | string | да | Текст пункта. Если `parentId: 0`, становится названием нового чек-листа |
| `sortIndex` | integer | нет | Индекс сортировки. Чем меньше значение, тем выше пункт в списке |
| `isImportant` | boolean / `Y`,`N` | нет | Признак важности |
| `isComplete` | boolean / `Y`,`N` | нет | Статус выполнения при создании |
| `parentId` | integer | нет | ID родительского пункта. `0` создаёт новый чек-лист-контейнер в задаче |
| `members` | object | нет | Участники пункта: `{ "<userId>": { "type": "A" \| "U" } }`. `A` — соисполнитель, `U` — наблюдатель. Список сотрудников — [`GET /v1/users`](/docs/entities/users) |

## Примеры

### curl — личный ключ

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks/3943/checklist" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Собрать и проверить документы",
    "sortIndex": 100,
    "isImportant": true
  }'
```

### curl — OAuth-приложение

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks/3943/checklist" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Собрать и проверить документы",
    "sortIndex": 100,
    "isImportant": true
  }'
```

### JavaScript — личный ключ

```javascript
const res = await fetch("https://vibecode.bitrix24.tech/v1/tasks/3943/checklist", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "Собрать и проверить документы",
    sortIndex: 100,
    isImportant: true,
  }),
});
const { data } = await res.json();
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch("https://vibecode.bitrix24.tech/v1/tasks/3943/checklist", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_APP_KEY",
    "Authorization": "Bearer USER_SESSION_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "Собрать и проверить документы",
    sortIndex: 100,
    isImportant: true,
  }),
});
const { data } = await res.json();
```

Чтобы создать **новый чек-лист** (контейнер верхнего уровня), передайте `parentId: 0` — в этом случае `title` становится названием чек-листа:

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks/3943/checklist" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Документы", "parentId": 0 }'
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.id` | number | ID нового пункта |

## Пример ответа

```json
{ "success": true, "data": { "id": 221 } }
```

## Пример ответа при ошибке

`400` — не передан обязательный `title`:

```json
{
  "success": false,
  "error": { "code": "INVALID_PARAMS", "message": "`title` is required" }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | Не передан `title`, `taskId` не положительное целое, неизвестный формат `members`, либо `parentId` отрицательный |
| 404 | `TASK_NOT_FOUND` | Задача `taskId` не существует или недоступна ключу — перед добавлением пункта Вайбкод проверяет родительскую задачу отдельным вызовом |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `task` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ в режиме «только чтение» — переключите на чтение+запись в [/keys](/keys) |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

- **`parentId: 0` создаёт новый чек-лист-контейнер**, а не обычный пункт — `title` в этом случае становится названием контейнера.
- **Пункт без указанного `parentId` может лечь в уже существующий чек-лист.** Если в задаче уже есть контейнер (`parentId: 0`), Битрикс24 подставляет его новым пунктам вместо того, чтобы оставить их на верхнем уровне — если нужен независимый контейнер, создавайте его явно через `parentId: 0`.
- **`members` на запись — объект по `userId`**, не массив. Формат ответа (в `GET`) отличается — см. [«Список пунктов»](./list.md).

## Смотрите также

- [Список пунктов](./list.md)
- [Обновить пункт](./update.md)
- [Сотрудники](/docs/entities/users)
- [Задачи](/docs/entities/tasks)
