> ## 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 Time Entries

> Returns a paginated list of time entries for the authenticated account, ordered by date descending.

### Headers

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

### Query Parameters

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

<ParamField query="task_id" type="string">
  Filter by task UUID.
</ParamField>

<ParamField query="date_from" type="string">
  Return entries on or after this date (`YYYY-MM-DD`).
</ParamField>

<ParamField query="date_to" type="string">
  Return entries on or before this date (`YYYY-MM-DD`).
</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 time entry objects.

  <Expandable title="Time entry object">
    <ResponseField name="id" type="string">Entry UUID</ResponseField>
    <ResponseField name="hours" type="number">Hours logged</ResponseField>
    <ResponseField name="hourly_rate" type="number">Hourly rate at time of logging (nullable)</ResponseField>
    <ResponseField name="date" type="string">Date of work in `YYYY-MM-DD` format</ResponseField>
    <ResponseField name="description" type="string">Entry description (nullable)</ResponseField>
    <ResponseField name="project" type="object">Embedded project (`id`, `name`)</ResponseField>
    <ResponseField name="task" type="object">Embedded task (`id`, `name`) — nullable if not linked to a task</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/time-entries?date_from=2025-03-01&date_to=2025-03-31" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```js JavaScript theme={null}
  const params = new URLSearchParams({ date_from: '2025-03-01', date_to: '2025-03-31' })
  const res = await fetch(`https://kliio.app/api/v1/time-entries?${params}`, {
    headers: { Authorization: 'Bearer YOUR_API_KEY' }
  })
  const { data, pagination } = await res.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "te-uuid-...",
        "hours": 3,
        "hourly_rate": 120,
        "date": "2025-03-20",
        "description": "Wireframing",
        "project": { "id": "proj-uuid-...", "name": "Acme Rebrand" },
        "task": { "id": "task-uuid-...", "name": "Design homepage mockup" },
        "created_at": "2025-03-20T18:00:00.000Z"
      }
    ],
    "pagination": { "total": 38, "limit": 50, "offset": 0 }
  }
  ```
</ResponseExample>
