# Task results: REST 3.0

A task result is text that records the outcome of the work on a task. The methods in this subsection add a result, turn a message from the task chat into a result, change the result text, and delete the result.

Bitrix24 API: `tasks.task.result.add`, `tasks.task.result.addfromchatmessage`, `tasks.task.result.update`, `tasks.task.result.delete`
Scope: `task`

## Operations

- [Add a task result](./results-v3-create.md) — `POST /v1/task-results`
- [Create a task result from a chat message](./results-v3-from-chat-message.md) — `POST /v1/task-results/from-chat-message`
- [Update a task result](./results-v3-update.md) — `PATCH /v1/task-results/:id`
- [Delete a task result](./results-v3-delete.md) — `DELETE /v1/task-results/:id`

## Key fields

The add, create-from-message, and update methods return the result in `data.item`. The full set of fields is in the "Response fields" table on the [Add a task result](./results-v3-create.md) page.

| Field | Description |
|------|----------|
| `id` | Result ID. Required to update and delete the result |
| `taskId` | Task ID. List: [`GET /v1/tasks`](/docs/entities/tasks/list) |
| `text` | Result text |
| `authorId` | Result author ID. List: [`GET /v1/users`](/docs/entities/users/list) |
| `status` | Result status. A new result has `open` |
| `messageId` | ID of the chat message the result was created from. A result added as text has `null` |

## What to know before you start

1. **These methods cannot read results.** The list of a task's results comes from [`GET /v1/tasks/:taskId/results`](/docs/entities/tasks/results) in the legacy REST. It returns the same result in a different shape: the author is in `createdBy`, not `authorId`, and the status is the number `0`, not the string `open`.
2. **Deletion does not check whether the result exists.** For an `id` that does not exist on the Bitrix24 account, and for a repeated deletion, the response is the same as on success: `200` with `"result": true`. To confirm a deletion, check the task's result list.
3. **Updating a nonexistent result returns `403`, not `404`.** The code is `BITRIX_ACCESS_DENIED`, the same as for an access denial.
4. **The same message can become a result more than once.** Each call with the same `messageId` adds a new result with the same text to the task.
5. **A read-only key changes nothing.** All four methods return `403 WRITE_BLOCKED_READONLY_KEY` to such a key.

## Typical scenario

1. Find the task: [`GET /v1/tasks`](/docs/entities/tasks/list).
2. Add a result as text: [`POST /v1/task-results`](./results-v3-create.md) — or turn a message from the task chat into a result: [`POST /v1/task-results/from-chat-message`](./results-v3-from-chat-message.md).
3. Refine the text: [`PATCH /v1/task-results/:id`](./results-v3-update.md).
4. Delete an unneeded result: [`DELETE /v1/task-results/:id`](./results-v3-delete.md).

## Limits

| Limit | Value |
|-------|----------|
| Records per call | One result |
| Request rate | General API limits — [Limits and optimization](/docs/optimization) |

## See also

- [Tasks](/docs/entities/tasks)
- [Task results: legacy REST](/docs/entities/tasks/results)
- [Task chat](/docs/entities/tasks/chat)
