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

# List Tasks

> Returns a paginated list of tasks scoped to the authenticated account, across all projects.

### Headers

<ParamField header="Authorization" type="string" required>
  `Bearer YOUR_API_KEY`
</ParamField>

### Query Parameters

<ParamField query="project_id" type="string">
  Filter tasks by project UUID.
</ParamField>

<ParamField query="status" type="string">
  Filter by task status. One of: `todo`, `in_progress`, `done`.
</ParamField>

<ParamField query="limit" type="integer">
  Records per page. Default `50`, max `100`.
</ParamField>

<ParamField query="offset" type="integer">
  Records to skip. Default `0`.
</ParamField>

### Response

<ResponseField name="data" type="array">
  List of task objects.

  <Expandable title="Task object">
    <ResponseField name="id" type="string">Task UUID</ResponseField>
    <ResponseField name="name" type="string">Task name</ResponseField>
    <ResponseField name="description" type="string">Task description (nullable)</ResponseField>
    <ResponseField name="status" type="string">`todo`, `in_progress`, or `done`</ResponseField>
    <ResponseField name="estimated_hours" type="number">Estimated hours (nullable)</ResponseField>
    <ResponseField name="billable" type="boolean">Whether the task is billable</ResponseField>
    <ResponseField name="rate" type="number">Hourly rate for this task (nullable)</ResponseField>
    <ResponseField name="total_seconds" type="number">Total tracked seconds across all timers</ResponseField>
    <ResponseField name="phase_id" type="string">UUID of the assigned project phase (nullable)</ResponseField>
    <ResponseField name="project" type="object">Embedded project (`id`, `name`)</ResponseField>
    <ResponseField name="created_at" type="string">ISO 8601 timestamp</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  <Expandable title="Properties">
    <ResponseField name="total" type="integer">Total matching records</ResponseField>
    <ResponseField name="limit" type="integer">Page size used</ResponseField>
    <ResponseField name="offset" type="integer">Offset used</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://kliio.app/api/v1/tasks?status=in_progress" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```js JavaScript theme={null}
  const res = await fetch('https://kliio.app/api/v1/tasks?status=in_progress', {
    headers: { Authorization: 'Bearer YOUR_API_KEY' }
  })
  const { data, pagination } = await res.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "task-uuid-...",
        "name": "Design homepage mockup",
        "description": null,
        "status": "in_progress",
        "estimated_hours": 8,
        "billable": true,
        "rate": 120,
        "total_seconds": 10800,
        "phase_id": null,
        "project": { "id": "proj-uuid-...", "name": "Acme Rebrand" },
        "created_at": "2025-03-20T09:00:00.000Z"
      }
    ],
    "pagination": { "total": 12, "limit": 50, "offset": 0 }
  }
  ```
</ResponseExample>
