---
title: "Get time off requests"
method: GET
path: "/time-off/v1/requests"
tags: ["Time Off:v1:TimeOffRequests"]
---

# Get time off requests

`GET /time-off/v1/requests`

Retrieve a paginated list of time-off requests whose date range overlaps the requested window, with optional filtering by employees and statuses. Approved requests include duration (the amount deducted from balance, in the policy units of hours or days); it is omitted for other statuses. Defaults to approved status when no status filter is provided.

## Query parameters

- `startDate` string, required — Start of the date range, inclusive, in ISO 8601 format (YYYY-MM-DD). Any request overlapping [startDate, endDate] is returned.
- `endDate` string, required — End of the date range, inclusive, in ISO 8601 format (YYYY-MM-DD). Must be on or after startDate. Range may not exceed 365 days.
- `userIds` integer[] — Filter by one or more employee IDs. Omit to include all employees.
- `statuses` string[] — Filter by status. Allowed: approved, pending, denied. Repeat the param for multiple values. Defaults to ['approved'] when omitted.
- `limit` integer — The maximum number of results to display per page
- `offset` integer — The resource offset of the last successfully read resource will be returned as the paging.offset JSON property of a paginated response containing more results

## Response `200`

Successful Response

- PaginatedBaseResponseTimeOffRequestsListResponse
  - `requestId` string
  - `data` TimeOffRequestsListResponse, required
    - `requests` TimeOffRequestCreateResponse[], required — List of time-off requests matching the filters.
      - `id` string, required — The unique identifier of the time-off request.
      - `timeClockId` integer — The unique identifier of the time clock where the time off appears on the timesheet. Omitted when the request is not linked to a time clock.
      - `policyTypeId` string, required — The unique identifier of the time-off policy type.
      - `userId` integer, required — The unique identifier of the employee the request belongs to.
      - `isAllDay` boolean, required — true if the request covers full days; false if it uses specific times.
      - `duration` TimeOffRequestDuration
        - `units` 'hours' | 'days', required — An enumeration.
        - `amount` number, required — Amount of time deducted from balance for this request, expressed in the policy units. For all-day requests this reflects the policy work schedule per calendar day, not the start/end time span. This is the value stored when the request was approved.
      - `startDate` string, required — Start date of the time off.
      - `endDate` string, required — End date of the time off.
      - `startTime` string, required — Start time of the time off.
      - `endTime` string, required — End time of the time off.
      - `timezone` string, required — Timezone of the request, e.g. America/New_York.
      - `status` 'approved' | 'pending' | 'denied', required — Request status: approved, pending, or denied.
      - `employeeNote` string — Note added by the employee. Empty string when none.
      - `managerNote` string — Note added by the manager. Empty string when none.
  - `paging` PagingResponseModel, required
    - `offset` integer, required — The resource offset of the last successfully read resource will be returned as the paging.offset JSON property of a paginated response containing more results
    - `total` integer — Total number of resources matching the request, ignoring pagination. Use this to retrieve the full count without paginating through every page. Only populated by endpoints that compute it.

## Other responses

- `422` — Validation Error

---

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