---
title: "List manual time requests"
method: GET
path: "/v2/organizations/{organization_id}/manual_time_requests"
tags: ["manual_time_requests"]
---

# List manual time requests

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

## Request

- Base URL: `https://api.hubstaff.com`
- URL: `https://api.hubstaff.com/v2/organizations/{organization_id}/manual_time_requests`
- 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/manual_time_requests/get.ts> (a function with typed inputs; its response is checked against the schema)

Date range filter (`date[start]`/`date[stop]`) returns requests whose *time span* overlaps the given organization-local dates:
it converts the dates to the org's day range and applies `in_range` (overlap on `starts_at`/`stops_at`).
This is *not* an exact filter on the `date` response field (see entity docs). Overnight entries or tz shifts may cause an entry to overlap a date even if its `date` column differs.
Both bounds are required (otherwise 400).

## Path parameters

- `organization_id` integer, required

## Query parameters

- `page_start_id` integer
- `page_limit` integer
- `date[start]` string, date
- `date[stop]` string, date
- `updated_at[start]` string, date-time
- `updated_at[stop]` string, date-time
- `status` 'submitted' | 'approved' | 'denied'
- `user_ids` integer[]
- `project_ids` integer[]
- `task_ids` integer[]
- `team_ids` integer[]
- `include` string[]

## Response `200`

OK

- object
  - `manual_time_requests` ManualTimeRequest[]
    - `id` integer, required: Manual time request ID
    - `member_id` integer, required: Member (user) ID who submitted the request
    - `project_id` integer, required: Project ID
    - `task_id` integer: Task ID if associated with a task
    - `start_time` string, date-time, required: Start time of the manual time entry
    - `stop_time` string, date-time, required: Stop time of the manual time entry
    - `submitted_at` string, date-time, required: When the request was submitted
    - `approved_at` string, date-time: When the request was approved
    - `denied_at` string, date-time: When the request was denied
    - `duration_seconds` integer, required: Duration in seconds
    - `notes` string: Notes for the time entry
    - `status` string, required: Status: submitted, approved, or denied
    - `reviewer_id` integer: ID of user who approved or denied (approved_by when approved, denied_by when denied)
    - `denial_reason` string: Reason for denial (only present when status is denied)
    - `organization_id` integer, required: Organization ID
    - `date` string, date, required: Calendar date (org tz) from start_time. The list date[] filter is overlap on starts/stops (in_range).
    - `billable` boolean, required: Whether the time is billable
    - `reason_to_submit` string, required: Reason the manual time was submitted
    - `submitted_by_id` integer, required: User ID who submitted the request
    - `approved_by_id` integer: User ID who approved the request
    - `denied_by_id` integer: User ID who denied the request
    - `attachment_original_filename` string: Original filename of attachment if present
    - `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

---

[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)
