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

# Update Clock Entry

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

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/time-tracking/clock-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/clock-entries/:id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Partially updates a time tracking clock entry identified by its ID. Only the fields present in the body are changed. When `start` or `timezone` change, the entry's `date` and `timesheetId` are recomputed server-side and the entry is moved to the matching timesheet. When `start`, `end` or `timezone` is in the body, the resulting `start` and `end` (the body merged with the stored values) must fall on the same calendar day in the resulting `timezone`; an update that would make the entry cross local midnight, including one ending at exactly 00:00 the next day, is rejected with 422. Submit one entry per day instead. A body that changes none of those three fields is not re-validated against the stored times. Pass `null` for `clockInLocation` / `clockOutLocation` to clear the stored geolocation.

OAuth Scopes: time_tracking:timesheets.write

## Path parameters

- `id` integer, required

## Request body

- TimeTrackingUpdateClockEntryV1: Request body for a partial update of a clock entry. All fields optional; at least one required.
  - `start` string, date-time: Updated clock-in timestamp (ISO 8601).
  - `end` string, date-time, nullable: Updated clock-out timestamp (ISO 8601). Null while the entry is open. Combined with the stored or updated start and timezone, it must fall on the same calendar day as start; an end of exactly 00:00 the next day is rejected.
  - `timezone` string: Updated IANA timezone identifier.
  - `note` string, nullable: Updated free-text note.
  - `projectId` integer, nullable: Updated project association. Null to clear.
  - `taskId` integer, nullable: Updated task association. Null to clear.
  - `clockInLocation` object, nullable: Updated geolocation captured at clock-in. Send null to clear.
    - `latitude` number, float, required
    - `longitude` number, float, required
    - `accuracy` number, float, nullable: GPS accuracy radius in meters. Maximum 10000.
    - `address` string, nullable
  - `clockOutLocation` object, nullable: Updated geolocation captured at clock-out. Send null to clear.
    - `latitude` number, float, required
    - `longitude` number, float, required
    - `accuracy` number, float, nullable: GPS accuracy radius in meters. Maximum 10000.
    - `address` string, nullable

## Response `200`

The updated clock entry.

- TimeTrackingClockEntryV1: A clock in/out record with start/end timestamps, timezone, and optional geolocation.
  - `id` integer: Identifier for the clock 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 entry is attributed to (in the entry's timezone).
  - `start` string, date-time: Clock-in timestamp, ISO 8601 with the offset of the entry's timezone.
  - `end` string, date-time, nullable: Clock-out timestamp. Null while the employee is actively clocked in.
  - `timezone` string: IANA timezone name under which start / end were recorded.
  - `hours` number, float: Computed elapsed hours between start and end. Zero while the entry is open.
  - `note` string, nullable: Free-text note attached to the entry.
  - `projectId` integer, nullable: Project the time was logged against.
  - `taskId` integer, nullable: Task within the project.
  - `clockInLocation` TimeTrackingClockEntryLocationV1: Geolocation captured for a clock action.
    - `latitude` number, float: Latitude in decimal degrees.
    - `longitude` number, float: Longitude in decimal degrees.
    - `accuracy` number, float, nullable: GPS accuracy radius in meters.
    - `address` string, nullable: Client-supplied human-readable address. Not server-canonical.
  - `clockOutLocation` TimeTrackingClockEntryLocationV1: Geolocation captured for a clock action.
    - `latitude` number, float: Latitude in decimal degrees.
    - `longitude` number, float: Longitude in decimal degrees.
    - `accuracy` number, float, nullable: GPS accuracy radius in meters.
    - `address` string, nullable: Client-supplied human-readable address. Not server-canonical.
  - `schedulingShiftId` string, uuid, nullable: The scheduled shift this entry was worked against.
  - `startSource` 'USER' | 'SYSTEM', nullable: How start was set: USER or SYSTEM. Read-only; server-set.
  - `endSource` 'USER' | 'SYSTEM', nullable: How end was set: USER or SYSTEM. Read-only; server-set.
  - `clockedInBy` integer, nullable: The employee id of the actor who recorded clock-in. Differs from employeeId on proxy clock-in. Null when the actor is not an employee.
  - `clockedOutBy` integer, nullable: The employee id of the actor who recorded clock-out. Null when the actor is not an employee.
  - `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.
- `404`: Clock entry not found.
- `409`: Conflict. The parent timesheet is already approved, the entry overlaps another, or the timesheet does not accept clock entries.
- `422`: Validation error (e.g., invalid time range, the resulting start and end falling on different calendar days in the resulting timezone, invalid timezone, accuracy greater than 10000, or a missing updatable field).

## Changes

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

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/time-tracking/clock-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)
