---
title: "Retrieves aggregated timesheet statistics for a date range, with optional grouping by up to three dimensions (e.g. Project, User, Category, Task, Month). Requires EntryDateFrom and EntryDateTo."
method: GET
path: "/api/TimesheetSummary"
tags: ["TimesheetSummary"]
---

# Retrieves aggregated timesheet statistics for a date range, with optional grouping by up to three dimensions (e.g. Project, User, Category, Task, Month). Requires EntryDateFrom and EntryDateTo.

`GET /api/TimesheetSummary`

## Query parameters

- `model.groupBy` string[]
- `model.entryDateFrom` string, date-time
- `model.entryDateTo` string, date-time
- `model.userID` integer[]
- `model.projectID` integer
- `model.isBillable` boolean
- `model.isInvoiced` boolean
- `model.timesheetEntryApprovalStatusCode` string[]

## Response `200`

Returns aggregated timesheet totals with optional grouping.

- TimesheetSummaryResult — Aggregated timesheet statistics for a date range, including total hours, billable hours, and grouped sub-totals.
  - `EntryDateFrom` string, date-time — The start of the date range used for this summary.
  - `EntryDateTo` string, date-time — The end of the date range used for this summary.
  - `TotalHours` number, double — Total hours across all timesheet entries in the result set.
  - `BillableHours` number, double — Total billable hours across all timesheet entries in the result set.
  - `UserID` integer[] — The list of user IDs included in this summary.
  - `GroupingLevels` string[] — The grouping dimensions applied to this summary result.
  - `GroupData` TimesheetSummaryGroup[] — The grouped data rows, each representing totals for a grouping dimension value.
    - `GroupID` string — The ID of the group value (e.g. Project ID, User ID).
    - `GroupName` string — The display name of the group value (e.g. project title, user name).
    - `TotalHours` number, double — Total hours for this group.
    - `BillableHours` number, double — Total billable hours for this group.
    - `GroupData` TimesheetSummaryGroup[] — Nested group data for the next grouping level, if applicable.

## Other responses

- `400` — Bad Request - EntryDateFrom and EntryDateTo are required
- `401` — Unauthorized

---

[API](https://skmtc.net/avaza/apis/avaza-api-documentation.md) · [All operations](https://skmtc.net/avaza/apis/avaza-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/avaza/avaza-api-documentation/versions/1eeadf750514/schema)
