> ## Documentation Index
> Fetch the complete documentation index at: https://developers.essal.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Tasks

> API reference for Essal Project tasks — full CRUD, subtasks, priorities, sprint assignment, and bulk operations.

## List Tasks

`GET /v1/project/projects/{project_id}/tasks`

**Query Parameters**

| Parameter     | Type   | Description                                             |
| ------------- | ------ | ------------------------------------------------------- |
| `status`      | enum   | `todo`, `in_progress`, `in_review`, `done`, `cancelled` |
| `assignee_id` | string | Filter by assigned user                                 |
| `priority`    | enum   | `urgent`, `high`, `medium`, `low`, `none`               |
| `sprint_id`   | string | Filter by sprint                                        |

***

## Get a Task

`GET /v1/project/tasks/{id}`

***

## Create a Task

`POST /v1/project/projects/{project_id}/tasks`

```json theme={null}
{
  "title": "Design system audit",
  "description": "Review all UI components.",
  "priority": "high",
  "assignee_id": "usr_01HXYZ1111",
  "due_date": "2026-08-15",
  "labels": ["design"],
  "sprint_id": "spr_01HXYZ_S1"
}
```

***

## Update a Task

`PATCH /v1/project/tasks/{id}`

```json theme={null}
{ "status": "in_progress", "priority": "urgent" }
```

***

## Create a Subtask

`POST /v1/project/tasks/{id}/subtasks`

```json theme={null}
{ "title": "Audit colour tokens", "assignee_id": "usr_01HXYZ2222" }
```

***

## Bulk Update

`POST /v1/project/tasks/bulk-update`

```json theme={null}
{
  "task_ids": ["task_01HXYZTASK1", "task_01HXYZTASK2"],
  "updates": { "sprint_id": "spr_01HXYZ_S2", "status": "in_progress" }
}
```

***

## Delete a Task

`DELETE /v1/project/tasks/{id}`

Soft-deletes the task and all its subtasks. Time entries are preserved.
