## Update a checklist item

`PATCH /v1/tasks/:taskId/checklist/:itemId`

Partial update of a checklist item — pass only the fields you want to change.

## Parameters

| Parameter | Type | Required | Description |
|----------|-----|:-----:|---------|
| `taskId` (path) | integer | yes | Task ID. List: [`GET /v1/tasks`](/docs/entities/tasks/list) |
| `itemId` (path) | integer | yes | Checklist item ID. List: [`GET /v1/tasks/:taskId/checklist`](/docs/entities/tasks/checklist/list) |

## Request fields (body)

| Field | Type | Required | Description |
|------|-----|:-----:|---------|
| `title` | string | no | Item text |
| `sortIndex` | integer | no | Sort index |
| `isComplete` | boolean / `Y`,`N` | no | Completion status |
| `isImportant` | boolean / `Y`,`N` | no | Importance flag |
| `parentId` | integer | no | Parent item ID. The value `0` starts a new checklist |
| `members` | object | no | Item members: `{ "<userId>": { "type": "A" \| "U" } }`, where `A` is a co-assignee and `U` is an observer. Replaces the current list entirely: to keep the current members, pass them together with the new ones |

At least one of the fields above is required.

## Examples

### curl — personal key

```bash
curl -X PATCH "https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Collect and check documents", "isImportant": true }'
```

### curl — OAuth application

```bash
curl -X PATCH "https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Collect and check documents", "isImportant": true }'
```

### JavaScript — personal key

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213", {
  method: "PATCH",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ title: "Collect and check documents", isImportant: true }),
});
const { data } = await res.json();
```

### JavaScript — OAuth application

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213", {
  method: "PATCH",
  headers: {
    "X-Api-Key": "YOUR_APP_KEY",
    "Authorization": "Bearer USER_SESSION_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ title: "Collect and check documents", isImportant: true }),
});
const { data } = await res.json();
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data.id` | number | ID of the updated item |

## Response example

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

## Error response example

`400` — an empty request body:

```json
{
  "success": false,
  "error": { "code": "INVALID_PARAMS", "message": "No updatable fields provided" }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | Empty body, `taskId`/`itemId` is not a positive integer, an unknown `members` shape, or a field type violation |
| 404 | `NOT_FOUND` | The item with the given `itemId` does not exist or is not accessible to the key |
| 403 | `SCOPE_DENIED` | The API key lacks the `task` scope |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode. Open the path from `error.details.switchUrl`: a personal key points to `/keys`, an application key with a card to `/applications`, a standalone OAuth key to `/apps`, and a management key to `/management-keys`. Switch it to read and write there |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |

Full list of common API errors — [Errors](/docs/errors).

## Known specifics

- **A nonexistent `taskId` returns `200`.** When no task with that identifier exists, the response is successful and echoes the given `itemId`, but nothing is updated. A `404` is returned only for a missing item inside an existing task. To check the task, call ["Get a task"](../get.md).

## See also

- [Get an item](./get.md)
- [List items](./list.md)
- [Mark complete](./complete.md)
- [Tasks](/docs/entities/tasks)
