---
title: "List organization timesheets"
method: GET
path: "/v2/organizations/{organization_id}/timesheets"
tags: ["timesheets"]
---

# List organization timesheets

`GET /v2/organizations/{organization_id}/timesheets`

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/organizations/{organization_id}/timesheets`
- Auth: OAuth 2
  - Authorization code: `https://account.hubstaff.com/authorizations/new`
  - Token URL: `https://account.hubstaff.com/access_tokens` scopes: `hubstaff:read`, `hubstaff:write`
- TypeScript: <https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/docs/v2/organizations/:organization_id/timesheets/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a collection of timesheets (aggregate approval records) for the given organization.

Results can be filtered by date[start]/[stop], approved[start], and status.

Note: Timesheets are aggregate records used by the timesheet approval system, not individual time entries.

## Path parameters

- `organization_id` integer, required

## Query parameters

- `page_start_id` integer
- `page_limit` integer
- `date[start]` string, date
- `date[stop]` string, date
- `approved[start]` string, date
- `status` 'open' | 'submitted' | 'approved' | 'denied'
- `include` string[]

## Response `200`

A list of timesheets

- object
  - `timesheets` Timesheet[]
    - `id` integer, required: Timesheet ID
    - `paid` boolean, required: Is the timesheet paid?
    - `user_id` integer, required: User ID
    - `organization_id` integer, required: Organization ID
    - `team_payment_id` integer: Team payment ID
    - `team_invoice_id` integer: Team invoice ID
    - `status` string, required: Status
    - `keyboard` integer, required: Percentage of time keyboard was active within the time worked
    - `mouse` integer, required: Percentage of time mouse was active within the time worked
    - `overall` integer, required: Percentage of overall time active within the time worked
    - `tracked` integer, required: Total time worked in seconds
    - `input_tracked` integer, required: Total time worked in seconds when inputs (keyboard, mouse) were active
    - `start_date` string, date, required: Start date
    - `stop_date` string, date, required: Stop date
    - `approved_on` string, date: Approving date
    - `submitted_on` string, date: Submission date
    - `approved_by_id` integer: Approving User ID
    - `denial_reason` string: Denial reason
    - `locked` boolean, required: Is the timesheet locked
    - `created_at` string, date-time, required: When the record was created
    - `updated_at` string, date-time, required: When the record was last updated

## Other responses

- `400`: Invalid parameters
- `401`: Unauthorized
- `403`: API access is only for organizations on an active plan
- `404`: Could not find record
- `429`: Rate limit exceeded

## Changes

- **2026-11-06** `c6b90e4e4bdc`: 2 info
  - added the new optional `query` request parameter `approved[start]`
  - added the new optional `query` request parameter `include`

[Operation history](https://skmtc.dev/hubstaff/apis/hubstaff-v2-api/changes/v2/organizations/:organization_id/timesheets/get.md)

---

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