---
title: "Get user working hours"
method: GET
path: "/company-policies/v1/users/{userId}/working-hours"
tags: ["Company Policies:v1:UserWorkingHours"]
---

# Get user working hours

`GET /company-policies/v1/users/{userId}/working-hours`

## Request

- Base URL: `https://api.connecteam.com`
- URL: `https://api.connecteam.com/company-policies/v1/users/{userId}/working-hours`
- Auth: one of:
  - API key in header `X-API-KEY`
  - OAuth 2
    - Client credentials
    - Token URL: `/oauth/v1/token` scopes: `company_policies.read`

Retrieve the working hours assigned to a user. Returns an empty object when the user has no working hours

## Path parameters

- `userId` integer, required: The unique identifier of the user

## Response `200`

Successful Response

- APIResponseV2UserWorkingHoursResponse
  - `requestId` string
  - `data` UserWorkingHoursResponse, required
    - `userId` integer, nullable: Integer with minimum value of 1
    - `workingHoursPolicyId` integer, nullable: The unique identifier of the assigned shared working hours policy. Omitted for custom hours
    - `name` string, nullable: The name of the assigned shared working hours policy. Omitted for custom hours
    - `isCustomPolicy` boolean, nullable: Whether these hours are a user-specific custom policy
    - `timezone` string, nullable: IANA timezone used to interpret the work schedule
    - `workSchedule` WorkScheduleModelOutput
      - `sunday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `monday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `tuesday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `wednesday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `thursday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `friday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)
      - `saturday` WorkDayModel, required
        - `isWorkDay` boolean, required: Whether this day is a working day
        - `timeRanges` TimeRangeModel[]: Working windows for this day
          - `startTimeSecs` integer, required: Start of the working window in seconds from midnight (0–86400)
          - `endTimeSecs` integer, required: End of the working window in seconds from midnight (0–86400). Must be after startTimeSecs; overnight windows are not supported
        - `standardWorkHoursSecs` integer, nullable: Expected working duration for this day in seconds (60–86400)

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-03** `a01dde7c27fb`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/connecteam/apis/connecteam-api-documentation/changes/company-policies/v1/users/:userId/working-hours/get.md)

---

[API](https://skmtc.dev/connecteam/apis/connecteam-api-documentation.md) - [All operations](https://skmtc.dev/connecteam/apis/connecteam-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/connecteam/apis/connecteam-api-documentation/revisions/a01dde7c27fb?raw)
