Update an existing time record by its ID. Only the fields included in the request body are changed; omitted fields are left untouched. You can change the times, type, associated customer/project, notes, locations, and coordinates. To clear an optional field such as the customer, project, a note, or coordinates, send it explicitly as null. When updating times, the resulting end must be after the resulting start, and the resulting interval must not overlap any other time record for the employee (rejected with 409, a code, and a conflicts list). To make the edited record win over the conflicting records instead, send intent: "overwrite" — records the new span fully covers are deleted, partially overlapped neighbors are trimmed, and a containing record is split around it. When neighbors are reshaped, the 200 response includes optional policy: "normalize", affected_record_ids, and deleted_record_ids (omitted on a plain accept). Per-record webhooks are emitted for every affected record, neighbors first and the edited record last. Collisions with an active (open) record reject with 409 TIMELINE_OVERWRITE_OPEN_RECORD even with the intent set. The record keeps its time_record_id: updates are applied in place. Any customer or project must belong to the company associated with your API key. The record must belong to your company. Live clock-in rules such as geofencing are not applied to manual updates.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
