---
title: "Update Hour Entry"
method: PATCH
path: "/api/v1/time-tracking/hour-entries/{id}"
tags: ["Time Tracking", "Public API"]
---

# Update Hour Entry

`PATCH /api/v1/time-tracking/hour-entries/{id}`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/time-tracking/hour-entries/{id}`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Authorization code: `/authorize.php`
    - Token URL: `/token.php` scopes: `time_tracking:timesheets.write`
- TypeScript: <https://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/time-tracking/hour-entries/:id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Partially updates a time tracking hour entry identified by its ID. Only the fields present in the body are changed; the rest retain their prior values. Moving the entry to a date in a different pay period updates the returned timesheetId.

OAuth Scopes: time_tracking:timesheets.write

## Path parameters

- `id` integer, required

## Request body

- HourEntryPatchHourEntryV1: Request body for partially updating a time tracking hour entry. All fields are optional, but at least one must be provided. employeeId is not mutable.
  - `date` string, date: Calendar date the hours are attributed to. Must fall inside an existing pay period for the entry's employee.
  - `hours` number, float: Hours worked on this date. Must be greater than zero.
  - `note` string, nullable: Free-text note describing the work. Pass null to clear.
  - `projectId` integer, nullable: Project the hours were logged against. Pass null to clear.
  - `taskId` integer, nullable: Task within the project. Pass null to clear.

## Response `200`

Hour entry updated successfully.

- TimeTrackingHourEntryV1: A date and number of hours worked, rolled up to a timesheet.
  - `id` integer: Identifier for the hour entry.
  - `employeeId` integer: The employee who owns the entry.
  - `timesheetId` integer: The timesheet (pay period) this entry rolls up to.
  - `date` string, date: Calendar date the hours are attributed to.
  - `hours` number, float: Hours worked on this date for the given project/task.
  - `note` string, nullable: Free-text note describing the work.
  - `projectId` integer, nullable: Project the hours were logged against.
  - `taskId` integer, nullable: Task within the project.
  - `createdAt` string, date-time: When the entry was created.
  - `updatedAt` string, date-time: When the entry was last modified.

## Other responses

- `400`: Malformed request body.
- `401`: Unauthorized. Missing or invalid authentication.
- `403`: Forbidden. Insufficient permissions, or the parent timesheet is already approved.
- `404`: Hour entry not found, or no timesheet covering the requested date exists for the employee.
- `409`: Conflict. The destination timesheet type is CLOCK or MULTIPLE, or a single-entry timesheet already has an entry for the date.
- `422`: Validation error (e.g., hours <= 0, malformed date, taskId not under projectId, no fields provided, or employeeId present).

## Changes

- **2026-11-03** `922fc15f43a7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/time-tracking/hour-entries/:id/patch.md)

---

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