## Reopen an item

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

Clears the completion status of a checklist item. Equivalent to [`PATCH`](./update.md) with the body `{ "isComplete": false }`, but doesn't require passing the other fields.

## Parameters

| Parameter | Type | Req. | Description |
|----------|-----|:-----:|---------|
| `taskId` (path) | integer | yes | Task ID |
| `itemId` (path) | integer | yes | Checklist item ID |

No request body is required.

## Examples

### curl — personal key

```bash
curl -X POST "https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213/renew" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl -X POST "https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213/renew" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213/renew", {
  method: "POST",
  headers: { "X-Api-Key": "YOUR_API_KEY" },
});
const { data } = await res.json();
```

### JavaScript — OAuth application

```javascript
const res = await fetch("https://vibecode.bitrix24.com/v1/tasks/3943/checklist/213/renew", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_APP_KEY",
    "Authorization": "Bearer USER_SESSION_TOKEN",
  },
});
const { data } = await res.json();
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data.id` | number | Item ID |
| `data.isComplete` | string | Always `"N"` after a successful call |

## Response example

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

## Error response example

`400` — invalid `itemId`:

```json
{
  "success": false,
  "error": { "code": "INVALID_PARAMS", "message": "taskId and itemId must be positive integers" }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `taskId` or `itemId` is not a positive integer |
| 403 | `SCOPE_DENIED` | The API key lacks the `task` scope |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in "read-only" mode — switch it to read+write in [/keys](/keys) |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |

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

## Known specifics

- **A nonexistent `itemId` and a nonexistent `taskId` both return `200`.** The response echoes the given `itemId` with `isComplete: "N"` even when no such item exists — and even when the task itself is missing. A success status confirms neither that the item exists nor that it was reopened. To check whether the item exists, call ["Get an item"](./get.md), which returns `422` both for a missing item and for a missing task.

## See also

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