Time Tracking
Public API

Update Clock Entry

Changed on

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

patch/api/v1/time-tracking/clock-entries/{id}

Request

Path parameters

idinteger required

The clock entry ID.

Request body

startstring date-time

Updated clock-in timestamp (ISO 8601).

endstring 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.

timezonestring

Updated IANA timezone identifier.

notestring nullable

Updated free-text note.

projectIdinteger nullable

Updated project association. Null to clear.

taskIdinteger nullable

Updated task association. Null to clear.

Example request

{
  "start": "2026-03-17T08:00:00Z",
  "end": "2026-03-17T17:00:00Z",
  "timezone": "America/Denver",
  "note": "Corrected clock-out",
  "projectId": 19,
  "taskId": 47,
  "clockInLocation": {
    "latitude": 40.7608,
    "longitude": -111.891,
    "accuracy": 5,
    "address": "123 Main St"
  },
  "clockOutLocation": {
    "latitude": 40.7608,
    "longitude": -111.891,
    "accuracy": 8,
    "address": "123 Main St"
  }
}

Response

The updated clock entry.

idinteger

Identifier for the clock entry.

employeeIdinteger

The employee who owns the entry.

timesheetIdinteger

The timesheet (pay period) this entry rolls up to.

datestring date

Calendar date the entry is attributed to (in the entry's timezone).

startstring date-time

Clock-in timestamp, ISO 8601 with the offset of the entry's timezone.

endstring date-time nullable

Clock-out timestamp. Null while the employee is actively clocked in.

timezonestring

IANA timezone name under which start / end were recorded.

hoursnumber float

Computed elapsed hours between start and end. Zero while the entry is open.

notestring nullable

Free-text note attached to the entry.

projectIdinteger nullable

Project the time was logged against.

taskIdinteger nullable

Task within the project.

schedulingShiftIdstring 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.

clockedInByinteger 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.

clockedOutByinteger nullable

The employee id of the actor who recorded clock-out. Null when the actor is not an employee.

createdAtstring date-time

When the entry was created.

updatedAtstring date-time

When the entry was last modified.

Example response

{
  "id": 58231,
  "employeeId": 384,
  "timesheetId": 1042,
  "date": "2026-03-17",
  "start": "2026-03-17T08:00:00-07:00",
  "end": "2026-03-17T17:00:00-07:00",
  "timezone": "America/Denver",
  "hours": 9,
  "projectId": 19,
  "taskId": 47,
  "clockInLocation": {
    "latitude": 40.7608,
    "longitude": -111.891,
    "accuracy": 5,
    "address": "123 Main St, Lindon, UT"
  },
  "clockOutLocation": {
    "latitude": 40.7608,
    "longitude": -111.891,
    "accuracy": 5,
    "address": "123 Main St, Lindon, UT"
  },
  "schedulingShiftId": "9f4b3e2c-1a2d-4e5f-8b9c-1d2e3f4a5b6c",
  "startSource": "USER",
  "endSource": "USER",
  "clockedInBy": 42,
  "clockedOutBy": 42,
  "createdAt": "2026-03-17T08:00:00Z",
  "updatedAt": "2026-03-17T17:00:00Z"
}

Changes