---
title: "Create a shared report"
method: POST
path: "/v1/workspaces/{workspaceId}/shared-reports"
tags: ["Shared Report"]
---

# Create a shared report

`POST /v1/workspaces/{workspaceId}/shared-reports`

Saves shared report with name, options and report filter. 

Shared report data on FREE subscription plan is limited to a maximum interval length of one month (31 days).

## Path parameters

- `workspaceId` string, required — Represents a workspace identifier across the system.

## Request body

- SharedReportRequestV1
  - `filter` ReportFilterV1
    - `amountShown` 'EARNED' | 'COST' | 'PROFIT' | 'HIDE_AMOUNT' | 'EXPORT' — If provided, you'll get filtered result including reports with provided amount shown.
    - `amounts` string[]
    - `approvalState` 'APPROVED' | 'UNAPPROVED' | 'ALL' — If provided, you'll get filtered result including reports with provided approval state.
    - `archived` boolean — Indicates whether the report is archived
    - `attendanceFilter` AttendanceFilterV1 — Represents an attendance report filter.
      - `balanceFilters` CompareBalanceFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents balance of work (difference between overtime and undertime) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150.
      - `breakFilters` CompareBreakFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents duration of breaks in the day in hours, multiplied by 100. For example, if desired value is 0.5h, input should be 50
      - `capacityFilters` CompareCapacityFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents daily work capacity of user in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750.
      - `endFilters` CompareEndFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents end time in 24-hour notation.
      - `groups` string[]
      - `hasTimeOff` boolean — If set to true, report will include time off hours.
      - `overtimeFilters` CompareOvertimeFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents duration of overtime work (difference between work and capacity - if positive) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150.
      - `page` integer — Specifies page number.
      - `pageSize` integer — Specifies page size.
      - `sortColumn` 'GROUP' | 'USER' | 'DATE' | 'START' | 'END' | 'BREAK' | 'WORK' | 'CAPACITY' | 'OVERTIME' | 'UNDERTIME' | 'BALANCE' | 'TIME_OFF'
      - `startFilters` CompareStartFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents start time in 24-hour notation.
      - `undertimeFilters` CompareUndertimeFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents duration of undertime work (difference between work and capacity - if negative) in hours, multiplied by 100. For example, if desired value is 1.5h, input should be 150.
      - `workFilters` CompareWorkFilter[]
        - `filtrationType` 'EXACTLY' | 'LARGER_THAN' | 'SMALLER_THAN'
        - `value` string — Represents duration of completed work for day in hours, multiplied by 100. For example, if desired value is 7.5h, input should be 750.
    - `billable` boolean — Indicates whether the report is billable
    - `clients` ContainsArchivedFilterV1
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
    - `currency` ContainsArchivedFilterV1
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
    - `customFields` CustomFieldFilterV1[]
      - `id` string — Represents a custom field identifier across the system.
      - `isEmpty` boolean — Indicates whether the custom field is empty.
      - `numberCondition` 'EQUAL' | 'GREATER_THAN' | 'LESS_THAN' — Represents a custom field number condition.
      - `type` 'TXT' | 'NUMBER' | 'DROPDOWN_SINGLE' | 'DROPDOWN_MULTIPLE' | 'CHECKBOX' | 'LINK' — Represents a type of custom field.
      - `value` object — Represents a custom field value.
    - `dateFormat` string — Provide date in format YYYY-MM-DD
    - `dateRangeEnd` string, required — Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)
    - `dateRangeStart` string, required — Provide date in format YYYY-MM-DDTHH:MM:SS.ssssss. The system interprets this value based on the user's timezone (provided in the timeZone request parameter or the timezone configured in the user profile)
    - `dateRangeType` 'ABSOLUTE' | 'TODAY' | 'YESTERDAY' | 'THIS_WEEK' | 'LAST_WEEK' | 'PAST_TWO_WEEKS' | 'THIS_MONTH' | 'LAST_MONTH' | 'THIS_YEAR' | 'LAST_YEAR' — Provide the date range type
    - `description` string — Represents search term for filtering report entries by description
    - `detailedFilter` DetailedFilterV1 — Represents a detailed report filter.
      - `auditFilter` AuditFilterV1
        - `duration` integer — Represent audit duration.
        - `durationShorter` boolean — Represent audit duration shorter.
        - `withoutProject` boolean — Indicates whether to filter without a project.
        - `withoutTask` boolean — Indicates whether to filter without a task.
      - `options` DetailedOptionsV1
        - `totals` 'CALCULATE' | 'EXCLUDE'
      - `page` integer
      - `pageSize` integer
      - `sortColumn` 'ID' | 'DESCRIPTION' | 'USER' | 'DURATION' | 'DATE' | 'ZONED_DATE' | 'NATURAL' | 'USER_DATE' — If provided, you'll get sorted result by sort column.
    - `exportType` 'JSON' | 'JSON_V1' | 'PDF' | 'CSV' | 'XLSX' | 'ZIP' — If provided, you'll get filtered result including reports with provided export type.
    - `invoicingState` 'INVOICED' | 'UNINVOICED' | 'ALL' — If provided, you'll get filtered result including reports with provided invoicing state.
    - `projects` ContainsArchivedFilterV1
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
    - `rounding` boolean — Indicates whether the report filter is rounding
    - `sortOrder` 'ASCENDING' | 'DESCENDING' — If provided, you'll get sorted result by provided sort order.
    - `summaryFilter` SummaryFilterV1 — Represents a summary report filter.
      - `groups` string[] — Represents group ids
      - `sortColumn` 'GROUP' | 'DURATION' | 'AMOUNT' | 'EARNED' | 'COST' | 'PROFIT' — If provided, you'll get sorted result by provided sort column.
      - `summaryChartType` 'BILLABILITY' | 'PROJECT' — If provided, you'll get sorted result by provided summary chart type.
    - `tags` ContainsTagFilterV1 — Represents an object for filtering entries by tags.
      - `containedInTimeentry` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — If provided, you'll get result filtered by value of contained in time entry.
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
    - `tasks` ContainsTaskFilterV1 — Represents filter criteria for expenses associated with tasks.
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'ALL' — Filter entities in 'contains' by their status.
    - `timeFormat` string — Provide time in format THH:MM:SS.ssssss
    - `timeZone` string — If provided, you'll get filtered result including reports with provided time zone.
    - `userCustomFields` CustomFieldFilterV1[]
      - `id` string — Represents a custom field identifier across the system.
      - `isEmpty` boolean — Indicates whether the custom field is empty.
      - `numberCondition` 'EQUAL' | 'GREATER_THAN' | 'LESS_THAN' — Represents a custom field number condition.
      - `type` 'TXT' | 'NUMBER' | 'DROPDOWN_SINGLE' | 'DROPDOWN_MULTIPLE' | 'CHECKBOX' | 'LINK' — Represents a type of custom field.
      - `value` object — Represents a custom field value.
    - `userGroups` ContainsUsersFilterV1
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ALL' | 'ACTIVE_WITH_PENDING' | 'ACTIVE' | 'PENDING' | 'INACTIVE' — Filter entities in 'contains' by their status.
    - `userLocale` string — If provided, you'll get filtered result including reports with provided user locale.
    - `users` ContainsUsersFilterV1
      - `contains` 'CONTAINS' | 'DOES_NOT_CONTAIN' | 'CONTAINS_ONLY' — Represents a contains type.
      - `ids` string[] — Filter includes provided list of ids.
      - `status` 'ALL' | 'ACTIVE_WITH_PENDING' | 'ACTIVE' | 'PENDING' | 'INACTIVE' — Filter entities in 'contains' by their status.
    - `weekStart` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY' — If provided, you'll get filtered result including reports with provided week start.
    - `weeklyFilter` WeeklyFilterV1 — Represents a weekly report filter.
      - `group` string — Weekly filter will include group identifier.
      - `subgroup` string — Weekly filter will include subgroup identifier.
    - `withoutDescription` boolean — If set to 'true', report will only include entries with empty description
    - `zoomLevel` 'WEEK' | 'MONTH' | 'YEAR' — If provided, you'll get filtered result including reports with provided zoom level.
  - `fixedDate` boolean — Indicates whether the shared report has a fixed date range.
  - `isPublic` boolean — Indicates whether the shared report is public or not
  - `name` string — Represents a shared report's name
  - `type` 'DETAILED' | 'WEEKLY' | 'SUMMARY' | 'SCHEDULED' | 'EXPENSE_DETAILED' | 'EXPENSE_RECEIPT' | 'PTO_REQUESTS' | 'PTO_BALANCE' | 'ATTENDANCE' | 'INVOICE_EXPENSE' | 'INVOICE_TIME' | 'PROJECT' | 'TEAM_FULL' | 'TEAM_LIMITED' | 'TEAM_GROUPS' | 'INVOICES' | 'KIOSK_PIN_LIST' | 'KIOSK_ASSIGNEES' | 'USER_DATA_EXPORT' — Represent the type of shared report.
  - `visibleToUserGroups` string[] — Represents user group ids.
  - `visibleToUsers` string[] — Represents user ids.

## Response `200`

OK

---

[API](https://skmtc.dev/clockify/apis/clockify-api.md) · [All operations](https://skmtc.dev/clockify/apis/clockify-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/clockify/clockify-api/revisions/a5b636acbcd8/schema)
