---
title: "Create totals"
method: POST
path: "/reports/totals"
tags: ["reports"]
---

# Create totals

`POST /reports/totals`

Generates and returns only the aggregated totals for a report.

## Request body

- ReportRequestParams
  - `view` 'time_fees_hours' | 'time_fees_days' | 'time_fees_amounts' | 'time_fees_hours_and_amounts' | 'time_fees_days_and_amounts' | 'budgets_hours' | 'budgets_days' | 'budgets_amounts' | 'utilization' | 'expenses', required — The name of the report view, which determines the columns returned.
  - `time_frame` union, required — The time frame for the report. Can be a shortcut string or a custom object.
    - 'this_week' | 'this_month' | 'this_quarter' | 'this_year' | 'last_week' | 'last_month' | 'last_quarter' | 'last_year' | 'next_30' | 'next_60' | 'next_90' | 'last_30' | 'last_60' | 'last_90' | 'last_and_next_90'
    - object
      - `from` string, date, required — Effective start date (YYYY-MM-DD).
      - `to` string, date, required — Effective end date (YYYY-MM-DD).
  - `group_by` string[], required — Attributes to group and sort rows by (up to 5 levels).
  - `filters` ReportFilters — A map of attributes to filter on. Keys are attribute names (e.g., `project_id`, `people_tags`, `custom_fields`), and values are filter specifications. > **Note:** All attributes available for **`group_by`** are also available for filtering. To include or exclude null values in your filter, specify the string `[none]` as an element in your filter's `values` array.
    - `project_id` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `project_tags` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `client` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `leave_type` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `project_type` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `project_state` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `phase_name` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `user_id` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `role` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `discipline` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `location` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `assignment_status` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `people_tags` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `date` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `week` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `month` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `record_type` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `entry_type` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `category` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `approval_status` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `approved_by` FilterCondition
      - `operation` 'inclusion' | 'exclusion', required
      - `values` union[], required — The values to include or exclude. `[none]` can be used to represent a null value.
        - union
          - integer
          - string
    - `custom_fields` CustomFieldFilterCondition[] — Custom field filters require an array of objects specifying ID, operation, and values.
      - `id` integer, required — The custom field ID.
      - `operation` 'inclusion' | 'exclusion', required
      - `values` string[], required — The values to include or exclude.
  - `today` string, date — The date on which past/incurred time ends and future scheduled time begins (YYYY-MM-DD). The default value is the current UTC date (YYYY-MM-DD).
  - `calc_incurred_using` 'confirmed-unconfirmed' | 'confirmed' | 'approved' — Method for calculating incurred time. There are three options: `confirmed-unconfirmed` (default, always used in reports UI), `confirmed`, or `approved`. The reports UI always uses `confirmed-unconfirmed`. If your account settings specify that incurred time should use `confirmed` time only, the reports UI still applies the `confirmed-unconfirmed` option. It also adds a default filter on `entry_type`, which removes unconfirmed time, achieving the same effect with regards to incurred calculations. The only difference between the two methods —filtering out unconfirmed time and specifying `calc_incurred_using` as `confirmed`— lies in how past scheduled time gets calculated when no corresponding `confirmed` time exists for a given day of an assignment. Filtering out unconfirmed time affects both incurred and past scheduled time, while specifying `calc_incurred_using` as `confirmed` doesn't impact past scheduled time. You can think of it this way: when `calc_incurred_using` is set to `confirmed`, the report calculates as if the “clear suggestions” button got pushed on everyone's timesheets.

## Response `200`

A JSON representation of the report totals (aggregated metrics).

- ReportTotalsResponse
  - `total_incurred_hours` number
  - `total_scheduled_hours` number

## Other responses

- `400` — Invalid parameters in the request body.

---

[API](https://skmtc.net/smartsheet/apis/resource-management-openapi-reference.md) · [All operations](https://skmtc.net/smartsheet/apis/resource-management-openapi-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/smartsheet/resource-management-openapi-reference/versions/e4c439ac13f2/schema)
